{"version":3,"sources":["../node_modules/graphql/jsutils/identityFunc.mjs","../node_modules/graphql/type/definition.mjs","../node_modules/graphql/language/kinds.mjs","../node_modules/redux-saga/es/internal/utils.js","../node_modules/graphql/jsutils/inspect.mjs","../node_modules/graphql/error/GraphQLError.mjs","../node_modules/react/index.js","../node_modules/redux-saga/es/internal/io.js","../node_modules/@apollographql/graphql-playground-react/lib/styled/index.js","../node_modules/graphql/jsutils/devAssert.mjs","../node_modules/graphql/language/directiveLocation.mjs","../node_modules/graphql/polyfills/objectValues.mjs","../node_modules/graphql/type/introspection.mjs","../node_modules/graphql/polyfills/isFinite.mjs","../node_modules/graphql/polyfills/isInteger.mjs","../node_modules/graphql/type/scalars.mjs","../node_modules/codemirror/lib/codemirror.js","../node_modules/markdown-it/lib/common/utils.js","../node_modules/graphql/language/printer.mjs","../node_modules/graphql/language/visitor.mjs","../node_modules/graphql/version.mjs","../node_modules/graphql/jsutils/isPromise.mjs","../node_modules/graphql/error/syntaxError.mjs","../node_modules/graphql/language/source.mjs","../node_modules/graphql/language/tokenKind.mjs","../node_modules/graphql/language/lexer.mjs","../node_modules/graphql/language/parser.mjs","../node_modules/graphql/polyfills/find.mjs","../node_modules/graphql/polyfills/flatMap.mjs","../node_modules/graphql/utilities/assertValidName.mjs","../node_modules/graphql/utilities/typeComparators.mjs","../node_modules/graphql/type/directives.mjs","../node_modules/graphql/type/schema.mjs","../node_modules/graphql/type/validate.mjs","../node_modules/graphql/utilities/typeFromAST.mjs","../node_modules/graphql/utilities/TypeInfo.mjs","../node_modules/graphql/validation/rules/UniqueOperationNames.mjs","../node_modules/graphql/validation/rules/LoneAnonymousOperation.mjs","../node_modules/graphql/validation/rules/SingleFieldSubscriptions.mjs","../node_modules/graphql/jsutils/didYouMean.mjs","../node_modules/graphql/jsutils/suggestionList.mjs","../node_modules/graphql/validation/rules/KnownTypeNames.mjs","../node_modules/graphql/validation/rules/FragmentsOnCompositeTypes.mjs","../node_modules/graphql/validation/rules/VariablesAreInputTypes.mjs","../node_modules/graphql/validation/rules/ScalarLeafs.mjs","../node_modules/graphql/validation/rules/FieldsOnCorrectType.mjs","../node_modules/graphql/validation/rules/UniqueFragmentNames.mjs","../node_modules/graphql/validation/rules/PossibleFragmentSpreads.mjs","../node_modules/graphql/validation/rules/NoFragmentCycles.mjs","../node_modules/graphql/validation/rules/UniqueVariableNames.mjs","../node_modules/graphql/validation/rules/NoUndefinedVariables.mjs","../node_modules/graphql/validation/rules/NoUnusedVariables.mjs","../node_modules/graphql/validation/rules/KnownDirectives.mjs","../node_modules/graphql/validation/rules/UniqueDirectivesPerLocation.mjs","../node_modules/graphql/validation/rules/KnownArgumentNames.mjs","../node_modules/graphql/validation/rules/UniqueArgumentNames.mjs","../node_modules/graphql/validation/rules/ValuesOfCorrectType.mjs","../node_modules/graphql/validation/rules/ProvidedRequiredArguments.mjs","../node_modules/graphql/validation/rules/VariablesInAllowedPosition.mjs","../node_modules/graphql/validation/rules/OverlappingFieldsCanBeMerged.mjs","../node_modules/graphql/validation/rules/PossibleTypeExtensions.mjs","../node_modules/graphql/validation/rules/UniqueInputFieldNames.mjs","../node_modules/graphql/validation/rules/UniqueOperationTypes.mjs","../node_modules/graphql/validation/rules/UniqueEnumValueNames.mjs","../node_modules/graphql/validation/rules/UniqueFieldDefinitionNames.mjs","../node_modules/graphql/validation/specifiedRules.mjs","../node_modules/graphql/validation/rules/LoneSchemaDefinition.mjs","../node_modules/graphql/validation/rules/UniqueTypeNames.mjs","../node_modules/graphql/validation/rules/UniqueDirectiveNames.mjs","../node_modules/graphql/validation/ValidationContext.mjs","../node_modules/graphql/validation/validate.mjs","../node_modules/graphql/jsutils/Path.mjs","../node_modules/graphql/error/locatedError.mjs","../node_modules/graphql/utilities/getOperationRootType.mjs","../node_modules/graphql/jsutils/printPathArray.mjs","../node_modules/graphql/utilities/valueFromAST.mjs","../node_modules/graphql/utilities/coerceInputValue.mjs","../node_modules/graphql/execution/values.mjs","../node_modules/graphql/execution/execute.mjs","../node_modules/graphql/jsutils/promiseReduce.mjs","../node_modules/graphql/jsutils/promiseForObject.mjs","../node_modules/graphql/jsutils/memoize3.mjs","../node_modules/graphql/graphql.mjs","../node_modules/graphql/subscription/mapAsyncIterator.mjs","../node_modules/graphql/subscription/subscribe.mjs","../node_modules/graphql/error/formatError.mjs","../node_modules/graphql/utilities/introspectionQuery.mjs","../node_modules/graphql/utilities/introspectionFromSchema.mjs","../node_modules/graphql/utilities/buildClientSchema.mjs","../node_modules/graphql/utilities/buildASTSchema.mjs","../node_modules/graphql/utilities/extendSchema.mjs","../node_modules/graphql/utilities/lexicographicSortSchema.mjs","../node_modules/graphql/utilities/schemaPrinter.mjs","../node_modules/graphql/utilities/coerceValue.mjs","../node_modules/graphql/utilities/isValidJSValue.mjs","../node_modules/graphql/utilities/isValidLiteralValue.mjs","../node_modules/graphql/utilities/concatAST.mjs","../node_modules/graphql/utilities/separateOperations.mjs","../node_modules/graphql/utilities/stripIgnoredCharacters.mjs","../node_modules/graphql/utilities/findBreakingChanges.mjs","../node_modules/graphql/utilities/findDeprecatedUsages.mjs","../node_modules/graphql/index.mjs","../node_modules/graphql/jsutils/invariant.mjs","../node_modules/tslib/tslib.es6.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-redux/es/utils/PropTypes.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-redux/es/utils/Subscription.js","../node_modules/react-redux/es/components/connectAdvanced.js","../node_modules/react-redux/es/utils/shallowEqual.js","../node_modules/react-redux/es/connect/wrapMapToProps.js","../node_modules/react-redux/es/connect/mapDispatchToProps.js","../node_modules/react-redux/es/connect/mapStateToProps.js","../node_modules/react-redux/es/connect/mergeProps.js","../node_modules/react-redux/es/connect/selectorFactory.js","../node_modules/react-redux/es/connect/connect.js","../node_modules/react-redux/es/index.js","../node_modules/ts-invariant/lib/invariant.esm.js","../node_modules/reselect/lib/index.js","../node_modules/@apollographql/graphql-playground-react/lib/state/sessions/selectors.js","../node_modules/graphql/jsutils/isObjectLike.mjs","../node_modules/prop-types/index.js","../node_modules/invariant/browser.js","../node_modules/graphql/jsutils/keyValMap.mjs","../node_modules/immutable/dist/immutable.es.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/redux-saga/es/internal/channel.js","../node_modules/graphql/jsutils/keyMap.mjs","../node_modules/webpack/buildin/global.js","../node_modules/@apollographql/graphql-playground-react/lib/state/sessions/actions.js","../node_modules/@apollographql/graphql-playground-react/lib/state/workspace/reducers.js","../node_modules/graphql/jsutils/toObjMap.mjs","../node_modules/zen-observable-ts/lib/bundle.esm.js","../node_modules/graphql/jsutils/isInvalid.mjs","../node_modules/iterall/index.mjs","../node_modules/graphql/jsutils/defineToStringTag.mjs","../node_modules/graphql/jsutils/defineToJSON.mjs","../node_modules/redux-actions/es/utils/isFunction.js","../node_modules/redux-actions/es/utils/isSymbol.js","../node_modules/redux-actions/es/utils/isEmpty.js","../node_modules/redux-actions/es/utils/toString.js","../node_modules/redux-actions/es/utils/isString.js","../node_modules/redux-actions/es/constants.js","../node_modules/redux-actions/es/combineActions.js","../node_modules/redux-actions/es/utils/identity.js","../node_modules/redux-actions/es/utils/isNull.js","../node_modules/redux-actions/es/createAction.js","../node_modules/redux-actions/es/utils/isPlainObject.js","../node_modules/redux-actions/es/utils/isArray.js","../node_modules/redux-actions/es/utils/isNil.js","../node_modules/redux-actions/es/utils/getLastElement.js","../node_modules/redux-actions/es/utils/camelCase.js","../node_modules/redux-actions/es/utils/arrayToObject.js","../node_modules/redux-actions/es/utils/isMap.js","../node_modules/redux-actions/es/utils/ownKeys.js","../node_modules/redux-actions/es/utils/get.js","../node_modules/redux-actions/es/utils/flattenWhenNode.js","../node_modules/redux-actions/es/utils/flattenActionMap.js","../node_modules/redux-actions/es/utils/unflattenActionCreators.js","../node_modules/redux-actions/es/createActions.js","../node_modules/redux-actions/es/createCurriedAction.js","../node_modules/redux-actions/es/utils/isUndefined.js","../node_modules/redux-actions/es/handleAction.js","../node_modules/reduce-reducers/es/index.js","../node_modules/redux-actions/es/utils/flattenReducerMap.js","../node_modules/redux-actions/es/utils/hasGeneratorInterface.js","../node_modules/redux-actions/es/handleActions.js","../node_modules/redux-actions/es/index.js","../node_modules/graphql/polyfills/objectEntries.mjs","../node_modules/graphql/language/predicates.mjs","../node_modules/graphql/jsutils/instanceOf.mjs","../node_modules/@apollographql/graphql-playground-react/lib/components/Icons/index.js","../node_modules/graphql/language/blockString.mjs","../node_modules/graphql/jsutils/mapValue.mjs","../node_modules/redux-saga/es/internal/buffers.js","../node_modules/apollo-link/lib/bundle.esm.js","../node_modules/codemirror/addon/search/searchcursor.js","../node_modules/codemirror/addon/dialog/dialog.js","../node_modules/react-dom/index.js","../node_modules/redux-saga/es/internal/sagaHelpers/fsmIterator.js","../node_modules/redux-saga/es/internal/sagaHelpers/takeEvery.js","../node_modules/redux-saga/es/internal/sagaHelpers/takeLatest.js","../node_modules/redux-saga/es/internal/sagaHelpers/throttle.js","../node_modules/redux-saga/es/internal/sagaHelpers/index.js","../node_modules/@apollographql/graphql-playground-react/lib/constants.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/EditorWrapper.js","../node_modules/@apollographql/graphql-playground-react/lib/state/docs/actions.js","../node_modules/@apollographql/graphql-playground-react/lib/state/docs/selectors.js","../node_modules/lodash-es/_root.js","../node_modules/lodash-es/_Symbol.js","../node_modules/lodash-es/_getRawTag.js","../node_modules/lodash-es/_objectToString.js","../node_modules/lodash-es/_baseGetTag.js","../node_modules/lodash-es/_overArg.js","../node_modules/lodash-es/_getPrototype.js","../node_modules/lodash-es/isObjectLike.js","../node_modules/lodash-es/isPlainObject.js","../node_modules/redux/es/createStore.js","../node_modules/redux/es/combineReducers.js","../node_modules/redux/es/bindActionCreators.js","../node_modules/redux/es/compose.js","../node_modules/redux/es/applyMiddleware.js","../node_modules/redux/es/index.js","../node_modules/graphql/utilities/astFromValue.mjs","../node_modules/codemirror/addon/fold/brace-fold.js","../node_modules/graphql-language-service-interface/dist/index.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/DocExplorer/TypeLink.js","../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/redux-saga/es/internal/io-helpers.js","../node_modules/redux-saga/es/effects.js","../node_modules/react-is/index.js","../node_modules/redux-saga/es/internal/scheduler.js","../node_modules/object-assign/index.js","../node_modules/process/browser.js","../node_modules/cuid/dist/browser-cuid.js","../node_modules/@apollographql/graphql-playground-react/lib/utils.js","../node_modules/lodash/lodash.js","../node_modules/codemirror/addon/edit/matchbrackets.js","../node_modules/codemirror/addon/fold/foldgutter.js","../node_modules/codemirror/addon/search/jump-to-line.js","../node_modules/codemirror/keymap/sublime.js","../node_modules/graphql-language-service-interface/dist/getAutocompleteSuggestions.js","../node_modules/@apollographql/graphql-playground-react/lib/state/general/selectors.js","../node_modules/@apollographql/graphql-playground-react/lib/state/general/actions.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/util/stack.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/graphql-language-service-parser/esm/CharacterStream.js","../node_modules/graphql-language-service-parser/esm/RuleHelpers.js","../node_modules/graphql-language-service-parser/esm/Rules.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/graphql-language-service-parser/esm/onlineParser.js","../node_modules/graphql-language-service-parser/esm/index.js","../node_modules/graphql/jsutils/nodejsCustomInspectSymbol.mjs","../node_modules/graphql/language/location.mjs","../node_modules/@apollographql/graphql-playground-react/lib/styled/styled.js","../node_modules/@apollographql/graphql-playground-react/lib/state/sessions/reducers.js","../node_modules/@apollographql/graphql-playground-react/lib/state/sessions/fetchingSagas.js","../node_modules/@apollographql/graphql-playground-react/lib/state/history/actions.js","../node_modules/react-sortable-hoc/dist/commonjs/utils.js","../node_modules/graphql-language-service-interface/dist/autocompleteUtils.js","../node_modules/graphql-language-service-interface/dist/getDefinition.js","../node_modules/graphql-language-service-utils/dist/index.js","../node_modules/graphql-language-service-interface/dist/getDiagnostics.js","../node_modules/graphql-language-service-interface/dist/getHoverInformation.js","../node_modules/@apollographql/graphql-playground-react/lib/state/sharing/actions.js","../node_modules/@apollographql/graphql-playground-react/lib/state/workspace/actions.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/apollo-utilities/lib/bundle.esm.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/symbol-observable/es/index.js","../node_modules/graphql/jsutils/isNullish.mjs","../node_modules/subscriptions-transport-ws/dist/client.js","../node_modules/@apollographql/graphql-playground-react/lib/state/docs/reducers.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator/index.js","../node_modules/@apollographql/graphql-playground-react/lib/state/appHistory/reducers.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/QueryEditor.js","../node_modules/uc.micro/categories/P/regex.js","../node_modules/markdown-it/lib/ruler.js","../node_modules/markdown-it/lib/token.js","../node_modules/codemirror/addon/hint/show-hint.js","../node_modules/codemirror/addon/edit/closebrackets.js","../node_modules/codemirror/addon/search/search.js","../node_modules/codemirror/addon/lint/lint.js","../node_modules/graphql-language-service-interface/dist/getOutline.js","../node_modules/graphql-language-service-interface/dist/GraphQLLanguageService.js","../node_modules/codemirror-graphql/mode.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/TopBar/TopBar.js","../node_modules/@apollographql/graphql-playground-react/lib/state/sharing/selectors.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Spinner.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/DocExplorer/DocsTypes/DocType.js","../node_modules/react-modal/lib/helpers/safeHTMLElement.js","../node_modules/@apollographql/graphql-playground-react/lib/components/util.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/redux-saga/es/internal/proc.js","../node_modules/redux-saga/es/internal/runSaga.js","../node_modules/redux-saga/es/index.js","../node_modules/redux-saga/es/internal/middleware.js","../node_modules/graphql/validation/rules/ExecutableDefinitions.mjs","../node_modules/graphql/validation/rules/KnownFragmentNames.mjs","../node_modules/graphql/validation/rules/NoUnusedFragments.mjs","../node_modules/@apollographql/graphql-playground-react/lib/lib.js","../node_modules/graphql/language/printLocation.mjs","../node_modules/stylis/stylis.min.js","../node_modules/memoize-one/dist/memoize-one.esm.js","../node_modules/to-camel-case/index.js","../node_modules/@apollographql/graphql-playground-react/lib/components/PlaygroundWrapper.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/GraphQLEditor.js","../node_modules/@apollographql/graphql-playground-react/lib/styled/theme.js","../node_modules/redux-immutable/dist/utilities/getStateName.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/util/getQueryTypes.js","../node_modules/@wry/equality/lib/equality.esm.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/util/parseHeaders.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/util/makeOperation.js","../node_modules/lru-cache/index.js","../node_modules/react-sortable-hoc/dist/commonjs/index.js","../node_modules/@apollographql/graphql-playground-react/lib/state/sharing/reducers.js","../node_modules/@apollographql/graphql-playground-react/lib/state/general/reducers.js","../node_modules/@apollographql/graphql-playground-react/lib/state/workspace/deserialize.js","../node_modules/webpack/buildin/module.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/util/toJS.js","../node_modules/markdown-it/index.js","../node_modules/markdown-it/lib/common/entities.js","../node_modules/mdurl/index.js","../node_modules/uc.micro/properties/Any/regex.js","../node_modules/uc.micro/categories/Cc/regex.js","../node_modules/uc.micro/categories/Z/regex.js","../node_modules/markdown-it/lib/common/html_re.js","../node_modules/markdown-it/lib/rules_inline/strikethrough.js","../node_modules/markdown-it/lib/rules_inline/emphasis.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/onHasCompletion.js","../node_modules/codemirror/addon/comment/comment.js","../node_modules/graphql-language-service-utils/dist/Range.js","../node_modules/node-libs-browser/node_modules/assert/assert.js","../node_modules/codemirror-graphql/utils/getTypeInfo.js","../node_modules/codemirror-graphql/utils/forEachState.js","../node_modules/codemirror-graphql/utils/SchemaReference.js","../node_modules/copy-to-clipboard/index.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Button.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/TopBar/Positioner.js","../node_modules/codemirror-graphql/variables/hint.js","../node_modules/codemirror-graphql/variables/lint.js","../node_modules/codemirror-graphql/variables/mode.js","../node_modules/graphiql/dist/utility/elementPosition.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/ExplorerTabs/SideTab.js","../node_modules/keycode/index.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/DocExplorer/ErrorContainer.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/util/createSDL.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/DocExplorer/DocsStyles.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/DocExplorer/ColumnDoc.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/DocExplorer/SearchBox.js","../node_modules/react-modal/lib/index.js","../node_modules/react-modal/lib/helpers/tabbable.js","../node_modules/react-modal/lib/helpers/ariaAppHider.js","../node_modules/@apollographql/graphql-playground-react/lib/state/history/selectors.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/util/getWorkspaceId.js","../node_modules/react-helmet/lib/HelmetConstants.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/isomorphic-fetch/fetch-npm-browserify.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/symbol-observable/es/ponyfill.js","../node_modules/lodash-es/_freeGlobal.js","../node_modules/graphql/utilities/valueFromASTUntyped.mjs","../node_modules/stylis-rule-sheet/index.js","../node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../node_modules/just-curry-it/index.js","../node_modules/zen-observable-ts/node_modules/zen-observable/index.js","../node_modules/fast-json-stable-stringify/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@emotion/memoize/dist/memoize.browser.esm.js","../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js","../node_modules/is-what/dist/index.esm.js","../node_modules/merge-anything/dist/index.esm.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/scheduler/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/webpack/buildin/harmony-module.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground.js","../node_modules/graphql/utilities/getOperationAST.mjs","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/ExecuteButton.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/ExecuteButtonOperation.js","../node_modules/styled-components/dist/styled-components.browser.esm.js","../node_modules/redux-immutable/dist/index.js","../node_modules/redux-immutable/dist/combineReducers.js","../node_modules/redux-immutable/dist/utilities/index.js","../node_modules/redux-immutable/dist/utilities/getUnexpectedInvocationParameterMessage.js","../node_modules/redux-immutable/dist/utilities/validateNextState.js","../node_modules/to-space-case/index.js","../node_modules/to-no-case/index.js","../node_modules/zen-observable-ts/node_modules/zen-observable/lib/Observable.js","../node_modules/backo2/index.js","../node_modules/eventemitter3/index.js","../node_modules/subscriptions-transport-ws/dist/utils/is-string.js","../node_modules/subscriptions-transport-ws/dist/utils/is-object.js","../node_modules/subscriptions-transport-ws/dist/protocol.js","../node_modules/subscriptions-transport-ws/dist/defaults.js","../node_modules/subscriptions-transport-ws/dist/message-types.js","../node_modules/apollo-link-ws/lib/bundle.esm.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/util/hasSubscription.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/SchemaFetcher.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/util/NoSchemaError.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/createClass.js","../node_modules/yallist/yallist.js","../node_modules/yallist/iterator.js","../node_modules/regenerator-runtime/runtime.js","../node_modules/prettier/standalone.js","../node_modules/prettier/parser-graphql.js","../node_modules/react-sortable-hoc/dist/commonjs/SortableContainer/index.js","../node_modules/react-sortable-hoc/dist/commonjs/Manager.js","../node_modules/react-sortable-hoc/dist/commonjs/SortableElement/index.js","../node_modules/react-sortable-hoc/dist/commonjs/SortableHandle/index.js","../node_modules/@apollographql/graphql-playground-react/lib/state/history/reducers.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/util/immutableMemoize.js","../node_modules/markdown-it/lib/index.js","../node_modules/mdurl/encode.js","../node_modules/mdurl/decode.js","../node_modules/mdurl/format.js","../node_modules/mdurl/parse.js","../node_modules/uc.micro/index.js","../node_modules/uc.micro/categories/Cf/regex.js","../node_modules/markdown-it/lib/helpers/index.js","../node_modules/markdown-it/lib/helpers/parse_link_label.js","../node_modules/markdown-it/lib/helpers/parse_link_destination.js","../node_modules/markdown-it/lib/helpers/parse_link_title.js","../node_modules/markdown-it/lib/renderer.js","../node_modules/markdown-it/lib/parser_core.js","../node_modules/markdown-it/lib/rules_core/normalize.js","../node_modules/markdown-it/lib/rules_core/block.js","../node_modules/markdown-it/lib/rules_core/inline.js","../node_modules/markdown-it/lib/rules_core/linkify.js","../node_modules/markdown-it/lib/rules_core/replacements.js","../node_modules/markdown-it/lib/rules_core/smartquotes.js","../node_modules/markdown-it/lib/rules_core/state_core.js","../node_modules/markdown-it/lib/parser_block.js","../node_modules/markdown-it/lib/rules_block/table.js","../node_modules/markdown-it/lib/rules_block/code.js","../node_modules/markdown-it/lib/rules_block/fence.js","../node_modules/markdown-it/lib/rules_block/blockquote.js","../node_modules/markdown-it/lib/rules_block/hr.js","../node_modules/markdown-it/lib/rules_block/list.js","../node_modules/markdown-it/lib/rules_block/reference.js","../node_modules/markdown-it/lib/rules_block/heading.js","../node_modules/markdown-it/lib/rules_block/lheading.js","../node_modules/markdown-it/lib/rules_block/html_block.js","../node_modules/markdown-it/lib/common/html_blocks.js","../node_modules/markdown-it/lib/rules_block/paragraph.js","../node_modules/markdown-it/lib/rules_block/state_block.js","../node_modules/markdown-it/lib/parser_inline.js","../node_modules/markdown-it/lib/rules_inline/text.js","../node_modules/markdown-it/lib/rules_inline/newline.js","../node_modules/markdown-it/lib/rules_inline/escape.js","../node_modules/markdown-it/lib/rules_inline/backticks.js","../node_modules/markdown-it/lib/rules_inline/link.js","../node_modules/markdown-it/lib/rules_inline/image.js","../node_modules/markdown-it/lib/rules_inline/autolink.js","../node_modules/markdown-it/lib/rules_inline/html_inline.js","../node_modules/markdown-it/lib/rules_inline/entity.js","../node_modules/markdown-it/lib/rules_inline/balance_pairs.js","../node_modules/markdown-it/lib/rules_inline/text_collapse.js","../node_modules/markdown-it/lib/rules_inline/state_inline.js","../node_modules/linkify-it/index.js","../node_modules/linkify-it/lib/re.js","../node_modules/node-libs-browser/node_modules/punycode/punycode.js","../node_modules/markdown-it/lib/presets/default.js","../node_modules/markdown-it/lib/presets/zero.js","../node_modules/markdown-it/lib/presets/commonmark.js","../node_modules/marked/lib/marked.js","../node_modules/codemirror/addon/fold/foldcode.js","../node_modules/codemirror/keymap/vim.js","../node_modules/codemirror-graphql/hint.js","../node_modules/graphql-language-service-utils/dist/getASTNodeAtPosition.js","../node_modules/graphql-language-service-utils/dist/validateWithCustomRules.js","../node_modules/node-libs-browser/node_modules/util/util.js","../node_modules/node-libs-browser/node_modules/util/support/isBufferBrowser.js","../node_modules/node-libs-browser/node_modules/inherits/inherits_browser.js","../node_modules/graphql-language-service-interface/dist/GraphQLLanguageService.js.flow","../node_modules/graphql-language-service-interface/dist/autocompleteUtils.js.flow","../node_modules/graphql-language-service-interface/dist/getAutocompleteSuggestions.js.flow","../node_modules/graphql-language-service-interface/dist/getDefinition.js.flow","../node_modules/graphql-language-service-interface/dist/getDiagnostics.js.flow","../node_modules/graphql-language-service-interface/dist/getHoverInformation.js.flow","../node_modules/graphql-language-service-interface/dist/getOutline.js.flow","../node_modules/graphql-language-service-interface/dist/index.js.flow","../node_modules/codemirror-graphql/lint.js","../node_modules/codemirror-graphql/info.js","../node_modules/codemirror-graphql/utils/info-addon.js","../node_modules/codemirror-graphql/jump.js","../node_modules/codemirror-graphql/utils/jump-addon.js","../node_modules/graphiql/dist/utility/CodeMirrorSizer.js","../node_modules/toggle-selection/index.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Share.js","../node_modules/@apollographql/graphql-playground-react/lib/components/ToggleButton.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Tooltip.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Copy.js","../node_modules/react-copy-to-clipboard/lib/index.js","../node_modules/react-copy-to-clipboard/lib/Component.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/TopBar/SchemaReload.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/TopBar/Reload.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/TopBar/ReloadIcon.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/TopBar/Polling.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/TopBar/PollingIcon.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/VariableEditor.js","../node_modules/codemirror-graphql/utils/hintList.js","../node_modules/codemirror-graphql/utils/jsonParse.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/Results.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/util/ageOfDate.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/ResultViewer.js","../node_modules/codemirror-graphql/results/mode.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/ResponseTracing.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/TracingRow.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/QueryPlan.js","../node_modules/graphiql/dist/utility/fillLeafs.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/ExplorerTabs/SideTabs.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/SchemaExplorer/SDLView.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/SchemaExplorer/SDLTypes/SDLStyles.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/SchemaExplorer/SDLHeader.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/SchemaExplorer/SDLEditor.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/DocExplorer/GraphDocs.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/DocExplorer/FieldDoc.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/DocExplorer/Argument.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/DocExplorer/ArgumentInline.js","../node_modules/graphiql/dist/components/DocExplorer/MarkdownContent.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/DocExplorer/DocTypeSchema.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/DocExplorer/DocsTypes/ScalarType.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/DocExplorer/DocsTypes/EnumTypeSchema.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/DocExplorer/DocsTypes/UnionTypeSchema.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/DocExplorer/RootColumn.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/DocExplorer/SearchResults.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/DocExplorer/GraphDocsRoot.js","../node_modules/graphiql/dist/utility/debounce.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/TabBar.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/Tab.js","../node_modules/react-input-autosize/lib/AutosizeInput.js","../node_modules/@apollographql/graphql-playground-react/lib/components/HistoryPopup.js","../node_modules/react-modal/lib/components/Modal.js","../node_modules/react-modal/lib/components/ModalPortal.js","../node_modules/react-modal/lib/helpers/focusManager.js","../node_modules/react-modal/lib/helpers/scopeTab.js","../node_modules/warning/warning.js","../node_modules/exenv/index.js","../node_modules/react-modal/lib/helpers/classList.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/@apollographql/graphql-playground-react/lib/components/HistoryPopup/HistoryHeader.js","../node_modules/@apollographql/graphql-playground-react/lib/components/HistoryPopup/HistoryChooser.js","../node_modules/@apollographql/graphql-playground-react/lib/components/HistoryPopup/HistoryItems.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Settings.js","../node_modules/@apollographql/graphql-playground-react/lib/components/SettingsEditor.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/ConfigEditor.js","../node_modules/codemirror/mode/yaml/yaml.js","../node_modules/@apollographql/graphql-playground-react/lib/components/FileEditor.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/util/fibonacci-backoff.js","../node_modules/react-helmet/lib/Helmet.js","../node_modules/react-side-effect/lib/index.js","../node_modules/shallowequal/index.js","../node_modules/react-fast-compare/index.js","../node_modules/react-helmet/lib/HelmetUtils.js","../node_modules/js-yaml/index.js","../node_modules/js-yaml/lib/js-yaml.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/buffer/index.js","../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/isarray/index.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/esprima/dist/esprima.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/@apollographql/graphql-playground-react/lib/components/ProjectsSideNav.js","../node_modules/@apollographql/graphql-playground-react/lib/components/ProjectsSideNavItem.js","../node_modules/@apollographql/graphql-playground-react/lib/components/GraphQLBinApp.js","../node_modules/@apollographql/graphql-playground-react/lib/state/createStore.js","../node_modules/@apollographql/graphql-playground-react/lib/state/rootSaga.js","../node_modules/@apollographql/graphql-playground-react/lib/state/sessions/sagas.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/util/getSelectedOperationName.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Playground/util/getQueryFacts.js","../node_modules/query-string/index.js","../node_modules/strict-uri-encode/index.js","../node_modules/decode-uri-component/index.js","../node_modules/@apollographql/graphql-playground-react/lib/state/sharing/sharingSaga.js","../node_modules/@apollographql/graphql-playground-react/lib/state/localStorage.js","../node_modules/whatwg-fetch/fetch.js","../node_modules/@apollographql/graphql-playground-react/lib/components/EndpointPopup.js","../node_modules/@apollographql/graphql-playground-react/lib/components/Popup.js","../node_modules/@apollographql/graphql-playground-react/lib/assets/logo.png","../node_modules/@apollographql/graphql-playground-react/lib/state/appHistory/actions.js","../node_modules/apollo-link-http-common/lib/bundle.esm.js","../node_modules/apollo-link-http/lib/bundle.esm.js"],"names":["identityFunc","x","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","value","configurable","writable","isType","type","isScalarType","isObjectType","isInterfaceType","isUnionType","isEnumType","isInputObjectType","isListType","isNonNullType","assertType","Error","concat","inspect","instanceOf","assertScalarType","assertObjectType","assertInterfaceType","assertUnionType","assertEnumType","assertInputObjectType","GraphQLList","assertListType","GraphQLNonNull","assertNonNullType","isInputType","isWrappingType","ofType","assertInputType","isOutputType","assertOutputType","isLeafType","assertLeafType","isCompositeType","assertCompositeType","isAbstractType","assertAbstractType","this","assertNullableType","assertWrappingType","isNullableType","getNullableType","isNamedType","assertNamedType","getNamedType","unwrappedType","resolveThunk","thunk","undefineIfEmpty","arr","undefined","prototype","toString","String","defineToStringTag","defineToJSON","GraphQLScalarType","config","parseValue","name","description","serialize","parseLiteral","node","valueFromASTUntyped","extensions","toObjMap","astNode","extensionASTNodes","devAssert","_proto","toConfig","GraphQLObjectType","isTypeOf","_fields","defineFieldMap","bind","_interfaces","defineInterfaces","_proto2","getFields","getInterfaces","interfaces","fields","fieldsToFieldsConfig","Array","isArray","fieldMap","isPlainObj","mapValue","fieldConfig","fieldName","resolve","argsConfig","args","objectEntries","map","_ref","argName","arg","defaultValue","subscribe","isDeprecated","Boolean","deprecationReason","isObjectLike","field","argsToArgsConfig","keyValMap","isRequiredArgument","GraphQLInterfaceType","resolveType","_proto3","GraphQLUnionType","_types","defineTypes","_proto4","getTypes","types","GraphQLEnumType","typeName","valueMap","_values","values","_ref2","valueName","_valueLookup","Map","enumValue","_nameLookup","keyMap","_proto5","getValues","getValue","get","valueNode","_variables","kind","ENUM","GraphQLInputObjectType","defineInputFieldMap","_proto6","isRequiredInputField","Kind","freeze","NAME","DOCUMENT","OPERATION_DEFINITION","VARIABLE_DEFINITION","SELECTION_SET","FIELD","ARGUMENT","FRAGMENT_SPREAD","INLINE_FRAGMENT","FRAGMENT_DEFINITION","VARIABLE","INT","FLOAT","STRING","BOOLEAN","NULL","LIST","OBJECT","OBJECT_FIELD","DIRECTIVE","NAMED_TYPE","LIST_TYPE","NON_NULL_TYPE","SCHEMA_DEFINITION","OPERATION_TYPE_DEFINITION","SCALAR_TYPE_DEFINITION","OBJECT_TYPE_DEFINITION","FIELD_DEFINITION","INPUT_VALUE_DEFINITION","INTERFACE_TYPE_DEFINITION","UNION_TYPE_DEFINITION","ENUM_TYPE_DEFINITION","ENUM_VALUE_DEFINITION","INPUT_OBJECT_TYPE_DEFINITION","DIRECTIVE_DEFINITION","SCHEMA_EXTENSION","SCALAR_TYPE_EXTENSION","OBJECT_TYPE_EXTENSION","INTERFACE_TYPE_EXTENSION","UNION_TYPE_EXTENSION","ENUM_TYPE_EXTENSION","INPUT_OBJECT_TYPE_EXTENSION","_extends","assign","hasOwnProperty","call","_typeof","Symbol","iterator","constructor","id","TASK","HELPER","MATCH","CANCEL","SAGA_ACTION","SELF_CANCELLATION","konst","v","kTrue","noop","ident","check","predicate","error","log","hasOwn","property","is","notUndef","undef","func","f","number","n","string","s","array","promise","p","then","it","next","throw","iterable","task","t","observable","ob","buffer","buf","isEmpty","take","put","pattern","pat","channel","ch","close","helper","stringableFunc","remove","item","index","indexOf","splice","from","deferred","props","def","Promise","reject","arrayOfDeffered","delay","ms","val","timeoutId","setTimeout","clearTimeout","createMockTask","running","_result","_error","isRunning","result","setRunning","b","setResult","r","setError","e","autoInc","seed","uid","kThrow","err","kReturn","done","makeIterator","thro","isHelper","return","level","message","window","console","stack","deprecate","fn","deprecationWarning","updateIncentive","deprecated","preferred","internalErr","createSetContextWarning","ctx","wrapSagaDispatch","dispatch","action","cloneableGenerator","generatorFunc","_len","_key","history","gen","clone","clonedGen","exception","MAX_ARRAY_LENGTH","MAX_RECURSIVE_DEPTH","formatValue","seenValues","JSON","stringify","previouslySeenValues","customInspectFn","getCustomFn","customValue","len","Math","min","remaining","items","join","formatArray","tag","replace","getObjectTag","formatObject","formatObjectValue","GraphQLError","nodes","positions","path","originalError","_nodes","_source","loc","_locations","_positions","reduce","list","start","pos","_extensions","originalExtensions","locations","captureStackTrace","printError","output","_i2","_error$nodes2","_i4","_error$locations2","location","create","module","exports","IO","TAKE","PUT","ALL","RACE","CALL","CPS","FORK","JOIN","SELECT","ACTION_CHANNEL","CANCELLED","FLUSH","GET_CONTEXT","SET_CONTEXT","TEST_HINT","effect","payload","detach","eff","asEffect","fork","detached","patternOrChannel","maybe","takem","all","effects","race","getFnCallDesc","meth","context","_fn","_fn2","cps","_len2","_key2","_len3","_key3","spawn","_len4","_key4","_len5","tasks","_key5","cancel","_len6","_key6","select","selector","_len7","_key7","actionChannel","cancelled","flush","getContext","prop","setContext","sync","createAsEffectType","m","__export","styled_1","styled","default","condition","DirectiveLocation","QUERY","MUTATION","SUBSCRIPTION","SCHEMA","SCALAR","ARGUMENT_DEFINITION","INTERFACE","UNION","ENUM_VALUE","INPUT_OBJECT","INPUT_FIELD_DEFINITION","objectValues","__Schema","__Type","schema","getTypeMap","queryType","getQueryType","mutationType","getMutationType","subscriptionType","getSubscriptionType","directives","__Directive","getDirectives","__DirectiveLocation","__InputValue","directive","__TypeKind","TypeKind","NON_NULL","__Field","includeDeprecated","possibleTypes","getPossibleTypes","enumValues","__EnumValue","_ref3","inputFields","inputVal","valueAST","SchemaMetaFieldDef","_ref4","TypeMetaFieldDef","_ref5","_ref6","getType","TypeNameMetaFieldDef","_ref7","parentType","introspectionTypes","isIntrospectionType","some","_ref8","Number","isFinite","isInteger","floor","MAX_INT","MIN_INT","GraphQLInt","num","TypeError","ast","parseInt","GraphQLFloat","parseFloat","serializeObject","valueOf","valueOfResult","toJSON","GraphQLString","rawValue","GraphQLBoolean","GraphQLID","specifiedScalarTypes","isSpecifiedScalarType","userAgent","navigator","platform","gecko","test","ie_upto10","ie_11up","exec","edge","ie","ie_version","document","documentMode","webkit","qtwebkit","chrome","presto","safari","vendor","mac_geMountainLion","phantom","ios","android","mobile","mac","chromeOS","windows","presto_version","match","flipCtrlCmd","captureRightClick","classTest","cls","RegExp","range","rmClass","current","className","after","slice","removeChildren","count","childNodes","removeChild","firstChild","removeChildrenAndAdd","parent","appendChild","elt","content","style","createElement","cssText","createTextNode","eltP","setAttribute","contains","child","nodeType","parentNode","host","activeElt","activeElement","body","shadowRoot","addClass","joinClasses","a","as","split","createRange","end","endNode","setEnd","setStart","createTextRange","moveToElementText","collapse","moveEnd","moveStart","selectInput","copyObj","overwrite","countColumn","tabSize","startIndex","startValue","search","nextTab","selectionStart","selectionEnd","_e","Delayed","time","handler","onTimeout","self","Date","set","scrollerGap","Pass","sel_dontScroll","scroll","sel_mouse","origin","sel_move","findColumn","goal","col","skipped","spaceStrs","spaceStr","lst","out","nothing","createObj","base","inst","nonASCIISingleCaseWordChar","isWordCharBasic","toUpperCase","toLowerCase","isWordChar","extendingChars","isExtendingChar","charCodeAt","skipExtendingChars","str","dir","charAt","findFirst","pred","to","midF","mid","ceil","bidiOther","getBidiPartAt","order","sticky","found","cur","bidiOrdering","lowTypes","arabicTypes","bidiRE","isNeutral","isStrong","countsAsLeft","countsAsNum","BidiSpan","direction","outerType","code","i$1","prev","i$2","type$1","i$3","prev$1","type$2","i$4","type$3","j","i$5","cur$1","type$4","i$6","end$1","before","replace$1","j$1","i$7","at","j$2","nstart","unshift","reverse","getOrder","line","text","noHandlers","on","emitter","addEventListener","attachEvent","map$$1","_handlers","getHandlers","off","removeEventListener","detachEvent","signal","handlers","signalDOMEvent","cm","override","preventDefault","defaultPrevented","e_defaultPrevented","codemirrorIgnore","signalCursorActivity","cursorActivity","curOp","cursorActivityHandlers","hasHandler","eventMixin","ctor","e_preventDefault","returnValue","e_stopPropagation","stopPropagation","cancelBubble","e_stop","e_target","srcElement","e_button","which","button","ctrlKey","zwspSupported","badBidiRects","dragAndDrop","div","zeroWidthElement","measure","offsetHeight","offsetWidth","hasBadBidiRects","txt","r0","getBoundingClientRect","r1","left","right","splitLinesAuto","l","nl","rt","hasSelection","getSelection","te","range$$1","ownerDocument","selection","parentElement","compareEndPoints","hasCopyEvent","oncopy","badZoomedRects","modes","mimeModes","defineMode","mode","dependencies","resolveMode","spec","getMode","options","mfactory","modeObj","modeExtensions","exts","helperType","modeProps","prop$1","extendMode","properties","copyState","state","nstate","innerMode","info","startState","a1","a2","StringStream","lineOracle","lastColumnPos","lastColumnValue","lineStart","getLine","doc","first","size","chunk","lines","children","sz","chunkSize","getBetween","iter","getLines","updateLineHeight","height","diff","lineNo","no","_lineAtHeight","h","outer","lh","isLine","lineNumberFor","lineNumberFormatter","firstLineNumber","Pos","cmp","equalCursorPos","copyPos","maxPos","minPos","clipLine","max","_clipPos","last","linelen","clipToLen","clipPosArray","eol","sol","peek","eat","eatWhile","eatSpace","skipToEnd","skipTo","backUp","column","indentation","consume","caseInsensitive","cased","substr","hideFirstChars","inner","lookAhead","oracle","baseToken","SavedContext","Context","maxLookAhead","baseTokens","baseTokenPos","highlightLine","forceToEnd","st","modeGen","lineClasses","runMode","loop","o","overlay","overlays","i_end","opaque","styles","classes","bgClass","textClass","getLineStyles","updateFrontier","getContextBefore","resetState","maxHighlightLength","stateAfter","save","styleClasses","highlightFrontier","modeFrontier","precise","display","minindent","minline","lim","indented","findStartLine","saved","fromSaved","processLine","viewFrom","viewTo","nextLine","startAt","stream","callBlankLine","readToken","blankLine","token","copy","Token","takeToken","asArray","tokens","extractLineClasses","lineClass","flattenSpans","curStart","curStyle","addModeClass","mName","sawReadOnlySpans","sawCollapsedSpans","MarkedSpan","marker","getMarkedSpanFor","spans","span","removeMarkedSpan","stretchSpansOverChange","change","full","oldFirst","markedSpans","oldLast","startCh","endCh","isInsert","old","nw","inclusiveLeft","insertLeft","endsAfter","inclusiveRight","markedSpansBefore","startsBefore","markedSpansAfter","sameLine","offset","span$1","clearEmptySpans","newMarkers","gapMarkers","gap","clearWhenEmpty","detachMarkedSpans","detachLine","attachMarkedSpans","attachLine","extraLeft","extraRight","compareCollapsedMarkers","lenDiff","aPos","find","bPos","fromCmp","toCmp","collapsedSpanAtSide","sps","sp","collapsed","collapsedSpanAtStart","collapsedSpanAtEnd","collapsedSpanAround","conflictingCollapsedRange","lineNo$$1","visualLine","merged","visualLineNo","lineN","vis","visualLineEndNo","lastLine","lineIsHidden","widgetNode","lineIsHiddenInner","_heightAtLine","lineObj","lineLength","found$1","findMaxLine","d","maxLine","maxLineLength","maxLineChanged","Line","estimateHeight","cleanUpLine","styleToClassCache","styleToClassCacheWithMode","interpretTokenStyle","cache","buildLineContent","lineView","builder","pre","trailingSpace","splitSpaces","getOption","rest","addToken","buildToken","buildTokenBadBidi","insertLineContent","externalMeasured","maps","caches","lastChild","querySelector","defaultSpecialCharPlaceholder","title","startStyle","endStyle","css","attributes","displayText","trailingBefore","spaceBefore","special","specialChars","mustWrap","createDocumentFragment","lastIndex","txt$1","tabWidth","specialCharPlaceholder","fullStyle","attr","part","buildCollapsedSpan","ignoreWidget","widget","input","needsContentAttribute","setUneditable","allText","spanStyle","spanEndStyle","spanStartStyle","nextChange","Infinity","foundBookmarks","endStyles","upto","tokenText","LineView","visualLineContinued","hidden","buildViewArray","nextPos","view","operationGroup","orphanDelayedCallbacks","signalLater","delayedCallbacks","fireOrphanDelayed","delayed","updateLineForChanges","dims","changes","updateLineText","updateLineGutter","updateLineClasses","updateLineWidgets","ensureLineWrapped","replaceChild","zIndex","getLineContent","ext","built","background","wrap","insertBefore","updateLineBackground","wrapClass","gutter","gutterBackground","gutterClass","fixedGutter","fixedPos","gutterTotalWidth","markers","gutterMarkers","lineNumbers","wrap$1","gutterWrap","lineNumber","gutterLeft","lineNumInnerWidth","k","gutterSpecs","gutterWidth","alignable","nextSibling","insertLineWidgets","buildLineElement","insertLineWidgetsFor","allowAbove","widgets","ws","handleMouseEvents","positionLineWidget","above","noHScroll","width","wrapperWidth","coverGutter","paddingLeft","position","marginLeft","widgetHeight","parentStyle","gutters","wrapper","clientWidth","eventInWidget","getAttribute","sizer","mover","paddingTop","lineSpace","offsetTop","paddingVert","paddingH","cachedPaddingH","getComputedStyle","currentStyle","data","paddingRight","isNaN","scrollGap","nativeBarWidth","displayWidth","scroller","barWidth","displayHeight","clientHeight","barHeight","mapFromLineView","measureChar","bias","measureCharPrepared","prepareMeasureForLine","findViewForLine","findViewIndex","getDimensions","forceUpdate","lineMeasure","updateExternalMeasurement","rect","hasHeights","prepared","varHeight","wrapping","lineWrapping","curWidth","heights","rects","getClientRects","abs","bottom","top","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","documentElement","scrollLeft","pageScrollY","marginTop","pageYOffset","scrollTop","widgetTopHeight","intoCoordSystem","includeWidgets","yOff","viewOffset","lOff","xOff","fromCoordSystem","coords","localBox","lineSpaceBox","_charCoords","_cursorCoords","preparedMeasure","getBidi","partPos","invert","other","estimateCoords","PosWithInfo","outside","xRel","_coordsChar","y","coordsCharInner","rangeEnd","wrappedLineExtent","begin","wrappedLineExtentChar","boxIsAfter","box","widgetHeight$$1","ltr","coordsBidiPartWrapped","coordsBidiPart","baseX","chAround","boxAround","atLeft","atStart","_lineNo","ref","closestDist","endX","dist","textHeight","anchor","clientLeft","offsetLeft","compensateForHScroll","th","perLine","widgetsHeight","estimateLineHeights","est","estHeight","posFromMouse","liberal","forRect","space","clientX","clientY","colDiff","round","regChange","lendiff","updateLineNumbers","viewChanged","resetView","cut","viewCuttingPoint","cut$1","cutTop","cutBot","regLineChange","oldN","newN","countDirtyView","dirty","updateSelection","showSelection","prepareSelection","primary","curFragment","cursors","selFragment","sel","ranges","primIndex","empty","showCursorWhenSelecting","drawSelectionCursor","head","drawSelectionRange","cursor","cursorHeight","otherCursor","cmpCoords","fragment","padding","leftSide","rightSide","sizerWidth","docLTR","add","drawForLine","fromArg","toArg","lineLen","wrapX","side","extent","iterateBidiSections","fromPos","toPos","openStart","openEnd","openRight","topLeft","topRight","botLeft","botRight","sFrom","sTo","fromLine","toLine","singleVLine","leftEnd","rightStart","restartBlink","focused","clearInterval","blinker","cursorDiv","visibility","cursorBlinkRate","setInterval","ensureFocus","focus","onFocus","delayBlurEvent","delayingBlurEvent","onBlur","readOnly","selForContextMenu","reset","receivedFocus","shift","updateHeightsInViewport","prevBottom","lineDiv","updateWidgetHeight","chWidth","w","visibleLines","viewport","ensure","ensureFrom","ensureTo","calculateScrollPos","snapMargin","screentop","docBottom","atTop","atBottom","newTop","screenleft","screenw","tooWide","addToScrollTop","resolveScrollToPos","ensureCursorVisible","getCursor","scrollToPos","margin","cursorScrollMargin","scrollToCoords","scrollToCoordsRange","sPos","updateScrollTop","updateDisplaySimple","setScrollTop","startWorker","forceScroll","scrollHeight","scrollbars","setScrollLeft","isScroller","scrollWidth","alignHorizontally","measureForScrollbars","gutterW","docH","viewHeight","viewWidth","barLeft","docHeight","NativeScrollbars","vert","horiz","tabIndex","checkedZeroWidth","minHeight","minWidth","update","needsH","needsV","sWidth","totalHeight","totalWidth","zeroWidthHack","disableHoriz","enableZeroWidthBar","disableVert","pointerEvents","bar","maybeDisable","elementFromPoint","clear","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","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","innerHeight","scrollNode","scrollIntoView","maybeScrollWindow","limit","changed","endCoords","scrollPos","startTop","startLeft","scrollPosIntoView","maybeHiddenMarkers","unhidden","maybeUnhiddenMarkers","finish","runInOp","operation","methodOp","docMethodOp","highlight","highlightWorker","workTime","changedLines","oldStyles","highlighted","oldCls","newCls","ischange","workDelay","force","visible","editorIsHidden","wrapperHeight","oldDisplayWidth","events","renderedView","maybeUpdateLineNumberWidth","viewportMargin","different","lastWrapHeight","lastWrapWidth","adjustView","toUpdate","selSnapshot","hasFocus","active","anchorNode","extend","anchorOffset","focusNode","focusOffset","selectionSnapshot","updateNumbersFrom","container","rm","currentWheelTarget","updateNumber","patchDisplay","snapshot","removeAllRanges","addRange","restoreSelection","selectionDiv","reportedViewFrom","reportedViewTo","updateGutterSpace","alignWidgets","comp","align","innerW","lineGutter","lineNumWidth","getGutters","sawLineNumbers","renderGutters","specs","gElt","updateGutters","Display","draggable","wheelDX","wheelDY","activeTouch","init","wheelSamples","wheelPixelsPerUnit","wheelEventDelta","dx","wheelDeltaX","dy","wheelDeltaY","detail","HORIZONTAL_AXIS","VERTICAL_AXIS","wheelDelta","wheelEventPixels","delta","onScrollWheel","canScrollX","canScrollY","pixels","movedX","movedY","sample","Selection","equals","here","there","deepCopy","Range","somethingSelected","normalizeSelection","mayTouch","selectionsMayTouch","prim","sort","inv","simpleSelection","changeEnd","adjustForChange","computeSelAfterChange","offsetPos","loadMode","modeOption","resetModeState","isWholeLineUpdate","wholeLineUpdateBefore","updateDoc","estimateHeight$$1","spansFor","updateLine","linesFor","firstLine","lastText","lastSpans","nlines","insert","added","added$1","added$2","linkedDocs","sharedHistOnly","propagate","skip","sharedHist","linked","rel","shared","attachDoc","setDirectionClass","History","startGen","undone","undoDepth","lastModTime","lastSelTime","lastOp","lastSelOp","lastOrigin","lastSelOrigin","generation","maxGeneration","historyChangeFromChange","histChange","attachLocalSpans","clearSelectionEvents","pop","addChangeToHistory","selAfter","opId","hist","historyEventDelay","lastChangeEvent","pushSelectionToHistory","addSelectionToHistory","selectionEventCanBeMerged","clearRedo","dest","existing","removeClearedSpans","explicitlyCleared","mergeOldSpans","getOldSpans","stretched","oldCur","stretchCur","copyHistoryArray","newGroup","instantiateSel","event","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","makeChange","ignoreReadOnly","suppressEdits","mark","parts","mk","newParts","dfrom","dto","removeReadOnlyRanges","makeChangeInner","makeChangeSingleDoc","rebased","rebaseHist","makeChangeFromHistory","allowSelectionOnly","suppress","antiChanges","returned","shiftDoc","distance","removed","recomputeMaxLength","checkWidthStart","retreatFrontier","changesHandler","changeHandler","makeChangeSingleDocInEditor","_replaceRange","splitLines","rebaseHistSelSingle","rebaseHistArray","sub","ok","copied","changeLine","handle","changeType","LeafChunk","BranchChunk","removeInner","insertInner","iterN","oldHeight","leaf","maybeSpill","me","sibling","myIndex","used","LineWidget","opt","adjustScrollWhenAboveVisible","this$1","oldH","nextMarkerId","TextMarker","_markText","cloneNode","isParent","SharedTextMarker","markTextShared","replacedWith","addToHistory","curLine","addMarkedSpan","clearOnEnter","clearHistory","withOp","visual","dHeight","findSharedMarkers","findMarks","clipPos","detachSharedMarkers","subMarker","nextDocId","Doc","lineSep","cleanGeneration","lineSeparator","setValue","replaceRange","getRange","getLineHandle","getLineNumber","getLineHandleVisualStart","lineCount","listSelections","setCursor","extendSelectionsBy","setSelections","addSelection","getSelections","replaceSelection","dup","replaceSelections","newSel","hint","oldPrev","newPrev","computeReplacedSel","undo","redo","undoSelection","redoSelection","setExtending","getExtending","historySize","markClean","changeGeneration","forceSplit","isClean","getHistory","setHistory","histData","setGutterMarker","gutterID","clearGutter","lineInfo","addLineClass","where","removeLineClass","addLineWidget","insertAt","aboveVisible","removeLineWidget","markText","setBookmark","realOpts","findMarksAt","getAllMarks","posFromIndex","sepSize","indexFromPos","copyHistory","linkedDoc","mFrom","mTo","subMark","copySharedMarkers","unlinkDoc","CodeMirror","splitIds","iterLinkedDocs","getEditor","setDirection","eachLine","lastDrop","onDrop","clearDragCursor","files","dataTransfer","isReadOnly","FileReader","File","read","loadFile","file","allowDropFileTypes","reader","onload","readAsText","draggingText","text$1","getData","selected","dragCursor","forEachCodeMirror","getElementsByClassName","byClass","editors","globalsRegistered","ensureGlobalHandlers","resizeTimer","onResize","registerGlobalHandlers","setSize","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","63232","63233","63234","63235","63272","63273","63275","63276","63277","63302","fromCharCode","normalizeKeyName","alt","ctrl","cmd","mod","normalizeKeyMap","keymap","keyname","lookupKey","getKeyMap","fallthrough","isModifierKey","keyCode","addModifierNames","noShift","altKey","metaKey","shiftKey","keyName","altGraphKey","deleteNearSelection","compute","kill","toKill","replaced","moveCharLogically","moveLogically","endOfLine","visually","prep","targetTop","basic","pcDefault","emacsy","macDefault","commands","singleSelection","killLine","deleteLine","delLineLeft","delWrappedLineLeft","charCoords","coordsChar","delWrappedLineRight","rightPos","goDocStart","goDocEnd","goLineStart","goLineStartSmart","lineStartSmart","goLineEnd","visualLineEnd","lineEnd","goLineRight","cursorCoords","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","execCommand","transposeChars","newlineAndIndent","sels","indentLine","openLine","toggleOverwrite","firstNonWS","inWS","doHandleBinding","bound","dropShift","ensurePolled","prevShift","stopSeq","dispatchKey","seq","keySeq","dispatchKeyInner","keyMaps","extraKeys","lookupKeyForEditor","handleKeyBinding","motion","lastStoppedKey","onKeyDown","handled","up","showCrossHair","onKeyUp","onKeyPress","charCode","handleCharBinding","lastClick","lastDoubleClick","PastClick","onMouseDown","supportsTouch","clickInGutter","repeat","now","compare","clickRepeat","selectingText","handleMappedButton","contained","behavior","option","unit","addNew","moveOnDrag","configureMouse","dragDrop","moved","dragEnd","mouseMove","dragStart","e2","leftButtonStartDrag","ourRange","ourIndex","startSel","rangeForUnit","lastPos","extendTo","startCol","posCol","leftPos","oldRange","ranges$1","anchorLine","boundary","headIndex","usePart","bidiSimplify","editorSize","counter","move","buttons","curCount","leftButtonSelect","leftButtonDown","onContextMenu","findWordAt","gutterEvent","prevent","mX","mY","touches","lineBox","g","contextMenuInGutter","themeChanged","theme","Init","defaults","optionHandlers","dragDropChanged","funcs","dragFunctions","toggle","enter","over","leave","drop","wrappingChanged","inputStyles","inputStyle","pasteIncoming","cutIncoming","autofocus","word","touchFinished","prevTouch","finishTouch","farAway","touch","radiusX","radiusY","isMouseLikeTouchEvent","pageX","pageY","frag","onDragOver","setData","effectAllowed","setDragImage","img","src","_top","onDragStart","inp","getField","registerEventHandlers","finishInit","initHooks","textRendering","how","aggressive","indent","curSpace","curSpaceString","indentUnit","indentString","indentWithTabs","pos$1","defineInitHook","lastCopied","setLastCopied","newLastCopied","applyTextInput","inserted","deleted","recent","paste","textLines","multiPaste","pasteLinesPerSelection","lineWise","changeEvent","triggerElectric","handlePaste","pasted","clipboardData","disableInput","electricChars","smartIndent","getModeAt","electricInput","copyableRanges","lineRange","disableBrowserMagic","spellcheck","autocorrect","autocapitalize","hiddenTextarea","border","_findPosH","origDir","moveOnce","boundToLine","bidi","mv","getWrappedLineExtent","moveInStorageOrder","searchInVisualLine","getRes","res","nextCh","moveVisually","findNextLine","sawType","getHelper","hitSide","_findPosV","pageSize","moveAmount","ContentEditableInput","lastAnchorNode","lastAnchorOffset","lastFocusNode","lastFocusOffset","polling","composing","gracePeriod","readDOMTimeout","posToDOM","badPos","bad","domToPos","lineNode","locateNodeInLineView","textNode","topNode","nodeValue","curNode","textContent","previousSibling","dist$1","onCopyCut","lineWiseCopyCut","clearData","kludge","hadFocus","showPrimarySelection","updateFromDOM","readFromDOMSoon","forceCompositionEnd","showMultipleSelections","curAnchor","curFocus","rng","rangeCount","getRangeAt","startGracePeriod","rememberSelection","selectionInEditor","commonAncestorContainer","blur","pollSelection","pollInterval","poll","scan","isInGutter","triggerOnKeyDown","pollContent","fromIndex","fromNode","toNode","toIndex","newText","closing","extraLinebreak","addText","walk","cmText","markerID","isBlock","nodeName","domTextBetween","oldText","cutFront","cutEnd","oldTop","maxCutFront","newBot","oldBot","maxCutEnd","chFrom","chTo","contentEditable","readOnlyChanged","resetPosition","TextareaInput","prevInput","pollingFast","createField","textarea","prepareCopyCut","fastPoll","dispatchEvent","Event","_display","moveInputWithCursor","headPos","wrapOff","lineOff","teTop","teLeft","drawn","contextMenuPending","slowPoll","missed","same","resetSelectionOnContextMenu","oldScrollY","oldCSS","oldWrapperCSS","wrapperBox","offsetParent","scrollY","scrollTo","rehide","detectingSelectAll","prepareSelectAllHack","mouseup","extval","disabled","deflt","notOnInit","defineOption","newBreaks","refresh","getInputField","attach","integer","defineOptions","helpers","setOption","getDoc","addKeyMap","removeKeyMap","addOverlay","score","priority","insertSorted","modeSpec","removeOverlay","newRanges","getTokenAt","getLineTokens","getTokenTypeAt","getHelpers","help","_global","getStateAfter","lineAtHeight","heightAtLine","defaultTextHeight","defaultCharWidth","getViewport","addWidget","vspace","hspace","triggerOnKeyPress","triggerOnKeyUp","triggerOnMouseDown","findPosH","amount","rtlMoveVisually","findPosV","goalColumn","goals","startChar","getScrollInfo","scrollToRange","interpret","startOperation","endOperation","swapDoc","phrase","phraseText","phrases","getWrapperElement","getScrollerElement","getGutterElement","registerHelper","registerGlobalHelper","addEditorMethods","dontDelegate","method","defineMIME","mime","defineExtension","defineDocExtension","fromTextArea","tabindex","placeholder","realSubmit","form","leaveSubmitMethodAlone","submit","wrappedSubmit","getTextArea","toTextArea","cmpPos","addLegacyProps","version","factory","_hasOwnProperty","has","isValidEntityCode","c","fromCodePoint","surrogate1","surrogate2","UNESCAPE_MD_RE","UNESCAPE_ALL_RE","DIGITAL_ENTITY_TEST_RE","entities","HTML_ESCAPE_TEST_RE","HTML_ESCAPE_REPLACE_RE","HTML_REPLACEMENTS","replaceUnsafeChar","REGEXP_ESCAPE_RE","UNICODE_PUNCT_RE","lib","mdurl","ucmicro","isString","_class","unescapeMd","unescapeAll","escaped","entity","replaceEntityPattern","escapeHtml","arrayReplaceAt","newElements","isSpace","isWhiteSpace","isMdAsciiPunct","isPunctChar","escapeRE","normalizeReference","trim","print","printDocASTReducer","Name","Variable","Document","definitions","OperationDefinition","varDefs","variableDefinitions","selectionSet","VariableDefinition","variable","SelectionSet","block","selections","Field","alias","Argument","FragmentSpread","InlineFragment","typeCondition","FragmentDefinition","IntValue","FloatValue","_ref9","StringValue","_ref10","BooleanValue","_ref11","NullValue","EnumValue","_ref12","ListValue","_ref13","ObjectValue","_ref14","ObjectField","_ref15","Directive","_ref16","NamedType","_ref17","ListType","_ref18","NonNullType","_ref19","SchemaDefinition","_ref20","operationTypes","OperationTypeDefinition","_ref21","ScalarTypeDefinition","addDescription","_ref22","ObjectTypeDefinition","_ref23","FieldDefinition","_ref24","hasMultilineItems","InputValueDefinition","_ref25","InterfaceTypeDefinition","_ref26","UnionTypeDefinition","_ref27","EnumTypeDefinition","_ref28","EnumValueDefinition","_ref29","InputObjectTypeDefinition","_ref30","DirectiveDefinition","_ref31","repeatable","SchemaExtension","_ref32","ScalarTypeExtension","_ref33","ObjectTypeExtension","_ref34","InterfaceTypeExtension","_ref35","UnionTypeExtension","_ref36","EnumTypeExtension","_ref37","InputObjectTypeExtension","_ref38","cb","maybeArray","separator","maybeString","isMultiline","QueryDocumentKeys","BREAK","visit","root","visitor","visitorKeys","inArray","edits","ancestors","newRoot","isLeaving","isEdited","_Object$keys2","editOffset","ii","editKey","editValue","isNode","visitFn","getVisitFn","maybeNode","visitInParallel","visitors","skipping","visitWithTypeInfo","typeInfo","kindVisitor","kindSpecificVisitor","specificVisitor","specificKindVisitor","versionInfo","major","minor","patch","preReleaseTag","isPromise","syntaxError","locationOffset","TokenKind","SOF","EOF","BANG","DOLLAR","AMP","PAREN_L","PAREN_R","SPREAD","COLON","EQUALS","AT","BRACKET_L","BRACKET_R","BRACE_L","PIPE","BRACE_R","BLOCK_STRING","COMMENT","createLexer","startOfFileToken","Tok","lastToken","advance","advanceLexer","lookahead","isPunctuatorToken","printCharCode","lexer","bodyLength","startPosition","positionAfterWhitespace","readComment","readName","firstCode","isFloat","readDigits","readNumber","chunkStart","readBlockString","char2hex","invalidSequence","readString","unexpectedCharacterMessage","parse","parseDocument","parser","expectToken","parseValueLiteral","parseType","parseTypeReference","Parser","sourceObj","_lexer","_options","parseName","many","parseDefinition","parseOperationDefinition","parseFragmentDefinition","parseTypeSystemDefinition","parseTypeSystemExtension","peekDescription","unexpected","parseSelectionSet","parseOperationType","parseVariableDefinitions","parseDirectives","operationToken","optionalMany","parseVariableDefinition","parseVariable","expectOptionalToken","parseSelection","parseFragment","parseField","nameOrAlias","parseArguments","isConst","parseConstArgument","parseArgument","hasTypeCondition","expectOptionalKeyword","parseFragmentName","parseNamedType","expectKeyword","experimentalFragmentVariables","parseList","parseObject","parseStringLiteral","_this","any","_this2","parseObjectField","parseDirective","keywordToken","parseSchemaDefinition","parseScalarTypeDefinition","parseObjectTypeDefinition","parseInterfaceTypeDefinition","parseUnionTypeDefinition","parseEnumTypeDefinition","parseInputObjectTypeDefinition","parseDirectiveDefinition","parseDescription","parseOperationTypeDefinition","parseImplementsInterfaces","parseFieldsDefinition","allowLegacySDLImplementsInterfaces","allowLegacySDLEmptyFields","parseFieldDefinition","parseArgumentDefs","parseInputValueDef","parseUnionMemberTypes","parseEnumValuesDefinition","parseEnumValueDefinition","parseInputFieldsDefinition","parseSchemaExtension","parseScalarTypeExtension","parseObjectTypeExtension","parseInterfaceTypeExtension","parseUnionTypeExtension","parseEnumTypeExtension","parseInputObjectTypeExtension","parseDirectiveLocations","parseDirectiveLocation","startToken","noLocation","Loc","getTokenDesc","atToken","openKind","parseFn","closeKind","endToken","flatMapMethod","flatMap","NAME_RX","assertValidName","isValidNameError","isEqualType","typeA","typeB","isTypeSubTypeOf","maybeSubType","superType","isPossibleType","doTypesOverlap","isDirective","assertDirective","GraphQLDirective","isRepeatable","GraphQLIncludeDirective","if","GraphQLSkipDirective","DEFAULT_DEPRECATION_REASON","GraphQLDeprecatedDirective","reason","specifiedDirectives","isSpecifiedDirective","isSchema","assertSchema","GraphQLSchema","assumeValid","__validationErrors","allowedLegacyNames","__allowedLegacyNames","_queryType","query","_mutationType","mutation","_subscriptionType","subscription","_directives","initialTypes","typeMap","typeMapReducer","typeMapDirectiveReducer","_typeMap","_possibleTypeMap","_implementations","_objectValues2","_type$getInterfaces2","iface","impls","abstractType","possibleType","_i6","_this$getPossibleType2","getDirective","namedType","seenType","reducedMap","_i8","_objectValues4","_i10","_objectValues6","_map","validateSchema","reportError","getOperationTypeNode","validateRootTypes","_context$schema$getDi2","validateName","argNames","_loop","_directive$args2","validateDirectives","validateInputObjectCircularRefs","visitedTypes","fieldPath","fieldPathIndexByTypeName","detectCycleRecursive","inputObj","_i28","fieldType","cycleIndex","cyclePath","pathStr","fieldObj","createInputObjectCircularRefsValidator","validateFields","validateObjectInterfaces","validateUnionMembers","validateEnumValues","validateInputFields","validateTypes","errors","getErrors","assertValidSchema","SchemaValidationContext","_errors","addError","operationNodes","getAllSubNodes","getAllNodes","_loop2","_i12","_field$args2","implementedTypeNames","_i14","_object$getInterfaces2","getAllImplementsInterfaceNodes","validateObjectImplementsInterface","objectFieldMap","ifaceFieldMap","_i16","_objectEntries2","ifaceField","objectField","_loop3","_i18","_ifaceField$args2","ifaceArg","objectArg","_loop4","_i20","_objectField$args2","union","memberTypes","includedTypeNames","_i22","memberType","getUnionMemberTypeNodes","enumType","_i24","_i26","getter","typeNode","ifaceNode","unionNode","typeFromAST","innerType","invariant","TypeInfo","getFieldDefFn","initialType","_schema","_typeStack","_parentTypeStack","_inputTypeStack","_fieldDefStack","_defaultValueStack","_directive","_argument","_enumValue","_getFieldDef","getFieldDef","getParentType","getInputType","getParentInputType","getDefaultValue","getArgument","getEnumValue","fieldDef","typeConditionAST","outputType","inputType","argDef","argType","fieldOrDirective","listType","itemType","inputFieldType","inputField","objectType","fieldNode","UniqueOperationNames","knownOperationNames","operationName","duplicateOperationNameMessage","LoneAnonymousOperation","operationCount","definition","SingleFieldSubscriptions","MAX_SUGGESTIONS","didYouMean","firstArg","secondArg","subMessage","suggestions","lastItem","suggestionList","optionsByDistance","inputThreshold","lexicalDistance","aStr","bStr","aLength","bLength","_i3","_j","cost","KnownTypeNames","getSchema","existingTypesMap","definedTypes","_context$getDocument$2","getDocument","typeNames","_1","_2","definitionNode","isSDL","specifiedScalarsNames","isSpecifiedScalarName","suggestedTypes","unknownTypeMessage","FragmentsOnCompositeTypes","inlineFragmentOnNonCompositeErrorMessage","fragName","fragmentOnNonCompositeErrorMessage","VariablesAreInputTypes","variableName","nonInputTypeOnVarMessage","ScalarLeafs","noSubselectionAllowedMessage","requiredSubselectionMessage","FieldsOnCorrectType","suggestedTypeNames","suggestedObjectTypes","interfaceUsageCount","_schema$getPossibleTy2","_possibleType$getInte2","possibleInterface","getSuggestedTypeNames","suggestedFieldNames","possibleFieldNames","getSuggestedFieldNames","quotedTypeNames","quotedFieldNames","undefinedFieldMessage","UniqueFragmentNames","knownFragmentNames","fragmentName","PossibleFragmentSpreads","fragType","typeIncompatibleAnonSpreadMessage","getFragment","getFragmentType","typeIncompatibleSpreadMessage","cycleErrorMessage","spreadNames","via","NoFragmentCycles","visitedFrags","spreadPath","spreadPathIndexByName","spreadNodes","getFragmentSpreads","spreadNode","spreadName","spreadFragment","fragmentNames","UniqueVariableNames","knownVariableNames","duplicateVariableMessage","undefinedVarMessage","varName","opName","NoUndefinedVariables","variableNameDefined","usages","getRecursiveVariableUsages","unusedVariableMessage","NoUnusedVariables","variableDefs","variableNameUsed","_variableDefs2","variableDef","KnownDirectives","locationsMap","definedDirectives","astDefinitions","candidateLocation","appliedTo","getDirectiveLocationForASTPath","directiveName","misplacedDirectiveMessage","duplicateDirectiveMessage","UniqueDirectivesPerLocation","uniqueDirectiveMap","knownDirectives","unknownDirectiveArgMessage","suggestedArgs","KnownArgumentNames","KnownArgumentNamesOnDirectives","argNode","knownArgsNames","unknownArgMessage","directiveArgs","directiveNode","knownArgs","_directiveNode$argume2","UniqueArgumentNames","knownArgNames","duplicateArgMessage","badValueMessage","badEnumValueMessage","suggestedValues","ValuesOfCorrectType","isValidScalar","fieldTypeName","fieldNodeMap","typeStr","suggestedFields","enumTypeSuggestion","locationType","parseResult","isInvalid","allNames","missingDirectiveArgMessage","ProvidedRequiredArguments","ProvidedRequiredArgumentsOnDirectives","argNodes","argNodeMap","_fieldDef$args2","requiredArgsMap","isRequiredArgumentNode","requiredArgs","badVarPosMessage","varType","expectedType","VariablesInAllowedPosition","varDefMap","varDef","allowedVariableUsage","varDefaultValue","locationDefaultValue","fieldsConflictMessage","responseName","reasonMessage","subreason","OverlappingFieldsCanBeMerged","comparedFragmentPairs","PairSet","cachedFieldsAndFragmentNames","conflicts","_getFieldsAndFragment","getFieldsAndFragmentNames","_i5","conflict","findConflict","collectConflictsWithin","comparedFragments","collectConflictsBetweenFieldsAndFragment","collectConflictsBetweenFragments","findConflictsWithinSelectionSet","_ref2$","fields1","fields2","areMutuallyExclusive","_getReferencedFieldsA","getReferencedFieldsAndFragmentNames","fieldMap2","fragmentNames2","collectConflictsBetween","fragmentName1","fragmentName2","fragment1","fragment2","_getReferencedFieldsA2","fieldMap1","fragmentNames1","_getReferencedFieldsA3","parentFieldsAreMutuallyExclusive","_i7","field1","field2","parentType1","node1","def1","parentType2","node2","def2","type1","type2","name1","name2","arguments1","arguments2","every","argument1","value1","value2","argument2","argument","sameArguments","doTypesConflict","selectionSet1","selectionSet2","allFields","subfieldConflicts","_getFieldsAndFragment2","_getFieldsAndFragment3","_comparedFragments","findConflictsBetweenSubSelectionSets","cached","nodeAndDefs","_collectFieldsAndFragmentNames","_i9","_selectionSet$selecti2","inlineFragmentType","fragmentType","_defKindToExtKind","_data","_pairSetAdd","UniqueInputFieldNames","knownNameStack","knownNames","duplicateInputFieldMessage","duplicateOperationTypeMessage","existedOperationTypeMessage","duplicateEnumValueNameMessage","existedEnumValueNameMessage","duplicateFieldDefinitionNameMessage","existedFieldDefinitionNameMessage","hasField","extendingDifferentTypeKindMessage","defKindToExtKind","extensionKindToTypeName","specifiedRules","ExecutableDefinitions","KnownFragmentNames","NoUnusedFragments","specifiedSDLRules","oldSchema","alreadyDefined","schemaDefinitionsCount","definedOperationTypes","existingOperationTypes","checkOperationTypes","operationType","alreadyDefinedOperationType","knownTypeNames","checkTypeName","duplicateTypeNameMessage","existedTypeNameMessage","existingTypeMap","knownValueNames","checkValueUniqueness","valueNames","_node$values2","valueDef","existingType","knownFieldNames","checkFieldUniqueness","fieldNames","_node$fields2","knownDirectiveNames","duplicateDirectiveNameMessage","existedDirectiveNameMessage","checkExtension","defNode","expectedKind","_expectedKind","typeToExtKind","allTypeNames","extendingUnknownTypeMessage","_inheritsLoose","subClass","superClass","__proto__","ASTValidationContext","onError","_ast","_fragments","_fragmentSpreads","_recursivelyReferencedFragments","_onError","fragments","frags","statement","spreads","setsToVisit","_set$selections2","getRecursivelyReferencedFragments","collectedNames","nodesToVisit","_this$getFragmentSpre2","SDLValidationContext","_ASTValidationContext","_ASTValidationContext2","ValidationContext","_typeInfo","_variableUsages","_recursiveVariableUsages","getVariableUsages","newUsages","_this$getRecursivelyR2","validate","documentAST","rules","abortObj","maxErrors","rule","validateSDL","schemaToExtend","addPath","pathToArray","flattened","curr","locatedError","getOperationRootType","printPathArray","valueFromAST","variables","variableValue","coercedValues","_valueNode$values2","itemNode","isMissingVariable","itemValue","coercedValue","coercedObj","fieldNodes","fieldValue","coerceInputValue","inputValue","coerceInputValueImpl","_coercedValue","fieldDefs","_suggestions","defaultOnError","invalidValue","errorPrefix","getVariableValues","varDefNodes","inputs","coerced","varDefNode","varTypeStr","_varTypeStr","_varTypeStr2","prefix","coerceVariableValues","getArgumentValues","variableValues","_def$args2","argumentNode","isNull","getDirectiveValues","directiveDef","execute","argsOrSchema","rootValue","contextValue","fieldResolver","typeResolver","executeImpl","assertValidExecutionArguments","exeContext","buildExecutionContext","collectFields","sourceValue","callback","results","resolveField","resolvedResult","initialValue","previous","resolved","executeFieldsSerially","executeFields","executeOperation","buildResponse","rawVariableValues","hasMultipleAssumedOperations","_document$definitions2","coercedVariableValues","containsPromise","valuesAndPromises","resolvedObject","promiseForObject","runtimeType","visitedFragmentNames","shouldIncludeNode","doesFragmentConditionMatch","include","typeConditionNode","conditionalType","resolveFn","buildResolveInfo","resolveFieldValueOrError","completeValueCatchingError","returnType","asErrorInstance","completed","completeValue","handleFieldError","rawError","isNullish","completedResults","completedItem","completeListValue","serializedResult","completeLeafValue","resolveTypeFn","resolvedRuntimeType","completeObjectValue","ensureValidRuntimeType","completeAbstractValue","runtimeTypeOrName","resolvedIsTypeOf","invalidReturnTypeError","collectAndExecuteSubfields","collectSubfields","cache0","a3","WeakMap","cache2","cache1","cachedValue","newValue","memoize3","subFieldNodes","__typename","promisedIsTypeOfResults","isTypeOfResult","isTypeOfResults","graphql","_arguments","graphqlImpl","graphqlSync","schemaValidationErrors","validationErrors","mapAsyncIterator","rejectCallback","$return","abruptClose","mapReject","mapResult","asyncMapValue","iteratorResult","rethrow","catch","subscribeFieldResolver","subscribeImpl","reportGraphQLError","sourcePromise","createSourceEventStream","mapSourceToResponse","resultOrStream","eventStream","formatError","getIntrospectionQuery","descriptions","introspectionQuery","introspectionFromSchema","buildClientSchema","introspection","__schema","schemaIntrospection","typeIntrospection","scalarIntrospection","objectIntrospection","getInterfaceType","buildFieldDefMap","buildObjectDef","interfaceIntrospection","unionIntrospection","getObjectType","buildUnionDef","enumIntrospection","valueIntrospection","buildEnumDef","inputObjectIntrospection","buildInputValueDefMap","buildInputObjectDef","buildType","stdType","directiveIntrospection","typeRef","itemRef","nullableRef","nullableType","getOutputType","fieldIntrospection","inputValueIntrospections","buildInputValue","inputValueIntrospection","buildASTSchema","schemaDef","assumeValidSDL","assertValidSDL","typeDefs","directiveDefs","_documentAST$definiti2","astBuilder","keyByNameNode","opTypes","_schema$operationType2","getOperationTypes","buildDirective","stdTypeMap","ASTDefinitionBuilder","_resolveType","getWrappedType","getDescription","buildArg","buildField","getDeprecationReason","buildInputField","buildEnumValue","_makeTypeDef","_makeInterfaceDef","_makeEnumDef","_makeUnionDef","_makeScalarDef","_makeInputObjectDef","_this3","interfaceNodes","_this4","_this5","valueNodes","_this6","typeNodes","_this7","valFn","commentDescriptions","comments","getLeadingCommentBlock","buildSchema","extendSchema","assertValidSDLExtension","typeExtsMap","schemaExts","extendedTypeName","existingTypeExts","schemaConfig","_schemaConfig$types2","extendNamedType","_schemaDef$operationT2","schemaExt","_schemaExt$operationT2","_operation","_type","getMaybeTypeByName","existingDirectives","extendDirective","getMergedDirectives","replaceType","replaceNamedType","extendScalarType","extendField","extendObjectType","extendInterfaceType","extendUnionType","extendEnumType","extendInputObjectType","extendArg","lexicographicSortSchema","sortByName","sortTypes","sortFields","_config","_config2","_config3","sortObjMap","_config4","sortBy","sortArgs","replaceMaybeType","maybeType","fieldsMap","sortValueFn","sortedMap","sortedKeys","mapToKey","obj1","obj2","key1","key2","localeCompare","printSchema","printFilteredSchema","isDefinedType","printIntrospectionSchema","directiveFilter","typeFilter","printSchemaDefinition","printDescription","printArgs","printDirective","printType","isSchemaOfCommonNames","printScalar","implementedInterfaces","printFields","printObject","printInterface","printUnion","printDeprecated","printBlock","printEnum","printInputValue","printInputObject","defaultAST","astFromValue","argDecl","fieldOrEnumVal","reasonAST","firstInBlock","maxLen","rawLines","sublines","breakLine","descriptionLines","printDescriptionWithComments","preferMultipleLines","coerceValue","blameNode","errorPath","pathArray","isValidJSValue","isValidLiteralValue","emptySchema","emptyDoc","concatAST","asts","separateOperations","fromName","operations","depGraph","idx","toName","separatedDocumentASTs","collectTransitiveDependencies","n1","n2","collected","immediateDeps","_Object$keys4","stripIgnoredCharacters","strippedBody","wasLastAddedTokenNonPunctuator","currentToken","tokenKind","isNonPunctuator","tokenBody","dedentBlockString","blockStr","rawStr","lastChar","BreakingChangeType","TYPE_REMOVED","TYPE_CHANGED_KIND","TYPE_REMOVED_FROM_UNION","VALUE_REMOVED_FROM_ENUM","REQUIRED_INPUT_FIELD_ADDED","INTERFACE_REMOVED_FROM_OBJECT","FIELD_REMOVED","FIELD_CHANGED_KIND","REQUIRED_ARG_ADDED","ARG_REMOVED","ARG_CHANGED_KIND","DIRECTIVE_REMOVED","DIRECTIVE_ARG_REMOVED","REQUIRED_DIRECTIVE_ARG_ADDED","DIRECTIVE_LOCATION_REMOVED","DangerousChangeType","VALUE_ADDED_TO_ENUM","TYPE_ADDED_TO_UNION","OPTIONAL_INPUT_FIELD_ADDED","OPTIONAL_ARG_ADDED","INTERFACE_ADDED_TO_OBJECT","ARG_DEFAULT_VALUE_CHANGE","findBreakingChanges","newSchema","findSchemaChanges","findDangerousChanges","schemaChanges","typesDiff","_typesDiff$removed2","oldType","_typesDiff$persisted2","persisted","_oldType","newType","findEnumTypeChanges","findUnionTypeChanges","findInputObjectTypeChanges","findObjectTypeChanges","findFieldChanges","typeKindName","findTypeChanges","directivesDiff","_directivesDiff$remov2","oldDirective","_directivesDiff$persi2","_oldDirective","newDirective","argsDiff","_argsDiff$added2","newArg","_argsDiff$removed2","oldArg","_oldDirective$locatio2","findDirectiveChanges","fieldsDiff","_fieldsDiff$added2","newField","_fieldsDiff$removed2","oldField","_fieldsDiff$persisted2","_oldField","_newField","isChangeSafeForInputObjectFieldOrFieldArg","possibleTypesDiff","_possibleTypesDiff$ad2","newPossibleType","_possibleTypesDiff$re2","oldPossibleType","valuesDiff","_valuesDiff$added2","_valuesDiff$removed2","oldValue","interfacesDiff","_i30","_interfacesDiff$added2","newInterface","_i32","_interfacesDiff$remov2","oldInterface","_i34","_fieldsDiff$removed4","_i36","_fieldsDiff$persisted4","_oldField2","findArgChanges","isChangeSafeForObjectOrInterfaceField","_i38","_argsDiff$removed4","_i40","_argsDiff$persisted2","_oldArg","oldValueStr","stringifyValue","newValueStr","_i42","_argsDiff$added4","_newArg","sortedAST","objectNode","fieldA","fieldB","oldArray","newArray","oldMap","newMap","_i44","oldItem","newItem","_i46","_newItem","findDeprecatedUsages","enumVal","_extendStatics","setPrototypeOf","__extends","__","_assign","__rest","propertyIsEnumerable","subscriptionShape","shape","trySubscribe","isRequired","tryUnsubscribe","notifyNestedSubs","isSubscribed","storeShape","getState","forwardRef","createProvider","storeKey","_Provider$childContex","subscriptionKey","Provider","_Component","store","getChildContext","render","only","propTypes","element","childContextTypes","_assertThisInitialized","ReferenceError","_objectWithoutPropertiesLoose","excluded","sourceKeys","CLEARED","nullListeners","notify","Subscription","parentSub","onStateChange","unsubscribe","listeners","addNestedSub","listener","createListenerCollection","hotReloadingVersion","dummyState","connectAdvanced","selectorFactory","_contextTypes","_childContextTypes","_ref2$getDisplayName","getDisplayName","_ref2$methodName","methodName","_ref2$renderCountProp","renderCountProp","_ref2$shouldHandleSta","shouldHandleStateChanges","_ref2$storeKey","_ref2$withRef","withRef","connectOptions","contextTypes","WrappedComponent","wrappedComponentName","displayName","selectorFactoryOptions","Connect","renderCount","propsMode","setWrappedInstance","initSelector","initSubscription","componentDidMount","run","shouldComponentUpdate","componentWillReceiveProps","nextProps","componentWillUnmount","getWrappedInstance","wrappedInstance","sourceSelector","makeSelectorStateful","componentDidUpdate","notifyNestedSubsOnComponentDidUpdate","setState","addExtraProps","withExtras","UNSAFE_componentWillReceiveProps","shallowEqual","objA","objB","keysA","keysB","wrapMapToPropsConstant","getConstant","constant","constantSelector","dependsOnOwnProps","getDependsOnOwnProps","mapToProps","wrapMapToPropsFunc","proxy","stateOrDispatch","ownProps","mapDispatchToProps","mapStateToProps","defaultMergeProps","stateProps","dispatchProps","mergeProps","mergedProps","pure","areMergedPropsEqual","hasRunOnce","nextMergedProps","wrapMergePropsFunc","impureFinalPropsSelectorFactory","pureFinalPropsSelectorFactory","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","hasRunAtLeastOnce","handleSubsequentCalls","nextState","nextOwnProps","propsChanged","stateChanged","nextStateProps","statePropsChanged","handleNewState","finalPropsSelectorFactory","initMapStateToProps","initMapDispatchToProps","initMergeProps","factories","strictEqual","_temp","_ref$connectHOC","connectHOC","_ref$mapStateToPropsF","mapStateToPropsFactories","_ref$mapDispatchToPro","mapDispatchToPropsFactories","_ref$mergePropsFactor","mergePropsFactories","_ref$selectorFactory","_ref3$pure","_ref3$areStatesEqual","_ref3$areOwnPropsEqua","_ref3$areStatePropsEq","_ref3$areMergedPropsE","extraOptions","genericMessage","_a","proto","InvariantError","_super","framesToPop","wrapConsoleMethod","warn","processStub","env","process","Function","atLeastWeTried","defaultEqualityCheck","areArgumentsShallowlyEqual","equalityCheck","defaultMemoize","lastArgs","lastResult","getDependencies","dep","dependencyTypes","createSelectorCreator","memoize","memoizeOptions","recomputations","resultFunc","memoizedResultFunc","params","resetRecomputations","__esModule","createStructuredSelector","selectors","selectorCreator","createSelector","objectKeys","composition","reselect_1","reducers_1","getSelectedWorkspaceId","getSessionsState","getIn","makeWorkspace","workspace","getSelectedSession","getSelectedSessionId","selectedSessionId","sessions","getSelectedSessionIdFromRoot","makeSessionSelector","session","getSettings","getParsedHeadersFromSession","headers","getParsedVariablesFromSession","getScrollTop","getEndpoint","getQuery","getFile","getVariables","getResponses","getOperationName","getQueryRunning","getSubscriptionActive","getOperations","getVariableToType","getQueryTypes","getDate","getHasMutation","getHasSubscription","getHasQuery","getIsFile","getStarred","getName","getFilePath","getSelectedUserToken","getHeaders","getHasChanged","getAbsolutePath","getIsSettingsTab","getIsConfigTab","getCurrentQueryStartTime","getCurrentQueryEndTime","getIsReloadingSchema","getIsPollingSchema","endpoint","settings","json","getResponseExtensions","getQueryVariablesActive","getEndpointUnreachable","getEditorFlex","getVariableEditorOpen","getVariableEditorHeight","getIsExtensionsDrawerOpen","getIsTracingActive","getResponseTracingHeight","getDocExplorerWidth","getNextQueryStartTime","getTracingSupported","getIsQueryPlanSupported","getTabWidth","getUseTabs","getHeadersCount","getParsedHeaders","getParsedVariables","getTracing","tracing","getQueryPlan","__queryPlanExperimental","getSessionsArray","toArray","format","argIndex","keyFn","SHIFT","SIZE","MASK","NOT_SET","SetRef","OwnerID","ensureSize","__iterate","returnTrue","wrapIndex","uint32Index","wholeSlice","isNeg","resolveBegin","resolveIndex","resolveEnd","defaultIndex","IS_COLLECTION_SYMBOL","isCollection","maybeCollection","IS_KEYED_SYMBOL","isKeyed","maybeKeyed","IS_INDEXED_SYMBOL","isIndexed","maybeIndexed","isAssociative","maybeAssociative","Collection","Seq","KeyedCollection","KeyedSeq","IndexedCollection","IndexedSeq","SetCollection","SetSeq","Keyed","Indexed","Set","IS_SEQ_SYMBOL","isSeq","maybeSeq","IS_RECORD_SYMBOL","isRecord","maybeRecord","isImmutable","maybeImmutable","IS_ORDERED_SYMBOL","isOrdered","maybeOrdered","ITERATE_KEYS","ITERATE_VALUES","ITERATE_ENTRIES","REAL_ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","ITERATOR_SYMBOL","Iterator","iteratorValue","iteratorDone","hasIterator","maybeIterable","getIteratorFn","isIterator","maybeIterator","getIterator","iteratorFn","KEYS","VALUES","ENTRIES","toSource","isArrayLike","Collection$$1","emptySequence","toSeq","maybeIndexedSeqFromValue","ObjectSeq","seqFromValue","__toString","cacheResult","_cache","__iterateUncached","entrySeq","entry","__iterator","__iteratorUncached","toKeyedSeq","fromEntrySeq","keyedSeqFromValue","toIndexedSeq","indexedSeqFromValue","of","toSetSeq","ArraySeq","_array","notSetValue","_object","_keys","EMPTY_SEQ","CollectionSeq","collection","_collection","iterations","step","IS_MAP_SYMBOL","isMap","maybeMap","isOrderedMap","maybeOrderedMap","isValueObject","maybeValue","hashCode","valueA","valueB","imul","smi","i32","defaultValueOf","hash","hashNumber","STRING_HASH_CACHE_MIN_STRLEN","hashed","stringHashCache","hashString","STRING_HASH_CACHE_SIZE","STRING_HASH_CACHE_MAX_SIZE","cachedHashString","usingWeakMap","weakMap","UID_HASH_KEY","canDefineProperty","uniqueID","getIENodeHash","objHashUID","isExtensible","hashJSObj","ToKeyedSequence","KeyedSeq$$1","indexed","useKeys","_iter","_useKeys","valueSeq","reversedSequence","reverseFactory","mapper","mappedSequence","mapFactory","ToIndexedSequence","IndexedSeq$$1","includes","ToSetSequence","SetSeq$$1","FromEntriesSequence","entries","validateEntry","indexedCollection","flipFactory","flipSequence","makeSequence","flip","cacheResultThrough","filterFactory","filterSequence","sliceFactory","originalSize","resolvedBegin","resolvedEnd","sliceSize","resolvedSize","sliceSeq","isSkipping","skipWhileFactory","skipSequence","concatFactory","isKeyedCollection","iters","singleton","concatSeq","flatten","sum","flattenFactory","depth","flatSequence","stopped","flatDeep","currentDepth","sortFactory","comparator","defaultComparator","maxFactory","maxCompare","zipWithFactory","keyIter","zipper","zipAll","zipSequence","iterators","isDone","steps","reify","collectionClass","arrCopy","newArr","assertNotInfinite","coerceKeyPath","keyPath","isDataStructure","quoteString","_ignoreError","shallowCopy","collectionCopy","updateIn","updater","updatedValue","updateInDeeply","inImmutable","wasNotSet","existingValue","nextExisting","nextUpdated","emptyMap","setIn","setIn$1","removeIn","deleteIn","update$1","updateIn$1","merge","mergeIntoKeyedWith","mergeWith","merger","collections","collection$1","__ownerID","withMutations","mergeIntoCollection","oldVal","merge$1","sources","mergeWithSources","mergeWith$1","mergeDeep","mergeDeepWithSources","mergeDeepWith","deepMerger","deepMergerWith","mergeItem","hasVal","nextVal","mergeDeep$1","mergeDeepWith$1","mergeIn","mergeDeepIn","mutable","asMutable","wasAltered","__ensureOwner","asImmutable","__altered","KeyedCollection$$1","keyValues","_root","updateMap","deleteAll","__hash","OrderedMap","MapIterator","iterate","ownerID","makeMap","MapPrototype","removeAll","ArrayMapNode","keyHash","didChangeSize","didAlter","exists","MAX_ARRAY_MAP_SIZE","ValueNode","createNodes","isEditable","newEntries","BitmapIndexedNode","bitmap","bit","popCount","keyHashFrag","newNode","updateNode","MAX_BITMAP_INDEXED_SIZE","including","expandedNodes","HashArrayMapNode","expandNodes","isLeafNode","newBitmap","newNodes","setAt","canEdit","newLen","spliceOut","spliceIn","newCount","MIN_HASH_ARRAY_MAP_SIZE","excluding","packedII","packedNodes","packNodes","HashCollisionNode","mergeIntoNode","keyMatch","maxIndex","EMPTY_MAP","Iterator$$1","_reverse","_stack","mapIteratorFrame","mapIteratorValue","subNode","__prev","hash$$1","newSize","idx1","idx2","IS_LIST_SYMBOL","isList","maybeList","List","IndexedCollection$$1","emptyList","makeList","VNode","listNodeFor","_origin","setListBounds","newTail","_tail","getTailOffset","_capacity","updateVNode","_level","updateList","oldSize","arguments$1","seqs","iterateList","DONE","ListPrototype","removeBefore","originIndex","newChild","removingFirst","oldChild","editable","editableVNode","removeAfter","sizeIndex","EMPTY_LIST","tailPos","tail","iterateNodeOrLeaf","iterateLeaf","iterateNode","capacity","nodeHas","lowerNode","newLowerNode","rawIndex","owner","oldOrigin","oldCapacity","newOrigin","newCapacity","newLevel","offsetShift","oldTailOffset","newTailOffset","oldTail","beginIndex","EMPTY_ORDERED_MAP","Map$$1","emptyOrderedMap","_list","updateOrderedMap","newList","makeOrderedMap","omap","toMap","IS_STACK_SYMBOL","isStack","maybeStack","Stack","emptyStack","pushAll","_head","makeStack","EMPTY_STACK","StackPrototype","unshiftAll","IS_SET_SYMBOL","isSet","maybeSet","isOrderedSet","maybeOrderedSet","deepEqual","notAssociative","flipped","_","allEqual","bSize","mixin","methods","keyCopier","toJS","result$1","SetCollection$$1","emptySet","fromKeys","intersect","sets","SetPrototype","updateSet","removes","adds","mapped","toRemove","subtract","OrderedSet","__make","__empty","EMPTY_SET","makeSet","EMPTY_RANGE","_start","_end","_step","searchValue","possibleIndex","offsetValue","lastIndexOf","searchKeyPath","getIn$1","hasIn","toObject","isIterable","useTuples","toOrderedMap","toOrderedSet","toSet","toStack","toList","__toStringMapper","findEntry","sideEffect","joined","isFirst","reducer","initialReduction","reduceRight","not","butLast","countBy","grouper","groups","countByFactory","entriesSequence","entryMapper","filterNot","findKey","findLast","findLastEntry","findLastKey","coerce","flatMapFactory","searchKey","groupBy","isKeyedIter","groupByFactory","isSubset","isSuperset","keyOf","keyMapper","lastKeyOf","maxBy","neg","defaultNegComparator","minBy","skipLast","skipWhile","skipUntil","takeLast","takeWhile","takeSequence","iterating","takeWhileFactory","takeUntil","ordered","keyed","murmurHashOfSize","hashMerge","hashCollection","CollectionPrototype","chain","mapEntries","mapKeys","KeyedCollectionPrototype","findIndex","removeNum","numArgs","spliced","findLastIndex","interpose","interposedSequence","interposeFactory","interleave","zipped","interleaved","zip","defaultZipper","zipWith","IndexedCollectionPrototype","reduction","useFirst","Set$$1","emptyOrderedSet","EMPTY_ORDERED_SET","OrderedSetPrototype","makeOrderedSet","Record","defaultValues","hasInitialized","RecordType","indices","RecordTypePrototype","_indices","_name","_defaultValues","propName","recordName","setProp","RecordPrototype","recordSeq","newValues","makeRecord","getDescriptiveName","likeRecord","record","getPrototypeOf","EMPTY_REPEAT","Repeat","times","_value","fromJS","converter","fromJSWith","parentValue","converted","defaultConverter","Immutable","Iterable","YAMLException","TYPE_CONSTRUCTOR_OPTIONS","YAML_NODE_KINDS","construct","represent","defaultStyle","styleAliases","compileStyleAliases","END","isEnd","subscribers","emit","INVALID_BUFFER","UNDEFINED_INPUT_ERROR","fixed","closed","takers","checkForbiddenStates","eventChannel","none","matcher","chan","__closed__","stdChannel","redux_actions_1","simpleAction","editQuery","createActions","EDIT_QUERY","EDIT_HEADERS","EDIT_ENDPOINT","EDIT_VARIABLES","SET_OPERATION_NAME","SET_VARIABLE_TO_TYPE","SET_OPERATIONS","SET_EDITOR_FLEX","EDIT_NAME","OPEN_QUERY_VARIABLES","queryVariablesActive","CLOSE_QUERY_VARIABLES","SET_VARIABLE_EDITOR_HEIGHT","SET_RESPONSE_TRACING_HEIGHT","SET_TRACING_SUPPORTED","SET_IS_QUERY_PLAN_SUPPORTED","SET_SUBSCRIPTION_ACTIVE","SET_QUERY_TYPES","SET_RESPONSE_EXTENSIONS","SET_CURRENT_QUERY_START_TIME","SET_CURRENT_QUERY_END_TIME","UPDATE_QUERY_FACTS","PRETTIFY_QUERY","INJECT_HEADERS","CLOSE_TRACING","OPEN_TRACING","TOGGLE_TRACING","CLOSE_VARIABLES","OPEN_VARIABLES","TOGGLE_VARIABLES","ADD_RESPONSE","workspaceId","sessionId","response","SET_RESPONSE","CLEAR_RESPONSES","FETCH_SCHEMA","REFETCH_SCHEMA","SET_ENDPOINT_UNREACHABLE","SET_SCROLL_TOP","SCHEMA_FETCHING_SUCCESS","tracingSupported","isQueryPlanSupported","isPollingSchema","SCHEMA_FETCHING_ERROR","RENEW_STACKS","RUN_QUERY","QUERY_SUCCESS","QUERY_ERROR","RUN_QUERY_AT_POSITION","START_QUERY","STOP_QUERY","OPEN_SETTINGS_TAB","OPEN_CONFIG_TAB","NEW_SESSION","reuseHeaders","NEW_SESSION_FROM_QUERY","NEW_FILE_TAB","fileName","filePath","DUPLICATE_SESSION","CLOSE_SELECTED_TAB","SELECT_NEXT_TAB","SELECT_PREV_TAB","SELECT_TAB","SELECT_TAB_INDEX","CLOSE_TAB","REORDER_TABS","EDIT_SETTINGS","SAVE_SETTINGS","EDIT_CONFIG","SAVE_CONFIG","EDIT_FILE","SAVE_FILE","editVariables","setOperationName","editHeaders","editEndpoint","setVariableToType","setOperations","startQuery","stopQuery","setEditorFlex","openQueryVariables","closeQueryVariables","setVariableEditorHeight","setResponseTracingHeight","setTracingSupported","setIsQueryPlanSupported","closeTracing","openTracing","closeVariables","openVariables","addResponse","setResponse","clearResponses","openSettingsTab","schemaFetchingSuccess","schemaFetchingError","setEndpointUnreachable","renewStacks","runQuery","prettifyQuery","fetchSchema","updateQueryFacts","runQueryAtPosition","toggleTracing","toggleVariables","newSession","newSessionFromQuery","newFileTab","closeTab","closeSelectedTab","editSettings","saveSettings","editConfig","saveConfig","editFile","saveFile","selectTab","selectTabIndex","selectNextTab","selectPrevTab","duplicateSession","querySuccess","queryError","setSubscriptionActive","setQueryTypes","injectHeaders","openConfigTab","editName","setResponseExtensions","setCurrentQueryStartTime","setCurrentQueryEndTime","refetchSchema","reorderTabs","__assign","redux_immutable_1","reducers_2","reducers_3","reducers_4","immutable_1","reducers_5","immutableMemoize_1","deserialize_1","reducers_6","getSelectedWorkspace","Workspace","docs","makeSessionState","sharing","SharingState","defaultSettings","RootState","workspaces","selectedWorkspace","settingsString","stateInjected","appHistory","AppHistory","general","GeneralState","workspaceReducers","combineReducers","sessionState","DocsSession","parseSettingsString","normalizeSettings","rootReducer","deserializePersistedState","tabs","tabSessions","sessionFromTab","acc","makeStateFromTabs","OPEN_HISTORY","CLOSE_HISTORY","SET_ENDPOINT_DISABLED","SET_CONFIG_STRING","getSessionCounts","immutableMemoize","sessionCount","getSettingsString","normalizeSettingsString","getTheme","customSettings","Observable","SYMBOL","SYMBOL_ITERATOR","$$iterator","getIteratorMethod","ArrayLikeIterator","_o","_i","thisArg","SYMBOL_ASYNC_ITERATOR","asyncIterator","$$asyncIterator","isAsyncIterable","getAsyncIteratorMethod","getAsyncIterator","asyncIterable","AsyncFromSyncIterator","classObject","toStringTag","DEFAULT_NAMESPACE","ACTION_TYPE_DELIMITER","isValidActionType","isFunction","isSymbol","combineActions","actionsTypes","combinedActionType","createAction","payloadCreator","metaCreator","identity","finalPayloadCreator","hasMeta","typeString","actionCreator","meta","partialObject","Reflect","getOwnPropertyNames","partialFlatMap","partialFlatActionType","_ref$namespace","namespace","nextNamespace","connectPrefix","partials","connectNamespace","flattenWhenNode","isPlainObject","unflattenActionCreators","flatActionCreators","nestedActionCreators","unprefixedType","unflatten","flatActionType","partialNestedActionCreators","partialFlatActionTypePath","camelCase","actionMap","identityActions","getLastElement","actionCreatorsFromIdentityActions","actionMapToActionCreators","flattenActionMap","actionCreatorsFromActionMap","arrayToObject","partialActionCreators","_objectSpread2","actionMapValue","isNil","_actionMapValue$","isValidActionMapValue","prefixedType","actionCreators","partialActionMap","_objectSpread3","_objectSpread4","handleAction","defaultState","isUndefined","aReducer","nextReducer","throwReducer","actionType","initialState","reducers","prevState","prevStateIsUndefined","valueIsUndefined","newState","hasOnlyInterfaceNames","ownKey","hasGeneratorInterface","handleActions","flattenedReducerMap","flattenReducerMap","isDefinitionNode","isExecutableDefinitionNode","isTypeSystemDefinitionNode","isTypeSystemExtensionNode","isSelectionNode","isValueNode","isTypeNode","isTypeDefinitionNode","isTypeExtensionNode","React","Svg","AddIcon","viewBox","x1","y1","x2","y2","AddFullIcon","FullArrowRightIcon","SettingsIcon","CrossIcon","ArrowRight","stroke","strokeWidth","strokeLinecap","strokeLinejoin","fill","transform","points","Star","onClick","Search","color","cx","cy","ShareIcon","Triangle","fillRule","dedentBlockStringValue","rawString","commonIndent","getBlockStringIndentation","isBlank","leadingWhitespace","printBlockString","isSingleLine","hasLeadingSpace","hasTrailingQuote","printAsMultipleLines","BUFFER_OVERFLOW","ON_OVERFLOW_THROW","ON_OVERFLOW_SLIDE","ON_OVERFLOW_EXPAND","zeroBuffer","ringBuffer","overflowAction","pushIndex","popIndex","doubledLimit","buffers","dropping","sliding","expanding","initialSize","LinkError","link","isTerminating","request","toPromise","makePromise","fromPromise","observer","complete","fromError","errorValue","createOperation","starting","getKey","passthrough","forward","toLink","ApolloLink","links","leftLink","rightLink","second","firstLink","nextLink","transformedOperation","transformOperation","OPERATION_FIELDS","validateOperation","doFold","noFold","ensureFlags","regexp","flags","ignoreCase","global","multiline","regexpFlags","searchRegexpForward","searchRegexpForwardMultiline","maybeMultiline","inside","startLine","lastMatchIn","cutOff","newMatch","searchRegexpBackward","searchRegexpBackwardMultiline","adjustPos","orig","folded","foldFunc","searchStringForward","caseFold","fold","cutFrom","endString","searchStringBackward","topString","SearchCursor","atOccurrence","matches","normalize","findNext","findPrevious","getSearchCursor","dialogDiv","template","dialog","innerHTML","closeNotification","newVal","currentNotificationClose","onClose","getElementsByTagName","selectValueOnOpen","onInput","closeOnEnter","closeOnBlur","blurring","doneTimer","duration","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","qEnd","safeName","fsmIterator","fsm","q0","updateState","qNext","_fsm$qNext","q","_updateState","takeEvery","worker","yTake","setAction","ac","q1","q2","takeLatest","yFork","yCancel","setTask","q3","throttle","delayLength","yActionChannel","yDelay","setChannel","q4","helperName","cuid","getQueryTypes_1","columnWidth","defaultQuery","modalStyle","backgroundColor","alignItems","justifyContent","borderRadius","boxShadow","getDefaultSession","responses","hasMutation","hasSubscription","hasQuery","queryTypes","subscriptionActive","date","starred","queryRunning","isReloadingSchema","isSchemaPendingUpdate","responseExtensions","endpointUnreachable","editorFlex","variableEditorOpen","variableEditorHeight","responseTracingHeight","isExtensionsDrawerOpen","isTracingActive","docExplorerWidth","variableToType","isFile","selectedUserToken","hasChanged","absolutePath","isSettingsTab","isConfigTab","currentQueryStartTime","currentQueryEndTime","nextQueryStartTime","__makeTemplateObject","cooked","raw","templateObject_1","templateObject_2","templateObject_3","EditorWrapper","editorColours","comment","punctuation","keyword","attribute","builtin","string2","atom","colours","cursorColor","editorBackground","textInactive","GlobalStyle","createGlobalStyle","GraphqlContainer","Container","getWidth","graphqlContainer","setGraphqlContainer","PureComponent","onMouseMove","classList","setStacks","SET_STACKS","stacks","ADD_STACK","TOGGLE_DOCS","activeTabIdx","SET_DOCS_VISIBLE","open","CHANGE_WIDTH_DOCS","CHANGE_KEY_MOVE","SHOW_DOC_FOR_REFERENCE","reference","addStack","toggleDocs","setDocsVisible","changeWidthDocs","changeKeyMove","showDocForReference","getSessionDocsState","getSessionDocs","getDocsOpen","freeSelf","objectProto","nativeObjectToString","symToStringTag","isOwn","unmasked","nullTag","undefinedTag","objectTag","funcProto","funcToString","objectCtorString","Ctor","ActionTypes","INIT","preloadedState","enhancer","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","replaceReducer","outerSubscribe","observeState","getUndefinedStateErrorMessage","reducerKeys","finalReducers","finalReducerKeys","shapeAssertionError","random","substring","assertReducerShape","previousStateForKey","nextStateForKey","errorMessage","bindActionCreator","bindActionCreators","boundActionCreators","compose","applyMiddleware","middlewares","createStore","_dispatch","middlewareAPI","middleware","astValue","valuesNodes","serialized","stringNum","integerStringRegExp","tokenType","lineText","findOpening","openCh","pass","nextOpen","nextClose","hasImport","semi","hasInclude","_autocompleteUtils","getDefinitionState","forEachState","hintList","_getAutocompleteSuggestions","getAutocompleteSuggestions","_getDefinition","LANGUAGE","getDefinitionQueryResultForFragmentSpread","getDefinitionQueryResultForDefinitionNode","_getDiagnostics","getDiagnostics","validateQuery","_getOutline","getOutline","_getHoverInformation","getHoverInformation","_GraphQLLanguageService","GraphQLLanguageService","redux_1","react_redux_1","graphql_1","ArgumentInline_1","Icons_1","toJS_1","actions_1","selectors_1","selectors_2","TypeLink","clickable","setRef","keyMove","isActive","updateSize","onSetWidth","collapsable","beforeNode","afterNode","showParentName","isGraphqlType","DocsCategoryItem","Dots","renderType","DefaultValue","IconBox","defaultProps","Component","nav","navStack","lastActive","connect","templateObject_4","black07","white","black30","isNothing","subject","isObject","sequence","cycle","isNegativeZero","NEGATIVE_INFINITY","common","Type","compileList","exclude","includedSchema","currentType","previousType","previousIndex","Schema","implicit","explicit","loadKind","compiledImplicit","compiledExplicit","compiledTypeMap","scalar","mapping","fallback","collectType","compileMap","DEFAULT","schemas","queue","semaphore","suspend","release","asap","propIsEnumerable","test1","test2","test3","letter","shouldUseNative","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","runClearTimeout","Item","nextTick","browser","argv","versions","addListener","once","removeListener","removeAllListeners","prependListener","prependOnceListener","binding","cwd","chdir","umask","app","discreteValues","pow","pad","randomBlock","safeCounter","api","timestamp","getTime","fingerprint","slug","globalCount","mimeTypes","register","applitude","__generator","label","sent","trys","verb","prettier","safely","e_1","prettify","plugins","isIframe","LARGE_ARRAY_SIZE","CORE_ERROR_TEXT","FUNC_ERROR_TEXT","HASH_UNDEFINED","MAX_MEMOIZE_SIZE","PLACEHOLDER","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","WRAP_BIND_FLAG","WRAP_BIND_KEY_FLAG","WRAP_CURRY_BOUND_FLAG","WRAP_CURRY_FLAG","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","WRAP_FLIP_FLAG","DEFAULT_TRUNC_LENGTH","DEFAULT_TRUNC_OMISSION","HOT_COUNT","HOT_SPAN","LAZY_FILTER_FLAG","LAZY_MAP_FLAG","INFINITY","MAX_SAFE_INTEGER","MAX_INTEGER","NAN","MAX_ARRAY_INDEX","HALF_MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","asyncTag","boolTag","dateTag","domExcTag","errorTag","funcTag","genTag","mapTag","numberTag","proxyTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","weakSetTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrim","reTrimStart","reTrimEnd","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsComboRange","rsComboMarksRange","rsBreakRange","rsMathOpRange","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","reOptMod","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","freeParseInt","freeGlobal","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","require","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","isDate","nodeIsMap","nodeIsRegExp","isRegExp","nodeIsSet","nodeIsTypedArray","isTypedArray","arrayAggregator","setter","iteratee","accumulator","arrayEach","arrayEachRight","arrayEvery","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","arrayMap","arrayPush","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","eachFunc","baseFindIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","baseTimes","baseUnary","baseValues","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","mapToArray","overArg","replaceHolders","setToArray","setToPairs","stringSize","unicodeSize","stringToArray","unicodeToArray","asciiToArray","unescapeHtmlChar","runInContext","pick","arrayProto","coreJsData","idCounter","maskSrcKey","IE_PROTO","oldDash","reIsNative","Buffer","Uint8Array","allocUnsafe","getPrototype","objectCreate","spreadableSymbol","isConcatSpreadable","symIterator","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","isBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","DataView","nativeCreate","metaMap","realNames","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","lodash","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","ListCache","MapCache","SetCache","__data__","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","assignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","paths","lower","upper","baseClone","bitmask","customizer","isDeep","isFlat","isFull","initCloneArray","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","cloneArrayBuffer","dataView","byteOffset","byteLength","cloneDataView","cloneTypedArray","cloneRegExp","symbol","initCloneByTag","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","wait","baseDifference","isCommon","valuesLength","computed","valuesIndex","templateSettings","getMapData","pairs","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","baseFilter","baseFlatten","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGet","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","getRawTag","objectToString","baseGt","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","maxLength","seen","baseInvoke","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","convert","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","baseIsNative","baseIteratee","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","getMatchData","matchesStrictComparable","isKey","isStrictComparable","baseMerge","srcIndex","mergeFunc","safeGet","isTyped","isArrayLikeObject","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","comparer","baseSortBy","objCriteria","criteria","othCriteria","ordersLength","compareAscending","compareMultiple","basePickBy","baseSet","basePullAll","basePullAt","indexes","baseUnset","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","low","high","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","baseWhile","isDrop","baseWrapperValue","actions","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","guard","isIterateeCall","createCaseFirst","trailing","createCompounder","words","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","prereq","thru","getFuncName","funcName","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","countHolders","newHolders","createRecurry","arrLength","reorder","createInverter","toIteratee","baseInverter","createMathOperation","operator","createOver","arrayFunc","createPadding","chars","charsLength","toFinite","baseRange","createRelationalOperation","toNumber","wrapFunc","isCurry","newData","setWrapToString","createRound","precision","toInteger","pair","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrValue","otherFunc","isKeyable","stubArray","hasPath","hasFunc","isLength","ArrayBuffer","ctorString","isMaskable","stubFalse","otherArgs","shortOut","details","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","rand","memoizeCapped","quote","subString","difference","differenceBy","differenceWith","intersection","intersectionBy","intersectionWith","pull","pullAll","pullAt","unionBy","unionWith","unzip","unzipWith","without","xor","xorBy","xorWith","interceptor","wrapperAt","forEachRight","invokeMap","keyBy","partition","bindKey","debounce","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","defer","resolver","memoized","Cache","negate","overArgs","transforms","funcsLength","partial","partialRight","rearg","gt","gte","isError","isNumber","lt","lte","iteratorToArray","remainder","toLength","isBinary","assignIn","assignInWith","assignWith","propsIndex","propsLength","defaultsDeep","invertBy","invoke","omit","basePick","pickBy","toPairs","toPairsIn","capitalize","upperFirst","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flow","flowRight","methodOf","overEvery","overSome","basePropertyDeep","rangeRight","augend","addend","divide","dividend","divisor","multiply","multiplier","multiplicand","minuend","subtrahend","castArray","compact","cond","conforms","baseConforms","curry","curryRight","dropRight","dropRightWhile","dropWhile","baseFill","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","fromPairs","functions","functionsIn","initial","mapValues","matchesProperty","nthArg","omitBy","orderBy","propertyOf","pullAllBy","pullAllWith","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","spread","takeRight","takeRightWhile","tap","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","unset","updateWith","valuesIn","zipObject","zipObjectDeep","entriesIn","extendWith","clamp","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","endsWith","escape","escapeRegExp","forIn","forInRight","forOwn","forOwnRight","inRange","baseInRange","isBoolean","isElement","isEqual","isEqualWith","isMatch","isMatchWith","isNative","isSafeInteger","isWeakMap","isWeakSet","strictLastIndexOf","mean","meanBy","stubObject","stubString","stubTrue","nth","noConflict","strLength","padEnd","padStart","radix","floating","temp","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","startsWith","sumBy","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reDelimiters","evaluate","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","toLower","toSafeInteger","toUpper","trimEnd","trimStart","truncate","omission","newEnd","unescape","uniqueId","each","eachRight","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","isRight","getView","iterLength","takeCount","iterIndex","commit","wrapped","ie_lt8","matching","bracketRegex","findMatchingBracket","afterCursor","re","strict","scanForBracket","maxScanLen","maxScanLineLength","maxScanLines","matchBrackets","autoclear","maxHighlightLen","maxHighlightLineLength","marks","doMatchBrackets","currentlyHighlighted","oldConfig","opts","foldGutter","onGutterClick","onChange","onViewportChange","onFold","State","indicatorOpen","indicatorFolded","updateInViewport","isFolded","__isFold","updateFoldInfo","minSize","foldOption","clsFolded","clsOpen","vp","foldCode","changeUpdate","foldOnChangeTimeSpan","updateViewportTimeSpan","interpretLine","jumpToLine","shortText","openDialog","prompt","getJumpDialog","posStr","cmds","moveSubword","cat","findPosSubword","insertLine","newSelection","wordAt","addCursorToSelection","newRange","goSubwordLeft","goSubwordRight","scrollLineUp","visibleBottomLine","scrollLineDown","visibleTopLine","splitSelectionByLine","lineRanges","singleSelectionTop","selectLine","extended","insertLineAfter","insertLineBefore","selectNextOccurrence","fullWord","sublimeFindFullWord","isSelectedRange","addCursorToPrevLine","addCursorToNextLine","mirror","selectBetweenBrackets","opening","startPos","sortLines","caseSensitive","toSort","au","bu","modifyWordOrSelection","replacements","getTarget","findAndGoTo","selectScope","goToBracket","swapLineUp","linesToMove","newSels","swapLineDown","toggleCommentIndented","toggleComment","joinLines","actual","duplicateLine","sortLinesInsensitive","nextBookmark","sublimeBookmarks","prevBookmark","toggleBookmark","sublimeBookmark","clearBookmarks","selectBookmarks","smartBackspace","toStartOfLine","deletePos","prevIndent","delLineRight","upcaseAtCursor","downcaseAtCursor","setSublimeMark","sublimeMark","selectToSublimeMark","deleteToSublimeMark","tmp","sublimeKilled","swapWithSublimeMark","sublimeYank","showInCenter","findUnder","findUnderPrevious","findAllUnder","primaryIndex","macSublime","pcSublime","sublime","queryText","contextToken","getTokenAtPosition","getTypeInfo","_graphql","documentation","getSuggestionsForFieldNames","argDefs","objectFieldDefs","objectFields","namedInputType","getSuggestionsForInputValues","possibleObjTypes","possibleIfaceMap","getSuggestionsForFragmentTypeConditions","defState","relevantFrags","fragmentDefs","runOnlineParser","getFragmentDefinitions","getSuggestionsForFragmentSpread","inputTypeMap","inputTypes","getSuggestionsForVariableDefinition","canUseDirective","getSuggestionsForDirective","_graphqlLanguageServiceParser","styleAtCursor","stateAtCursor","stringAtCursor","getCurrentPosition","character","onlineParser","CharacterStream","getStartOfToken","tokenState","makeGeneralSelector","getFixedEndpoint","getHistoryOpen","getConfigString","setSettingsString","SET_SETTINGS_STRING","configString","setConfigString","openHistory","closeHistory","getDeeperType","implementations","isVarType","fieldMap_1","getElementIndex","main","interfaceIndex","fieldsIndex","implementationIndex","getNewStack","splittedPath","pointer","lastPointer","_loop_1","currentPath","argFound","getRootMap","serializeRoot","queries","mutations","subscriptions","queryFieldMap","mutationFieldMap_1","ss","subscriptionFieldMap_1","getElementRoot","getElement","sourceText","_pos","_sourceText","char","_testNextCharacter","isMatched","didEat","regex","whitespaces","ofRule","butNot","exclusions","ruleMatch","exclusion","isIgnored","LexRules","Punctuation","Comment","ParseRules","Definition","ShortQuery","Query","Mutation","VariableDefinitions","AliasedField","Arguments","TypeCondition","Value","NumberValue","SchemaDef","OperationTypeDef","ScalarDef","ObjectTypeDef","Implements","FieldDef","ArgumentsDef","InputValueDef","InterfaceDef","UnionDef","UnionMember","EnumDef","EnumValueDef","InputDef","ExtendDef","DirectiveDef","eatWhitespace","lexRules","parseRules","editorConfig","needsSeperator","pushRule","popRule","needsAdvance","advanceRule","indentLevel","kinds","lex","SpecialParseRules","backupState","levels","expected","unsuccessful","getToken","Invalid","ruleKind","successful","nodejsCustomInspectSymbol","for","getLocation","lineRegexp","styledComponents","theme_1","injectGlobal","keyframes","ThemeProvider","withTheme","constants_1","fetchingSagas_1","react_sortable_hoc_1","Session","ResponseRecord","resultID","isSchemaError","makeSession","tab","SessionState","_b","newSessions","SET_SELECTED_SESSION_ID","settingsTab","configTab","fileTab","currentSession","currentSession_1","headersString","newIndexes","arrayMove","ndx","newSessionData","sessionIndex","leftNeighbour","subscriptionEndpoint","apollo_link_1","parseHeaders_1","subscriptions_transport_ws_1","apollo_link_http_1","apollo_link_ws_1","hasSubscription_1","effects_1","redux_saga_1","makeOperation_1","SchemaFetcher_1","actions_2","utils_1","setSubscriptionEndpoint","defaultLinkCreator","connectionParams","credentials","httpLink","HttpLink","uri","subscriptionClient","SubscriptionClient","lazy","webSocketLink","WebSocketLink","isSubscription","linkCreator","schemaFetcher","SchemaFetcher","setLinkCreator","newLinkCreator","fetchingSchema","extractMessage","fecthingSagas","selectedWorkspaceId","operationIsSubscription","lol","firstResponse","_c","makeOperation","parseHeaders","onDisconnected","addHistoryItem","toggleHistoryItemStarring","TOGGLE_HISTORY_ITEM_STARRING","ADD_HISTORY_ITEM","vendorPrefix","newIndex","keysToOmit","closest","el","getElementMargin","getCSSPixelValue","marginRight","provideDisplayName","componentName","getPosition","changedTouches","isTouchEvent","getEdgeOffset","nodeOffset","getLockPixelOffset","lockOffset","offsetX","offsetY","_invariant2","_invariant","OLink","stringValue","definitionState","_introspection","filterNonEmpty","proximity","getProximity","normalizeText","filterAndSortList","reverseStateStack","filtered","suggestion","_regeneratorRuntime","getDefinitionQueryResultForNamedType","defNodes","async","_context","stderr","write","abrupt","queryRange","getDefinitionForNodeDefinition","stop","_context2","getDefinitionForFragmentDefinition","_graphqlLanguageServiceUtils","_assert","_assert2","locToRange","offsetToPosition","language","projectRoot","_getASTNodeAtPosition","getASTNodeAtPosition","pointToOffset","_Range","Position","_validateWithCustomRules","validateWithCustomRules","SEVERITY","customRules","isRelayCompatMode","severity","ERROR","WARNING","INFORMATION","HINT","validationErrorAnnotations","mapCat","annotations","deprecationWarningAnnotations","highlightNode","highlightLoc","into","renderQualifiedField","renderTypeAnnotation","renderField","renderDescription","_into","renderDirective","_into2","renderArg","_into3","renderEnumValue","_into4","renderDeprecation","share","TOGGLE_SHARE_HISTORY","TOGGLE_SHARE_HEADERS","TOGGLE_SHARE_ALL_TABS","SHARE","SET_SHARE_URL","shareUrl","toggleShareHistory","toggleShareHeaders","toggleShareAllTabs","setShareUrl","selectWorkspace","SELECT_WORKSPACE","INIT_STATE","INJECT_STATE","INJECT_TABS","initState","injectState","injectTabs","product","_classCallCheck","instance","Constructor","_defineProperties","descriptor","_createClass","protoProps","staticProps","__awaiter","P","generator","fulfilled","rejected","NativeWebSocket","WebSocket","MozWebSocket","Backoff","eventemitter3_1","is_string_1","is_object_1","printer_1","getOperationAST_1","symbol_observable_1","protocol_1","defaults_1","message_types_1","url","webSocketImpl","webSocketProtocols","connectionCallback","_d","WS_TIMEOUT","reconnect","_f","reconnectionAttempts","_g","_h","inactivityTimeout","wsImpl","wsProtocols","GRAPHQL_WS","nextOperationId","wsTimeout","unsentMessagesQueue","reconnecting","closedByUser","backoff","jitter","eventEmitter","EventEmitter","client","maxConnectTimeGenerator","createMaxConnectTimeGenerator","getConnectionParams","CLOSED","readyState","isForced","clearInactivityTimeout","clearCheckConnectionInterval","clearMaxConnectTimeout","clearTryReconnectTimeout","unsubscribeAll","sendMessage","GQL_CONNECTION_TERMINATE","tryReconnect","getObserver","_unsubscribe","observerOrNext","onComplete","eventName","onConnected","onConnecting","onReconnected","onReconnecting","subId","applyMiddlewares","scope","use","generateOperationId","processedOptions","checkOperationOptions","GQL_START","formatErrors","_complete","maxValue","factor","checkConnectionIntervalId","maxConnectTimeoutId","tryReconnectTimeoutId","inactivityTimeoutId","setInactivityTimeout","getOperationAST","buildMessage","sendMessageRaw","status","OPEN","serializedMessage","send","CONNECTING","attempts","flushUnsentMessagesQueue","checkConnection","wasKeepAliveReceived","checkMaxConnectTimeout","onopen","error_1","GQL_CONNECTION_INIT","GQL_CONNECTION_ERROR","onclose","onerror","onmessage","processReceivedData","receivedData","parsedMessage","GQL_DATA","GQL_COMPLETE","GQL_ERROR","GQL_CONNECTION_ACK","parsedPayload","GQL_CONNECTION_KEEP_ALIVE","firstKA","GQL_STOP","docsOpen","docsWidth","getSession","newNavStack","AppHistoryItem","configPath","folderName","platformToken","lastOpened","SELECT_APP_HISTORY_ITEM","getAppHistory","MD","onHasCompletion_1","EditorWrapper_1","md","QueryEditor","editor","onEdit","ignoreChangeEvent","onHasCompletion","onHintInformationRender","closeCompletion","completionActive","getRef","useTabs","autoCloseBrackets","minFoldSize","lint","hintOptions","closeOnUnfocus","completeSingle","onClickReference","jump","showHint","onRunQuery","prevProps","updateSessionScrollTop","Editor","getCodeMirror","getClientHeight","Ruler","__rules__","__cache__","__find__","__compile__","chains","enabled","altName","beforeName","ruleName","afterName","enable","ignoreInvalid","enableOnly","disable","getRules","nesting","attrs","markup","attrIndex","attrPush","attrData","attrSet","attrGet","attrJoin","HINT_ELEMENT_CLASS","ACTIVE_HINT_ELEMENT_CLASS","Completion","tick","startLen","activityFunc","getHints","newOpts","defaultOptions","parseOptions","supportsSelection","completion","requestAnimationFrame","cancelAnimationFrame","getText","getHintElement","hintsElement","Widget","picked","parentWindow","defaultView","hints","selectedHint","completions","hintId","alignWithWord","below","offsetParentPosition","bodyPosition","winW","innerWidth","winH","overlapY","scrolls","startScroll","closingOnBlur","overlapX","Up","moveFocus","Down","PageUp","menuSize","PageDown","Home","setFocus","End","Enter","Tab","Esc","custom","customKeys","ourMap","addBinding","extra","buildKeyMap","avoidWrap","changeActive","screenAmount","onScroll","curScroll","point","completeOnSingleClick","fetchHints","closeCharacters","myTick","finishUpdate","applicableHelpers","fromList","anyword","term","autocomplete","auto","closeBefore","triples","explode","conf","closeBrackets","ensureBound","Backspace","getConfig","around","charsAround","linesep","identical","curType","stringStartsAfter","contractSelection","handleChar","inverted","SearchState","posFrom","posTo","lastQuery","getSearchState","queryCaseInsensitive","parseString","parseQuery","isRE","startSearch","searchOverlay","showMatchesOnScrollbar","annotate","doSearch","rev","persistent","immediate","hiding","searchNext","opacity","onEnter","clearSearch","persistentDialog","getQueryDialog","replaceAll","dialogText","getReplaceQueryDialog","getReplacementQueryDialog","fs","openConfirm","confirm","confirmDialog","getDoReplaceConfirm","doReplace","findPersistent","findPersistentNext","findPersistentPrev","findPrev","GUTTER_ID","showTooltipFor","tooltip","tt","showTooltip","hide","LintState","hasGutter","marked","onMouseOver","ann","__annotation","annotationTooltip","popupTooltips","waitingFor","clearMarks","makeMarker","labels","multiple","tooltips","tip","messageHTML","startLinting","passOptions","getAnnotations","abort","arg2","updateLinting","lintAsync","issues","annotationsNotSorted","groupByLine","anns","maxSeverity","tipLabel","formatAnnotation","onUpdateLinting","lintOnChange","hasLintGutter","visitorFns","docText","representativeName","endPosition","tokenizedText","concatMap","outlineTreeConverter","outlineTrees","OUTLINEABLE_KINDS","_getAutocompleteSuggestions2","_getHoverInformation2","_graphQLCache","_graphQLConfig","getGraphQLConfig","queryHasExtensions","projectConfig","schemaPath","queryAST","fragmentDefinitions","fragmentDependencies","dependenciesSource","validationAst","customRulesModulePath","rulesPath","getConfigForFile","t0","awrap","getFragmentDependencies","t1","customValidationRules","projectName","_context3","getDefinition","_context4","_getDefinitionForFragmentSpread","_getDefinitionForNamedType","objectTypeDefinitions","localObjectTypeDefinitions","localOperationDefinationInfos","_context5","getObjectTypeDefinitions","getObjectTypeDependenciesForAST","localFragDefinitions","localFragInfos","_context6","getFragmentDependenciesForAST","_codemirror","_codemirror2","textAfter","lineComment","index_1","Share_1","SchemaReload_1","PropTypes","actions_3","TopBar","copyCurlToClipboard","curl","getCurl","sessionHeaders","Accept","Connection","DNT","Origin","TopBarWrapper","Button","UrlBarWrapper","UrlBar","fixedEndpoint","ReachError","Spinner","flexDirection","onReloadSchema","shareEnabled","buttonText","buttonHover","templateObject_5","templateObject_6","templateObject_7","navigationBar","navigationBarText","Pulse","icon","SpinnerWrapper","getSharingState","makeSharingSelector","getSharingHistory","getSharingHeaders","getSharingAllTabs","getShareUrl","rotation","Wrapper","SpinnerNode","DocType","canUseDOM","_exenv","EE","SafeHTMLElement","HTMLElement","LRU","getEndpointFromEndpointConfig","getActiveEndpoints","envName","projects","endpoints","printSchemaCache","cachedPrintSchema","cachedString","schemaString","NOT_ITERATOR_ERROR","CHANNEL_END","TASK_CANCEL","matchers","wildcard","patterns","_predicate","wrapHelper","proc","parentContext","parentEffectId","cont","runParallelEffect","runAllEffect","sagaMonitor","logger","logError","sagaStack","taskContext","_mutatorMap","_deferredEnd","_isRunning","joiners","isCancelled","_isCancelled","isAborted","_isAborted","descs","desc","_defineEnumerableProperties","newTask","mainTask","taskQueue","cancelAll","addTask","isErr","getTasks","taskNames","forkQueue","isMainRunning","runEffect","effectId","effectTriggered","effectSettled","currCb","effectRejected","effectResolved","effectCancelled","resolvePromise","runForkEffect","resolveIterator","takeCb","runTakeEffect","runPutEffect","childCbs","chCbAtKey","_response","runRaceEffect","runCallEffect","cpsCb","runCPSEffect","joiner","runJoinEffect","taskToCancel","runCancelEffect","runSelectEffect","runChannelEffect","runFlushEffect","runCancelledEffect","runGetContextEffect","runSetContextEffect","cancelPromise","taskIterator","pc","createTaskIterator","_task","completedCount","NON_GENERATOR_ERR","RUN_SAGA_SIGNATURE","runSaga","storeInterface","saga","_storeInterface","actionDispatched","_ref$context","_objectWithoutProperties","sagaMiddleware","sagaEmitter","nonExecutableDefinitionMessage","defName","_node$definitions2","unknownFragmentMessage","unusedFragMessage","operationDefs","fragmentNameUsed","_context$getRecursive2","fragmentDef","PlaygroundWrapper_1","Playground","GraphQLEditor_1","GraphQLEditor","GraphQLBinApp_1","printLocation","printSourceLocation","sourceLocation","firstLineColumnOffset","whitespace","lineIndex","lineOffset","lineNum","columnOffset","columnNum","locationStr","locationLine","sublineIndex","sublineColumnNum","printPrefixedLines","subline","existingLines","padLen","u","A","C","$","O","z","N","S","F","W","B","D","E","G","H","I","J","K","L","M","Q","R","T","U","V","X","Y","Z","ee","ae","ce","se","fe","ne","le","oe","he","ue","de","be","pe","ke","ge","Ae","Ce","we","ve","xe","$e","ye","Oe","je","ze","Ne","Se","Fe","We","qe","Be","De","Ee","Ge","He","Je","Re","Te","Ue","Ve","Xe","Ye","Qe","Ie","Pe","Me","Le","Ke","areInputsEqual","newInputs","lastInputs","resultFn","calledOnce","newArgs","Playground_1","react_helmet_1","yaml","ProjectsSideNav_1","util_1","getParameterByName","href","decodeURIComponent","PlaygroundWrapper","handleUpdateSessionCount","getPlaygroundRef","playground","handleChangeConfig","handleSaveConfig","onSaveConfig","handleSelectEnv","activeEnv","normalizeSubscriptionUrl","activeProjectName","handleChangeEndpoint","handleChangeSubscriptionsEndpoint","mapPropsToState","removeLoader","configIsYaml","isConfigYaml","getInitialActiveEnv","endpointUrl","extractEndpointAndHeaders","absolutizeUrl","localStorage","getItem","splitted","loadingWrapper","getElementById","getGraphcoolSubscriptionEndpoint","setInitialWorkspace","project","safeLoad","componentWillMount","setItem","pathname","updateSubscriptionsUrl","removePlaygroundInClass","tabsString","setTitle","Helmet","getTitle","defaultHeaders","stateHeaders","combinedHeaders","darkColours","lightColours","darkEditorColours","lightEditorColours","codeTheme","App","onSelectEnv","onNewWorkspace","showNewWorkspace","isElectron","onChangeEndpoint","onChangeSubscriptionsEndpoint","adminAuthToken","canSaveConfig","onChangeConfig","onUpdateSessionCount","fixedEndpoints","workspaceName","createApolloLink","projectId","getProjectId","validCandidate","getSubscriptionsUrlCandidated","candidate","wsEndpointValid","candidates","socket","appearIn","ReactDOM","ExecuteButton_1","QueryEditor_1","CodeMirrorSizer_1","TopBar_1","VariableEditor_1","Spinner_1","Results_1","ResponseTracing_1","QueryPlan_1","fillLeafs_1","elementPosition_1","SideTab_1","SideTabs_1","SDLView_1","GraphDocs_1","setQueryVariablesRef","queryVariablesRef","setHttpHeadersRef","httpHeadersRef","setQueryPlanRef","queryPlanRef","setTracingRef","tracingRef","setQueryResizer","queryResizer","findDOMNode","setResponseResizer","responseResizer","setEditorBarComponent","editorBarComponent","setQueryEditorComponent","queryEditorComponent","setVariableEditorComponent","variableEditorComponent","setResultComponent","resultComponent","setDocExplorerRef","docExplorerComponent","setGraphExplorerRef","graphExplorerComponent","setSchemaExplorerRef","schemaExplorerComponent","setContainerComponent","containerComponent","handleClickReference","showDocFromType","setSideTabActiveContentRef","activeSideTabContent","runQueryAtCursor","cursorIndex","handleHintInformationRender","elem","_onRemoveFn","onClickHintInformation","handleResizeStart","downEvent","didClickDragBar","getLeft","moveEvent","_onMouseUp","editorBar","leftSize","rightSize","handleExtensionsDrawerResizeStart","didMove","wasOpen","hadHeight","getTop","_onMouseUp2","topSize","handleVariableResizeStart","_onMouseUp3","bottomSize","namedTypeName","setDocsWidth","maxWidth","codeMirrorSizer","EditorBar","QueryWrap","flex","VariableEditor","isOpen","VariableEditorTitle","DrawerTab","headersCount","VariableEditorComponent","HeadersEditorComponent","QueryDragBar","ResultWrap","ResultDragBar","Intro","Listening","ExtensionsDrawer","ExtensionsDrawerTitle","QueryPlan","setActiveContentRef","setWidth","activeColor","autoCompleteLeafs","fillLeafs","insertions","editor_1","markers_1","newCursorIndex","templateObject_8","templateObject_9","templateObject_10","templateObject_11","templateObject_12","templateObject_13","templateObject_14","templateObject_15","resultBackground","DragBar","BottomDrawer","BottomDrawerTitle","leftDrawerBackground","rightDrawerBackground","drawerTextInactive","drawerText","small16","green","darkBlue","darkBlue50","darkBlue80","darkBlue60","darkBlue30","darkBlue20","darkBlue10","darkerBlue","darkestBlue","white10","white20","white30","white60","white70","white80","black02","black04","black10","black40","black50","red","orange","blue","purple","paleText","paleGrey","lightGrey","lighterGrey","qualifier","sidebarTop","sidebar","sidebarBottom","sidebarItemActive","sidebarItemSide","sidebarItemSessions","tabInactive","tabText","executeButton","executeButtonBorder","executeButtonHover","executeButtonSubscription","executeButtonSubscriptionHover","iconHover","pollingIcon","pollingIconShadow","buttonWorkspace","buttonWorkspaceHover","buttonWorkspaceText","circle","subscriptionTimeBoaderTop","subscriptionTimeText","small6","small10","small12","medium25","fontLight","fontSemiBold","fontTiny","fontSmall","fontMedium","smallRadius","shorthands","firstOperationName","Yallist","MAX","LENGTH","LENGTH_CALCULATOR","ALLOW_STALE","MAX_AGE","DISPOSE","NO_DISPOSE_ON_SET","LRU_LIST","CACHE","UPDATE_AGE_ON_GET","naiveLength","LRUCache","lc","stale","maxAge","dispose","noDisposeOnSet","updateAgeOnGet","thisp","walker","forEachStep","hit","isStale","_del","Entry","_get","expiresAt","mL","allowStale","mA","lC","doUse","unshiftNode","delete","removeNode","sortableHandle","sortableElement","sortableContainer","SortableHandle","SortableElement","SortableContainer","_utils","_SortableContainer3","_interopRequireDefault","_SortableElement3","_SortableHandle3","allTabs","historyOpen","envVars","lodash_1","deserializeAppHistory","deserializeDocs","docsSession","deserializeSessionsState","deserializeSessions","deserializeResponse","deserializeSession","deserializeSharing","deserializeHistory","deserializeGeneral","webpackPolyfill","wrappedComponentProps","propsJS","newProps","wrappedComponentProp","encode","decode","open_tag","close_tag","HTML_TAG_RE","HTML_OPEN_CLOSE_TAG_RE","tokenize","silent","scanned","scanDelims","delimiters","can_open","can_close","postProcess","startDelim","endDelim","loneMarkers","information","deprecation","hintsUl_1","top_1","cursorTop","_onRemoveFn_","currentTop","sanitize","noOptions","nonWS","useInnerComments","minLine","uncomment","commentString","blankLines","commentBlankLines","baseString","blockCommentStart","fullLines","blockComment","startString","blockCommentEnd","lastLineHasText","lead","blockCommentLead","didSomething","lineString","endPos","endLine","insideStart","insideEnd","lastStart","firstEnd","almostLastStart","foundEnd","containsPosition","lessThanOrEqualTo","setLine","setCharacter","lastLineIndex","objectAssign","_isBuffer","util","pSlice","functionsHaveNames","pToString","isView","arrbuf","assert","something","rawname","fail","stackStartFunction","AssertionError","_deepEqual","memos","Float32Array","Float64Array","actualIndex","actualVisitedObjects","isPrimitive","aIsArgs","bIsArgs","ka","kb","objEquiv","expectedException","isPrototypeOf","_throws","shouldThrow","_tryBlock","userProvidedMessage","isUnexpectedException","generatedMessage","getMessage","fn_name","next_line","inherits","equal","notEqual","deepStrictEqual","notDeepEqual","notDeepStrictEqual","notStrictEqual","throws","doesNotThrow","ifError","_forEachState2","parentDef","_forEachState","getFieldReference","isMetaField","getDirectiveReference","getArgumentReference","getEnumValueReference","getTypeReference","deselectCurrent","defaultMessage","debug","reselectPrevious","success","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","selectNodeContents","copyKey","removeRange","hideArrow","ButtonBox","_hintList2","variableNames","getVariablesHint","_jsonParse2","lintError","variablesAST","members","member","validateValue","providedFields","fieldErrors","validateVariables","Keyword","namedKey","initialElem","pt","SideTab","searchInput","hasKeyCode","names","foundNamedKey","codes","aliases","isEventKey","nameOrCode","ErrorContainer","stack_1","defaultTypes","getTypeInstance","addLineBreaks","sdl","commentsDisabled","withLineBreaks","getSDL","rawSdl","sdlWithNewLines","printWidth","download","filename","blob","Blob","msSaveBlob","blobURL","URL","createObjectURL","tempLink","click","revokeObjectURL","sdlArray","downloadSchema","Title","CategoryTitle","overflow","Column","verticalScroll","debounce_1","SearchBox","handleChange","debouncedOnSearch","onSearch","LabelComponent","Label","Input","clean","SearchContainer","_Modal","_Modal2","querySelectorAll","tabbable","tabbableNode","hidesContents","zeroSize","getPropertyValue","focusable","isTabIndexNotNaN","isTabIndexNaN","assertNodeList","setElement","useElement","_safeHTMLElement","globalElement","validateElement","appElement","show","removeAttribute","documentNotReadyOrSSRTesting","resetForTesting","_warning","_warning2","nodeList","getWorkspaceId","ATTRIBUTE_NAMES","BODY","HTML","TITLE","TAG_NAMES","BASE","HEAD","LINK","META","NOSCRIPT","SCRIPT","STYLE","REACT_TAG_MAP","VALID_TAG_NAMES","TAG_PROPERTIES","CHARSET","CSS_TEXT","HREF","HTTPEQUIV","INNER_HTML","ITEM_PROP","PROPERTY","REL","SRC","accesskey","charset","class","contenteditable","contextmenu","itemprop","HELMET_PROPS","DEFAULT_TITLE","DEFER","ENCODE_SPECIAL_CHARACTERS","ON_CHANGE_CLIENT_STATE","TITLE_TEMPLATE","HTML_TAG_MAP","SELF_CLOSING_TAGS","HELMET_ATTRIBUTE","fetch","_getPrototypeOf","reactIs","REACT_STATICS","contextType","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","KNOWN_STATICS","caller","callee","MEMO_STATICS","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","symbolObservablePonyfill","insertRule","toSheet","parents","ns","delimiter","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","fontWeight","lineHeight","orphans","widows","zoom","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","curried","cycles","aobj","bobj","_typeof2","_possibleConstructorReturn","_setPrototypeOf","_inherits","reactPropsRegex","__spreadArrays","il","jl","assignProp","carry","originalObject","propType","newComers","newComer","mergeRecursively","newObject","targetVal","aa","encodeURIComponent","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","refs","isReactComponent","isPureReactComponent","__self","__source","$$typeof","_owner","keyPrefix","ca","da","ba","Children","createRef","createContext","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","Consumer","_ctor","_status","memo","useCallback","useContext","useEffect","useImperativeHandle","useDebugValue","useLayoutEffect","useMemo","useReducer","useRef","useState","Fragment","Profiler","StrictMode","Suspense","cloneElement","createFactory","isValidElement","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentDispatcher","ReactCurrentBatchConfig","suspense","ReactCurrentOwner","IsSomeRendererActing","ea","extractEvents","eventTypes","fa","phasedRegistrationNames","ha","registrationName","ia","ja","la","ma","na","oa","pa","qa","sa","ua","va","wa","currentTarget","ra","xa","ya","za","Aa","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","Ba","Ca","injectEventPluginOrder","injectEventPluginsByName","Da","stateNode","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","Ra","Sa","Ta","Ua","Wa","Xa","_debugOwner","_debugSource","Ya","Za","$a","ab","bb","db","eb","fb","gb","hb","ib","jb","lb","mb","nb","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","sb","tb","ub","vb","qb","rb","pb","setAttributeNS","wb","yb","_valueTracker","stopTracking","xb","zb","checked","Ab","defaultChecked","_wrapperState","initialChecked","Bb","controlled","Cb","Eb","Fb","Gb","Ib","Hb","Jb","defaultSelected","Kb","dangerouslySetInnerHTML","Lb","Mb","Nb","xlinkHref","Ob","html","mathml","svg","Pb","Qb","Rb","Sb","MSApp","execUnsafeLocalFunction","namespaceURI","Tb","Ub","Vb","animationend","animationiteration","animationstart","transitionend","Wb","Xb","Yb","animation","transition","Zb","$b","bc","cc","ec","alternate","effectTag","fc","memoizedState","dehydrated","gc","ic","hc","jc","kc","mc","nc","oc","qc","rc","sc","tc","uc","vc","zc","blockedOn","topLevelType","eventSystemFlags","nativeEvent","Ac","pointerId","Bc","Cc","Ec","Fc","unstable_runWithPriority","hydrate","containerInfo","Gc","Hc","Ic","Jc","Kc","unstable_scheduleCallback","unstable_NormalPriority","Lc","Mc","correspondingUseElement","Nc","Oc","dispatchConfig","Pc","_targetInst","Qc","Rc","Sc","Tc","Uc","Interface","isDefaultPrevented","Wc","eventPool","Xc","destructor","Vc","getPooled","persist","eventPhase","bubbles","cancelable","timeStamp","isTrusted","Yc","animationName","elapsedTime","pseudoElement","Zc","$c","ad","relatedTarget","bd","cd","Spacebar","Left","Right","Del","Win","Menu","Apps","Scroll","MozPrintableKey","dd","12","112","113","114","115","116","117","118","119","120","121","122","123","144","224","ed","Alt","Control","Meta","Shift","gd","getModifierState","hd","locale","jd","kd","ld","nd","screenX","screenY","fromElement","toElement","movementX","movementY","od","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","pd","qd","targetTouches","rd","sd","deltaX","deltaY","deltaZ","deltaMode","td","ud","vd","wd","yd","zd","Ad","Bd","Cd","Dd","bubbled","captured","eventPriority","Ed","getEventPriority","Fd","unstable_UserBlockingPriority","Gd","Hd","Id","Jd","Kd","targetInst","Ld","Md","Nd","Od","Pd","Qd","Dc","Rd","Sd","xc","yc","Td","gridArea","lineClamp","Ud","Vd","Wd","setProperty","Xd","menuitem","area","br","embed","hr","keygen","param","track","wbr","Yd","Zd","$d","HTMLIFrameElement","contentWindow","autoFocus","__html","beforeInput","compositionEnd","compositionStart","compositionUpdate","datetime","email","month","password","tel","week","Ze","af","bf","cf","df","ef","ff","gf","hf","lf","jf","_isInputEventSupported","kf","mouseEnter","mouseLeave","pointerEnter","pointerLeave","mf","pf","qf","rf","sf","tf","uf","vf","wf","xf","yf","onSelect","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","Af","Bf","Cf","Df","Ef","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","Gf","Hf","If","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","unstable_cancelCallback","Of","unstable_shouldYield","Pf","unstable_requestPaint","Qf","unstable_now","Rf","unstable_getCurrentPriorityLevel","Sf","unstable_ImmediatePriority","Tf","Uf","Vf","unstable_LowPriority","Wf","unstable_IdlePriority","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","childExpirationTime","vg","firstContext","expirationTime","wg","xg","observedBits","responders","yg","zg","baseState","firstUpdate","lastUpdate","firstCapturedUpdate","lastCapturedUpdate","firstEffect","lastEffect","firstCapturedEffect","lastCapturedEffect","Ag","Bg","suspenseConfig","nextEffect","Cg","Dg","updateQueue","Eg","Fg","Gg","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Sg","_reactInternalFiber","Pg","Qg","Rg","Tg","Ug","Vg","Wg","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","Xg","Yg","_stringRef","Zg","$g","ah","bh","elementType","implementation","dh","eh","ta","fh","gh","hh","ih","jh","kh","mh","tagName","nh","oh","ph","qh","memoizedProps","revealOrder","rh","responder","sh","uh","vh","wh","xh","yh","zh","Ah","Bh","Ch","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","Oh","Ph","Qh","lastRenderedReducer","lastRenderedState","eagerReducer","eagerState","Rh","Sh","Th","Uh","destroy","deps","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","readContext","useResponder","useDeferredValue","useTransition","unstable_next","ci","di","ei","fi","gi","hi","pendingProps","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","ui","UNSAFE_componentWillUpdate","componentWillUpdate","vi","wi","pendingContext","Hi","Ii","Ji","Ki","xi","retryTime","yi","unstable_avoidThisFallback","zi","Ai","isBackwards","rendering","tailExpiration","tailMode","Bi","Ci","Li","Mi","Ni","onclick","Oi","WeakSet","Pi","Si","Ri","Ti","Ui","__reactInternalSnapshotBeforeUpdate","Vi","Wi","Qi","Xi","Yi","Zi","$i","_reactRootContainer","aj","wasMultiple","bj","cj","dj","ej","fj","gj","hj","ij","componentDidCatch","jj","componentStack","gk","kj","lj","mj","nj","oj","pj","qj","rj","sj","tj","uj","vj","wj","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","timeoutMs","Kj","Lj","Mj","Nj","Oj","lastExpiredTime","Pj","firstPendingTime","lastPingedTime","nextKnownPendingLevel","callbackExpirationTime","callbackPriority","callbackNode","Qj","Rj","Sj","Tj","Uj","Vj","Wj","finishedWork","finishedExpirationTime","lastSuspendedTime","Xj","timeoutHandle","Yj","busyMinDurationMs","busyDelayMs","Zj","bk","ck","pingCache","dk","ek","fk","createElementNS","ik","firstSuspendedTime","Db","focusedElem","selectionRange","jk","compareDocumentPosition","Dh","dc","fd","hk","Eh","Fh","xk","Di","Ei","Fi","xd","Gi","kk","lk","Va","nk","unstable_observedBits","pk","pendingChildren","qk","rk","sk","tk","uk","vk","wc","_internalRoot","wk","zk","hasAttribute","yk","Bk","Ak","unmount","ak","Ck","createPortal","unstable_renderSubtreeIntoContainer","unmountComponentAtNode","unstable_createPortal","unstable_batchedUpdates","flushSync","Events","findFiberByHostInstance","isDisabled","supportsFiber","inject","onCommitFiberRoot","onCommitFiberUnmount","overrideHookState","overrideProps","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","bundleType","rendererPackageName","Dk","Ek","MessageChannel","unstable_forceFrameRate","performance","port2","port1","postMessage","sortIndex","startTime","priorityLevel","unstable_wrapCallback","unstable_continueExecution","unstable_pauseExecution","unstable_getFirstCallbackNode","unstable_Profiling","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propFullName","secret","getShim","ReactPropTypes","bool","arrayOf","objectOf","oneOf","oneOfType","exact","checkPropTypes","typeOf","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Lazy","Memo","Portal","isValidElementType","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isPortal","isProfiler","isStrictMode","isSuspense","originalModule","TabBar_1","HistoryPopup_1","Settings_1","SettingsEditor_1","FileEditor_1","getWorkspaceId_1","fibonacci_backoff_1","apolloLinks","observers","graphiqlComponents","mounted","schemaGetter","initialIndex","initialSchemaFetch","prevTab","switchTab","handleSaveSettings","onSaveSettings","createSession","selectedSessionIndex","sessionEndpoint","propsInput","currentSchema","data_1","updateSchema","PlaygroundContainer","onNewSession","isApp","GraphiqlsContainer","GraphiqlWrapper","GraphQLConfigEditor","onSave","isYaml","isConfig","PlaygroundSettingsEditor","renderHistoryPopup","currentSchemaStr","ExecuteButtonOperation_1","firstTime","ExecuteButton","handleMouseOver","handleMouseOut","handleMouseUp","onOptionSelected","optionsOpen","onOptionsOpen","initialPress","downTarget","upEvent","Node","DOCUMENT_POSITION_CONTAINED_BY","hasOptions","highlight_1","ExecuteBox","ExecuteOptions","onMouseOut","onMouseUp","pathJSX","rx","ul","ExecuteButtonOperation","strings","interpolations","classCallCheck","createClass","objectWithoutProperties","possibleConstructorReturn","EMPTY_ARRAY","EMPTY_OBJECT","getComponentName","isStyledComponent","styledComponentId","SC_ATTR","REACT_APP_SC_ATTR","IS_BROWSER","DISABLE_SPEEDY","SC_DISABLE_SPEEDY","REACT_APP_SC_DISABLE_SPEEDY","STATIC_EXECUTION_CONTEXT","StyledComponentsError","_Error","SC_COMPONENT_ID","extractComps","maybeCSS","existingComponents","componentId","matchIndex","nextComp","cssFromDOM","COMMENT_REGEX","stylisSplitter","cascade","keyframe","compress","semicolon","stylis","parsingRules","returnRulesPlugin","parsedRules","parseRulesPlugin","_componentId","_selector","_selectorRegexp","selfReferenceReplacer","splitByRules","stringifyRules","flatCSS","cssStr","getNonce","addNameForId","resetIdNames","hasNameForId","stringifyNames","sheetForTag","sheet","styleSheets","ownerNode","safeInsertRule","cssRule","cssRules","makeTextMarker","addUpUntilIndex","totalUpToIndex","wrapAsHtmlTag","additionalAttrs","nonce","SC_VERSION_ATTR","wrapAsElement","_props","getIdsFromMarkersFactory","makeTextNode","targetDocument","makeServerTag","namesArg","markersArg","insertMarker","cssForId","namesClone","cloneNames","markersClone","getIds","insertRules","removeRules","sealed","styleTag","toHTML","makeTag","tagEl","forceServer","getImportRuleTag","makeStyleTag","extractImport","usedImportRuleTag","importRules","cssRulesSize","mayHaveImport","appendData","newMarker","makeBrowserTag","insertIndex","injectedRules","isConnected","removalIndex","lowerBound","deleteRule","deleteRules","makeSpeedyTag","SPLIT_REGEX","MAX_SIZE","sheetRunningId","master","StyleSheet","importRuleTag","firstTag","tags","tagMap","rehydratedNames","ignoreRehydratedNames","clones","rehydrate","els","extracted","isStreamed","nodesSize","elNames","elNamesSize","extractedSize","_extracted$i","ids","newTag","sealAllTags","lastEl","getTagForId","hasId","deferredInject","toReactElements","Keyframes","styleSheet","uppercasePattern","msPattern","hyphenateStyleName","isFalsish","objToCssArray","prevKey","executionContext","ruleSet","murmurhash","getAlphabeticChar","generateAlphabeticName","isStaticRules","hasFunctionObjectKey","_TYPE_STATICS","hasher","ComponentStyle","isStatic","generateAndInjectStyles","lastClassName","generateName","determineTheme","fallbackTheme","isDefaultTheme","escapeRegex","dashesAtEnds","isTag","defineProperty$1","_Object$getOwnPropert","arrayPrototype","ThemeContext","ThemeConsumer","renderInner","outerTheme","ServerStyleSheet","masterSheet","seal","collectStyles","StyleSheetManager","getStyleTags","getStyleElement","interleaveWithNodeStream","readableStream","StyleSheetContext","StyleSheetConsumer","identifiers","StyledComponent","renderOuter","forwardedComponent","componentStyle","_props$forwardedCompo","foldedComponentIds","generatedClassName","elementToBeCreated","isTargetTag","propsForElement","computedProps","attrDef","resolvedAttrDef","attrDefWasFn","_props$forwardedCompo2","warnTooManyClasses","createStyledComponent","isTargetStyledComp","isClass","_options$displayName","generateDisplayName","_options$componentId","_ComponentStyle","_displayName","parentComponentId","nr","generateId","_options$ParentCompon","ParentComponent","_options$attrs","finalAttrs","WrappedStyledComponent","forwardedRef","withComponent","previousComponentId","optionsToCopy","newComponentId","_foldedDefaultProps","constructWithOptions","componentConstructor","templateFunction","withConfig","domElement","createStyles","removeStyles","renderStyles","GlobalStyleComponent","_React$Component","_this$constructor","globalStyle","scCGSHMRCache","replaceWhitespace","Component$$1","WithTheme","themeProp","__DO_NOT_USE_OR_YOU_WILL_BE_HAUNTED_BY_SPOOKY_GHOSTS","_combineReducers2","_combineReducers3","_immutable","_immutable2","_utilities","getDefaultState","inputState","temporaryState","reducerName","nextDomainState","validateNextState","getUnexpectedInvocationParameterMessage","getStateName","_getStateName3","_getUnexpectedInvocationParameterMessage3","_validateNextState3","_getStateName2","reducerNames","stateName","unexpectedStatePropertyNames","hasSpace","hasSeparator","separatorSplitter","unseparate","hasCamel","camelSplitter","uppers","uncamelize","hasSymbols","hasSymbol","getSymbol","SymbolIterator","SymbolObservable","SymbolSpecies","getMethod","getSpecies","isObservable","hostReportError","enqueue","cleanupSubscription","cleanup","_cleanup","closeSubscription","_observer","_queue","_state","notifySubscription","onNotify","flushSubscription","subscriber","subscriptionObserver","SubscriptionObserver","_subscription","_subscriber","hasSeed","hasValue","startNext","completeIfDone","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","_item","deviation","setMin","setMax","setJitter","evt","_events","_eventsCount","clearEvent","eventNames","listenerCount","a4","a5","prefixed","GRAPHQL_SUBSCRIPTIONS","MessageTypes","SUBSCRIPTION_START","SUBSCRIPTION_DATA","SUBSCRIPTION_SUCCESS","SUBSCRIPTION_FAIL","SUBSCRIPTION_END","INIT_SUCCESS","INIT_FAIL","KEEP_ALIVE","paramsOrClient","selectedOperation","getSelectedOperation","NoSchemaError_1","linkGetter","sessionCache","schemaInstanceCache","fetching","cachedSchema","refetch","schemaData","NoSchemaError","pushNode","forEachReverse","getReverse","mapReverse","reduceReverse","toArrayReverse","ret","sliceReverse","deleteCount","er","_callee","runtime","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","_sent","dispatchException","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","previousPromise","callInvokeWithMethodAndArg","__await","unwrapped","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","iteratorMethod","isGeneratorFunction","genFun","skipTempReset","rootRecord","rval","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","bin","engines","camelcase","chalk","cosmiconfig","dashify","dedent","editorconfig","esutils","globby","ignore","leven","mem","minimatch","minimist","semver","typescript","unified","vnopts","devDependencies","benchmark","codecov","eslint","execa","jest","mkdirp","prettylint","rimraf","rollup","shelljs","tempy","webpack","scripts","prepublishOnly","build","_package","repository","homepage","author","license","_package$1","_construct","Parent","Class","sham","Proxy","isNativeReflectConstruct","_wrapNativeSuper","receiver","_superPropBase","_taggedTemplateLiteral","_slicedToArray","_arrayWithHoles","_arr","_n","_s","_iterableToArrayLimit","_nonIterableRest","_toConsumableArray","arr2","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","Diff","buildValues","components","newString","oldString","useLongestToken","componentPos","componentLen","newPos","lastComponent","clonePath","castInput","removeEmpty","oldLen","editLength","maxEditLength","bestPath","extractCommon","execEditLength","diagonalPath","basePath","removePath","_oldPos","canAdd","canRemove","pushComponent","commonCount","characterDiff","generateOptions","extendedWordChars","reWhitespace","wordDiff","ignoreWhitespace","lineDiff","diffLines","oldStr","newStr","retLines","linesAndNewlines","newlineIsToken","sentenceDiff","cssDiff","_typeof$1","_toConsumableArray$1","_arrayWithoutHoles$1","_iterableToArray$1","_nonIterableSpread$1","objectPrototypeToString","jsonDiff","canonicalize","replacementStack","replacer","canonicalizedObj","_this$options","undefinedReplacement","_this$options$stringi","stringifyReplacer","arrayDiff","parsePatch","uniDiff","diffstr","parseIndex","header","parseFileHeader","hunks","_line","parseHunk","fileHeader","chunkHeaderIndex","chunkHeader","hunk","oldStart","oldLines","newStart","newLines","linedelimiters","addCount","removeCount","distanceIterator","wantForward","backwardExhausted","forwardExhausted","localOffset","applyPatch","removeEOFNL","addEOFNL","compareLine","patchContent","errorCount","fuzzFactor","hunkFits","diffOffset","_hunk","_toPos","previousOperation","_k","structuredPatch","oldFileName","newFileName","oldHeader","newHeader","contextLines","oldRangeStart","newRangeStart","curRange","oldLine","newLine","_curRange","_curRange2","_curRange3","contextSize","oldEOFNewline","newEOFNewline","noNlBeforeAdds","createTwoFilesPatch","arrayStartsWith","calcLineCount","_calcOldNewLineCount","calcOldNewLineCount","myCount","mine","theirCount","theirs","loadPatch","fileNameChanged","selectField","hunkBefore","cloneHunk","mergeLines","mineOffset","mineLines","theirOffset","theirLines","their","insertLeading","mineCurrent","theirCurrent","_hunk$lines","collectChange","_hunk$lines2","removal","mutualChange","insertTrailing","myChanges","theirChanges","allRemoves","_hunk$lines3","_hunk$lines4","skipRemoveSuperset","arrayEqual","_hunk$lines5","swap","_hunk$lines6","matchChanges","contextChanges","conflicted","collectContext","removeChanges","changeContent","escapeHTML","index_es6","diffChars","diffWords","diffWordsWithSpace","diffTrimmedLines","diffSentences","diffCss","diffJson","oldObj","newObj","diffArrays","oldArr","createPatch","applyPatches","currentIndex","processIndex","updatedContent","patched","mineIndex","theirsIndex","theirsOffset","theirsCurrent","mergedHunk","convertChangesToDMP","convertChangesToXML","_shim_fs$1","normalizePath","stripTrailing","segs","global$1","lookup","revLookup","Arr","inited","encodeChunk","uint8","fromByteArray","extraBytes","len2","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","LN2","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","encodingOrOffset","fromArrayLike","fromArrayBuffer","encoding","isEncoding","fromString","internalIsBuffer","fromObject","assertSize","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","bidirectionalIndexOf","arrayIndexOf","indexSize","valLength","readUInt16BE","foundIndex","hexWrite","strLen","parsed","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","lo","utf16leToBytes","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","poolSize","_augment","alloc","allocUnsafeSlow","isFastBuffer","readFloatLE","isSlowBuffer","swap16","swap32","swap64","thisStart","thisEnd","thisCopy","targetCopy","bytes","checkOffset","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","subarray","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","b64","placeHolders","toByteArray","stringtrim","base64clean","dst","commonjsGlobal","globalThis","unwrapExports","createCommonjsModule","getCjsExportFromNamespace","readlines","LineByLine","readChunk","newLineCharacter","openSync","hexNeedle","eofReached","linesCache","fdPosition","closeSync","bufferPosition","lastNewLineBufferPosition","bufferPositionValue","leftovers","lineLeftovers","bytesRead","totalBytesRead","readBuffer","readSync","_searchInBuffer","bufferData","_extractLines","_readChunk","ConfigError","DebugError","_Error2","UndefinedParserError","_Error3","performanceNow","mozNow","msNow","oNow","webkitNow","hrtime","previousTimestamp","clocktime","seconds","nanoseconds","uptime","SemVer","NODE_DEBUG","SEMVER_SPEC_VERSION","MAX_LENGTH","tok","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","MAINVERSION","MAINVERSIONLOOSE","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","PRERELEASE","PRERELEASELOOSE","BUILDIDENTIFIER","BUILD","FULLPLAIN","FULL","LOOSEPLAIN","LOOSE","GTLT","XRANGEIDENTIFIERLOOSE","XRANGEIDENTIFIER","XRANGEPLAIN","XRANGEPLAINLOOSE","XRANGE","XRANGELOOSE","COERCE","COERCERTL","LONETILDE","TILDETRIM","TILDE","TILDELOOSE","LONECARET","CARETTRIM","CARET","CARETLOOSE","COMPARATORLOOSE","COMPARATOR","COMPARATORTRIM","HYPHENRANGE","HYPHENRANGELOOSE","STAR","loose","includePrerelease","prerelease","valid","compareMain","comparePre","compareIdentifiers","compareBuild","inc","identifier","version1","version2","v1","v2","defaultResult","numeric","anum","bnum","neq","Comparator","ANY","rcompareIdentifiers","compareLoose","versionA","versionB","rcompare","rsort","parseRange","isSatisfiable","comparators","remainingComparators","testComparator","otherComparator","intersects","isX","hyphenReplace","$0","fM","fm","fp","fpr","tM","tm","tp","tpr","testSet","allowed","satisfies","hilo","gtfn","ltefn","ltfn","ecomp","rangeTmp","sameDirectionIncreasing","sameDirectionDecreasing","sameSemVer","differentDirectionsInclusive","oppositeDirectionsLessThan","oppositeDirectionsGreaterThan","comps","compRe","pr","replaceCaret","replaceCarets","replaceTilde","replaceTildes","gtlt","xM","xm","xp","anyX","replaceXRange","replaceXRanges","replaceStars","parseComparator","thisComparators","rangeComparators","thisComparator","rangeComparator","toComparators","maxSatisfying","maxSV","rangeObj","minSatisfying","minSV","minVersion","minver","compver","validRange","gtr","r2","rtl","arrayify","dedent_1","mindent","_templateObject6","_templateObject5","_templateObject4","_templateObject3","_templateObject2","_templateObject","coreOptions","CATEGORY_CONFIG","CATEGORY_EDITOR","CATEGORY_FORMAT","CATEGORY_OTHER","CATEGORY_OUTPUT","CATEGORY_GLOBAL","CATEGORY_SPECIAL","cursorOffset","since","category","cliCategory","choices","filepath","cliName","cliDescription","insertPragma","redirect","pluginSearchDirs","rangeStart","requirePragma","useFlowParser","require$$0","currentVersion","coreOptions$1","support","getSupportInfo","showUnreleased","showDeprecated","showInternal","currentOptions","plugin","filterSince","filterDeprecated","mapDeprecated","newOption","info1","info2","pluginDefaults","reduced","usePostCssParser","useBabylonParser","languages","parsers","__values","__read","ar","tslib_es6","__decorate","decorators","decorate","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","metadata","__exportStar","__spread","__asyncGenerator","resume","fulfill","settle","__asyncDelegator","__asyncValues","__importStar","__importDefault","apiDescriptor","tslib_1","descriptors","matchOperatorsRe","escapeStringRegexp","colorName","conversions","reverseKeywords","rgb","channels","hsl","hsv","hwb","cmyk","xyz","lab","lch","hex","ansi16","ansi256","hcg","apple","gray","model","reversed","currentClosestKeyword","currentClosestDistance","t2","t3","smin","lmin","sl","vmin","bl","ratio","z2","atan2","PI","sqrt","cos","sin","ansi","mult","rem","colorString","hue","chroma","models","deriveBFS","fromModel","graph","buildGraph","adjacents","adjacent","wrapConversion","toModel","conversion","routes","route","wrappedFn","wrapRounded","wrapRaw","forceColor","colorConvert","ansiStyles","wrapAnsi16","wrapAnsi256","wrapAnsi16m","modifier","bold","dim","italic","underline","inverse","strikethrough","black","yellow","magenta","cyan","redBright","greenBright","yellowBright","blueBright","magentaBright","cyanBright","whiteBright","bgColor","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","bgBlackBright","bgRedBright","bgGreenBright","bgYellowBright","bgBlueBright","bgMagentaBright","bgCyanBright","bgWhiteBright","grey","_Object$keys","groupName","_Object$keys3","styleName","ansi2ansi","rgb2rgb","ansi16m","suite","require$$0$1","EOL","hasFlag","flag","terminatorPos","env$1","getSupportLevel","hasBasic","has256","has16m","translateLevel","isTTY","osRelease","sign","CI_NAME","TEAMCITY_VERSION","COLORTERM","TERM_PROGRAM_VERSION","TERM_PROGRAM","TERM","supportsColor","FORCE_COLOR","supportsColor_1","stdout","TEMPLATE_REGEX","STYLE_REGEX","STRING_REGEX","ESCAPE_REGEX","ESCAPES","chunks","parseStyle","buildStyle","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","layer","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","templates","escapeChar","errMsg","stdoutColor","isSimpleWindowsTerm","levelMapping","skipModels","applyOptions","scLevel","Chalk","_chalk","chalkTag","closeRe","_styles","_empty","bgModel","applyStyle","hasGrey","argsLen","originalDim","commonDeprecatedHandler","keyOrPair","redirectTo","messages","common$1","commonInvalidHandler","utils","invalid","charCodeCache","leven_1","levenUnknownHandler","knownKey","aLen","bLen","bCharCode","tmp2","unknown","HANDLER_KEYS","createSchema","SchemaConstructor","parameters","subSchema","handlerKey","normalizeHandler","currentValue","_newValue","superSchema","handlerArgumentsLength","AliasSchema","_schema_1$Schema","_sourceName","sourceName","AnySchema","ArraySchema","valueSchema","_a$name","_valueSchema","invalidValues","subValidateResult","normalizeValidateResult","deprecatedResult","subDeprecatedResult","normalizeDeprecatedResult","forwardResult","subForwardResult","normalizeForwardResult","wrapTransferResult","remain","_iteratorNormalCompletion4","_didIteratorError4","_iteratorError4","_step4","_iterator4","subRedirectResult","normalizeRedirectResult","boolean_1","BooleanSchema","normalizeTransferResult","transferResult","recordFromArray","mainKey","mapFromArray","createAutoChecklist","idString","trueArray","falseArray","isInt","comparePrimitive","typeofA","typeofB","normalizeDefaultResult","doNotNormalizeTrue","choice","ChoiceSchema","_choices","choiceValues","choiceInfo","NumberSchema","IntegerSchema","_number_1$NumberSchem","utils$1","StringSchema","defaultDescriptor","defaultUnknownHandler","defaultInvalidHandler","defaultDeprecatedHandler","Normalizer","_ref$logger","_ref$descriptor","_ref$unknown","_ref$invalid","_ref$deprecated","_unknownHandler","_invalidHandler","_deprecatedHandler","cleanHistory","_hasDeprecationWarned","normalized","restOptionsArray","applyNormalization","transferredOptionsArray","_applyNormalization","postprocess","_utils_1$partition2","knownOptionNames","unknownOptionNames","preprocess","validateResult","errorMessageOrError","appendTransferredOptions","warnDeprecated","deprecatedValue","redirectToPair","redirectResult","remainingValue","overlap","_step4$value","unknownResult","unknownKey","unknownOption","array$1","charCodeCache$1","leven$1","temp2","leven_1$1","default_1","hasDeprecationWarned","cliDescriptor","FlagSchema","_vnopts$ChoiceSchema","_flags","normalizeOptions","optionInfos","_ref3$isCLI","isCLI","_ref3$passThrough","passThrough","optionInfo","optionInfoToSchema","optionInfosToSchemas","normalizer","shouldSuppressDuplicateDeprecationWarnings","oppositeDescription","originalPreprocess","optionsNormalizer","normalizeApiOptions","normalizeCliOptions","getLast","locStart","ignoreDecorators","declaration","__location","startOffset","locEnd","endOffset","typeAnnotation","jsTokens","matchToToken","isStatement","trailingStatement","consequent","isExpression","isIterationStatement","isSourceElement","isProblematicIfStatement","ES6Regex","ES5Regex","NON_ASCII_WHITESPACES","IDENTIFIER_START","IDENTIFIER_PART","cp","NonAsciiIdentifierStart","NonAsciiIdentifierPart","isDecimalDigit","isHexDigit","isOctalDigit","isLineTerminator","isIdentifierStartES5","isIdentifierPartES5","isIdentifierStartES6","isIdentifierPartES6","code$1","isKeywordES5","isKeywordES6","isStrictModeReservedWordES6","isReservedWordES5","isReservedWordES6","isIdentifierNameES5","iz","isIdentifierNameES6","lowCh","isRestrictedWord","isIdentifierES5","isIdentifierES6","lib$1","_jsTokens","_interopRequireWildcard","_esutils","shouldHighlight","getChalk","defs","getTokenType","colorize","NEWLINE","highlightTokens","capitalized","jsx_tag","punctuator","getDefs","JSX_TAG","BRACKET","_match$slice2","lib$2","_highlight","codeFrameColumns","colNumber","deprecationWarningShown","emitWarning","highlightCode","maybeHighlight","chalkFn","_getMarkerLines","startLoc","endLoc","_ref$linesAbove","linesAbove","_ref$linesBelow","linesBelow","startColumn","endColumn","markerLines","sourceLength","_sourceLength","getMarkerLines","hasColumns","numberMaxWidth","frame","paddedNumber","hasMarker","lastMarkerLine","markerLine","markerSpacing","numberOfMarkers","ConfigError$1","locStart$1","locEnd$1","ownNames","ownDescriptor","getParsers","resolveParser","astFormat","parsersForCustomParserApi","parserName","codeFrame","UndefinedParserError$1","getSupportInfo$1","resolveParser$1","hiddenDefaults","printer","originalText","inferParser","filepathParts","extension","filenames","interpreters","m1","m2","getInterpreter","options$1","rawOptions","supportOptions","printerPlugin","printers","getPlugin","mixedDefaults","trailingComma","massageAst","massageAST","massageAstNode","contents","break","shouldBreak","expandedStates","breakParent","hardline","hard","literalline","literal","docBuilders","sep","softline","soft","conditionalGroup","states","lineSuffix","lineSuffixBoundary","ifBreak","breakContents","flatContents","groupId","addAlignmentToDoc","aligned","markAsRoot","dedentToRoot","stripAnsi","onlyFirst","ansiRegex","stripAnsi_1","default_1$1","isFullwidthCodePoint","isFullwidthCodePoint_1","default_1$2","stringWidth","codePointAt","stringWidth_1","default_1$3","notAsciiRegex","isExportDeclaration","backwards","skipWhitespace","skipSpaces","skipToLineEnd","skipEverythingButNewLine","skipInlineComment","skipTrailingComment","skipNewline","atIndex","hasNewline","isNextLineEmptyAfterIndex","oldIdx","getNextNonSpaceNonCommentCharacterIndexWithStartIndex","nextIdx","getNextNonSpaceNonCommentCharacterIndex","PRECEDENCE","getPrecedence","tier","equalityOperators","multiplicativeOperators","bitshiftOperators","getAlignmentSize","getPreferredQuote","preferredQuote","rawContent","double","single","makeString","enclosingQuote","unescapeUnnecessaryEscapes","otherQuote","newContent","hasNodeIgnoreComment","addCommentHelper","printed","groupModeMap","replaceEndOfLineWith","replacement","getStringWidth","getMaxContinuousCount","maxCount","getMinNotPresentContinuousCount","countPresent","shouldFlatten","parentOp","nodeOp","isBitwiseOperator","getParentExportDeclaration","getParentNode","getPenultimate","getNextNonSpaceNonCommentCharacter","isNextLineEmpty","isPreviousLineEmpty","hasNewlineInRange","hasSpaces","setLocStart","setLocEnd","startsWithNoLookaheadToken","forbidFunctionClassAndDoExpr","getLeftMost","expressions","expression","getIndentSize","lastNewlineIndex","printString","isDirectiveLiteral","canChangeDirectiveQuotes","__isInHtmlAttribute","singleQuote","embeddedInHtml","printNumber","rawNumber","hasIgnoreComment","matchAncestorTypes","addLeadingComment","addDanglingComment","addTrailingComment","isWithinParentArrayProperty","getStringWidth$1","convertEndOfLineToChars$1","concat$1","fill$1","cursor$1","MODE_BREAK","MODE_FLAT","makeIndent","ind","generateInd","makeAlign","newPart","lastTabs","lastSpaces","addTabs","addSpaces","flushSpaces","resetLast","trim$1","trimCount","trimmed","fits","restCommands","mustBeFlat","restIdx","groupMode","traverseDocOnExitStackMarker","traverseDoc","onExit","shouldTraverseConditionalGroups","docsStack","_doc","shouldRecurse","mapDoc","findInDoc","hasStopped","maybeResult","isLineNextFn","willBreakFn","breakParentGroup","groupStack","parentGroup","removeLinesFn","flattenDoc","doc2","printDoc","builders","printDocToString","shouldRemeasure","mostExpanded","_rem","contentFlatCmd","contentBreakCmd","contentFits","whitespaceFlatCmd","whitespaceBreakCmd","remainingCmd","secondContent","cursorPlaceholderIndex","otherCursorPlaceholderIndex","beforeCursor","aroundCursor","formatted","cursorNodeStart","cursorNodeText","willBreak","isLineNext","propagateBreaks","alreadyVisitedSet","removeLines","stripTrailingHardline","lastPart","printDocToDebug","mapDoc$1","utilShared","_require$$0$builders","concat$2","hardline$1","breakParent$1","indent$1","lineSuffix$1","join$1","cursor$2","hasNewline$1","skipNewline$1","isPreviousLineEmpty$2","addLeadingComment$1","addDanglingComment$1","addTrailingComment$1","childNodesCacheKey","getSortedChildNodes","resultArray","canAttachComment","getCommentChildNodes","childNode","breakTies","tiesToBreak","tieCount","indexOfFirstLeadingComment","_tiesToBreak$","precedingNode","followingNode","gapEndPos","printComment","commentPath","findExpressionIndexForComment","quasis","expr","prependCursorPlaceholder","getNode","cursorNode","decorateComment","middle","enclosingNode","commentIndex","pluginHandleOwnLineComment","handleComments","ownLine","pluginHandleEndOfLineComment","pluginHandleRemainingComment","isLastComment","printComments","needsSemi","leadingParts","trailingParts","isBlockComment","printLeadingComment","parentParentNode","isParentSuperClass","isLineBeforeEmpty","printTrailingComment","printDanglingComments","sameIndent","FastPath","getNodeHelper","stackIndex","getNodeStackIndexHelper","origLen","argc","callParent","parentValues","fastPath","normalize$2","multiparser","printSubtree","printAstToDoc","partialNextOptions","parentOptions","nextOptions","parentParser","astComments","textToDoc","doc$1","docBuilders$1","concat$3","hardline$2","addAlignmentToDoc$1","docUtils$1","alignmentSize","printGenerically","shouldCache","willPrintOwnComments","callPluginPrintFunction","printPath","hasPrettierIgnore","PRETTIER_DEBUG","astToDoc","findNodeAtOffset","parentNodes","childResult","rangeUtil","calculateRange","endNonWhitespace","rangeStringOrig","startNonWhitespace","startNodeAndParents","endNodeAndParents","siblingAncestors","resultStartNode","resultEndNode","startNode","endParent","startParent","findSiblingAncestors","normalizeOptions$1","guessEndOfLine$1","convertEndOfLineToChars$2","mapDoc$2","_printDocToString","UTF8BOM","CURSOR","PLACEHOLDERS","attachComments","trimRight","coreFormat","addAlignmentSize","nodeResult","currentDoc","ensureAllCommentsPrinted","oldCursorNodeStart","oldCursorNodeText","cursorOffsetRelativeToOldCursorNode","newCursorNodeStart","newCursorNodeText","oldCursorNodeCharArray","newCursorNodeCharArray","cursorNodeDiff","selectedParser","hasPragma","hasCursor","hasRangeStart","hasRangeEnd","offsetKeys","aKey","bKey","hasUnicodeBOM","rangeString","rangeStart2","rangeResult","rangeTrimmed","rangeLeft","partIndex","partOffset","newRangeLeft","newRangeTrimmed","newRangeRight","formatRange","core","massage","htmlTagNames$1","clean_1","isColor","isHex","quoted","numStr","lowercasedValue","_require$$0$builders$1","hardline$3","literalline$1","concat$4","markAsRoot$1","mapDoc$3","embed_1","replaceNewlinesWithLiterallines","detectNewline","newlines","crlf","graceful","_os","_detectNewline","extract","docblockRe","trimLeft","strip","docblock","parseWithComments","pragmas","_ref$comments","_ref$pragmas","printedObject","printKeyValues","keyValue","printedComments","textLine","commentEndRe","commentStartRe","lineCommentRe","ltrimNewlineRe","multilineRe","propertyRe","stringStartRe","nextPragma","valueOrArray","pragma","parsedDocblock","newDocblock","strippedText","DELIMITER_MAP","frontMatter","delimiterRegex","colorAdjusterFunctions","getAncestorCounter","typeOrTypes","ancestorNode","getAncestorNode","isMultiplicationNode","isDivisionNode","isAdditionNode","isSubtractionNode","isModuloNode","isKeyValuePairNode","isKeyValuePairInParenGroupNode","utils$2","declAncestorNode","functionName","funcAncestorNode","ruleAncestorNode","raws","atRuleNameOrAtRuleNames","atRuleNames","atRuleAncestorNode","currentNode","nextNode","declNode","inline","insertPragma$2","_parseFrontMatter","frontMatter$1","printNumber$1","printString$1","hasIgnoreComment$1","hasNewline$2","isNextLineEmpty$2","_require$$3$builders","concat$5","join$2","line$1","hardline$4","softline$1","group$1","fill$2","indent$2","dedent$1","ifBreak$1","removeLines$1","getAncestorNode$1","getPropOfDeclNode$1","maybeToLowerCase$1","insideValueFunctionNode$1","insideICSSRuleNode$1","insideAtRuleNode$1","insideURLFunctionInImportAtRuleNode$1","isKeyframeAtRuleKeywords$1","isHTMLTag$1","isWideKeywords$1","isSCSS$1","isLastNode$1","isSCSSControlDirectiveNode$1","isDetachedRulesetDeclarationNode$1","isRelationalOperatorNode$1","isEqualityOperatorNode$1","isMultiplicationNode$1","isDivisionNode$1","isAdditionNode$1","isSubtractionNode$1","isMathOperatorNode$1","isEachKeywordNode$1","isForKeywordNode$1","isURLFunctionNode$1","isIfElseKeywordNode$1","hasComposesNode$1","hasParensAroundNode$1","hasEmptyRawBefore$1","isKeyValuePairNode$1","isDetachedRulesetCallNode$1","isTemplatePlaceholderNode$1","isTemplatePropNode$1","isPostcssSimpleVarNode$1","isSCSSMapItemNode$1","isInlineValueCommentNode$1","isHashNode$1","isLeftCurlyBraceNode$1","isRightCurlyBraceNode$1","isWordNode$1","isColonNode$1","isMediaAndSupportsKeywords$1","isColorAdjusterFuncNode$1","shouldPrintComma","printNodeSequence","pathChild","prevNode","STRING_REGEX$1","ADJUST_NUMBERS_REGEX","adjustStrings","quoteAttributeValue","adjustNumbers","wordPart","printCssNumber","printerPostcss","rawText","important","between","scssDefault","scssGlobal","_parentNode","childPath","customSelector","_parentNode2","insensitive","_parentNode3","_leading","isSCSSNesterProperty","_parentNode4","declAncestorProp","isGridValue","isControlDirective","_parts","insideURLFunction","insideSCSSInterpolationInString","didBreak","iPrevNode","iNode","iNextNode","iNextNextNode","isStartSCSSInterpolationInString","isEndingSCSSInterpolationInString","isMathOperator","isNextMathOperator","isColorAdjusterNode","requireSpaceBeforeOperator","requireSpaceAfterOperator","_parentNode5","_printed","isSCSSMapItem","commonOptions","bracketSpacing","proseWrap","options$2","createLanguage","linguistData","CSS","tmScope","aceMode","codemirrorMode","codemirrorMimeType","languageId","CSS$1","extensions$1","PostCSS","PostCSS$1","extensions$2","Less","Less$1","extensions$3","SCSS","SCSS$1","require$$0$2","require$$1","require$$2","require$$3","languageCss","vscodeLanguageIds","postcss","pragma$2","_require$$0$builders$2","concat$6","join$3","hardline$5","line$2","softline$2","group$5","indent$3","ifBreak$2","hasIgnoreComment$2","isNextLineEmpty$3","printDirectives","printSequence","sequencePath","determineInterfaceSeparator","originalSource","printerGraphql","hasOperation","hasName","selectionsPath","argsPath","fieldsPath","valuesPath","opsPath","options$3","extensions$4","GraphQL","languageGraphql","_require$$0$builders$3","concat$7","join$4","softline$3","hardline$6","line$3","group$6","indent$4","ifBreak$3","voidTags","printChildren","childIndex","isFirstNode","isLastNodeInMultiNodeList","isWhitespaceNode","printStringLiteral","stringLiteral","shouldUseAlternateQuote","escapedStringLiteral","getParams","printPathParams","printBlockParams","program","blockParams","printOpenBlock","printCloseBlock","getPreviousNode","nodeIndex","getNextNode","isPreviousNodeOfSomeType","previousNode","isNextNodeOfType","countNewLines","generateHardlines","printerGlimmer","tagFirstChar","isLocal","isGlimmerComponent","hasChildren","hasNonWhitespaceChildren","isVoid","closeTagForNoBreak","closeTagForBreak","modifiers","_getParams","pp","isElseIf","hasElseIf","indentElse","_hasNonWhitespaceChildren","_pp","isConcat","printedParams","isText","quotedValue","partPath","isFirstElement","isLastElement","isWhitespaceOnly","lineBreaksCount","hasBlockParent","hasElementParent","hasTemplateParent","leadingLineBreaksCount","countLeadingNewLines","trailingLineBreaksCount","countTrailingNewLines","leadingSpace","dashes","original","selfClosing","extensions$5","Handlebars","languageHandlebars","glimmer","abbr","applet","audio","basefont","bdo","blockquote","canvas","caption","colgroup","del","dfn","dl","embed$1","fieldset","font","frameset","h1","h2","h3","h4","h5","h6","iframe","ins","isindex","legend","link$1","menu","meter","ol","optgroup","progress","script","slot","table","tbody","tfoot","thead","tr","video","index$1","htmlElementAttributes$1","CSS_DISPLAY_TAGS","CSS_DISPLAY_DEFAULT","CSS_WHITE_SPACE_TAGS","CSS_WHITE_SPACE_DEFAULT","arrayToMap","shouldPreserveContent","fullName","attrMap","lang","isSelfClosing","endSourceSpan","isPreLikeNode","isTextLikeNode","isPrettierIgnore","isScriptLikeTag","isFrontMatterNode","isIndentationSensitiveNode","getNodeCssStyleWhiteSpace","forceBreakChildren","cssDisplay","preferHardlineAsTrailingSpaces","preferHardlineAsSurroundingSpaces","hasSurroundingLineBreak","hasLeadingLineBreak","hasTrailingLineBreak","hasLeadingSpaces","sourceSpan","startSourceSpan","hasTrailingSpaces","isBlockLikeCssDisplay","mapObject","utils$3","minIndent","minIndentation","getMinIndentation","hasNonTextChild","isTrailingSpaceSensitive","getLastDescendant","isLeadingSpaceSensitive","isNextLeadingSpaceSensitiveCssDisplay","_isLeadingSpaceSensitiveNode","tagDefinition","ignoreFirstLf","restParts","canHaveInterpolation$1","getNodeCssStyleDisplay$1","isInSvgForeignObject","hasParent","htmlWhitespaceSensitivity","isDanglingSpaceSensitiveNode$1","isIndentationSensitiveNode$1","isLeadingSpaceSensitiveNode$1","isTrailingSpaceSensitiveNode$1","isPrevTrailingSpaceSensitiveCssDisplay","isWhitespaceSensitiveNode$1","PREPROCESS_PIPELINE","isTarget","isTargetResults","newChildren","ieConditionalStartComment","ieConditionalEndComment","ParseSourceSpan","shouldMerge","shouldMergeResults","mergeNodeIntoText","interpolationRegex","moveBy","hasDanglingSpaces","isWhitespaceSensitive","isIndentationSensitive","localChildren","_child$value$match2","leadingSpaces","trailingSpaces","hasHtmComponentClosingTag","isDanglingSpaceSensitive","isSimpleElement","isSimpleElementResults","nextChild","rawName","preprocess_1","pragma$3","_require$$0$builders$4","concat$8","group$8","syntaxVue","eventBindingValue","_parseVueFor","forIteratorRE","inMatch","iteratorMatch","iterator1","iterator2","parseVueFor","__isVueForBindingLeft","__isVueSlotScope","parseSrcset","collectCharacters","regEx","currentDescriptor","inputLength","regexLeadingSpaces","regexLeadingCommasOrSpaces","regexLeadingNotSpaces","regexTrailingCommas","regexNonNegativeInteger","regexFloatingPoint","parseDescriptors","intVal","floatVal","pError","_require$$0$builders$5","concat$9","ifBreak$4","join$5","line$4","syntaxAttribute","srcset","hasW","hasH","getMax","urls","maxUrlLength","descriptorLeftLengths","maxDescriptorLeftLength","urlPadding","descriptorPadding","alignment","_require$$0$utils","stripTrailingHardline$1","mapDoc$4","breakParent$2","dedentToRoot$1","fill$3","group$9","hardline$7","ifBreak$5","indent$5","join$6","line$5","literalline$2","markAsRoot$2","softline$4","countChars$1","countParents$1","dedentString$1","forceBreakChildren$1","forceBreakContent$1","forceNextEmptyLine$1","getLastDescendant$1","getPrettierIgnoreAttributeCommentData$1","hasPrettierIgnore$1","inferScriptParser$1","isScriptLikeTag$1","isTextLikeNode$1","normalizeParts$1","preferHardlineAsLeadingSpaces$1","shouldNotPrintClosingTag$1","shouldPreserveContent$1","unescapeQuoteEntities$1","replaceEndOfLineWith$1","printVueFor$1","printVueSlotScope$1","isVueEventBindingExpression$1","printImgSrcset$1","concat$a","printChildren$1","prevBetweenLine","printBetweenLine","printChild","groupIds","_prevBetweenLine","prevParts","nextParts","nextBetweenLine","printOpeningTagPrefix","needsToBorrowNextOpeningTagStartMarker","printOpeningTagStartMarker","needsToBorrowPrevClosingTagEndMarker","printClosingTagEndMarker","printClosingTagSuffix","printOpeningTag","needsToBorrowParentOpeningTagEndMarker","printOpeningTagEndMarker","needsToBorrowParentClosingTagStartMarker","printClosingTagStartMarker","needsToBorrowLastChildClosingTagEndMarker","printClosingTag","forceNotToBreakAttrContent","printOpeningTagStart","ignoreAttributeData","hasPrettierIgnoreAttribute","attrPath","printOpeningTagEnd","printClosingTagStart","printClosingTagEnd","printClosingTagPrefix","getTextValueParts","printerHtml","childrenDoc","shouldHugContent","attrGroupId","vueIndentScriptAndStyle","trailingNewlineRegex","hasTrailingNewline","nameSpan","valueSpan","__isInHtmlInterpolation","embeddedAttributeValueDoc","originalTextToDoc","isKeyMatched","shouldHug","__onHtmlBindingRoot","rootNode","printExpand","printMaybeHug","printHug","ngTextToDoc","_value2","printEmbeddedAttributeValue","options$4","aliases$1","extensions$6","HTML$1","extensions$7","Vue","Vue$1","require$$0$5","require$$1$1","languageHtml","addLeadingComment$2","addTrailingComment$2","addDanglingComment$2","addBlockStatementFirstComment","addBlockOrNotComment","handleIfStatementComments","handleWhileComments","handleTryStatementComments","finalizer","handleClassComments","handleMethodNameComments","handleLastFunctionArgComments","functionParamRightParenIndex","functionParamLeftParenIndex","handleImportSpecifierComments","handleOnlyComments","comments$1","handleOwnLineComment","handleMemberExpressionComments","handleForComments","handleUnionTypeComments","handleImportDeclarationComments","handleAssignmentPatternComments","handleEndOfLineComment","isSameLineAsPrecedingNode","handleConditionalExpressionComments","handleLabeledStatementComments","handleCallExpressionComments","handlePropertyComments","handleTypeAliasComments","handleVariableDeclaratorComments","handleRemainingComment","shorthand","handleObjectPropertyAssignment","handleCommentInEmptyParens","handleCommentAfterArrowParams","handleFunctionNameComments","constraint","handleTSMappedTypeComments","handleBreakAndContinueStatementComments","hasLeadingComment","leadingComments","isBlockComment$1","hasLeadingComment$1","_require$$1$builders","indent$6","join$7","hardline$8","softline$5","literalline$3","concat$b","group$a","dedentToRoot$2","_require$$1$utils","mapDoc$5","stripTrailingHardline$2","uncook","cookedValue","escapeTemplateCharacters","printGraphqlComments","seenComment","isStyledJsx","parentParent","openingElement","isAngularComponentStyles","isPathMatch","isStyledComponents","isStyledIdentifier","isStyledExtend","isCssProp","hasLanguageComment","languageName","predicateStack","htmlTemplateLiteralCounter","embed_1$1","isIt","rawQuasis","placeholderID","prevVal","currVal","quasisDoc","expressionDocs","newDoc","replaceCounter","placeholderIndex","atPlaceholderIndex","_placeholder","_rest","placeholderMatch","suffix","replacePlaceholders","transformCssDoc","isGraphQL","numQuasis","isLast","_text","numLines","expressionDoc","startsWithBlankLine","endsWithBlankLine","commentsAndWhitespaceOnly","htmlParser","isHtml","isAngularComponentTemplate","escapeClosingScriptTag","composePlaceholder","quasi","placeholderRegex","contentDoc","printHtmlTemplateLiteral","_text2","backslashes","firstMatchedIndent","getIndentation","printMarkdown","__inJsTemplate","isUnbalancedLogicalTree","clean_1$1","rebalanceLogicalTree","accessibility","readonly","parameter","specifiers","closingElement","optional","templateLiteral","astProps","elements","getLast$1","hasNewline$3","hasNewlineInRange$1","hasIgnoreComment$3","hasNodeIgnoreComment$1","skipWhitespace$1","isIdentifierName","FLOW_SHORTHAND_ANNOTATION","FLOW_ANNOTATION","hasNode","hasNakedLeftSide","isLiteral","isNumericLiteral","isStringLiteral","isFunctionOrArrowExpression","isAngularTestWrapper","isJSXNode","isGetterOrSetter","sameLocStart","nodeA","nodeB","isFunctionNotation","unitTestRe","isCallOrOptionalCallExpression","matchJsxWhitespaceRegex","containsNonJsxWhitespaceRegex","isMeaningfulJSXText","hasLeadingOwnLineComment","templateLiteralHasNewLines","utils$4","classChildNeedsASIProtection","static","isAsync","isGenerator","classPropMayCauseASIProblems","conditionalExpressionChainContainsJSX","nonConditionalExpressions","recurse","getConditionalChainContents","getFlowVariance","variance","getLeftSidePathName","getTypeScriptMappedTypeModifier","tokenNode","hasDanglingComments","hasFlowAnnotationComment","hasFlowShorthandAnnotationComment","parenthesized","trailingComments","hasNewlineBetweenOrAfterDecorators","hasNgSideEffect","prevSibling","hasJsxIgnoreComment","hasTrailingComment","isBinaryish","isEmptyJSXElement","isFlowAnnotationComment","isFunctionCompositionArgs","isJestEachTemplateLiteral","jestEachTriggerRegex","isJSXWhitespaceExpression","isLastStatement","stmt","isLongCurriedCallExpression","isMemberExpressionChain","isMemberish","isNgForOf","isObjectTypePropertyAFunction","isSimpleFlowType","typeParameters","isSimpleTemplateLiteral","isStringPropSafeToCoerceToIdentifier","isTemplateOnItsOwnLine","isTestCall","isUnitTestSetUp","isTemplateLiteral","isFunctionOrArrowExpressionWithBody","isTheOnlyJSXElementInMarkdown","isTSXFile","isTypeAnnotationAFunction","needsHardlineAfterDanglingComment","lastDanglingComment","returnArgumentHasLeadingComment","newLeftMost","leftMost","getLeftSidePathName$1","hasFlowShorthandAnnotationComment$1","hasNakedLeftSide$1","hasNode$1","hasClosureCompilerTypeCastComment","isParenthesized","hasTypeCastComment","hasAncestorTypeCastComment","ancestor","cleaned","isCompletelyClosed","unpairedBracketCount","isTypeCastComment","needsParens","endsWithRightBracket","isFollowedByRightBracket","shouldWrapFunctionForExportDefault","hasCallExpression","hasMemberExpression","_parent","isLeftOfAForStatement","po","np","extendsType","checkType","grandParent","_grandParent","includesFunctionTypeInObjectType","needsParens_1","_require$$0$builders$6","concat$c","join$8","line$6","htmlBinding","isVueEventBindingExpression$2","functionDeclarationPath","preprocess_1$1","getParentExportDeclaration$1","isExportDeclaration$1","shouldFlatten$1","getNextNonSpaceNonCommentCharacter$1","hasNewline$4","hasNewlineInRange$2","getLast$2","getStringWidth$2","printString$2","printNumber$2","hasIgnoreComment$4","hasNodeIgnoreComment$2","getPenultimate$1","startsWithNoLookaheadToken$1","getIndentSize$1","matchAncestorTypes$1","getPreferredQuote$1","isNextLineEmpty$4","isNextLineEmptyAfterIndex$1","getNextNonSpaceNonCommentCharacterIndex$2","insertPragma$7","printHtmlBinding$1","isVueEventBindingExpression$3","classChildNeedsASIProtection$1","classPropMayCauseASIProblems$1","conditionalExpressionChainContainsJSX$1","getFlowVariance$1","getLeftSidePathName$2","getTypeScriptMappedTypeModifier$1","hasDanglingComments$1","hasFlowAnnotationComment$1","hasFlowShorthandAnnotationComment$2","hasLeadingComment$3","hasLeadingOwnLineComment$1","hasNakedLeftSide$2","hasNewlineBetweenOrAfterDecorators$1","hasNgSideEffect$1","hasPrettierIgnore$3","hasTrailingComment$1","identity$2","isBinaryish$1","isCallOrOptionalCallExpression$1","isEmptyJSXElement$1","isFlowAnnotationComment$1","isFunctionCompositionArgs$1","isFunctionNotation$1","isFunctionOrArrowExpression$1","isGetterOrSetter$1","isJestEachTemplateLiteral$1","isJSXNode$1","isJSXWhitespaceExpression$1","isLastStatement$1","isLiteral$1","isLongCurriedCallExpression$1","isMeaningfulJSXText$1","isMemberExpressionChain$1","isMemberish$1","isNgForOf$1","isNumericLiteral$1","isObjectType$1","isObjectTypePropertyAFunction$1","isSimpleFlowType$1","isSimpleTemplateLiteral$1","isStringLiteral$1","isStringPropSafeToCoerceToIdentifier$1","isTemplateOnItsOwnLine$1","isTestCall$1","isTheOnlyJSXElementInMarkdown$1","isTSXFile$1","isTypeAnnotationAFunction$1","matchJsxWhitespaceRegex$1","needsHardlineAfterDanglingComment$1","rawText$1","returnArgumentHasLeadingComment$1","needsQuoteProps","_require$$5$builders","concat$d","join$9","line$7","hardline$9","softline$6","literalline$4","group$b","indent$7","align$1","conditionalGroup$1","fill$4","ifBreak$6","breakParent$3","lineSuffixBoundary$1","addAlignmentToDoc$2","dedent$2","_require$$5$utils","willBreak$1","isLineNext$1","isEmpty$1","removeLines$2","printDocToString$1","shouldPrintComma$1","printDecorators","printTernaryOperator","operatorOptions","currentParent","previousParent","testNode","testNodePropertyName","consequentNode","consequentNodePropertyName","alternateNode","alternateNodePropertyName","jsxMode","forceNoIndent","conditionalNodeType","firstNonConditionalParent","lastConditionalParent","shouldCheckJsx","testDoc","breakClosingParen","breakNested","maybeGroup","beforeParts","afterParts","printStatementSequence","bodyNode","stmtPath","stmtPrinted","exprNeedsASIProtection","shouldPrintParamsWithoutParens","stmtNeedsASIProtection","printPropertyKey","quoteProps","objectHasStringProp","printMethod","printMethodInternal","printFunctionTypeParameters","printFunctionParams","printReturnType","couldGroupArg","printArgumentsList","anyArgEmptyLine","shouldBreakForArrowFunction","hasEmptyLineFollowingFirstArg","lastArgIndex","printedArguments","argPath","paramPath","shouldBreakForArrowFunctionInArguments","maybeTrailingComma","allArgsBrokenOut","shouldGroupFirst","shouldGroupFirstArg","shouldGroupLast","lastArg","penultimateArg","shouldGroupLastArg","printedExpanded","expandFirstArg","expandLastArg","somePrintedArgumentsWillBreak","simpleConcat","typeArguments","printTypeAnnotation","isDefinite","definite","isFunctionDeclarationIdentifier","expandArg","printTypeParams","paramsField","isParametersInTestCall","shouldHugParameters","shouldHugArguments","shouldExpandParameters","typeParams","lastParam","hasNotParameterDecorator","arrowParens","canHaveTrailingComma","canPrintParamsWithoutParens","printFunctionDeclaration","printExportDeclaration","decl","isDefault","defaultSpecifiers","namespaceSpecifiers","specifierPath","specifierType","isNamespaceFollowed","isDefaultFollowed","canBreak","exportKind","printFlowDeclaration","parentExportDecl","printTypeScriptModifiers","printTypeParameters","paramsKey","grandparent","greatGreatGrandParent","shouldHugType","printClass","abstract","partsGroup","implements","extends","printOptionalToken","printMemberLookup","printBindExpressionCallee","separatorNoWhitespace","isFacebookTranslationTag","separatorWithWhitespace","shouldInlineLogicalExpression","printAssignmentRight","leftNode","rightNode","printedRight","printAssignment","printedLeft","adjustClause","clause","forceSpace","nodeStr","isFlowOrTypeScriptDirectiveLiteral","printRegex","voidCount","objectCount","printArrayItems","printedElements","separatorParts","printerEstree","linesWithoutParens","interpreter","programPath","bodyPath","isInsideParenthesis","printBinaryishExpressions","isNested","shouldInline","lineBeforeOperator","rightSuffix","shouldGroup","shouldNotIndent","shouldIndentIfInlining","samePrecedenceSubExpression","hasJSX","jsxPart","shouldBreakAfterCast","castGroup","exprContents","firstNonMemberParent","_parent2","dangling","nextCharacter","shouldAddSoftLine","printTrailingComma","shouldAddParens","_parent3","importKind","local","imported","exported","standalones","grouped","naked","hasContent","hasDirectives","_parent4","_parentParent","isIdentifierWithFlowAnnotation","printedNodes","shouldInsertEmptyLineAfter","nextCharIndex","rec","currentGroup","hasSeenCallExpression","isFactory","hasComputed","firstNode","isShort","lastNode","shouldNotWrap","printGroup","printedGroup","tuple","printedGroups","oneLine","cutoff","flatGroups","hasComment","lastGroupDoc","lastGroupNode","lastNodeBeforeIndent","shouldHaveEmptyLineBeforeIndent","expanded","printIndentedGroup","callExpressions","printMemberChain","declare","propertiesField","isTypeAnnotation","firstProperty","_parent5","isFlowInterfaceLikeBody","leftBrace","rightBrace","propsAndLoc","inexact","lastElem","canHaveTrailingSeparator","parentParentParent","_lastElem","needsForcedTrailingComma","_shouldBreak","nextElement","itemsKey","_parent6","_parts2","bigint","isTypeScriptDirective","firstVariable","isParentForLoop","declarations","con","commentOnOwnLine","elseOnSameLine","_body","_dangling","isAwait","await","doBody","hasComments","cases","casePath","caseNode","cons","consequentPath","final","jsxSingleQuote","_escape","_parent7","_shouldInline","openingLines","closingLines","containsTag","containsMultipleExpressions","containsMultipleAttributes","forcedBreak","rawJsxWhitespace","jsxWhitespace","endWhitespace","_next","_next2","printedChild","_next3","firstWord","printJSXChildren","containsText","isPairOfEmptyStrings","isPairOfHardlines","isLineFollowedByJSXWhitespace","isJSXWhitespaceFollowedByLine","isDoubleJSXWhitespace","isPairOfHardOrSoftLines","multilineChildren","multiLineElem","printJSXElement","ArrayExpression","JSXAttribute","JSXElement","JSXExpressionContainer","JSXFragment","ExpressionStatement","CallExpression","OptionalCallExpression","ConditionalExpression","JsExpressionRoot","maybeWrapJSXElementInParens","nameHasComments","lastAttrHasTrailingComments","bracketSameLine","jsxBracketSameLine","_shouldBreak2","hasOwnLineComment","isOpeningFragment","requiresHardline","_printed2","headerNames","headerName","stringifiedExpressions","tableBody","hasLineBreak","cells","row","correspondingExpression","maxColumnCount","maxColumnWidths","cell","printJestEachTemplateLiteral","isSimple","indentSize","_printed3","typesField","supertype","impltype","explicitType","_parent8","_parentParent2","_parentParentParent","isArrowFunctionTypeAnnotation","needsColon","wasIndented","_parent9","shouldIndent","_printed4","typePath","printedType","shouldAddStartLine","elementTypes","_variance","_variance2","_printed5","commentSyntax","commentStart","_parent10","_variance3","export","_parent11","asserts","_shouldBreak3","const","isExport","_parent12","isExternalModule","parentIsDeclaration","bodyIsDeclaration","textBetweenNodeAndItsId","shouldNotPrintColon","printPathNoParens","decoratorPath","_node","isIndentableBlockComment","printIndentableBlockComment","isInsideFlowComment","_require$$0$builders$7","concat$e","hardline$a","indent$8","join$a","printerEstreeJson","options$5","aliases$2","extensions$8","JavaScript","JavaScript$1","extensions$9","JSX","JSX$1","aliases$3","interpreters$1","extensions$a","TypeScript","TypeScript$1","extensions$b","TSX","TSX$1","extensions$c","filenames$1","_JSON","searchable","_JSON$1","aliases$4","extensions$d","filenames$2","JSON_with_Comments","JSON_with_Comments$1","extensions$e","JSON5","JSON5$1","require$$0$6","require$$1$2","require$$2$1","require$$3$1","require$$4","require$$5","require$$6","languageJs","estree","cjkPattern","kPattern","punctuationPattern","getLast$3","INLINE_NODE_TYPES","INLINE_NODE_WRAPPER_TYPES","kRegex","punctuationRegex","utils$5","mapAst","preorder","parentStack","splitText","KIND_NON_CJK","KIND_CJ_LETTER","KIND_CJK_PUNCTUATION","innerToken","innerIndex","innerTokens","appendNode","hasLeadingPunctuation","hasTrailingPunctuation","kind1","kind2","getFencedCodeBlockValue","leadingSpaceCount","replaceRegex","lineContents","markerStyle","hasEndMarker","getIndent","getOrderedListItemInfo","orderListItem","_originalText$slice$m2","numberText","_require$$0$builders$8","hardline$b","literalline$5","concat$f","markAsRoot$3","mapDoc$6","getFencedCodeBlockValue$1","embed_1$2","langMatch","getParserName","styleUnit","startWithPragma","matched","pragma$4","getOrderedListItemInfo$1","mapAst$1","splitText$1","isSingleCharRegex","mergeChildren","mergeNode","preprocess_1$2","mergeContinuousImportExport","transformImportExport","splitTextIntoSentences","isAligned","_list$children","firstItem","secondItem","firstStart","getListItemStart","secondStart","listItem","markAlignedList","isIndented","hasIndentedCodeblock","transformIndentedCodeblockAndMarkItsParentList","transformInlineCode","mergeContinuousTexts","restoreUnescapedCharacter","_require$$0$builders$9","breakParent$4","concat$g","join$b","line$8","literalline$6","markAsRoot$4","hardline$c","softline$7","ifBreak$7","fill$5","align$2","indent$9","group$f","mapDoc$7","printDocToString$2","getFencedCodeBlockValue$2","getOrderedListItemInfo$2","splitText$2","punctuationPattern$1","INLINE_NODE_TYPES$1","INLINE_NODE_WRAPPER_TYPES$1","replaceEndOfLineWith$2","TRAILING_HARDLINE_NODES","SINGLE_LINE_NODE_TYPES","SIBLING_NODE_TYPES","printListItem","listPrefix","printChildren$2","processor","getNthListSiblingIndex","getNthSiblingIndex","siblingNode","getAncestorCounter$1","getAncestorNode$2","printLine","isBreakable","printRoot","ignoreRanges","ignoreStart","isPrettierIgnore$1","ignoreRange","lastChildNode","postprocessor","isInlineHTML","isAfterHardlineNode","isEndsWithHardLine","isInlineNode","shouldNotPrePrintHardline","shouldPrePrintTripleHardline","prevNodeType","isSiblingNode","isInTightListItem","isPrevNodeLooseListItem","isPrevNodePrettierIgnore","isBlockHtmlWithoutBlankLineBetweenPrevHtml","isJsxInlineSibling","shouldPrePrintDoubleHardline","getLastDescendantNode","isPrevNodeList","isIndentedCode","normalizeDoc","normalizeParts$2","printUrl","dangerousCharOrChars","dangerousChars","printTitle","printSpace","singleCount","doubleCount","printerMarkdown","referenceType","shouldRemainTheSameContent","text1","underscore1","underscore2","text2","_index","_nextNode","backtickCount","_style","_style2","isHtmlComment","nthSiblingIndex","isGitDiffFriendlyOrderedList","rawPrefix","additionalSpaces","restSpaces","getAdditionalSpaces","alignListPrefix","getPrefix","lineOrSpace","_nextNode2","shouldInlineFootnote","hardlineWithoutBreakParent","rowPath","rowContents","cellPath","columnMaxWidths","currentWidths","columnIndex","alignedTable","printRow","printSeparator","compactTable","isCompact","rowContent","alignRight","alignCenter","alignLeft","printTable","options$6","aliases$5","extensions$f","filenames$3","Markdown","require$$0$7","languageMarkdown","mdast","pragma$5","getLast$4","isPrettierIgnore$2","hasLeadingComments","hasMiddleComments","middleComments","hasIndicatorComment","indicatorComment","hasTrailingComment$2","trailingComment","hasEndComments","endComments","splitWithSingleSpace","utils$6","getAncestorCount","pathStackLength","isEmptyNode","mapNode","defineShortcut","newlineCount","textLength","isLastDescendantNode","parentItem","getBlockValueLineContents","parentIndent","isLastDescendant","rawLineContents","lineContent","removeUnnecessaryTrailingNewlines","lineContentWords","chomping","trailingNewlineCount","getFlowScalarLineContents","getLastDescendantNode$1","insertPragma$9","isPragma$1","getAncestorCount$1","getBlockValueLineContents$1","getFlowScalarLineContents$1","getLast$5","getLastDescendantNode$2","hasLeadingComments$1","hasMiddleComments$1","hasIndicatorComment$1","hasTrailingComment$3","hasEndComments$1","hasPrettierIgnore$6","isLastDescendantNode$1","isNextLineEmpty$6","isNode$1","isEmptyNode$1","defineShortcut$1","mapNode$1","docBuilders$2","conditionalGroup$2","breakParent$5","concat$h","dedent$3","dedentToRoot$3","fill$6","group$g","hardline$d","ifBreak$8","join$c","line$9","lineSuffix$2","literalline$7","markAsRoot$5","softline$8","replaceEndOfLineWith$3","defineShortcuts","_print","nextDocument","shouldPrintDocumentEndMarker","lastDescendantNode","shouldPrintDocumentHeadEndMarker","shouldPrintDocumentBody","printFlowScalarContent","originalQuote","align$3","lineWords","isEmptyMappingKey","isEmptyMappingValue","isAbsolutelyPrintedAsSingleLineNode","needsSpaceInFrontOfMappingValue","isInlineNode$1","isSingleLineNode","openMarker","closeMarker","isLastItemEmptyMappingItem","printNextEmptyLine","isNextEmptyLinePrintedChecklist","printerYaml","nextEmptyLine","options$7","aliases$6","extensions$g","filenames$4","YAML","languageYaml","version$2","getSupportInfo$2","internalPlugins","isArray$1","withPlugins","formatWithCursor","__debug","formatAST","formatDoc","printToDoc","Source","SyntaxError","sliceIterator","handleStart","_this$props","shouldCancelStart","_touched","sortableInfo","nodeIsChild","sorting","useDragHandle","_node$sortableInfo","manager","pressDelay","handlePress","pressTimer","handleMove","_this$props2","pressThreshold","_delta","combinedDelta","cancelTimer","handleEnd","getActive","_this$props3","getHelperDimensions","helperClass","hideSortableGhost","onSortStart","useWindowAsScrollContainer","containerBoundingRect","dimensions","marginOffset","boundingClientRect","offsetEdge","initialOffset","initialScroll","initialWindowScroll","_this$helper$classLis","clonedNode","boxSizing","sortableGhost","minTranslate","maxTranslate","listenerNode","handleSortMove","handleSortEnd","sortingIndex","onSortMove","updatePosition","animateNodes","autoscroll","_this$props4","onSortEnd","edgeOffset","autoscrollInterval","oldIndex","translate","speed","acceleration","isAutoScrolling","scrollContainer","_Manager2","getContainer","containerNode","scrollingElement","offsets","_offsets","minLockOffset","maxLockOffset","lockAxis","lockToContainerEdges","_getLockPixelOffsets","getLockPixelOffsets","_getLockPixelOffsets2","minOffset","maxOffset","_props2","transitionDuration","onSortOver","getOrderedRefs","containerScrollDelta","sortingOffset","windowScrollDelta","prevIndex","_reactDom","_react2","_react","_propTypes2","Manager","getIndex","sortByIndex","setDraggable","removeDraggable","defaultHistoryState","lastValue","Renderer","ParserCore","ParserBlock","ParserInline","LinkifyIt","punycode","zero","commonmark","BAD_PROTO_RE","GOOD_DATA_RE","validateLink","RECODE_HOSTNAME_FOR","normalizeLink","hostname","protocol","toASCII","normalizeLinkText","toUnicode","MarkdownIt","presetName","renderer","linkify","configure","presets","ruler","rules2","ruler2","parseInline","inlineMode","renderInline","encodeCache","keepEscaped","nextCode","defaultChars","getEncodeCache","componentChars","decodeCache","getDecodeCache","b1","b2","b3","b4","slashes","auth","port","Url","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","hostlessProtocol","slashedProtocol","slashesDenoteHost","lowerProto","hec","simplePath","atSign","hostEnd","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","qm","Any","parseLinkLabel","parseLinkDestination","parseLinkTitle","disableNested","prevPos","labelEnd","posMax","skipToken","default_rules","code_inline","slf","renderAttrs","code_block","fence","tmpAttrs","tmpToken","langName","langPrefix","image","renderInlineAsText","renderToken","hardbreak","xhtmlOut","softbreak","breaks","html_block","html_inline","nextToken","needLf","_rules","Core","NEWLINES_RE","NULL_RE","isLinkClose","ln","htmlLinkLevel","fullUrl","urlText","blockTokens","pretest","RARE_RE","SCOPED_ABBR_TEST_RE","SCOPED_ABBR_RE","SCOPED_ABBR","replaceFn","replace_scoped","inlineTokens","inside_autolink","replace_rare","blkIdx","typographer","QUOTE_TEST_RE","QUOTE_RE","APOSTROPHE","replaceAt","process_inlines","thisLevel","nextChar","isLastPunctChar","isNextPunctChar","isLastWhiteSpace","isNextWhiteSpace","canOpen","canClose","isSingle","openQuote","closeQuote","OUTER","quotes","StateCore","hasEmptyLines","maxNesting","skipEmptyLines","sCount","blkIndent","tight","outTokens","lineMax","bMarks","eMarks","escapedSplit","escapes","backTicked","lastBackTick","aligns","tableLines","tbodyLines","tShift","haveEndMarker","skipChars","adjustTab","lastLineEmpty","oldBMarks","oldBSCount","oldIndent","oldParentType","oldSCount","oldTShift","spaceAfterMarker","terminate","terminatorRules","wasOutdented","oldLineMax","bsCount","cnt","skipBulletListMarker","skipOrderedListMarker","contentStart","indentAfterMarker","itemLines","listLines","listTokIdx","markerCharCode","markerValue","oldLIndent","oldTight","posAfterMarker","prevEmptyEnd","isTerminatingParagraph","markTightParagraphs","_endLine","destEndPos","destEndLineNo","references","skipSpacesBack","skipCharsBack","block_names","HTML_SEQUENCES","StateBlock","indent_found","ddIndent","keepLastLF","lineIndent","_rules2","pending","pushPending","isTerminatorChar","pmax","ESCAPED","matchStart","matchEnd","labelStart","parseReference","EMAIL_RE","AUTOLINK_RE","linkMatch","emailMatch","isLetter","DIGITAL_RE","NAMED_RE","lastDelim","currDelim","StateInline","pendingLevel","canSplitWord","left_flanking","right_flanking","fuzzyLink","fuzzyEmail","fuzzyIP","defaultSchemas","http","src_auth","src_host_port_strict","src_path","no_http","src_domain","src_domain_root","src_port","src_host_terminator","mailto","src_email_name","src_host_strict","tlds_2ch_src_re","tlds_default","compile","__opts__","tlds","__tlds__","untpl","tpl","src_tlds","onCompile","__tlds_replaced__","src_xn","email_fuzzy","tpl_email_fuzzy","link_fuzzy","tpl_link_fuzzy","link_no_ip_fuzzy","tpl_link_no_ip_fuzzy","host_fuzzy_test","tpl_host_fuzzy_test","schemaError","__compiled__","__schemas__","compiled","createValidator","slist","schema_test","src_ZPCc","schema_search","__text_cache__","resetScanCache","Match","__last_index__","__schema__","createMatch","ml","tld_pos","testSchemaAt","keepOld","src_Any","src_Cc","src_Z","src_P","src_ZCc","src_pseudo_letter","src_ip4","src_host","tpl_host_fuzzy","tpl_host_no_ip_fuzzy","tpl_host_fuzzy_strict","tpl_host_port_fuzzy_strict","tpl_host_port_no_ip_fuzzy_strict","maxInt","tMin","tMax","skew","damp","initialBias","initialN","regexPunycode","regexNonASCII","regexSeparators","baseMinusTMin","stringFromCharCode","mapDomain","ucs2decode","ucs2encode","digitToBasic","digit","adapt","numPoints","oldi","baseMinusT","handledCPCount","basicLength","handledCPCountPlusOne","qMinusT","newline","fences","heading","nptable","lheading","paragraph","Lexer","gfm","tables","_label","_title","edit","getRegex","bullet","_tag","cap","bull","isordered","pedantic","smartLists","sanitizer","autolink","reflink","nolink","strong","em","InlineLexer","TextRenderer","resolveUrl","baseUrls","_scheme","_email","_inside","_href","_backpedal","mangle","inLink","outputLink","codespan","smartypants","headerPrefix","xhtml","listitem","tablerow","tablecell","prot","baseUrl","originIndependentUrl","inlineText","parseText","setOptions","inlineLexer","finder","allowFolded","cleared","myWidget","makeWidget","myRange","newFoldFunction","rangeFinder","toggleFold","unfold","foldAll","unfoldAll","scanUp","editorOptions","foldOptions","defaultKeymap","toKeys","motionArgs","linewise","toJumplist","wordEnd","bigWord","inclusive","explicitRepeat","toFirstChar","repeatOffset","isEdit","actionArgs","matchIndent","operatorArgs","indentRight","operatorMotionArgs","shouldMoveCursor","interlaceInsertRepeat","blockwise","increase","backtrack","textObjectInner","searchArgs","querySrc","wholeWordOnly","defaultKeymapLength","defaultExCommandMap","shortName","possiblyAsync","excludeFromCommandHistory","Vim","detachVimMap","vim","caretColor","clearFatCursorMark","updateFatCursorMark","fatCursorMarks","disableFatCursorMark","attachVimMap","onCursorActivity","getOnPasteFn","leaveVimMode","enableFatCursorMark","maybeInitVimState","enterVimMode","cmKey","vimKey","pieces","lastPiece","hasCharacter","piece","specialKeys","isUpperCase","cmKeyToVimKey","Delete","Insert","onPasteFn","insertMode","offsetCursor","enterInsertMode","numberRegex","wordCharTest","bigWordCharTest","makeKeyRange","upperCaseAlphabet","lowerCaseAlphabet","numbers","validMarks","validRegisters","isLowerCase","isWhiteSpaceString","isEndOfSentenceSymbol","cfg","vimGlobalState","lastInsertModeKeyTimer","createCircularJumpList","cachedCursor","newCur","curMark","useNextSlot","trashMark","markPos","cursorEqual","createInsertModeChanges","expectCursorActivityForChange","MacroModeState","latestRegister","isPlaying","isRecording","replaySearchQueries","onRecordingDone","lastInsertModeChanges","InputState","lastEditInputState","lastEditActionCommand","lastHPos","lastHSPos","lastMotion","fakeCursor","insertModeRepeat","visualMode","visualBlock","lastSelection","lastPastedText","resetVimGlobalState","optionName","searchQuery","searchIsReversed","lastSubstituteReplacePart","jumpList","macroModeState","lastCharacterSearch","increment","selectedCharacter","registerController","RegisterController","searchHistoryController","HistoryController","exCommandHistoryController","exitMacroRecordMode","enterMacroRecordMode","registerName","getRegister","vimApi","getRegisterController","resetVimGlobalState_","getVimGlobalState_","maybeInitVimState_","suppressErrorLogging","InsertModeKey","lhs","rhs","exCommandDispatcher","unmap","noremap","toCtxArray","ctxsToMap","actualLength","newMapping","_mapCommand","mappedCtxs","mapclear","origLength","userKeymap","contexts","defineEx","exCommands","commandMap_","handleKey","command","handleMacroRecording","clearInputState","pushText","logKey","handleEsc","exitVisualMode","exitInsertMode","keyBuffer","keysAreChars","commandDispatcher","matchCommand","thisMatch","handleKeyInsertMode","keysMatcher","pushRepeatDigit","handleKeyNonInsertMode","isVimOp","doKeyToKey","processCommand","handleEx","defineMotion","motions","defineAction","defineOperator","operators","mapCommand","defineRegister","registers","prefixRepeat","motionRepeat","Register","insertModeChanges","searchQueries","unnamedRegister","historyBuffer","initialPrefix","getRepeat","setText","pushInsertModeChanges","pushSearchQuery","isValidRegister","shiftNumericRegisters_","nextMatch","pushInput","bestMatch","commandMatch","commandMatches","repeatOverride","processMotion","processOperator","processOperatorMotion","processAction","processSearch","processEx","copyArgs","evalInput","repeatIsExplicit","recordLastEdit","setReversed","promptPrefix","originalQuery","originalScrollPos","handleQuery","showPrompt","logSearchQuery","searchPromptDesc","parsedQuery","updateSearchQuery","_findNext","clearSearchHighlight","expandWordUnderCursor","isKeyword","smartCase","showConfirm","onPromptClose","onPromptKeyDown","exArgs","origHead","copyCursor","clipCursorToContent","origAnchor","oldHead","oldAnchor","noRepeat","motionResult","recordJumpPosition","updateCmSelection","updateMark","cursorIsBefore","lastSel","chOffset","curEnd","cmSel","cursorMin","cursorMax","makeCmSelection","_cm","expandSelectionToLine","clipToLine","operatorMoveTo","actionCommand","moveToTopLine","getUserVisibleLines","findFirstNonWhiteSpaceCharacter","moveToMiddleLine","moveToBottomLine","expandToLine","isReversed","highlightSearchMatches","goToMark","getMarkPos","moveToOtherHighlightedEnd","jumpToMark","best","cursorIsBetween","moveByCharacters","moveByLines","moveByDisplayLines","moveByScroll","moveToColumn","moveToEol","moveToStartOfLine","goalCoords","resCoords","moveByPage","moveByParagraph","findParagraph","moveBySentence","last_valid","skip_empty_lines","curr_index","findSentence","scrollbox","moveByWords","emptyLineIsWord","findWord","eodCh","shortCircuit","lastWord","moveToWord","moveTillCharacter","_moveToCharacter","recordLastCharacterSearch","moveToCharacter","moveToSymbol","symb","curCh","lastCh","reverseSymb","curMoveThrough","symbolToMode","findSymbolModes","isComplete","findSymbol","_moveToColumn","keepHPos","retval","moveToFirstNonWhiteSpaceCharacter","moveToMatchedSymbol","moveToLineOrEdgeOfDocument","textObjectManipulation","bracketRegexp","openSym","selectCompanionObject","'","firstIndex","findBeginningAndEnd","expandSelection","repeatLastCharacterSearch","lastSearch","fillArray","finalHead","lastState","prevLineEnd","MAX_VALUE","wasLastLine","_args","changeCase","swapped","toSwap","yank","jumpListWalk","newBottom","scrollToCursor","replayMacro","executeMacroRegister","onKeyEventTargetKeyDown","selectForInsert","toggleVisualMode","subMode","reselectLastSelection","_actionArgs","updateLastSelection","anchorMark","headMark","finalCh","curFinalPos","newLineAndEnterInsertMode","newlineAndIndentContinueComment","whitespaceLength","currentLine","chompedText","wasChomped","firstIndent","wspace","newIndent","quotient","curPosFinal","lastSelectionCurEnd","selectedArea","getCurrentSelectedAreaRange","getLastSelectedAreaRange","getSelectedAreaRange","selectedText","emptyStrings","selectBlock","extendLineToColumn","repeatFn","setRegister","setMark","replaceTo","replaceWith","replaceWithStr","incrementNumberToken","numberStr","lineStr","baseStr","digits","zeroPadding","repeatLastEdit","_repeatLastEdit","includeLineBreak","maxCh","offsetLine","offsetCh","pressed","prefixLen","pressedPrefix","mappedPrefix","cur1","cur2","cur3","cur1before2","cur2before3","isClipped","atAnchor","atHead","wasClipped","baseCh","headCh","newDir","lineHead","updateFakeCursor","exclusive","headOffset","moveHead","_forward","noSymbol","getHead","wordStart","bracket","section","charTests","foundWord","charIdxInLine","markName","includeChar","isBoundary","searchState_","splitBySeparator","argString","findUnescapedSeparators","escapeNextChar","setQuery","getOverlay","setOverlay","getScrollbarAnnotate","setScrollbarAnnotate","charUnescapes","unescapes","regexPart","forceIgnoreCase","specialComesNext","translateRegex","openNotification","alert","makePrompt","rawQuery","regexEqual","highlightTimeout","searchState","matchSol","scrollInfo","bottomY","changeHistory","ExCommandDispatcher","buildCommandMap_","opt_params","_processCommand","commandHistoryRegister","previousCommand","inputStream","commandName","parseInput_","matchCommand_","parseCommandArgs_","toInput","parseLineSpec_","numberMatch","parseLineSpecOffset_","offsetMatch","delim","argDelimiter","user","colorscheme","mapArgs","imap","nmap","vmap","setArgs","setCfg","forceGet","optionIsBoolean","setOptionReturn","setlocal","setglobal","regArgs","regInfo","unique","decimal","octal","parseArgs","numPart","textPart","matchPart","compareFn","textOld","splitBySlash","matchedLines","nextCommand","substitute","flagsPart","replacePart","unescapeRegexReplace","translateRegexReplace","searchCursor","exMode","savedCallback","nohlsearch","delmarks","startMark","finishMark","insertModeChangeRegister","lastChange","logInsertModeChange","imc","repeatInsertModeChanges","changeObj","ignoreCount","selectionCount","maybeReset","handleExternalSelection","repeatForInsert","isAction","cachedInputState","repeatCommand","repeatInsert","changeObject","keyHandler","_graphqlLanguageServiceInterface","rawResults","tokenStart","nodeContainingPosition","linesUntilPosition","rulesToSkip","formatRegExp","objects","msg","noDeprecation","warned","throwDeprecation","traceDeprecation","trace","debugEnviron","debugs","stylize","stylizeNoColor","colors","showHidden","_extend","customInspect","stylizeWithColor","styleType","recurseTimes","primitive","simple","formatPrimitive","visibleKeys","arrayToHash","braces","toUTCString","formatProperty","numLinesEst","reduceToSingleString","debuglog","pid","isNullOrUndefined","months","getHours","getMinutes","getSeconds","getMonth","kCustomPromisifiedSymbol","callbackifyOnRejected","newReason","promisify","promiseResolve","promiseReject","callbackify","callbackified","maybeCb","rej","superCtor","super_","TempCtor","TYPE","_getTypeInfo2","_SchemaReference","descriptionDiv","deprecationDiv","hoverTimeout","hoverTime","getHoverTime","onHover","popup","popupBox","popupStyle","popupWidth","popupHeight","topPos","popupTimeout","onMouseOverPopup","hidePopup","showPopup","onMouseHover","oldOnMouseOver","createState","isHoldingModifier","enableJumpMode","disableJumpMode","isMac","clickEvent","destination","oldOnMouseOut","appVersion","getDestination","CodeMirrorSizer","ToggleButton_1","Tooltip_1","Button_1","Copy_1","Share","renderAuthSharingWarning","isSharingAuthorization","AuthSharingWarning","toggleTooltip","reshare","IconWrapper","TooltipWrapper","anchorOrigin","horizontal","vertical","renderAfterContent","Row","TooltipText","CopyWrapper","Message","MessageTitle","pulse","Slider","Tooltip","handleClickOutside","domNode","anchorTop","anchorBottom","anchorLeft","anchorRight","anchorCenter","Content","BigTriangle","CopyToClipboard","Copy","onCopy","copyTimer","CopyBox","Indicator","_copyToClipboard","sourceSymbolKeys","_React$PureComponent","_getPrototypeOf2","Reload_1","Polling_1","interval","ReloadIcon_1","animate","Positioner_1","Positioner","Circle","Icon","refreshFrames","PollingIcon_1","SchemaPolling","setWindowVisibility","visibilityState","windowVisible","updatePolling","clearTimer","timer","_onKeyUp","_onEdit","_onHasCompletion","mapStateToVariablesProps","mapStateToHeadersProps","lastEnd","parseObj","expect","nodeStart","parseMember","curToken","parseVal","parseArr","readHex","ageOfDate_1","ResultViewer_1","defaultResponseRecord","response1","ResultWindow","Response","SubscriptionTime","SubscriptionTimeText","ResultWrapper","ResultViewer","diffMs","diffDays","diffHrs","diffMins","sec","hideGutters","viewer","Result","TracingRow_1","TracingWrapper","ReRun","NotSupported","TracingRows","ResponseTracing","endTime","requestMs","responseMs","requestDuration","execution","resolvers","Bar","Duration","NameWrapper","TracingRow","printDuration","nanoSeconds","microSeconds","QueryPlanViewer","QueryPlanCodeMirror","docString","getDefaultFieldNames","fieldNameFn","defaultGetDefaultFieldNames","buildSelectionSet","indentStart","indentEnd","withInsertions","leafFieldNames","edited","keycode","SideTabs","setContentContainerRef","refContentContainer","handleTabClick","handleKeyDown","HTMLInputElement","handleDocsResizeStart","hadWidth","cursorPos","maxSize","docsSize","handleMouseMove","docsStyle","activeTab","Tabs","TabsContainer","TabContentResizer","TabsGradient","TabContentContainer","ConnectedGraphDocs","ErrorContainer_1","SDLStyles_1","SDLHeader_1","SDLEditor_1","SDLView","SchemaExplorerContainer","SDLColumn","createSDL_1","SDLHeader","handleClick","showOptions","printSDL","printIntrospection","SchemaHeader","Box","Download","Option","styleHelper","buttonTextHover","subtitle","SDLEditor","handleScroll","overflowY","OverflowShadow","FieldDoc_1","ColumnDoc_1","RootColumn_1","GraphDocs","handleSearch","lastNavStack","beforeLastNavStack","keyPressed","firstElement","widthMap","rootWidth","stackWidths","DocsExplorerContainer","Argument_1","MarkdownContent_1","TypeLink_1","DocTypeSchema_1","ScalarType_1","EnumTypeSchema_1","UnionTypeSchema_1","DocsStyles_1","FieldDoc","scrollToRight","explorer","explorerDoc","typeInstance","argsOffset","implementationsOffset","DocsHeader","DocsDescription","markdown","perTick","showDefaultValue","ArgumentLine","MarkdownContent","nonDeprecatedFields","deprecatedFields","DocTypeSchema","DocTypeLine","DocsTypeName","Brace","DocsTypeInferface","DocsValueComment","DocType_1","sdlType","deprecatedValues","DocsValue","SearchResults_1","GraphDocsRoot_1","SearchBox_1","RootColumn","SearchResults","withinType","matchedWithin","matchedTypes","matchedFields","fields_1","typeNames_1","NoResult","GraphDocsRoot","DocsRoot","ShowRootType","Tab_1","SortableTab","TabBar","SortableTabBar","Plus","StyledTabBar","react_input_autosize_1","startEditName","editingName","stopEditName","handleMouseOverCross","overCross","handleMouseOutCross","handleSelectSession","handleCloseSession","handleEditName","TabItem","Icons","RedDot","QueryTypes","OperationNameInput","OperationName","onDoubleClick","Close","hasCircle","onMouseEnter","onMouseLeave","QueryType","sizerStyle","INPUT_PROPS_BLACKLIST","copyStyles","fontSize","fontFamily","fontStyle","letterSpacing","textTransform","isIE","AutosizeInput","inputRef","placeHolderSizerRef","placeHolderSizer","sizerRef","inputWidth","inputId","copyInputStyles","updateInputWidth","onAutosize","newInputWidth","placeholderIsMinWidth","extraWidth","injectStyles","sizerValue","previousValue","wrapperStyle","inputProps","cleanInputProps","inputClassName","Modal","HistoryHeader_1","HistoryItems_1","HistoryPopup","handleClickUse","selectedItem","selectedItemIndex","handleItemSelect","handleSelectFilter","selectedFilter","searchTerm","onRequestClose","contentLabel","onSelectFilter","onItemSelect","onItemStarToggled","RightHeader","View","Use","UseText","Big","RightEmpty","RightEmptyText","bodyOpenClassName","portalClassName","_reactDom2","_ModalPortal2","ariaAppHider","_safeHTMLElement2","_reactLifecyclesCompat","isReact16","getCreatePortal","getParentElement","parentSelector","removePortal","portalRef","portal","renderPortal","defaultStyles","prevParent","nextParent","closesAt","closeTimeoutMS","beforeClose","closeWithTimeout","htmlOpenClassName","afterOpen","overlayClassName","onAfterOpen","ariaHideApp","shouldFocusAfterRender","shouldCloseOnOverlayClick","shouldReturnFocusAfterClose","aria","role","shouldCloseOnEsc","overlayRef","contentRef","WebkitOverflowScrolling","outline","polyfill","focusManager","_scopeTab2","CLASS_NAMES","TAB_KEY","ESC_KEY","ariaHiddenInstances","ModalPortal","setOverlayRef","setContentRef","afterClose","returnFocus","teardownScopedFocus","popWithoutFocus","onAfterClose","beforeOpen","closeTimer","setupScopedFocus","markForFocusLater","overlayEl","contentEl","closeWithoutTimeout","focusContent","contentHasFocus","requestClose","handleOverlayOnClick","shouldClose","ownerHandlesClose","handleContentOnMouseUp","handleOverlayOnMouseDown","handleContentOnClick","handleContentOnMouseDown","shouldBeClosed","buildClassName","additional","classNames","attributesFromObject","moveFromContentToOverlay","contentStyles","overlayStyles","testId","handleBlur","handleFocus","focusLaterElements","toFocus","modalElement","_tabbable","_tabbable2","needToFocus","checkSafari","warning","ExecutionEnvironment","canUseWorkers","Worker","canUseEventListeners","canUseViewport","dumpClassLists","htmlClassList","docBodyClassList","classString","classListRef","incrementReference","decrementReference","__reactInternalSnapshotFlag","__reactInternalSnapshot","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","newApiName","maybeSnapshot","__suppressDeprecationWarning","HistoryChooser_1","HistoryHeader","Chooser","Filter","FilterText","HistoryItems","HistoryItem","OperationSide","Operation","OperationText","QueryIcon","MutationIcon","SubscriptionIcon","Time","getFullYear","OperationIcon","Settings","ConfigEditor_1","SettingsEditor","handleKeydown","ConfigEditor","PlaygroundVersion","ButtonWrapper","playgroundSettingsSelector","SettingsEditorHOC","handleSave","configSelector","setNode","editorTheme","onPrettifyQuery","keywordRegex","esc","keyCol","pairStart","inlinePairs","inlineList","FileEditor","fibonacci","maxRetries","_reactSideEffect2","_reactFastCompare2","_HelmetUtils","_HelmetConstants","HelmetExport","HelmetWrapper","mapNestedChildrenToProps","nestedChildren","flattenArrayTypeChildren","_extends2","arrayTypeChildren","newChildProps","mapObjectTypeChildren","_extends3","_extends4","titleAttributes","bodyAttributes","htmlAttributes","mapArrayTypeChildrenToProps","newFlattenedProps","arrayChildName","_extends5","warnOnInvalidChildren","mapChildrenToProps","_child$props","childProps","convertReactPropstoHtmlAttributes","defaultTitle","encodeSpecialCharacters","noscript","onChangeClientState","titleTemplate","rewind","mappedState","mapStateOnServer","baseTag","linkTags","metaTags","noscriptTags","scriptTags","styleTags","reducePropsToState","handleClientStateChange","renderStatic","_interopDefault","ex","React__default","handleStateChangeOnClient","mountedInstances","emitChange","SideEffect","recordedState","compareContext","bHasOwnProperty","keyList","hasProp","hasElementType","arrA","arrB","dateA","dateB","regexpA","regexpB","_objectAssign2","getTitleFromPropsList","propsList","innermostTitle","getInnermostProperty","innermostTemplate","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","tagAttrs","getBaseTagFromPropsList","primaryAttributes","innermostBaseTag","lowerCaseAttributeKey","getTagsFromPropsList","approvedSeenTags","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","attributeKey","tagUnion","rafPolyfill","clock","currentTime","cafPolyfill","webkitRequestAnimationFrame","mozRequestAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","_helmetCallback","commitTagChanges","updateAttributes","updateTitle","tagUpdates","updateTags","addedTags","removedTags","_tagUpdates$tagType","newTags","oldTags","flattenArray","possibleArray","elementTag","helmetAttributeString","helmetAttributes","attributesToRemove","attributeKeys","indexToSave","headElement","tagNodes","indexToDelete","newElement","existingTag","isEqualNode","generateElementAttributesAsString","convertElementAttributestoReactProps","initProps","getMethodsForTag","toComponent","_initProps","generateTitleAsReactComponent","attributeString","flattenedTitle","generateTitleAsString","_mappedTag","mappedTag","mappedAttribute","generateTagsAsReactComponent","attributeHtml","tagContent","generateTagsAsString","initAttributes","_ref$title","loader","dumper","FAILSAFE_SCHEMA","JSON_SCHEMA","CORE_SCHEMA","DEFAULT_SAFE_SCHEMA","DEFAULT_FULL_SCHEMA","load","loadAll","safeLoadAll","dump","safeDump","MINIMAL_SCHEMA","SAFE_SCHEMA","DEFAULT_SCHEMA","addConstructor","Mark","CONTEXT_FLOW_IN","CONTEXT_FLOW_OUT","CONTEXT_BLOCK_IN","CONTEXT_BLOCK_OUT","CHOMPING_CLIP","CHOMPING_STRIP","CHOMPING_KEEP","PATTERN_NON_PRINTABLE","PATTERN_NON_ASCII_LINE_BREAKS","PATTERN_FLOW_INDICATORS","PATTERN_TAG_HANDLE","PATTERN_TAG_URI","is_EOL","is_WHITE_SPACE","is_WS_OR_EOL","is_FLOW_INDICATOR","fromHexCode","simpleEscapeSequence","charFromCodepoint","simpleEscapeCheck","simpleEscapeMap","onWarning","legacy","implicitTypes","documents","generateError","throwError","throwWarning","directiveHandlers","checkLineBreaks","TAG","captureSegment","checkJson","_position","_length","_character","mergeMappings","overridableKeys","quantity","storeMappingPair","keyTag","keyNode","readLineBreak","skipSeparationSpace","allowComments","checkIndent","lineBreaks","testDocumentSeparator","writeFoldedLines","readBlockSequence","nodeIndent","_anchor","detected","anchorMap","composeNode","readTagProperty","tagHandle","isVerbatim","isNamed","readAnchorProperty","nodeContext","allowToSeek","allowCompact","allowBlockStyles","allowBlockScalars","allowBlockCollections","typeIndex","typeQuantity","flowIndent","blockIndent","indentStatus","atNewLine","following","atExplicitKey","readBlockMapping","terminator","isPair","isExplicitPair","isMapping","readNext","readFlowCollection","captureStart","folding","didReadContent","detectedIndent","textIndent","emptyLines","atMoreIndented","readBlockScalar","captureEnd","readSingleQuotedScalar","hexLength","hexResult","readDoubleQuotedScalar","readAlias","withinFlowCollection","hasPendingContent","_lineStart","_lineIndent","_kind","readPlainScalar","readDocument","documentStart","loadDocuments","getSnippet","snippet","canonical","lowercase","uppercase","isOctCode","isDecCode","hasDigits","binary","hexadecimal","YAML_FLOAT_PATTERN","SCIENTIFIC_WITHOUT_DOT","POSITIVE_INFINITY","YAML_DATE_REGEXP","YAML_TIMESTAMP_REGEXP","year","day","hour","minute","fraction","UTC","setTime","toISOString","NodeBuffer","BASE64_MAP","bitlen","tailbits","bits","base64","ieee754","SlowBuffer","INSPECT_MAX_BYTES","foo","typedArraySupport","species","toHex","lens","getLens","validLen","placeHoldersLen","_byteLength","curByte","_toString","pairKey","pairHasKey","esprima","modules","installedModules","__webpack_require__","moduleId","loaded","comment_handler_1","jsx_parser_1","parser_1","tokenizer_1","commentHandler","proxyDelegate","parserDelegate","collectComment","attachComment","CommentHandler","isModule","sourceType","jsx","JSXParser","parseModule","parseScript","tolerant","errorHandler","parsingOptions","tokenizer","Tokenizer","getNextToken","tolerate","syntax_1","Syntax","insertInnerComments","BlockStatement","innerComments","findTrailingComments","entry_1","firstComment","findLeadingComments","visitNode","Program","visitComment","AssignmentExpression","AssignmentPattern","ArrayPattern","ArrowFunctionExpression","AwaitExpression","BinaryExpression","BreakStatement","CatchClause","ClassBody","ClassDeclaration","ClassExpression","ContinueStatement","DoWhileStatement","DebuggerStatement","EmptyStatement","ExportAllDeclaration","ExportDefaultDeclaration","ExportNamedDeclaration","ExportSpecifier","ForStatement","ForOfStatement","ForInStatement","FunctionDeclaration","FunctionExpression","Identifier","IfStatement","ImportDeclaration","ImportDefaultSpecifier","ImportNamespaceSpecifier","ImportSpecifier","Literal","LabeledStatement","LogicalExpression","MemberExpression","MetaProperty","MethodDefinition","NewExpression","ObjectExpression","ObjectPattern","Property","RestElement","ReturnStatement","SequenceExpression","SpreadElement","Super","SwitchCase","SwitchStatement","TaggedTemplateExpression","TemplateElement","TemplateLiteral","ThisExpression","ThrowStatement","TryStatement","UnaryExpression","UpdateExpression","VariableDeclaration","VariableDeclarator","WhileStatement","WithStatement","YieldExpression","extendStatics","character_1","JSXNode","jsx_syntax_1","token_1","xhtml_entities_1","getQualifiedElementName","elementName","qualifiedName","JSXSyntax","JSXIdentifier","JSXNamespacedName","JSXMemberExpression","TokenName","parsePrimaryExpression","parseJSXRoot","startJSX","scanner","startMarker","finishJSX","reenterJSX","expectJSX","createJSXNode","collectComments","createJSXChildNode","scanXHTMLEntity","terminated","eof","Character","XHTMLEntities","lexJSX","isIdentifierStart","isIdentifierPart","nextJSXToken","lastMarker","convertToken","nextJSXText","peekJSXToken","saveState","scanComments","restoreState","throwUnexpectedToken","matchJSX","parseJSXIdentifier","finalize","parseJSXElementName","name_1","parseJSXAttributeName","name_2","parseJSXStringLiteralAttribute","getTokenRaw","parseJSXExpressionAttribute","tolerateError","parseAssignmentExpression","parseJSXAttributeValue","parseJSXElement","parseJSXNameValueAttribute","parseJSXSpreadAttribute","JSXSpreadAttribute","parseJSXAttributes","parseJSXOpeningElement","JSXOpeningElement","parseJSXBoundaryElement","name_3","JSXClosingElement","parseJSXEmptyExpression","JSXEmptyExpression","parseJSXExpressionContainer","parseJSXChildren","JSXText","parseComplexJSXElement","open_1","isStartOfExpression","Regex","AsyncArrowFunctionExpression","AsyncFunctionDeclaration","AsyncFunctionExpression","logical","ComputedMemberExpression","Module","RegexLiteral","Script","StaticMemberExpression","discriminant","assert_1","error_handler_1","messages_1","scanner_1","ErrorHandler","Scanner","trackComment","operatorPrecedence","hasLineTerminator","allowIn","allowStrictDirective","allowYield","firstCoverInitializedNameError","isAssignmentTarget","isBindingElement","inFunctionBody","inIteration","inSwitch","labelSet","messageFormat","whole","createError","unexpectedTokenError","Messages","UnexpectedToken","UnexpectedEOS","UnexpectedIdentifier","UnexpectedNumber","UnexpectedString","UnexpectedTemplate","isFutureReservedWord","UnexpectedReserved","isStrictModeReservedWord","StrictReservedWord","lastMarkerLineStart","tolerateUnexpectedToken","multiLine","nextRegexToken","scanRegExp","createNode","lastLineStart","expectCommaSeparator","matchKeyword","matchContextualKeyword","matchAssign","isolateCoverGrammar","parseFunction","previousIsBindingElement","previousIsAssignmentTarget","previousFirstCoverInitializedNameError","inheritCoverGrammar","consumeSemicolon","matchAsyncFunction","parseFunctionExpression","StrictOctalLiteral","parseTemplateLiteral","parseGroupExpression","parseArrayInitializer","parseObjectInitializer","parseIdentifierName","parseClassExpression","parseSpreadElement","parsePropertyMethod","previousStrict","previousAllowStrictDirective","parseFunctionSourceElements","firstRestricted","stricted","parsePropertyMethodFunction","previousAllowYield","parseFormalParameters","parsePropertyMethodAsyncFunction","previousAwait","parseObjectPropertyKey","isPropertyKey","parseObjectProperty","hasProto","lookaheadPropertyKey","qualifiedPropertyName","parseGetterMethod","parseSetterMethod","parseGeneratorMethod","DuplicateProtoProperty","parseTemplateHead","parseTemplateElement","parseExpression","reinterpretExpressionAsPattern","parseRestElement","arrow","parseNewExpression","parseLeftHandSideExpression","parseAsyncArgument","parseAsyncArguments","parseLeftHandSideExpressionAllowCall","maybeAsync","previousAllowIn","asyncArrow","parseSuper","parseUpdateExpression","parseUnaryExpression","StrictLHSPrefix","InvalidLHSInAssignment","StrictLHSPostfix","parseAwaitExpression","StrictDelete","parseExponentiationExpression","binaryPrecedence","parseBinaryExpression","prec","precedences","parseConditionalExpression","checkPatternParam","validateParam","reinterpretAsCoverFormalsList","paramSet","StrictParamDupe","parseYieldExpression","StrictLHSAssignment","parseStatementListItem","IllegalExportDeclaration","parseExportDeclaration","IllegalImportDeclaration","parseImportDeclaration","parseLexicalDeclaration","inFor","parseFunctionDeclaration","parseClassDeclaration","isLexicalDeclaration","parseStatement","parseBlock","parseLexicalBinding","parsePattern","StrictVarName","DeclarationMissingInitializer","parseBindingList","parseBindingRestElement","parseArrayPattern","parsePatternWithDefault","parsePropertyPattern","keyToken","parseVariableIdentifier","parseObjectPattern","LetInLexicalBinding","parseVariableDeclaration","parseVariableDeclarationList","parseVariableStatement","parseEmptyStatement","parseExpressionStatement","parseIfClause","StrictFunction","parseIfStatement","parseDoWhileStatement","previousInIteration","parseWhileStatement","parseForStatement","ForInOfLoopInitializer","initStartToken","InvalidLHSInForIn","InvalidLHSInForLoop","initSeq","parseContinueStatement","UnknownLabel","IllegalContinue","parseBreakStatement","IllegalBreak","parseReturnStatement","IllegalReturn","parseWithStatement","StrictModeWith","parseSwitchCase","parseSwitchStatement","previousInSwitch","defaultFound","MultipleDefaultsInSwitch","parseLabelledStatement","Redeclaration","GeneratorInLegacyContext","parseThrowStatement","NewlineAfterThrow","parseCatchClause","paramMap","DuplicateBinding","StrictCatchVariable","parseFinallyClause","parseTryStatement","NoCatchOrFinally","parseDebuggerStatement","parseDirectivePrologues","previousLabelSet","previousInFunctionBody","StrictParamName","DefaultRestParameter","ParameterAfterRestParameter","parseFormalParameter","identifierIsOptional","StrictFunctionName","previousAllowAwait","formalParameters","IllegalLanguageModeDirective","BadGetterArity","BadSetterArity","BadSetterRestParameter","parseClassElement","hasConstructor","ConstructorIsAsync","StaticPrototype","ConstructorSpecialMethod","DuplicateConstructor","parseClassElementList","parseClassBody","elementList","classBody","parseModuleSpecifier","InvalidModuleSpecifier","parseImportSpecifier","parseNamedImports","parseImportDefaultSpecifier","parseImportNamespaceSpecifier","NoAsAfterImportNamespace","MissingFromClause","parseExportSpecifier","exportDeclaration","isExportFromIdentifier","recordError","constructError","InvalidEscapedReservedWord","InvalidHexEscapeSequence","InvalidRegExp","TemplateOctalLiteral","UnexpectedTokenIllegal","UnterminatedRegExp","hexValue","octalValue","curlyStack","skipSingleLineComment","skipMultiLineComment","scanHexEscape","scanUnicodeCodePointEscape","getIdentifier","getComplexIdentifier","octalToDecimal","scanIdentifier","restore","scanPunctuator","scanHexLiteral","scanBinaryLiteral","scanOctalLiteral","isImplicitOctalLiteral","scanNumericLiteral","scanStringLiteral","unescaped_1","unescaped","octToDec","scanTemplate","rawOffset","unescaped_2","testRegExp","$1","$2","scanRegExpBody","classMarker","scanRegExpFlags","quot","amp","apos","nbsp","iexcl","cent","pound","curren","yen","brvbar","sect","uml","ordf","laquo","shy","reg","macr","deg","plusmn","sup2","sup3","acute","micro","para","middot","cedil","sup1","ordm","raquo","frac14","frac12","frac34","iquest","Agrave","Aacute","Acirc","Atilde","Auml","Aring","AElig","Ccedil","Egrave","Eacute","Ecirc","Euml","Igrave","Iacute","Icirc","Iuml","ETH","Ntilde","Ograve","Oacute","Ocirc","Otilde","Ouml","Oslash","Ugrave","Uacute","Ucirc","Uuml","Yacute","THORN","szlig","agrave","aacute","acirc","atilde","auml","aring","aelig","ccedil","egrave","eacute","ecirc","euml","igrave","iacute","icirc","iuml","eth","ntilde","ograve","oacute","ocirc","otilde","ouml","oslash","ugrave","uacute","ucirc","uuml","yacute","thorn","yuml","OElig","oelig","Scaron","scaron","Yuml","fnof","circ","tilde","Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta","Theta","Iota","Kappa","Lambda","Mu","Nu","Omicron","Rho","Sigma","Tau","Upsilon","Phi","Chi","Psi","Omega","alpha","beta","gamma","epsilon","zeta","eta","theta","iota","kappa","lambda","mu","nu","omicron","rho","sigmaf","sigma","tau","upsilon","phi","chi","psi","omega","thetasym","upsih","piv","ensp","emsp","thinsp","zwnj","zwj","lrm","rlm","ndash","mdash","lsquo","rsquo","sbquo","ldquo","rdquo","bdquo","dagger","Dagger","hellip","permil","prime","Prime","lsaquo","rsaquo","oline","frasl","euro","weierp","real","trade","alefsym","larr","uarr","rarr","darr","harr","crarr","lArr","uArr","rArr","dArr","hArr","forall","exist","nabla","isin","notin","prod","minus","lowast","radic","infin","ang","and","or","cup","int","there4","sim","cong","asymp","equiv","sup","nsub","sube","supe","oplus","otimes","perp","sdot","lceil","rceil","lfloor","rfloor","loz","spades","clubs","hearts","diams","rang","Reader","curly","paren","beforeFunctionExpression","isRegexStart","trackRange","trackLoc","CHAR_TAB","CHAR_LINE_FEED","CHAR_SPACE","CHAR_EXCLAMATION","CHAR_DOUBLE_QUOTE","CHAR_SHARP","CHAR_PERCENT","CHAR_AMPERSAND","CHAR_SINGLE_QUOTE","CHAR_ASTERISK","CHAR_COMMA","CHAR_MINUS","CHAR_COLON","CHAR_GREATER_THAN","CHAR_QUESTION","CHAR_COMMERCIAL_AT","CHAR_LEFT_SQUARE_BRACKET","CHAR_RIGHT_SQUARE_BRACKET","CHAR_GRAVE_ACCENT","CHAR_LEFT_CURLY_BRACKET","CHAR_VERTICAL_LINE","CHAR_RIGHT_CURLY_BRACKET","ESCAPE_SEQUENCES","DEPRECATED_BOOLEANS_SYNTAX","encodeHex","noArrayIndent","skipInvalid","flowLevel","styleMap","compileStyleMap","sortKeys","lineWidth","noRefs","noCompatMode","condenseFlow","explicitTypes","duplicates","usedDuplicates","generateNextLine","isWhitespace","isPrintable","isPlainSafe","needIndentIndicator","STYLE_PLAIN","STYLE_SINGLE","STYLE_LITERAL","STYLE_FOLDED","STYLE_DOUBLE","chooseScalarStyle","singleLineOnly","indentPerLevel","testAmbiguousType","hasFoldableLine","shouldTrackWidth","previousLineBreak","plain","writeScalar","iskey","testImplicitResolving","blockHeader","dropEndingNewline","moreIndented","lineRe","nextLF","foldLine","prevMoreIndented","foldString","escapeSeq","escapeString","indentIndicator","breakRe","detectType","typeList","writeNode","duplicateIndex","duplicate","objectOrArray","objectKey","objectValue","explicitPair","pairBuffer","objectKeyList","writeBlockMapping","writeFlowMapping","arrayLevel","writeBlockSequence","writeFlowSequence","getDuplicateReferences","duplicatesIndexes","inspectNode","ProjectsSideNavItem_1","ProjectsSideNav","SideNav","TitleRow","renderEndpoints","projectEndpoints","Project","ProjectName","Footer","WorkspaceButton","counts","deep","ProjectsSideNavItem","selectEndpoint","ListItem","Count","createStore_1","EndpointPopup_1","GraphQLBinApp","loading","loadingWrapper_1","ConnectedGraphQLBinApp","GraphQLBinAppHOC","rootSaga_1","localStorage_1","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","deserializeState","serializeState","sagas_1","sharingSaga_1","sessionsSagas","sharingSagas","lastSchema","getSelectedOperationName_1","getQueryFacts_1","queryString","setQueryFacts","queryFacts","immutableQueryFacts","getQueryFacts","getSessionWithCredentials","newSearch","replaceState","operationName_1","fetchSession","rootMap_1","prettyQuery","e_4","prevOperations","prevSelectedOperationName","collectVariables","strictUriEncode","decodeComponent","queryStart","formatter","arrayFormat","parserForArrayFormat","keysSorter","encoderForArrayFormat","val2","parseUrl","singleMatcher","multiMatcher","decodeComponents","encodedURI","replaceMap","customDecodeURIComponent","makeSharingState","addSession","searchParams","formData","viewClasses","isArrayBufferView","normalizeName","normalizeValue","iteratorFor","Headers","append","consumed","bodyUsed","fileReaderReady","readBlobAsArrayBuffer","readAsArrayBuffer","bufferClone","Body","_initBody","_bodyInit","_bodyText","_bodyBlob","FormData","_bodyFormData","URLSearchParams","_bodyArrayBuffer","readBlobAsText","readArrayBufferAsText","Request","upcased","normalizeMethod","referrer","rawHeaders","bodyInit","statusText","redirectStatuses","DOMException","aborted","xhr","XMLHttpRequest","abortXhr","getAllResponseHeaders","responseURL","responseText","ontimeout","onabort","withCredentials","responseType","setRequestHeader","onreadystatechange","Popup_1","EndpointPopup","checkEndpoint","darkBg","LogoWrapper","Logo","Heading","Form","onSubmit","fieldModalStyle","Popup","ContentWrapper","selectAppHistoryItem","fallbackHttpConfig","includeQuery","includeExtensions","accept","throwServerError","statusCode","parseError","linkOptions","fetcher","useGETForQueries","requestOptions","linkConfig","fetchOptions","chosenURI","fallbackURI","contextURI","selectURI","clientAwarenessHeaders","clientAwareness","controller","contextHeaders","contextConfig","fallbackConfig","configs","AbortController","createSignalIfSupported","_controller","queryParams","addQueryParam","serializedVariables","serializedExtensions","preFragment","fragmentStart","queryParamsPrefix","newURI","rewriteURIForGET","bodyText"],"mappings":"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IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,KACR,OAAQ,KACR,OAAQ,KACR,OAAQ,KACR,OAAQ,KAER,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,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","file":"static/js/2.03370bd3.chunk.js","sourcesContent":["/**\n * Returns the first argument it receives.\n */\nexport default function identityFunc(x) {\n return x;\n}","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nimport objectEntries from '../polyfills/objectEntries';\nimport inspect from '../jsutils/inspect';\nimport keyMap from '../jsutils/keyMap';\nimport mapValue from '../jsutils/mapValue';\nimport toObjMap from '../jsutils/toObjMap';\nimport devAssert from '../jsutils/devAssert';\nimport keyValMap from '../jsutils/keyValMap';\nimport instanceOf from '../jsutils/instanceOf';\nimport isObjectLike from '../jsutils/isObjectLike';\nimport identityFunc from '../jsutils/identityFunc';\nimport defineToJSON from '../jsutils/defineToJSON';\nimport defineToStringTag from '../jsutils/defineToStringTag';\nimport { Kind } from '../language/kinds';\nimport { valueFromASTUntyped } from '../utilities/valueFromASTUntyped';\nexport function isType(type) {\n return isScalarType(type) || isObjectType(type) || isInterfaceType(type) || isUnionType(type) || isEnumType(type) || isInputObjectType(type) || isListType(type) || isNonNullType(type);\n}\nexport function assertType(type) {\n if (!isType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL type.\"));\n }\n\n return type;\n}\n/**\n * There are predicates for each kind of GraphQL type.\n */\n// eslint-disable-next-line no-redeclare\n\nexport function isScalarType(type) {\n return instanceOf(type, GraphQLScalarType);\n}\nexport function assertScalarType(type) {\n if (!isScalarType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL Scalar type.\"));\n }\n\n return type;\n} // eslint-disable-next-line no-redeclare\n\nexport function isObjectType(type) {\n return instanceOf(type, GraphQLObjectType);\n}\nexport function assertObjectType(type) {\n if (!isObjectType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL Object type.\"));\n }\n\n return type;\n} // eslint-disable-next-line no-redeclare\n\nexport function isInterfaceType(type) {\n return instanceOf(type, GraphQLInterfaceType);\n}\nexport function assertInterfaceType(type) {\n if (!isInterfaceType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL Interface type.\"));\n }\n\n return type;\n} // eslint-disable-next-line no-redeclare\n\nexport function isUnionType(type) {\n return instanceOf(type, GraphQLUnionType);\n}\nexport function assertUnionType(type) {\n if (!isUnionType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL Union type.\"));\n }\n\n return type;\n} // eslint-disable-next-line no-redeclare\n\nexport function isEnumType(type) {\n return instanceOf(type, GraphQLEnumType);\n}\nexport function assertEnumType(type) {\n if (!isEnumType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL Enum type.\"));\n }\n\n return type;\n} // eslint-disable-next-line no-redeclare\n\nexport function isInputObjectType(type) {\n return instanceOf(type, GraphQLInputObjectType);\n}\nexport function assertInputObjectType(type) {\n if (!isInputObjectType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL Input Object type.\"));\n }\n\n return type;\n} // eslint-disable-next-line no-redeclare\n\nexport function isListType(type) {\n return instanceOf(type, GraphQLList);\n}\nexport function assertListType(type) {\n if (!isListType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL List type.\"));\n }\n\n return type;\n} // eslint-disable-next-line no-redeclare\n\nexport function isNonNullType(type) {\n return instanceOf(type, GraphQLNonNull);\n}\nexport function assertNonNullType(type) {\n if (!isNonNullType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL Non-Null type.\"));\n }\n\n return type;\n}\n/**\n * These types may be used as input types for arguments and directives.\n */\n\nexport function isInputType(type) {\n return isScalarType(type) || isEnumType(type) || isInputObjectType(type) || isWrappingType(type) && isInputType(type.ofType);\n}\nexport function assertInputType(type) {\n if (!isInputType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL input type.\"));\n }\n\n return type;\n}\n/**\n * These types may be used as output types as the result of fields.\n */\n\nexport function isOutputType(type) {\n return isScalarType(type) || isObjectType(type) || isInterfaceType(type) || isUnionType(type) || isEnumType(type) || isWrappingType(type) && isOutputType(type.ofType);\n}\nexport function assertOutputType(type) {\n if (!isOutputType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL output type.\"));\n }\n\n return type;\n}\n/**\n * These types may describe types which may be leaf values.\n */\n\nexport function isLeafType(type) {\n return isScalarType(type) || isEnumType(type);\n}\nexport function assertLeafType(type) {\n if (!isLeafType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL leaf type.\"));\n }\n\n return type;\n}\n/**\n * These types may describe the parent context of a selection set.\n */\n\nexport function isCompositeType(type) {\n return isObjectType(type) || isInterfaceType(type) || isUnionType(type);\n}\nexport function assertCompositeType(type) {\n if (!isCompositeType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL composite type.\"));\n }\n\n return type;\n}\n/**\n * These types may describe the parent context of a selection set.\n */\n\nexport function isAbstractType(type) {\n return isInterfaceType(type) || isUnionType(type);\n}\nexport function assertAbstractType(type) {\n if (!isAbstractType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL abstract type.\"));\n }\n\n return type;\n}\n/**\n * List Type Wrapper\n *\n * A list is a wrapping type which points to another type.\n * Lists are often created within the context of defining the fields of\n * an object type.\n *\n * Example:\n *\n * const PersonType = new GraphQLObjectType({\n * name: 'Person',\n * fields: () => ({\n * parents: { type: GraphQLList(PersonType) },\n * children: { type: GraphQLList(PersonType) },\n * })\n * })\n *\n */\n// eslint-disable-next-line no-redeclare\n\nexport function GraphQLList(ofType) {\n if (this instanceof GraphQLList) {\n this.ofType = assertType(ofType);\n } else {\n return new GraphQLList(ofType);\n }\n} // Need to cast through any to alter the prototype.\n\nGraphQLList.prototype.toString = function toString() {\n return '[' + String(this.ofType) + ']';\n}; // Conditionally apply `[Symbol.toStringTag]` if `Symbol`s are supported\n\n\ndefineToStringTag(GraphQLList);\ndefineToJSON(GraphQLList);\n/**\n * Non-Null Type Wrapper\n *\n * A non-null is a wrapping type which points to another type.\n * Non-null types enforce that their values are never null and can ensure\n * an error is raised if this ever occurs during a request. It is useful for\n * fields which you can make a strong guarantee on non-nullability, for example\n * usually the id field of a database row will never be null.\n *\n * Example:\n *\n * const RowType = new GraphQLObjectType({\n * name: 'Row',\n * fields: () => ({\n * id: { type: GraphQLNonNull(GraphQLString) },\n * })\n * })\n *\n * Note: the enforcement of non-nullability occurs within the executor.\n */\n// eslint-disable-next-line no-redeclare\n\nexport function GraphQLNonNull(ofType) {\n if (this instanceof GraphQLNonNull) {\n this.ofType = assertNullableType(ofType);\n } else {\n return new GraphQLNonNull(ofType);\n }\n} // Need to cast through any to alter the prototype.\n\nGraphQLNonNull.prototype.toString = function toString() {\n return String(this.ofType) + '!';\n}; // Conditionally apply `[Symbol.toStringTag]` if `Symbol`s are supported\n\n\ndefineToStringTag(GraphQLNonNull);\ndefineToJSON(GraphQLNonNull);\n/**\n * These types wrap and modify other types\n */\n\nexport function isWrappingType(type) {\n return isListType(type) || isNonNullType(type);\n}\nexport function assertWrappingType(type) {\n if (!isWrappingType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL wrapping type.\"));\n }\n\n return type;\n}\n/**\n * These types can all accept null as a value.\n */\n\nexport function isNullableType(type) {\n return isType(type) && !isNonNullType(type);\n}\nexport function assertNullableType(type) {\n if (!isNullableType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL nullable type.\"));\n }\n\n return type;\n}\n/* eslint-disable no-redeclare */\n\nexport function getNullableType(type) {\n /* eslint-enable no-redeclare */\n if (type) {\n return isNonNullType(type) ? type.ofType : type;\n }\n}\n/**\n * These named types do not include modifiers like List or NonNull.\n */\n\nexport function isNamedType(type) {\n return isScalarType(type) || isObjectType(type) || isInterfaceType(type) || isUnionType(type) || isEnumType(type) || isInputObjectType(type);\n}\nexport function assertNamedType(type) {\n if (!isNamedType(type)) {\n throw new Error(\"Expected \".concat(inspect(type), \" to be a GraphQL named type.\"));\n }\n\n return type;\n}\n/* eslint-disable no-redeclare */\n\nexport function getNamedType(type) {\n /* eslint-enable no-redeclare */\n if (type) {\n var unwrappedType = type;\n\n while (isWrappingType(unwrappedType)) {\n unwrappedType = unwrappedType.ofType;\n }\n\n return unwrappedType;\n }\n}\n/**\n * Used while defining GraphQL types to allow for circular references in\n * otherwise immutable type definitions.\n */\n\nfunction resolveThunk(thunk) {\n // $FlowFixMe(>=0.90.0)\n return typeof thunk === 'function' ? thunk() : thunk;\n}\n\nfunction undefineIfEmpty(arr) {\n return arr && arr.length > 0 ? arr : undefined;\n}\n/**\n * Scalar Type Definition\n *\n * The leaf values of any request and input values to arguments are\n * Scalars (or Enums) and are defined with a name and a series of functions\n * used to parse input from ast or variables and to ensure validity.\n *\n * If a type's serialize function does not return a value (i.e. it returns\n * `undefined`) then an error will be raised and a `null` value will be returned\n * in the response. If the serialize function returns `null`, then no error will\n * be included in the response.\n *\n * Example:\n *\n * const OddType = new GraphQLScalarType({\n * name: 'Odd',\n * serialize(value) {\n * if (value % 2 === 1) {\n * return value;\n * }\n * }\n * });\n *\n */\n\n\nexport var GraphQLScalarType =\n/*#__PURE__*/\nfunction () {\n function GraphQLScalarType(config) {\n var parseValue = config.parseValue || identityFunc;\n this.name = config.name;\n this.description = config.description;\n this.serialize = config.serialize || identityFunc;\n this.parseValue = parseValue;\n\n this.parseLiteral = config.parseLiteral || function (node) {\n return parseValue(valueFromASTUntyped(node));\n };\n\n this.extensions = config.extensions && toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = undefineIfEmpty(config.extensionASTNodes);\n typeof config.name === 'string' || devAssert(0, 'Must provide name.');\n config.serialize == null || typeof config.serialize === 'function' || devAssert(0, \"\".concat(this.name, \" must provide \\\"serialize\\\" function. If this custom Scalar is also used as an input type, ensure \\\"parseValue\\\" and \\\"parseLiteral\\\" functions are also provided.\"));\n\n if (config.parseLiteral) {\n typeof config.parseValue === 'function' && typeof config.parseLiteral === 'function' || devAssert(0, \"\".concat(this.name, \" must provide both \\\"parseValue\\\" and \\\"parseLiteral\\\" functions.\"));\n }\n }\n\n var _proto = GraphQLScalarType.prototype;\n\n _proto.toConfig = function toConfig() {\n return {\n name: this.name,\n description: this.description,\n serialize: this.serialize,\n parseValue: this.parseValue,\n parseLiteral: this.parseLiteral,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes || []\n };\n };\n\n _proto.toString = function toString() {\n return this.name;\n };\n\n return GraphQLScalarType;\n}(); // Conditionally apply `[Symbol.toStringTag]` if `Symbol`s are supported\n\ndefineToStringTag(GraphQLScalarType);\ndefineToJSON(GraphQLScalarType);\n/**\n * Object Type Definition\n *\n * Almost all of the GraphQL types you define will be object types. Object types\n * have a name, but most importantly describe their fields.\n *\n * Example:\n *\n * const AddressType = new GraphQLObjectType({\n * name: 'Address',\n * fields: {\n * street: { type: GraphQLString },\n * number: { type: GraphQLInt },\n * formatted: {\n * type: GraphQLString,\n * resolve(obj) {\n * return obj.number + ' ' + obj.street\n * }\n * }\n * }\n * });\n *\n * When two types need to refer to each other, or a type needs to refer to\n * itself in a field, you can use a function expression (aka a closure or a\n * thunk) to supply the fields lazily.\n *\n * Example:\n *\n * const PersonType = new GraphQLObjectType({\n * name: 'Person',\n * fields: () => ({\n * name: { type: GraphQLString },\n * bestFriend: { type: PersonType },\n * })\n * });\n *\n */\n\nexport var GraphQLObjectType =\n/*#__PURE__*/\nfunction () {\n function GraphQLObjectType(config) {\n this.name = config.name;\n this.description = config.description;\n this.isTypeOf = config.isTypeOf;\n this.extensions = config.extensions && toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = undefineIfEmpty(config.extensionASTNodes);\n this._fields = defineFieldMap.bind(undefined, config);\n this._interfaces = defineInterfaces.bind(undefined, config);\n typeof config.name === 'string' || devAssert(0, 'Must provide name.');\n config.isTypeOf == null || typeof config.isTypeOf === 'function' || devAssert(0, \"\".concat(this.name, \" must provide \\\"isTypeOf\\\" as a function, \") + \"but got: \".concat(inspect(config.isTypeOf), \".\"));\n }\n\n var _proto2 = GraphQLObjectType.prototype;\n\n _proto2.getFields = function getFields() {\n if (typeof this._fields === 'function') {\n this._fields = this._fields();\n }\n\n return this._fields;\n };\n\n _proto2.getInterfaces = function getInterfaces() {\n if (typeof this._interfaces === 'function') {\n this._interfaces = this._interfaces();\n }\n\n return this._interfaces;\n };\n\n _proto2.toConfig = function toConfig() {\n return {\n name: this.name,\n description: this.description,\n interfaces: this.getInterfaces(),\n fields: fieldsToFieldsConfig(this.getFields()),\n isTypeOf: this.isTypeOf,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes || []\n };\n };\n\n _proto2.toString = function toString() {\n return this.name;\n };\n\n return GraphQLObjectType;\n}(); // Conditionally apply `[Symbol.toStringTag]` if `Symbol`s are supported\n\ndefineToStringTag(GraphQLObjectType);\ndefineToJSON(GraphQLObjectType);\n\nfunction defineInterfaces(config) {\n var interfaces = resolveThunk(config.interfaces) || [];\n Array.isArray(interfaces) || devAssert(0, \"\".concat(config.name, \" interfaces must be an Array or a function which returns an Array.\"));\n return interfaces;\n}\n\nfunction defineFieldMap(config) {\n var fieldMap = resolveThunk(config.fields) || {};\n isPlainObj(fieldMap) || devAssert(0, \"\".concat(config.name, \" fields must be an object with field names as keys or a function which returns such an object.\"));\n return mapValue(fieldMap, function (fieldConfig, fieldName) {\n isPlainObj(fieldConfig) || devAssert(0, \"\".concat(config.name, \".\").concat(fieldName, \" field config must be an object\"));\n !('isDeprecated' in fieldConfig) || devAssert(0, \"\".concat(config.name, \".\").concat(fieldName, \" should provide \\\"deprecationReason\\\" instead of \\\"isDeprecated\\\".\"));\n fieldConfig.resolve == null || typeof fieldConfig.resolve === 'function' || devAssert(0, \"\".concat(config.name, \".\").concat(fieldName, \" field resolver must be a function if \") + \"provided, but got: \".concat(inspect(fieldConfig.resolve), \".\"));\n var argsConfig = fieldConfig.args || {};\n isPlainObj(argsConfig) || devAssert(0, \"\".concat(config.name, \".\").concat(fieldName, \" args must be an object with argument names as keys.\"));\n var args = objectEntries(argsConfig).map(function (_ref) {\n var argName = _ref[0],\n arg = _ref[1];\n return {\n name: argName,\n description: arg.description === undefined ? null : arg.description,\n type: arg.type,\n defaultValue: arg.defaultValue,\n extensions: arg.extensions && toObjMap(arg.extensions),\n astNode: arg.astNode\n };\n });\n return _objectSpread({}, fieldConfig, {\n name: fieldName,\n description: fieldConfig.description,\n type: fieldConfig.type,\n args: args,\n resolve: fieldConfig.resolve,\n subscribe: fieldConfig.subscribe,\n isDeprecated: Boolean(fieldConfig.deprecationReason),\n deprecationReason: fieldConfig.deprecationReason,\n extensions: fieldConfig.extensions && toObjMap(fieldConfig.extensions),\n astNode: fieldConfig.astNode\n });\n });\n}\n\nfunction isPlainObj(obj) {\n return isObjectLike(obj) && !Array.isArray(obj);\n}\n\nfunction fieldsToFieldsConfig(fields) {\n return mapValue(fields, function (field) {\n return {\n description: field.description,\n type: field.type,\n args: argsToArgsConfig(field.args),\n resolve: field.resolve,\n subscribe: field.subscribe,\n deprecationReason: field.deprecationReason,\n extensions: field.extensions,\n astNode: field.astNode\n };\n });\n}\n\nexport function argsToArgsConfig(args) {\n return keyValMap(args, function (arg) {\n return arg.name;\n }, function (arg) {\n return {\n description: arg.description,\n type: arg.type,\n defaultValue: arg.defaultValue,\n extensions: arg.extensions,\n astNode: arg.astNode\n };\n });\n}\nexport function isRequiredArgument(arg) {\n return isNonNullType(arg.type) && arg.defaultValue === undefined;\n}\n/**\n * Interface Type Definition\n *\n * When a field can return one of a heterogeneous set of types, a Interface type\n * is used to describe what types are possible, what fields are in common across\n * all types, as well as a function to determine which type is actually used\n * when the field is resolved.\n *\n * Example:\n *\n * const EntityType = new GraphQLInterfaceType({\n * name: 'Entity',\n * fields: {\n * name: { type: GraphQLString }\n * }\n * });\n *\n */\n\nexport var GraphQLInterfaceType =\n/*#__PURE__*/\nfunction () {\n function GraphQLInterfaceType(config) {\n this.name = config.name;\n this.description = config.description;\n this.resolveType = config.resolveType;\n this.extensions = config.extensions && toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = undefineIfEmpty(config.extensionASTNodes);\n this._fields = defineFieldMap.bind(undefined, config);\n typeof config.name === 'string' || devAssert(0, 'Must provide name.');\n config.resolveType == null || typeof config.resolveType === 'function' || devAssert(0, \"\".concat(this.name, \" must provide \\\"resolveType\\\" as a function, \") + \"but got: \".concat(inspect(config.resolveType), \".\"));\n }\n\n var _proto3 = GraphQLInterfaceType.prototype;\n\n _proto3.getFields = function getFields() {\n if (typeof this._fields === 'function') {\n this._fields = this._fields();\n }\n\n return this._fields;\n };\n\n _proto3.toConfig = function toConfig() {\n return {\n name: this.name,\n description: this.description,\n fields: fieldsToFieldsConfig(this.getFields()),\n resolveType: this.resolveType,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes || []\n };\n };\n\n _proto3.toString = function toString() {\n return this.name;\n };\n\n return GraphQLInterfaceType;\n}(); // Conditionally apply `[Symbol.toStringTag]` if `Symbol`s are supported\n\ndefineToStringTag(GraphQLInterfaceType);\ndefineToJSON(GraphQLInterfaceType);\n/**\n * Union Type Definition\n *\n * When a field can return one of a heterogeneous set of types, a Union type\n * is used to describe what types are possible as well as providing a function\n * to determine which type is actually used when the field is resolved.\n *\n * Example:\n *\n * const PetType = new GraphQLUnionType({\n * name: 'Pet',\n * types: [ DogType, CatType ],\n * resolveType(value) {\n * if (value instanceof Dog) {\n * return DogType;\n * }\n * if (value instanceof Cat) {\n * return CatType;\n * }\n * }\n * });\n *\n */\n\nexport var GraphQLUnionType =\n/*#__PURE__*/\nfunction () {\n function GraphQLUnionType(config) {\n this.name = config.name;\n this.description = config.description;\n this.resolveType = config.resolveType;\n this.extensions = config.extensions && toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = undefineIfEmpty(config.extensionASTNodes);\n this._types = defineTypes.bind(undefined, config);\n typeof config.name === 'string' || devAssert(0, 'Must provide name.');\n config.resolveType == null || typeof config.resolveType === 'function' || devAssert(0, \"\".concat(this.name, \" must provide \\\"resolveType\\\" as a function, \") + \"but got: \".concat(inspect(config.resolveType), \".\"));\n }\n\n var _proto4 = GraphQLUnionType.prototype;\n\n _proto4.getTypes = function getTypes() {\n if (typeof this._types === 'function') {\n this._types = this._types();\n }\n\n return this._types;\n };\n\n _proto4.toConfig = function toConfig() {\n return {\n name: this.name,\n description: this.description,\n types: this.getTypes(),\n resolveType: this.resolveType,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes || []\n };\n };\n\n _proto4.toString = function toString() {\n return this.name;\n };\n\n return GraphQLUnionType;\n}(); // Conditionally apply `[Symbol.toStringTag]` if `Symbol`s are supported\n\ndefineToStringTag(GraphQLUnionType);\ndefineToJSON(GraphQLUnionType);\n\nfunction defineTypes(config) {\n var types = resolveThunk(config.types) || [];\n Array.isArray(types) || devAssert(0, \"Must provide Array of types or a function which returns such an array for Union \".concat(config.name, \".\"));\n return types;\n}\n/**\n * Enum Type Definition\n *\n * Some leaf values of requests and input values are Enums. GraphQL serializes\n * Enum values as strings, however internally Enums can be represented by any\n * kind of type, often integers.\n *\n * Example:\n *\n * const RGBType = new GraphQLEnumType({\n * name: 'RGB',\n * values: {\n * RED: { value: 0 },\n * GREEN: { value: 1 },\n * BLUE: { value: 2 }\n * }\n * });\n *\n * Note: If a value is not provided in a definition, the name of the enum value\n * will be used as its internal value.\n */\n\n\nexport var GraphQLEnumType\n/* */\n=\n/*#__PURE__*/\nfunction () {\n function GraphQLEnumType(config) {\n this.name = config.name;\n this.description = config.description;\n this.extensions = config.extensions && toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = undefineIfEmpty(config.extensionASTNodes);\n this._values = defineEnumValues(this.name, config.values);\n this._valueLookup = new Map(this._values.map(function (enumValue) {\n return [enumValue.value, enumValue];\n }));\n this._nameLookup = keyMap(this._values, function (value) {\n return value.name;\n });\n typeof config.name === 'string' || devAssert(0, 'Must provide name.');\n }\n\n var _proto5 = GraphQLEnumType.prototype;\n\n _proto5.getValues = function getValues() {\n return this._values;\n };\n\n _proto5.getValue = function getValue(name) {\n return this._nameLookup[name];\n };\n\n _proto5.serialize = function serialize(value) {\n var enumValue = this._valueLookup.get(value);\n\n if (enumValue) {\n return enumValue.name;\n }\n };\n\n _proto5.parseValue = function parseValue(value)\n /* T */\n {\n if (typeof value === 'string') {\n var enumValue = this.getValue(value);\n\n if (enumValue) {\n return enumValue.value;\n }\n }\n };\n\n _proto5.parseLiteral = function parseLiteral(valueNode, _variables)\n /* T */\n {\n // Note: variables will be resolved to a value before calling this function.\n if (valueNode.kind === Kind.ENUM) {\n var enumValue = this.getValue(valueNode.value);\n\n if (enumValue) {\n return enumValue.value;\n }\n }\n };\n\n _proto5.toConfig = function toConfig() {\n var values = keyValMap(this.getValues(), function (value) {\n return value.name;\n }, function (value) {\n return {\n description: value.description,\n value: value.value,\n deprecationReason: value.deprecationReason,\n extensions: value.extensions,\n astNode: value.astNode\n };\n });\n return {\n name: this.name,\n description: this.description,\n values: values,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes || []\n };\n };\n\n _proto5.toString = function toString() {\n return this.name;\n };\n\n return GraphQLEnumType;\n}(); // Conditionally apply `[Symbol.toStringTag]` if `Symbol`s are supported\n\ndefineToStringTag(GraphQLEnumType);\ndefineToJSON(GraphQLEnumType);\n\nfunction defineEnumValues(typeName, valueMap) {\n isPlainObj(valueMap) || devAssert(0, \"\".concat(typeName, \" values must be an object with value names as keys.\"));\n return objectEntries(valueMap).map(function (_ref2) {\n var valueName = _ref2[0],\n value = _ref2[1];\n isPlainObj(value) || devAssert(0, \"\".concat(typeName, \".\").concat(valueName, \" must refer to an object with a \\\"value\\\" key \") + \"representing an internal value but got: \".concat(inspect(value), \".\"));\n !('isDeprecated' in value) || devAssert(0, \"\".concat(typeName, \".\").concat(valueName, \" should provide \\\"deprecationReason\\\" instead of \\\"isDeprecated\\\".\"));\n return {\n name: valueName,\n description: value.description,\n value: 'value' in value ? value.value : valueName,\n isDeprecated: Boolean(value.deprecationReason),\n deprecationReason: value.deprecationReason,\n extensions: value.extensions && toObjMap(value.extensions),\n astNode: value.astNode\n };\n });\n}\n/**\n * Input Object Type Definition\n *\n * An input object defines a structured collection of fields which may be\n * supplied to a field argument.\n *\n * Using `NonNull` will ensure that a value must be provided by the query\n *\n * Example:\n *\n * const GeoPoint = new GraphQLInputObjectType({\n * name: 'GeoPoint',\n * fields: {\n * lat: { type: GraphQLNonNull(GraphQLFloat) },\n * lon: { type: GraphQLNonNull(GraphQLFloat) },\n * alt: { type: GraphQLFloat, defaultValue: 0 },\n * }\n * });\n *\n */\n\n\nexport var GraphQLInputObjectType =\n/*#__PURE__*/\nfunction () {\n function GraphQLInputObjectType(config) {\n this.name = config.name;\n this.description = config.description;\n this.extensions = config.extensions && toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = undefineIfEmpty(config.extensionASTNodes);\n this._fields = defineInputFieldMap.bind(undefined, config);\n typeof config.name === 'string' || devAssert(0, 'Must provide name.');\n }\n\n var _proto6 = GraphQLInputObjectType.prototype;\n\n _proto6.getFields = function getFields() {\n if (typeof this._fields === 'function') {\n this._fields = this._fields();\n }\n\n return this._fields;\n };\n\n _proto6.toConfig = function toConfig() {\n var fields = mapValue(this.getFields(), function (field) {\n return {\n description: field.description,\n type: field.type,\n defaultValue: field.defaultValue,\n extensions: field.extensions,\n astNode: field.astNode\n };\n });\n return {\n name: this.name,\n description: this.description,\n fields: fields,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes || []\n };\n };\n\n _proto6.toString = function toString() {\n return this.name;\n };\n\n return GraphQLInputObjectType;\n}(); // Conditionally apply `[Symbol.toStringTag]` if `Symbol`s are supported\n\ndefineToStringTag(GraphQLInputObjectType);\ndefineToJSON(GraphQLInputObjectType);\n\nfunction defineInputFieldMap(config) {\n var fieldMap = resolveThunk(config.fields) || {};\n isPlainObj(fieldMap) || devAssert(0, \"\".concat(config.name, \" fields must be an object with field names as keys or a function which returns such an object.\"));\n return mapValue(fieldMap, function (fieldConfig, fieldName) {\n !('resolve' in fieldConfig) || devAssert(0, \"\".concat(config.name, \".\").concat(fieldName, \" field has a resolve property, but Input Types cannot define resolvers.\"));\n return _objectSpread({}, fieldConfig, {\n name: fieldName,\n description: fieldConfig.description,\n type: fieldConfig.type,\n defaultValue: fieldConfig.defaultValue,\n extensions: fieldConfig.extensions && toObjMap(fieldConfig.extensions),\n astNode: fieldConfig.astNode\n });\n });\n}\n\nexport function isRequiredInputField(field) {\n return isNonNullType(field.type) && field.defaultValue === undefined;\n}","/**\n * The set of allowed kind values for AST nodes.\n */\nexport var Kind = Object.freeze({\n // Name\n NAME: 'Name',\n // Document\n DOCUMENT: 'Document',\n OPERATION_DEFINITION: 'OperationDefinition',\n VARIABLE_DEFINITION: 'VariableDefinition',\n SELECTION_SET: 'SelectionSet',\n FIELD: 'Field',\n ARGUMENT: 'Argument',\n // Fragments\n FRAGMENT_SPREAD: 'FragmentSpread',\n INLINE_FRAGMENT: 'InlineFragment',\n FRAGMENT_DEFINITION: 'FragmentDefinition',\n // Values\n VARIABLE: 'Variable',\n INT: 'IntValue',\n FLOAT: 'FloatValue',\n STRING: 'StringValue',\n BOOLEAN: 'BooleanValue',\n NULL: 'NullValue',\n ENUM: 'EnumValue',\n LIST: 'ListValue',\n OBJECT: 'ObjectValue',\n OBJECT_FIELD: 'ObjectField',\n // Directives\n DIRECTIVE: 'Directive',\n // Types\n NAMED_TYPE: 'NamedType',\n LIST_TYPE: 'ListType',\n NON_NULL_TYPE: 'NonNullType',\n // Type System Definitions\n SCHEMA_DEFINITION: 'SchemaDefinition',\n OPERATION_TYPE_DEFINITION: 'OperationTypeDefinition',\n // Type Definitions\n SCALAR_TYPE_DEFINITION: 'ScalarTypeDefinition',\n OBJECT_TYPE_DEFINITION: 'ObjectTypeDefinition',\n FIELD_DEFINITION: 'FieldDefinition',\n INPUT_VALUE_DEFINITION: 'InputValueDefinition',\n INTERFACE_TYPE_DEFINITION: 'InterfaceTypeDefinition',\n UNION_TYPE_DEFINITION: 'UnionTypeDefinition',\n ENUM_TYPE_DEFINITION: 'EnumTypeDefinition',\n ENUM_VALUE_DEFINITION: 'EnumValueDefinition',\n INPUT_OBJECT_TYPE_DEFINITION: 'InputObjectTypeDefinition',\n // Directive Definitions\n DIRECTIVE_DEFINITION: 'DirectiveDefinition',\n // Type System Extensions\n SCHEMA_EXTENSION: 'SchemaExtension',\n // Type Extensions\n SCALAR_TYPE_EXTENSION: 'ScalarTypeExtension',\n OBJECT_TYPE_EXTENSION: 'ObjectTypeExtension',\n INTERFACE_TYPE_EXTENSION: 'InterfaceTypeExtension',\n UNION_TYPE_EXTENSION: 'UnionTypeExtension',\n ENUM_TYPE_EXTENSION: 'EnumTypeExtension',\n INPUT_OBJECT_TYPE_EXTENSION: 'InputObjectTypeExtension'\n});\n/**\n * The enum type representing the possible kind values of AST nodes.\n */","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nexport var sym = function sym(id) {\n return '@@redux-saga/' + id;\n};\nexport var TASK =\n/*#__PURE__*/\nsym('TASK');\nexport var HELPER =\n/*#__PURE__*/\nsym('HELPER');\nexport var MATCH =\n/*#__PURE__*/\nsym('MATCH');\nexport var CANCEL =\n/*#__PURE__*/\nsym('CANCEL_PROMISE');\nexport var SAGA_ACTION =\n/*#__PURE__*/\nsym('SAGA_ACTION');\nexport var SELF_CANCELLATION =\n/*#__PURE__*/\nsym('SELF_CANCELLATION');\nexport var konst = function konst(v) {\n return function () {\n return v;\n };\n};\nexport var kTrue =\n/*#__PURE__*/\nkonst(true);\nexport var kFalse =\n/*#__PURE__*/\nkonst(false);\nexport var noop = function noop() {};\nexport var ident = function ident(v) {\n return v;\n};\nexport function check(value, predicate, error) {\n if (!predicate(value)) {\n log('error', 'uncaught at check', error);\n throw new Error(error);\n }\n}\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function hasOwn(object, property) {\n return is.notUndef(object) && hasOwnProperty.call(object, property);\n}\nexport var is = {\n undef: function undef(v) {\n return v === null || v === undefined;\n },\n notUndef: function notUndef(v) {\n return v !== null && v !== undefined;\n },\n func: function func(f) {\n return typeof f === 'function';\n },\n number: function number(n) {\n return typeof n === 'number';\n },\n string: function string(s) {\n return typeof s === 'string';\n },\n array: Array.isArray,\n object: function object(obj) {\n return obj && !is.array(obj) && (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object';\n },\n promise: function promise(p) {\n return p && is.func(p.then);\n },\n iterator: function iterator(it) {\n return it && is.func(it.next) && is.func(it.throw);\n },\n iterable: function iterable(it) {\n return it && is.func(Symbol) ? is.func(it[Symbol.iterator]) : is.array(it);\n },\n task: function task(t) {\n return t && t[TASK];\n },\n observable: function observable(ob) {\n return ob && is.func(ob.subscribe);\n },\n buffer: function buffer(buf) {\n return buf && is.func(buf.isEmpty) && is.func(buf.take) && is.func(buf.put);\n },\n pattern: function pattern(pat) {\n return pat && (is.string(pat) || (typeof pat === 'undefined' ? 'undefined' : _typeof(pat)) === 'symbol' || is.func(pat) || is.array(pat));\n },\n channel: function channel(ch) {\n return ch && is.func(ch.take) && is.func(ch.close);\n },\n helper: function helper(it) {\n return it && it[HELPER];\n },\n stringableFunc: function stringableFunc(f) {\n return is.func(f) && hasOwn(f, 'toString');\n }\n};\nexport var object = {\n assign: function assign(target, source) {\n for (var i in source) {\n if (hasOwn(source, i)) {\n target[i] = source[i];\n }\n }\n }\n};\nexport function remove(array, item) {\n var index = array.indexOf(item);\n\n if (index >= 0) {\n array.splice(index, 1);\n }\n}\nexport var array = {\n from: function from(obj) {\n var arr = Array(obj.length);\n\n for (var i in obj) {\n if (hasOwn(obj, i)) {\n arr[i] = obj[i];\n }\n }\n\n return arr;\n }\n};\nexport function deferred() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var def = _extends({}, props);\n\n var promise = new Promise(function (resolve, reject) {\n def.resolve = resolve;\n def.reject = reject;\n });\n def.promise = promise;\n return def;\n}\nexport function arrayOfDeffered(length) {\n var arr = [];\n\n for (var i = 0; i < length; i++) {\n arr.push(deferred());\n }\n\n return arr;\n}\nexport function delay(ms) {\n var val = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var timeoutId = void 0;\n var promise = new Promise(function (resolve) {\n timeoutId = setTimeout(function () {\n return resolve(val);\n }, ms);\n });\n\n promise[CANCEL] = function () {\n return clearTimeout(timeoutId);\n };\n\n return promise;\n}\nexport function createMockTask() {\n var _ref;\n\n var running = true;\n\n var _result = void 0,\n _error = void 0;\n\n return _ref = {}, _ref[TASK] = true, _ref.isRunning = function isRunning() {\n return running;\n }, _ref.result = function result() {\n return _result;\n }, _ref.error = function error() {\n return _error;\n }, _ref.setRunning = function setRunning(b) {\n return running = b;\n }, _ref.setResult = function setResult(r) {\n return _result = r;\n }, _ref.setError = function setError(e) {\n return _error = e;\n }, _ref;\n}\nexport function autoInc() {\n var seed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n return function () {\n return ++seed;\n };\n}\nexport var uid =\n/*#__PURE__*/\nautoInc();\n\nvar kThrow = function kThrow(err) {\n throw err;\n};\n\nvar kReturn = function kReturn(value) {\n return {\n value: value,\n done: true\n };\n};\n\nexport function makeIterator(next) {\n var thro = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : kThrow;\n var name = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var isHelper = arguments[3];\n var iterator = {\n name: name,\n next: next,\n throw: thro,\n return: kReturn\n };\n\n if (isHelper) {\n iterator[HELPER] = true;\n }\n\n if (typeof Symbol !== 'undefined') {\n iterator[Symbol.iterator] = function () {\n return iterator;\n };\n }\n\n return iterator;\n}\n/**\n Print error in a useful way whether in a browser environment\n (with expandable error stack traces), or in a node.js environment\n (text-only log output)\n **/\n\nexport function log(level, message) {\n var error = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n /*eslint-disable no-console*/\n\n if (typeof window === 'undefined') {\n console.log('redux-saga ' + level + ': ' + message + '\\n' + (error && error.stack || error));\n } else {\n console[level](message, error);\n }\n}\nexport function deprecate(fn, deprecationWarning) {\n return function () {\n if (process.env.NODE_ENV === 'development') log('warn', deprecationWarning);\n return fn.apply(undefined, arguments);\n };\n}\nexport var updateIncentive = function updateIncentive(deprecated, preferred) {\n return deprecated + ' has been deprecated in favor of ' + preferred + ', please update your code';\n};\nexport var internalErr = function internalErr(err) {\n return new Error('\\n redux-saga: Error checking hooks detected an inconsistent state. This is likely a bug\\n in redux-saga code and not yours. Thanks for reporting this in the project\\'s github repo.\\n Error: ' + err + '\\n');\n};\nexport var createSetContextWarning = function createSetContextWarning(ctx, props) {\n return (ctx ? ctx + '.' : '') + 'setContext(props): argument ' + props + ' is not a plain object';\n};\nexport var wrapSagaDispatch = function wrapSagaDispatch(dispatch) {\n return function (action) {\n return dispatch(Object.defineProperty(action, SAGA_ACTION, {\n value: true\n }));\n };\n};\nexport var cloneableGenerator = function cloneableGenerator(generatorFunc) {\n return function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var history = [];\n var gen = generatorFunc.apply(undefined, args);\n return {\n next: function next(arg) {\n history.push(arg);\n return gen.next(arg);\n },\n clone: function clone() {\n var clonedGen = cloneableGenerator(generatorFunc).apply(undefined, args);\n history.forEach(function (arg) {\n return clonedGen.next(arg);\n });\n return clonedGen;\n },\n return: function _return(value) {\n return gen.return(value);\n },\n throw: function _throw(exception) {\n return gen.throw(exception);\n }\n };\n };\n};","function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nimport nodejsCustomInspectSymbol from './nodejsCustomInspectSymbol';\nvar MAX_ARRAY_LENGTH = 10;\nvar MAX_RECURSIVE_DEPTH = 2;\n/**\n * Used to print values in error messages.\n */\n\nexport default function inspect(value) {\n return formatValue(value, []);\n}\n\nfunction formatValue(value, seenValues) {\n switch (_typeof(value)) {\n case 'string':\n return JSON.stringify(value);\n\n case 'function':\n return value.name ? \"[function \".concat(value.name, \"]\") : '[function]';\n\n case 'object':\n if (value === null) {\n return 'null';\n }\n\n return formatObjectValue(value, seenValues);\n\n default:\n return String(value);\n }\n}\n\nfunction formatObjectValue(value, previouslySeenValues) {\n if (previouslySeenValues.indexOf(value) !== -1) {\n return '[Circular]';\n }\n\n var seenValues = [].concat(previouslySeenValues, [value]);\n var customInspectFn = getCustomFn(value);\n\n if (customInspectFn !== undefined) {\n // $FlowFixMe(>=0.90.0)\n var customValue = customInspectFn.call(value); // check for infinite recursion\n\n if (customValue !== value) {\n return typeof customValue === 'string' ? customValue : formatValue(customValue, seenValues);\n }\n } else if (Array.isArray(value)) {\n return formatArray(value, seenValues);\n }\n\n return formatObject(value, seenValues);\n}\n\nfunction formatObject(object, seenValues) {\n var keys = Object.keys(object);\n\n if (keys.length === 0) {\n return '{}';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[' + getObjectTag(object) + ']';\n }\n\n var properties = keys.map(function (key) {\n var value = formatValue(object[key], seenValues);\n return key + ': ' + value;\n });\n return '{ ' + properties.join(', ') + ' }';\n}\n\nfunction formatArray(array, seenValues) {\n if (array.length === 0) {\n return '[]';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[Array]';\n }\n\n var len = Math.min(MAX_ARRAY_LENGTH, array.length);\n var remaining = array.length - len;\n var items = [];\n\n for (var i = 0; i < len; ++i) {\n items.push(formatValue(array[i], seenValues));\n }\n\n if (remaining === 1) {\n items.push('... 1 more item');\n } else if (remaining > 1) {\n items.push(\"... \".concat(remaining, \" more items\"));\n }\n\n return '[' + items.join(', ') + ']';\n}\n\nfunction getCustomFn(object) {\n var customInspectFn = object[String(nodejsCustomInspectSymbol)];\n\n if (typeof customInspectFn === 'function') {\n return customInspectFn;\n }\n\n if (typeof object.inspect === 'function') {\n return object.inspect;\n }\n}\n\nfunction getObjectTag(object) {\n var tag = Object.prototype.toString.call(object).replace(/^\\[object /, '').replace(/]$/, '');\n\n if (tag === 'Object' && typeof object.constructor === 'function') {\n var name = object.constructor.name;\n\n if (typeof name === 'string' && name !== '') {\n return name;\n }\n }\n\n return tag;\n}","import isObjectLike from '../jsutils/isObjectLike';\nimport { getLocation } from '../language/location';\nimport { printLocation, printSourceLocation } from '../language/printLocation';\n/**\n * A GraphQLError describes an Error found during the parse, validate, or\n * execute phases of performing a GraphQL operation. In addition to a message\n * and stack trace, it also includes information about the locations in a\n * GraphQL document and/or execution result that correspond to the Error.\n */\n\nexport function GraphQLError( // eslint-disable-line no-redeclare\nmessage, nodes, source, positions, path, originalError, extensions) {\n // Compute list of blame nodes.\n var _nodes = Array.isArray(nodes) ? nodes.length !== 0 ? nodes : undefined : nodes ? [nodes] : undefined; // Compute locations in the source for the given nodes/positions.\n\n\n var _source = source;\n\n if (!_source && _nodes) {\n var node = _nodes[0];\n _source = node && node.loc && node.loc.source;\n }\n\n var _positions = positions;\n\n if (!_positions && _nodes) {\n _positions = _nodes.reduce(function (list, node) {\n if (node.loc) {\n list.push(node.loc.start);\n }\n\n return list;\n }, []);\n }\n\n if (_positions && _positions.length === 0) {\n _positions = undefined;\n }\n\n var _locations;\n\n if (positions && source) {\n _locations = positions.map(function (pos) {\n return getLocation(source, pos);\n });\n } else if (_nodes) {\n _locations = _nodes.reduce(function (list, node) {\n if (node.loc) {\n list.push(getLocation(node.loc.source, node.loc.start));\n }\n\n return list;\n }, []);\n }\n\n var _extensions = extensions;\n\n if (_extensions == null && originalError != null) {\n var originalExtensions = originalError.extensions;\n\n if (isObjectLike(originalExtensions)) {\n _extensions = originalExtensions;\n }\n }\n\n Object.defineProperties(this, {\n message: {\n value: message,\n // By being enumerable, JSON.stringify will include `message` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: true,\n writable: true\n },\n locations: {\n // Coercing falsey values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: _locations || undefined,\n // By being enumerable, JSON.stringify will include `locations` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: Boolean(_locations)\n },\n path: {\n // Coercing falsey values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: path || undefined,\n // By being enumerable, JSON.stringify will include `path` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: Boolean(path)\n },\n nodes: {\n value: _nodes || undefined\n },\n source: {\n value: _source || undefined\n },\n positions: {\n value: _positions || undefined\n },\n originalError: {\n value: originalError\n },\n extensions: {\n // Coercing falsey values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: _extensions || undefined,\n // By being enumerable, JSON.stringify will include `path` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: Boolean(_extensions)\n }\n }); // Include (non-enumerable) stack trace.\n\n if (originalError && originalError.stack) {\n Object.defineProperty(this, 'stack', {\n value: originalError.stack,\n writable: true,\n configurable: true\n });\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, GraphQLError);\n } else {\n Object.defineProperty(this, 'stack', {\n value: Error().stack,\n writable: true,\n configurable: true\n });\n }\n}\nGraphQLError.prototype = Object.create(Error.prototype, {\n constructor: {\n value: GraphQLError\n },\n name: {\n value: 'GraphQLError'\n },\n toString: {\n value: function toString() {\n return printError(this);\n }\n }\n});\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n */\n\nexport function printError(error) {\n var output = error.message;\n\n if (error.nodes) {\n for (var _i2 = 0, _error$nodes2 = error.nodes; _i2 < _error$nodes2.length; _i2++) {\n var node = _error$nodes2[_i2];\n\n if (node.loc) {\n output += '\\n\\n' + printLocation(node.loc);\n }\n }\n } else if (error.source && error.locations) {\n for (var _i4 = 0, _error$locations2 = error.locations; _i4 < _error$locations2.length; _i4++) {\n var location = _error$locations2[_i4];\n output += '\\n\\n' + printSourceLocation(error.source, location);\n }\n }\n\n return output;\n}","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}","import { sym, is, ident, check, deprecate, updateIncentive, createSetContextWarning, SELF_CANCELLATION } from './utils';\nvar IO =\n/*#__PURE__*/\nsym('IO');\nvar TAKE = 'TAKE';\nvar PUT = 'PUT';\nvar ALL = 'ALL';\nvar RACE = 'RACE';\nvar CALL = 'CALL';\nvar CPS = 'CPS';\nvar FORK = 'FORK';\nvar JOIN = 'JOIN';\nvar CANCEL = 'CANCEL';\nvar SELECT = 'SELECT';\nvar ACTION_CHANNEL = 'ACTION_CHANNEL';\nvar CANCELLED = 'CANCELLED';\nvar FLUSH = 'FLUSH';\nvar GET_CONTEXT = 'GET_CONTEXT';\nvar SET_CONTEXT = 'SET_CONTEXT';\nvar TEST_HINT = '\\n(HINT: if you are getting this errors in tests, consider using createMockTask from redux-saga/utils)';\n\nvar effect = function effect(type, payload) {\n var _ref;\n\n return _ref = {}, _ref[IO] = true, _ref[type] = payload, _ref;\n};\n\nexport var detach = function detach(eff) {\n check(asEffect.fork(eff), is.object, 'detach(eff): argument must be a fork effect');\n eff[FORK].detached = true;\n return eff;\n};\nexport function take() {\n var patternOrChannel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '*';\n\n if (arguments.length) {\n check(arguments[0], is.notUndef, 'take(patternOrChannel): patternOrChannel is undefined');\n }\n\n if (is.pattern(patternOrChannel)) {\n return effect(TAKE, {\n pattern: patternOrChannel\n });\n }\n\n if (is.channel(patternOrChannel)) {\n return effect(TAKE, {\n channel: patternOrChannel\n });\n }\n\n throw new Error('take(patternOrChannel): argument ' + String(patternOrChannel) + ' is not valid channel or a valid pattern');\n}\n\ntake.maybe = function () {\n var eff = take.apply(undefined, arguments);\n eff[TAKE].maybe = true;\n return eff;\n};\n\nexport var takem =\n/*#__PURE__*/\ndeprecate(take.maybe,\n/*#__PURE__*/\nupdateIncentive('takem', 'take.maybe'));\nexport function put(channel, action) {\n if (arguments.length > 1) {\n check(channel, is.notUndef, 'put(channel, action): argument channel is undefined');\n check(channel, is.channel, 'put(channel, action): argument ' + channel + ' is not a valid channel');\n check(action, is.notUndef, 'put(channel, action): argument action is undefined');\n } else {\n check(channel, is.notUndef, 'put(action): argument action is undefined');\n action = channel;\n channel = null;\n }\n\n return effect(PUT, {\n channel: channel,\n action: action\n });\n}\n\nput.resolve = function () {\n var eff = put.apply(undefined, arguments);\n eff[PUT].resolve = true;\n return eff;\n};\n\nput.sync =\n/*#__PURE__*/\ndeprecate(put.resolve,\n/*#__PURE__*/\nupdateIncentive('put.sync', 'put.resolve'));\nexport function all(effects) {\n return effect(ALL, effects);\n}\nexport function race(effects) {\n return effect(RACE, effects);\n}\n\nfunction getFnCallDesc(meth, fn, args) {\n check(fn, is.notUndef, meth + ': argument fn is undefined');\n var context = null;\n\n if (is.array(fn)) {\n var _fn = fn;\n context = _fn[0];\n fn = _fn[1];\n } else if (fn.fn) {\n var _fn2 = fn;\n context = _fn2.context;\n fn = _fn2.fn;\n }\n\n if (context && is.string(fn) && is.func(context[fn])) {\n fn = context[fn];\n }\n\n check(fn, is.func, meth + ': argument ' + fn + ' is not a function');\n return {\n context: context,\n fn: fn,\n args: args\n };\n}\n\nexport function call(fn) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return effect(CALL, getFnCallDesc('call', fn, args));\n}\nexport function apply(context, fn) {\n var args = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n return effect(CALL, getFnCallDesc('apply', {\n context: context,\n fn: fn\n }, args));\n}\nexport function cps(fn) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return effect(CPS, getFnCallDesc('cps', fn, args));\n}\nexport function fork(fn) {\n for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n return effect(FORK, getFnCallDesc('fork', fn, args));\n}\nexport function spawn(fn) {\n for (var _len4 = arguments.length, args = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n return detach(fork.apply(undefined, [fn].concat(args)));\n}\nexport function join() {\n for (var _len5 = arguments.length, tasks = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n tasks[_key5] = arguments[_key5];\n }\n\n if (tasks.length > 1) {\n return all(tasks.map(function (t) {\n return join(t);\n }));\n }\n\n var task = tasks[0];\n check(task, is.notUndef, 'join(task): argument task is undefined');\n check(task, is.task, 'join(task): argument ' + task + ' is not a valid Task object ' + TEST_HINT);\n return effect(JOIN, task);\n}\nexport function cancel() {\n for (var _len6 = arguments.length, tasks = Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n tasks[_key6] = arguments[_key6];\n }\n\n if (tasks.length > 1) {\n return all(tasks.map(function (t) {\n return cancel(t);\n }));\n }\n\n var task = tasks[0];\n\n if (tasks.length === 1) {\n check(task, is.notUndef, 'cancel(task): argument task is undefined');\n check(task, is.task, 'cancel(task): argument ' + task + ' is not a valid Task object ' + TEST_HINT);\n }\n\n return effect(CANCEL, task || SELF_CANCELLATION);\n}\nexport function select(selector) {\n for (var _len7 = arguments.length, args = Array(_len7 > 1 ? _len7 - 1 : 0), _key7 = 1; _key7 < _len7; _key7++) {\n args[_key7 - 1] = arguments[_key7];\n }\n\n if (arguments.length === 0) {\n selector = ident;\n } else {\n check(selector, is.notUndef, 'select(selector,[...]): argument selector is undefined');\n check(selector, is.func, 'select(selector,[...]): argument ' + selector + ' is not a function');\n }\n\n return effect(SELECT, {\n selector: selector,\n args: args\n });\n}\n/**\n channel(pattern, [buffer]) => creates an event channel for store actions\n**/\n\nexport function actionChannel(pattern, buffer) {\n check(pattern, is.notUndef, 'actionChannel(pattern,...): argument pattern is undefined');\n\n if (arguments.length > 1) {\n check(buffer, is.notUndef, 'actionChannel(pattern, buffer): argument buffer is undefined');\n check(buffer, is.buffer, 'actionChannel(pattern, buffer): argument ' + buffer + ' is not a valid buffer');\n }\n\n return effect(ACTION_CHANNEL, {\n pattern: pattern,\n buffer: buffer\n });\n}\nexport function cancelled() {\n return effect(CANCELLED, {});\n}\nexport function flush(channel) {\n check(channel, is.channel, 'flush(channel): argument ' + channel + ' is not valid channel');\n return effect(FLUSH, channel);\n}\nexport function getContext(prop) {\n check(prop, is.string, 'getContext(prop): argument ' + prop + ' is not a string');\n return effect(GET_CONTEXT, prop);\n}\nexport function setContext(props) {\n check(props, is.object, createSetContextWarning(null, props));\n return effect(SET_CONTEXT, props);\n}\n\nvar createAsEffectType = function createAsEffectType(type) {\n return function (effect) {\n return effect && effect[IO] && effect[type];\n };\n};\n\nexport var asEffect = {\n take:\n /*#__PURE__*/\n createAsEffectType(TAKE),\n put:\n /*#__PURE__*/\n createAsEffectType(PUT),\n all:\n /*#__PURE__*/\n createAsEffectType(ALL),\n race:\n /*#__PURE__*/\n createAsEffectType(RACE),\n call:\n /*#__PURE__*/\n createAsEffectType(CALL),\n cps:\n /*#__PURE__*/\n createAsEffectType(CPS),\n fork:\n /*#__PURE__*/\n createAsEffectType(FORK),\n join:\n /*#__PURE__*/\n createAsEffectType(JOIN),\n cancel:\n /*#__PURE__*/\n createAsEffectType(CANCEL),\n select:\n /*#__PURE__*/\n createAsEffectType(SELECT),\n actionChannel:\n /*#__PURE__*/\n createAsEffectType(ACTION_CHANNEL),\n cancelled:\n /*#__PURE__*/\n createAsEffectType(CANCELLED),\n flush:\n /*#__PURE__*/\n createAsEffectType(FLUSH),\n getContext:\n /*#__PURE__*/\n createAsEffectType(GET_CONTEXT),\n setContext:\n /*#__PURE__*/\n createAsEffectType(SET_CONTEXT)\n};","\"use strict\";\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n__export(require(\"./styled\"));\n\nvar styled_1 = require(\"./styled\");\n\nexports.styled = styled_1.default;","export default function devAssert(condition, message) {\n var booleanCondition = Boolean(condition);\n\n if (!booleanCondition) {\n throw new Error(message);\n }\n}","/**\n * The set of allowed directive location values.\n */\nexport var DirectiveLocation = Object.freeze({\n // Request Definitions\n QUERY: 'QUERY',\n MUTATION: 'MUTATION',\n SUBSCRIPTION: 'SUBSCRIPTION',\n FIELD: 'FIELD',\n FRAGMENT_DEFINITION: 'FRAGMENT_DEFINITION',\n FRAGMENT_SPREAD: 'FRAGMENT_SPREAD',\n INLINE_FRAGMENT: 'INLINE_FRAGMENT',\n VARIABLE_DEFINITION: 'VARIABLE_DEFINITION',\n // Type System Definitions\n SCHEMA: 'SCHEMA',\n SCALAR: 'SCALAR',\n OBJECT: 'OBJECT',\n FIELD_DEFINITION: 'FIELD_DEFINITION',\n ARGUMENT_DEFINITION: 'ARGUMENT_DEFINITION',\n INTERFACE: 'INTERFACE',\n UNION: 'UNION',\n ENUM: 'ENUM',\n ENUM_VALUE: 'ENUM_VALUE',\n INPUT_OBJECT: 'INPUT_OBJECT',\n INPUT_FIELD_DEFINITION: 'INPUT_FIELD_DEFINITION'\n});\n/**\n * The enum type representing the directive location values.\n */","/* eslint-disable no-redeclare */\n// $FlowFixMe workaround for: https://github.com/facebook/flow/issues/2221\nvar objectValues = Object.values || function (obj) {\n return Object.keys(obj).map(function (key) {\n return obj[key];\n });\n};\n\nexport default objectValues;","import objectValues from '../polyfills/objectValues';\nimport inspect from '../jsutils/inspect';\nimport invariant from '../jsutils/invariant';\nimport { print } from '../language/printer';\nimport { DirectiveLocation } from '../language/directiveLocation';\nimport { astFromValue } from '../utilities/astFromValue';\nimport { GraphQLString, GraphQLBoolean } from './scalars';\nimport { GraphQLObjectType, GraphQLEnumType, GraphQLList, GraphQLNonNull, isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType, isListType, isNonNullType, isAbstractType, isNamedType } from './definition';\nexport var __Schema = new GraphQLObjectType({\n name: '__Schema',\n description: 'A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.',\n fields: function fields() {\n return {\n types: {\n description: 'A list of all types supported by this server.',\n type: GraphQLNonNull(GraphQLList(GraphQLNonNull(__Type))),\n resolve: function resolve(schema) {\n return objectValues(schema.getTypeMap());\n }\n },\n queryType: {\n description: 'The type that query operations will be rooted at.',\n type: GraphQLNonNull(__Type),\n resolve: function resolve(schema) {\n return schema.getQueryType();\n }\n },\n mutationType: {\n description: 'If this server supports mutation, the type that mutation operations will be rooted at.',\n type: __Type,\n resolve: function resolve(schema) {\n return schema.getMutationType();\n }\n },\n subscriptionType: {\n description: 'If this server support subscription, the type that subscription operations will be rooted at.',\n type: __Type,\n resolve: function resolve(schema) {\n return schema.getSubscriptionType();\n }\n },\n directives: {\n description: 'A list of all directives supported by this server.',\n type: GraphQLNonNull(GraphQLList(GraphQLNonNull(__Directive))),\n resolve: function resolve(schema) {\n return schema.getDirectives();\n }\n }\n };\n }\n});\nexport var __Directive = new GraphQLObjectType({\n name: '__Directive',\n description: \"A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.\\n\\nIn some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.\",\n fields: function fields() {\n return {\n name: {\n type: GraphQLNonNull(GraphQLString),\n resolve: function resolve(obj) {\n return obj.name;\n }\n },\n description: {\n type: GraphQLString,\n resolve: function resolve(obj) {\n return obj.description;\n }\n },\n locations: {\n type: GraphQLNonNull(GraphQLList(GraphQLNonNull(__DirectiveLocation))),\n resolve: function resolve(obj) {\n return obj.locations;\n }\n },\n args: {\n type: GraphQLNonNull(GraphQLList(GraphQLNonNull(__InputValue))),\n resolve: function resolve(directive) {\n return directive.args;\n }\n }\n };\n }\n});\nexport var __DirectiveLocation = new GraphQLEnumType({\n name: '__DirectiveLocation',\n description: 'A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.',\n values: {\n QUERY: {\n value: DirectiveLocation.QUERY,\n description: 'Location adjacent to a query operation.'\n },\n MUTATION: {\n value: DirectiveLocation.MUTATION,\n description: 'Location adjacent to a mutation operation.'\n },\n SUBSCRIPTION: {\n value: DirectiveLocation.SUBSCRIPTION,\n description: 'Location adjacent to a subscription operation.'\n },\n FIELD: {\n value: DirectiveLocation.FIELD,\n description: 'Location adjacent to a field.'\n },\n FRAGMENT_DEFINITION: {\n value: DirectiveLocation.FRAGMENT_DEFINITION,\n description: 'Location adjacent to a fragment definition.'\n },\n FRAGMENT_SPREAD: {\n value: DirectiveLocation.FRAGMENT_SPREAD,\n description: 'Location adjacent to a fragment spread.'\n },\n INLINE_FRAGMENT: {\n value: DirectiveLocation.INLINE_FRAGMENT,\n description: 'Location adjacent to an inline fragment.'\n },\n VARIABLE_DEFINITION: {\n value: DirectiveLocation.VARIABLE_DEFINITION,\n description: 'Location adjacent to a variable definition.'\n },\n SCHEMA: {\n value: DirectiveLocation.SCHEMA,\n description: 'Location adjacent to a schema definition.'\n },\n SCALAR: {\n value: DirectiveLocation.SCALAR,\n description: 'Location adjacent to a scalar definition.'\n },\n OBJECT: {\n value: DirectiveLocation.OBJECT,\n description: 'Location adjacent to an object type definition.'\n },\n FIELD_DEFINITION: {\n value: DirectiveLocation.FIELD_DEFINITION,\n description: 'Location adjacent to a field definition.'\n },\n ARGUMENT_DEFINITION: {\n value: DirectiveLocation.ARGUMENT_DEFINITION,\n description: 'Location adjacent to an argument definition.'\n },\n INTERFACE: {\n value: DirectiveLocation.INTERFACE,\n description: 'Location adjacent to an interface definition.'\n },\n UNION: {\n value: DirectiveLocation.UNION,\n description: 'Location adjacent to a union definition.'\n },\n ENUM: {\n value: DirectiveLocation.ENUM,\n description: 'Location adjacent to an enum definition.'\n },\n ENUM_VALUE: {\n value: DirectiveLocation.ENUM_VALUE,\n description: 'Location adjacent to an enum value definition.'\n },\n INPUT_OBJECT: {\n value: DirectiveLocation.INPUT_OBJECT,\n description: 'Location adjacent to an input object type definition.'\n },\n INPUT_FIELD_DEFINITION: {\n value: DirectiveLocation.INPUT_FIELD_DEFINITION,\n description: 'Location adjacent to an input object field definition.'\n }\n }\n});\nexport var __Type = new GraphQLObjectType({\n name: '__Type',\n description: 'The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\\n\\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.',\n fields: function fields() {\n return {\n kind: {\n type: GraphQLNonNull(__TypeKind),\n resolve: function resolve(type) {\n if (isScalarType(type)) {\n return TypeKind.SCALAR;\n } else if (isObjectType(type)) {\n return TypeKind.OBJECT;\n } else if (isInterfaceType(type)) {\n return TypeKind.INTERFACE;\n } else if (isUnionType(type)) {\n return TypeKind.UNION;\n } else if (isEnumType(type)) {\n return TypeKind.ENUM;\n } else if (isInputObjectType(type)) {\n return TypeKind.INPUT_OBJECT;\n } else if (isListType(type)) {\n return TypeKind.LIST;\n } else if (isNonNullType(type)) {\n return TypeKind.NON_NULL;\n } // Not reachable. All possible types have been considered.\n\n /* istanbul ignore next */\n\n\n invariant(false, \"Unexpected type: \\\"\".concat(inspect(type), \"\\\".\"));\n }\n },\n name: {\n type: GraphQLString,\n resolve: function resolve(obj) {\n return obj.name !== undefined ? obj.name : undefined;\n }\n },\n description: {\n type: GraphQLString,\n resolve: function resolve(obj) {\n return obj.description !== undefined ? obj.description : undefined;\n }\n },\n fields: {\n type: GraphQLList(GraphQLNonNull(__Field)),\n args: {\n includeDeprecated: {\n type: GraphQLBoolean,\n defaultValue: false\n }\n },\n resolve: function resolve(type, _ref) {\n var includeDeprecated = _ref.includeDeprecated;\n\n if (isObjectType(type) || isInterfaceType(type)) {\n var fields = objectValues(type.getFields());\n\n if (!includeDeprecated) {\n fields = fields.filter(function (field) {\n return !field.deprecationReason;\n });\n }\n\n return fields;\n }\n\n return null;\n }\n },\n interfaces: {\n type: GraphQLList(GraphQLNonNull(__Type)),\n resolve: function resolve(type) {\n if (isObjectType(type)) {\n return type.getInterfaces();\n }\n }\n },\n possibleTypes: {\n type: GraphQLList(GraphQLNonNull(__Type)),\n resolve: function resolve(type, args, context, _ref2) {\n var schema = _ref2.schema;\n\n if (isAbstractType(type)) {\n return schema.getPossibleTypes(type);\n }\n }\n },\n enumValues: {\n type: GraphQLList(GraphQLNonNull(__EnumValue)),\n args: {\n includeDeprecated: {\n type: GraphQLBoolean,\n defaultValue: false\n }\n },\n resolve: function resolve(type, _ref3) {\n var includeDeprecated = _ref3.includeDeprecated;\n\n if (isEnumType(type)) {\n var values = type.getValues();\n\n if (!includeDeprecated) {\n values = values.filter(function (value) {\n return !value.deprecationReason;\n });\n }\n\n return values;\n }\n }\n },\n inputFields: {\n type: GraphQLList(GraphQLNonNull(__InputValue)),\n resolve: function resolve(type) {\n if (isInputObjectType(type)) {\n return objectValues(type.getFields());\n }\n }\n },\n ofType: {\n type: __Type,\n resolve: function resolve(obj) {\n return obj.ofType !== undefined ? obj.ofType : undefined;\n }\n }\n };\n }\n});\nexport var __Field = new GraphQLObjectType({\n name: '__Field',\n description: 'Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.',\n fields: function fields() {\n return {\n name: {\n type: GraphQLNonNull(GraphQLString),\n resolve: function resolve(obj) {\n return obj.name;\n }\n },\n description: {\n type: GraphQLString,\n resolve: function resolve(obj) {\n return obj.description;\n }\n },\n args: {\n type: GraphQLNonNull(GraphQLList(GraphQLNonNull(__InputValue))),\n resolve: function resolve(field) {\n return field.args;\n }\n },\n type: {\n type: GraphQLNonNull(__Type),\n resolve: function resolve(obj) {\n return obj.type;\n }\n },\n isDeprecated: {\n type: GraphQLNonNull(GraphQLBoolean),\n resolve: function resolve(obj) {\n return obj.isDeprecated;\n }\n },\n deprecationReason: {\n type: GraphQLString,\n resolve: function resolve(obj) {\n return obj.deprecationReason;\n }\n }\n };\n }\n});\nexport var __InputValue = new GraphQLObjectType({\n name: '__InputValue',\n description: 'Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.',\n fields: function fields() {\n return {\n name: {\n type: GraphQLNonNull(GraphQLString),\n resolve: function resolve(obj) {\n return obj.name;\n }\n },\n description: {\n type: GraphQLString,\n resolve: function resolve(obj) {\n return obj.description;\n }\n },\n type: {\n type: GraphQLNonNull(__Type),\n resolve: function resolve(obj) {\n return obj.type;\n }\n },\n defaultValue: {\n type: GraphQLString,\n description: 'A GraphQL-formatted string representing the default value for this input value.',\n resolve: function resolve(inputVal) {\n var valueAST = astFromValue(inputVal.defaultValue, inputVal.type);\n return valueAST ? print(valueAST) : null;\n }\n }\n };\n }\n});\nexport var __EnumValue = new GraphQLObjectType({\n name: '__EnumValue',\n description: 'One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.',\n fields: function fields() {\n return {\n name: {\n type: GraphQLNonNull(GraphQLString),\n resolve: function resolve(obj) {\n return obj.name;\n }\n },\n description: {\n type: GraphQLString,\n resolve: function resolve(obj) {\n return obj.description;\n }\n },\n isDeprecated: {\n type: GraphQLNonNull(GraphQLBoolean),\n resolve: function resolve(obj) {\n return obj.isDeprecated;\n }\n },\n deprecationReason: {\n type: GraphQLString,\n resolve: function resolve(obj) {\n return obj.deprecationReason;\n }\n }\n };\n }\n});\nexport var TypeKind = Object.freeze({\n SCALAR: 'SCALAR',\n OBJECT: 'OBJECT',\n INTERFACE: 'INTERFACE',\n UNION: 'UNION',\n ENUM: 'ENUM',\n INPUT_OBJECT: 'INPUT_OBJECT',\n LIST: 'LIST',\n NON_NULL: 'NON_NULL'\n});\nexport var __TypeKind = new GraphQLEnumType({\n name: '__TypeKind',\n description: 'An enum describing what kind of type a given `__Type` is.',\n values: {\n SCALAR: {\n value: TypeKind.SCALAR,\n description: 'Indicates this type is a scalar.'\n },\n OBJECT: {\n value: TypeKind.OBJECT,\n description: 'Indicates this type is an object. `fields` and `interfaces` are valid fields.'\n },\n INTERFACE: {\n value: TypeKind.INTERFACE,\n description: 'Indicates this type is an interface. `fields` and `possibleTypes` are valid fields.'\n },\n UNION: {\n value: TypeKind.UNION,\n description: 'Indicates this type is a union. `possibleTypes` is a valid field.'\n },\n ENUM: {\n value: TypeKind.ENUM,\n description: 'Indicates this type is an enum. `enumValues` is a valid field.'\n },\n INPUT_OBJECT: {\n value: TypeKind.INPUT_OBJECT,\n description: 'Indicates this type is an input object. `inputFields` is a valid field.'\n },\n LIST: {\n value: TypeKind.LIST,\n description: 'Indicates this type is a list. `ofType` is a valid field.'\n },\n NON_NULL: {\n value: TypeKind.NON_NULL,\n description: 'Indicates this type is a non-null. `ofType` is a valid field.'\n }\n }\n});\n/**\n * Note that these are GraphQLField and not GraphQLFieldConfig,\n * so the format for args is different.\n */\n\nexport var SchemaMetaFieldDef = {\n name: '__schema',\n type: GraphQLNonNull(__Schema),\n description: 'Access the current type schema of this server.',\n args: [],\n resolve: function resolve(source, args, context, _ref4) {\n var schema = _ref4.schema;\n return schema;\n },\n deprecationReason: undefined,\n extensions: undefined,\n astNode: undefined\n};\nexport var TypeMetaFieldDef = {\n name: '__type',\n type: __Type,\n description: 'Request the type information of a single type.',\n args: [{\n name: 'name',\n description: undefined,\n type: GraphQLNonNull(GraphQLString),\n defaultValue: undefined,\n extensions: undefined,\n astNode: undefined\n }],\n resolve: function resolve(source, _ref5, context, _ref6) {\n var name = _ref5.name;\n var schema = _ref6.schema;\n return schema.getType(name);\n },\n deprecationReason: undefined,\n extensions: undefined,\n astNode: undefined\n};\nexport var TypeNameMetaFieldDef = {\n name: '__typename',\n type: GraphQLNonNull(GraphQLString),\n description: 'The name of the current Object type at runtime.',\n args: [],\n resolve: function resolve(source, args, context, _ref7) {\n var parentType = _ref7.parentType;\n return parentType.name;\n },\n deprecationReason: undefined,\n extensions: undefined,\n astNode: undefined\n};\nexport var introspectionTypes = Object.freeze([__Schema, __Directive, __DirectiveLocation, __Type, __Field, __InputValue, __EnumValue, __TypeKind]);\nexport function isIntrospectionType(type) {\n return isNamedType(type) && introspectionTypes.some(function (_ref8) {\n var name = _ref8.name;\n return type.name === name;\n });\n}","/* eslint-disable no-redeclare */\n// $FlowFixMe workaround for: https://github.com/facebook/flow/issues/4441\nvar isFinitePolyfill = Number.isFinite || function (value) {\n return typeof value === 'number' && isFinite(value);\n};\n\nexport default isFinitePolyfill;","/* eslint-disable no-redeclare */\n// $FlowFixMe workaround for: https://github.com/facebook/flow/issues/4441\nvar isInteger = Number.isInteger || function (value) {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n};\n\nexport default isInteger;","import isFinite from '../polyfills/isFinite';\nimport isInteger from '../polyfills/isInteger';\nimport inspect from '../jsutils/inspect';\nimport isObjectLike from '../jsutils/isObjectLike';\nimport { Kind } from '../language/kinds';\nimport { GraphQLScalarType, isScalarType } from './definition'; // As per the GraphQL Spec, Integers are only treated as valid when a valid\n// 32-bit signed integer, providing the broadest support across platforms.\n//\n// n.b. JavaScript's integers are safe between -(2^53 - 1) and 2^53 - 1 because\n// they are internally represented as IEEE 754 doubles.\n\nvar MAX_INT = 2147483647;\nvar MIN_INT = -2147483648;\n\nfunction serializeInt(value) {\n if (typeof value === 'boolean') {\n return value ? 1 : 0;\n }\n\n var num = value;\n\n if (typeof value === 'string' && value !== '') {\n num = Number(value);\n }\n\n if (!isInteger(num)) {\n throw new TypeError(\"Int cannot represent non-integer value: \".concat(inspect(value)));\n }\n\n if (num > MAX_INT || num < MIN_INT) {\n throw new TypeError(\"Int cannot represent non 32-bit signed integer value: \".concat(inspect(value)));\n }\n\n return num;\n}\n\nfunction coerceInt(value) {\n if (!isInteger(value)) {\n throw new TypeError(\"Int cannot represent non-integer value: \".concat(inspect(value)));\n }\n\n if (value > MAX_INT || value < MIN_INT) {\n throw new TypeError(\"Int cannot represent non 32-bit signed integer value: \".concat(inspect(value)));\n }\n\n return value;\n}\n\nexport var GraphQLInt = new GraphQLScalarType({\n name: 'Int',\n description: 'The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.',\n serialize: serializeInt,\n parseValue: coerceInt,\n parseLiteral: function parseLiteral(ast) {\n if (ast.kind === Kind.INT) {\n var num = parseInt(ast.value, 10);\n\n if (num <= MAX_INT && num >= MIN_INT) {\n return num;\n }\n }\n\n return undefined;\n }\n});\n\nfunction serializeFloat(value) {\n if (typeof value === 'boolean') {\n return value ? 1 : 0;\n }\n\n var num = value;\n\n if (typeof value === 'string' && value !== '') {\n num = Number(value);\n }\n\n if (!isFinite(num)) {\n throw new TypeError(\"Float cannot represent non numeric value: \".concat(inspect(value)));\n }\n\n return num;\n}\n\nfunction coerceFloat(value) {\n if (!isFinite(value)) {\n throw new TypeError(\"Float cannot represent non numeric value: \".concat(inspect(value)));\n }\n\n return value;\n}\n\nexport var GraphQLFloat = new GraphQLScalarType({\n name: 'Float',\n description: 'The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point).',\n serialize: serializeFloat,\n parseValue: coerceFloat,\n parseLiteral: function parseLiteral(ast) {\n return ast.kind === Kind.FLOAT || ast.kind === Kind.INT ? parseFloat(ast.value) : undefined;\n }\n}); // Support serializing objects with custom valueOf() or toJSON() functions -\n// a common way to represent a complex value which can be represented as\n// a string (ex: MongoDB id objects).\n\nfunction serializeObject(value) {\n if (isObjectLike(value)) {\n if (typeof value.valueOf === 'function') {\n var valueOfResult = value.valueOf();\n\n if (!isObjectLike(valueOfResult)) {\n return valueOfResult;\n }\n }\n\n if (typeof value.toJSON === 'function') {\n // $FlowFixMe(>=0.90.0)\n return value.toJSON();\n }\n }\n\n return value;\n}\n\nfunction serializeString(rawValue) {\n var value = serializeObject(rawValue); // Serialize string, boolean and number values to a string, but do not\n // attempt to coerce object, function, symbol, or other types as strings.\n\n if (typeof value === 'string') {\n return value;\n }\n\n if (typeof value === 'boolean') {\n return value ? 'true' : 'false';\n }\n\n if (isFinite(value)) {\n return value.toString();\n }\n\n throw new TypeError(\"String cannot represent value: \".concat(inspect(rawValue)));\n}\n\nfunction coerceString(value) {\n if (typeof value !== 'string') {\n throw new TypeError(\"String cannot represent a non string value: \".concat(inspect(value)));\n }\n\n return value;\n}\n\nexport var GraphQLString = new GraphQLScalarType({\n name: 'String',\n description: 'The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.',\n serialize: serializeString,\n parseValue: coerceString,\n parseLiteral: function parseLiteral(ast) {\n return ast.kind === Kind.STRING ? ast.value : undefined;\n }\n});\n\nfunction serializeBoolean(value) {\n if (typeof value === 'boolean') {\n return value;\n }\n\n if (isFinite(value)) {\n return value !== 0;\n }\n\n throw new TypeError(\"Boolean cannot represent a non boolean value: \".concat(inspect(value)));\n}\n\nfunction coerceBoolean(value) {\n if (typeof value !== 'boolean') {\n throw new TypeError(\"Boolean cannot represent a non boolean value: \".concat(inspect(value)));\n }\n\n return value;\n}\n\nexport var GraphQLBoolean = new GraphQLScalarType({\n name: 'Boolean',\n description: 'The `Boolean` scalar type represents `true` or `false`.',\n serialize: serializeBoolean,\n parseValue: coerceBoolean,\n parseLiteral: function parseLiteral(ast) {\n return ast.kind === Kind.BOOLEAN ? ast.value : undefined;\n }\n});\n\nfunction serializeID(rawValue) {\n var value = serializeObject(rawValue);\n\n if (typeof value === 'string') {\n return value;\n }\n\n if (isInteger(value)) {\n return String(value);\n }\n\n throw new TypeError(\"ID cannot represent value: \".concat(inspect(rawValue)));\n}\n\nfunction coerceID(value) {\n if (typeof value === 'string') {\n return value;\n }\n\n if (isInteger(value)) {\n return value.toString();\n }\n\n throw new TypeError(\"ID cannot represent value: \".concat(inspect(value)));\n}\n\nexport var GraphQLID = new GraphQLScalarType({\n name: 'ID',\n description: 'The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `\"4\"`) or integer (such as `4`) input value will be accepted as an ID.',\n serialize: serializeID,\n parseValue: coerceID,\n parseLiteral: function parseLiteral(ast) {\n return ast.kind === Kind.STRING || ast.kind === Kind.INT ? ast.value : undefined;\n }\n});\nexport var specifiedScalarTypes = Object.freeze([GraphQLString, GraphQLInt, GraphQLFloat, GraphQLBoolean, GraphQLID]);\nexport function isSpecifiedScalarType(type) {\n return isScalarType(type) && specifiedScalarTypes.some(function (_ref) {\n var name = _ref.name;\n return type.name === name;\n });\n}","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n// This is CodeMirror (https://codemirror.net), 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(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.CodeMirror = factory();\n})(this, function () {\n 'use strict'; // Kludges for bugs and behavior differences that can't be feature\n // detected are enabled based on userAgent etc sniffing.\n\n var userAgent = navigator.userAgent;\n var platform = navigator.platform;\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\\//.test(userAgent);\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 var ios = !edge && /AppleWebKit/.test(userAgent) && /Mobile\\/\\w+/.test(userAgent);\n var android = /Android/.test(userAgent); // This is woefully incomplete. Suggestions for alternative methods welcome.\n\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 var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n\n if (presto_version) {\n presto_version = Number(presto_version[1]);\n }\n\n if (presto_version && presto_version >= 15) {\n presto = false;\n webkit = true;\n } // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n\n\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) {\n return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\");\n }\n\n var rmClass = function rmClass(node, cls) {\n var current = node.className;\n var match = classTest(cls).exec(current);\n\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 }\n\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\n if (className) {\n e.className = className;\n }\n\n if (style) {\n e.style.cssText = style;\n }\n\n if (typeof content == \"string\") {\n e.appendChild(document.createTextNode(content));\n } else if (content) {\n for (var i = 0; i < content.length; ++i) {\n e.appendChild(content[i]);\n }\n }\n\n return e;\n } // wrapper for elt, which removes the elt from the accessibility tree\n\n\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\n if (document.createRange) {\n range = function range(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 {\n range = function range(node, start, end) {\n var r = document.body.createTextRange();\n\n try {\n r.moveToElementText(node.parentNode);\n } catch (e) {\n return r;\n }\n\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n return r;\n };\n }\n\n function contains(parent, child) {\n if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n {\n child = child.parentNode;\n }\n\n if (parent.contains) {\n return parent.contains(child);\n }\n\n do {\n if (child.nodeType == 11) {\n child = child.host;\n }\n\n if (child == parent) {\n return true;\n }\n } while (child = child.parentNode);\n }\n\n function activeElt() {\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 activeElement;\n\n try {\n activeElement = document.activeElement;\n } catch (e) {\n activeElement = document.body || null;\n }\n\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n\n return activeElement;\n }\n\n function addClass(node, cls) {\n var current = node.className;\n\n if (!classTest(cls).test(current)) {\n node.className += (current ? \" \" : \"\") + cls;\n }\n }\n\n function joinClasses(a, b) {\n var as = a.split(\" \");\n\n for (var i = 0; i < as.length; i++) {\n if (as[i] && !classTest(as[i]).test(b)) {\n b += \" \" + as[i];\n }\n }\n\n return b;\n }\n\n var selectInput = function selectInput(node) {\n node.select();\n };\n\n if (ios) // Mobile Safari apparently has a bug where select() is broken.\n {\n selectInput = function selectInput(node) {\n node.selectionStart = 0;\n node.selectionEnd = node.value.length;\n };\n } else if (ie) // Suppress mysterious IE10 errors\n {\n selectInput = function selectInput(node) {\n try {\n node.select();\n } catch (_e) {}\n };\n }\n\n function bind(f) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function () {\n return f.apply(null, args);\n };\n }\n\n function copyObj(obj, target, overwrite) {\n if (!target) {\n target = {};\n }\n\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop))) {\n target[prop] = obj[prop];\n }\n }\n\n return target;\n } // Counts the column offset in a string, taking tabs into account.\n // Used mostly to find indentation.\n\n\n function countColumn(string, end, tabSize, startIndex, startValue) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n\n if (end == -1) {\n end = string.length;\n }\n }\n\n for (var i = startIndex || 0, n = startValue || 0;;) {\n var nextTab = string.indexOf(\"\\t\", i);\n\n if (nextTab < 0 || nextTab >= end) {\n return n + (end - i);\n }\n\n n += nextTab - i;\n n += tabSize - n % tabSize;\n i = nextTab + 1;\n }\n }\n\n var Delayed = function Delayed() {\n this.id = null;\n this.f = null;\n this.time = 0;\n this.handler = bind(this.onTimeout, this);\n };\n\n Delayed.prototype.onTimeout = function (self) {\n self.id = 0;\n\n if (self.time <= +new Date()) {\n self.f();\n } else {\n setTimeout(self.handler, self.time - +new Date());\n }\n };\n\n Delayed.prototype.set = function (ms, f) {\n this.f = f;\n var time = +new Date() + ms;\n\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) {\n return i;\n }\n }\n\n return -1;\n } // Number of pixels added to scroller and sizer to hide scrollbar\n\n\n var scrollerGap = 30; // Returned or thrown by various protocols to signal 'I'm not\n // handling this'.\n\n var Pass = {\n toString: function toString() {\n return \"CodeMirror.Pass\";\n }\n }; // Reused option objects for setSelection & friends\n\n var sel_dontScroll = {\n scroll: false\n },\n sel_mouse = {\n origin: \"*mouse\"\n },\n sel_move = {\n origin: \"+move\"\n }; // The inverse of countColumn -- find the offset that corresponds to\n // a particular column.\n\n function findColumn(string, goal, tabSize) {\n for (var pos = 0, col = 0;;) {\n var nextTab = string.indexOf(\"\\t\", pos);\n\n if (nextTab == -1) {\n nextTab = string.length;\n }\n\n var skipped = nextTab - pos;\n\n if (nextTab == string.length || col + skipped >= goal) {\n return pos + Math.min(skipped, goal - col);\n }\n\n col += nextTab - pos;\n col += tabSize - col % tabSize;\n pos = nextTab + 1;\n\n if (col >= goal) {\n return pos;\n }\n }\n }\n\n var spaceStrs = [\"\"];\n\n function spaceStr(n) {\n while (spaceStrs.length <= n) {\n spaceStrs.push(lst(spaceStrs) + \" \");\n }\n\n return spaceStrs[n];\n }\n\n function lst(arr) {\n return arr[arr.length - 1];\n }\n\n function map(array, f) {\n var out = [];\n\n for (var i = 0; i < array.length; i++) {\n out[i] = f(array[i], i);\n }\n\n return out;\n }\n\n function insertSorted(array, value, score) {\n var pos = 0,\n priority = score(value);\n\n while (pos < array.length && score(array[pos]) <= priority) {\n pos++;\n }\n\n array.splice(pos, 0, value);\n }\n\n function nothing() {}\n\n function createObj(base, props) {\n var inst;\n\n if (Object.create) {\n inst = Object.create(base);\n } else {\n nothing.prototype = base;\n inst = new nothing();\n }\n\n if (props) {\n copyObj(props, inst);\n }\n\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\n function isWordCharBasic(ch) {\n return /\\w/.test(ch) || ch > \"\\x80\" && (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch));\n }\n\n function isWordChar(ch, helper) {\n if (!helper) {\n return isWordCharBasic(ch);\n }\n\n if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) {\n return true;\n }\n\n return helper.test(ch);\n }\n\n function isEmpty(obj) {\n for (var n in obj) {\n if (obj.hasOwnProperty(n) && obj[n]) {\n return false;\n }\n }\n\n return true;\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\n\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\n function isExtendingChar(ch) {\n return ch.charCodeAt(0) >= 768 && extendingChars.test(ch);\n } // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\n\n\n function skipExtendingChars(str, pos, dir) {\n while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) {\n pos += dir;\n }\n\n return pos;\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\n\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\n for (;;) {\n if (from == to) {\n return from;\n }\n\n var midF = (from + to) / 2,\n mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n\n if (mid == from) {\n return pred(mid) ? from : to;\n }\n\n if (pred(mid)) {\n to = mid;\n } else {\n from = mid + dir;\n }\n }\n } // BIDI HELPERS\n\n\n function iterateBidiSections(order, from, to, f) {\n if (!order) {\n return f(from, to, \"ltr\", 0);\n }\n\n var found = false;\n\n for (var i = 0; i < order.length; ++i) {\n var part = order[i];\n\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\n if (!found) {\n f(from, to, \"ltr\");\n }\n }\n\n var bidiOther = null;\n\n function getBidiPartAt(order, ch, sticky) {\n var found;\n bidiOther = null;\n\n for (var i = 0; i < order.length; ++i) {\n var cur = order[i];\n\n if (cur.from < ch && cur.to > ch) {\n return i;\n }\n\n if (cur.to == ch) {\n if (cur.from != cur.to && sticky == \"before\") {\n found = i;\n } else {\n bidiOther = i;\n }\n }\n\n if (cur.from == ch) {\n if (cur.from != cur.to && sticky != \"before\") {\n found = i;\n } else {\n bidiOther = i;\n }\n }\n }\n\n return found != null ? found : bidiOther;\n } // Bidirectional ordering algorithm\n // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n // that this (partially) implements.\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 // 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\n\n var bidiOrdering = function () {\n // Character types for codepoints 0 to 0xff\n var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\"; // Character types for codepoints 0x600 to 0x6f9\n\n var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n\n function charType(code) {\n if (code <= 0xf7) {\n return lowTypes.charAt(code);\n } else if (0x590 <= code && code <= 0x5f4) {\n return \"R\";\n } else if (0x600 <= code && code <= 0x6f9) {\n return arabicTypes.charAt(code - 0x600);\n } else if (0x6ee <= code && code <= 0x8ac) {\n return \"r\";\n } else if (0x2000 <= code && code <= 0x200b) {\n return \"w\";\n } else if (code == 0x200c) {\n return \"b\";\n } else {\n return \"L\";\n }\n }\n\n var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/,\n isStrong = /[LRr]/,\n countsAsLeft = /[Lb1n]/,\n countsAsNum = /[1n]/;\n\n function BidiSpan(level, from, to) {\n this.level = level;\n this.from = from;\n 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)) {\n return false;\n }\n\n var len = str.length,\n types = [];\n\n for (var i = 0; i < len; ++i) {\n types.push(charType(str.charCodeAt(i)));\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\n\n for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n var type = types[i$1];\n\n if (type == \"m\") {\n types[i$1] = prev;\n } else {\n prev = type;\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\n\n for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n var type$1 = types[i$2];\n\n if (type$1 == \"1\" && cur == \"r\") {\n types[i$2] = \"n\";\n } else if (isStrong.test(type$1)) {\n cur = type$1;\n\n if (type$1 == \"r\") {\n 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\n\n for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n var type$2 = types[i$3];\n\n if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3 + 1] == \"1\") {\n types[i$3] = \"1\";\n } else if (type$2 == \",\" && prev$1 == types[i$3 + 1] && (prev$1 == \"1\" || prev$1 == \"n\")) {\n types[i$3] = prev$1;\n }\n\n prev$1 = type$2;\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\n\n for (var i$4 = 0; i$4 < len; ++i$4) {\n var type$3 = types[i$4];\n\n if (type$3 == \",\") {\n types[i$4] = \"N\";\n } else if (type$3 == \"%\") {\n var end = void 0;\n\n for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n\n var replace = i$4 && types[i$4 - 1] == \"!\" || end < len && types[end] == \"1\" ? \"1\" : \"N\";\n\n for (var j = i$4; j < end; ++j) {\n types[j] = replace;\n }\n\n i$4 = end - 1;\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\n\n for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n var type$4 = types[i$5];\n\n if (cur$1 == \"L\" && type$4 == \"1\") {\n types[i$5] = \"L\";\n } else if (isStrong.test(type$4)) {\n cur$1 = type$4;\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\n\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\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n\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\n for (var j$1 = i$6; j$1 < end$1; ++j$1) {\n types[j$1] = replace$1;\n }\n\n i$6 = end$1 - 1;\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\n\n var order = [],\n m;\n\n for (var i$7 = 0; i$7 < len;) {\n if (countsAsLeft.test(types[i$7])) {\n var start = i$7;\n\n for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n\n order.push(new BidiSpan(0, start, i$7));\n } else {\n var pos = i$7,\n at = order.length;\n\n for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n\n for (var j$2 = pos; j$2 < i$7;) {\n if (countsAsNum.test(types[j$2])) {\n if (pos < j$2) {\n order.splice(at, 0, new BidiSpan(1, pos, j$2));\n }\n\n var nstart = j$2;\n\n for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n\n order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n pos = j$2;\n } else {\n ++j$2;\n }\n }\n\n if (pos < i$7) {\n order.splice(at, 0, new BidiSpan(1, pos, i$7));\n }\n }\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\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 }(); // 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\n\n function getOrder(line, direction) {\n var order = line.order;\n\n if (order == null) {\n order = line.order = bidiOrdering(line.text, direction);\n }\n\n return order;\n } // EVENT HANDLING\n // Lightweight event framework. on/off also work on DOM nodes,\n // registering native DOM handlers.\n\n\n var noHandlers = [];\n\n var on = function on(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$$1 = emitter._handlers || (emitter._handlers = {});\n map$$1[type] = (map$$1[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$$1 = emitter._handlers,\n arr = map$$1 && map$$1[type];\n\n if (arr) {\n var index = indexOf(arr, f);\n\n if (index > -1) {\n map$$1[type] = arr.slice(0, index).concat(arr.slice(index + 1));\n }\n }\n }\n }\n\n function signal(emitter, type\n /*, values...*/\n ) {\n var handlers = getHandlers(emitter, type);\n\n if (!handlers.length) {\n return;\n }\n\n var args = Array.prototype.slice.call(arguments, 2);\n\n for (var i = 0; i < handlers.length; ++i) {\n handlers[i].apply(null, args);\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\n\n function signalDOMEvent(cm, e, override) {\n if (typeof e == \"string\") {\n e = {\n type: e,\n preventDefault: function preventDefault() {\n this.defaultPrevented = true;\n }\n };\n }\n\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\n if (!arr) {\n return;\n }\n\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n\n for (var i = 0; i < arr.length; ++i) {\n if (indexOf(set, arr[i]) == -1) {\n set.push(arr[i]);\n }\n }\n }\n\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0;\n } // Add on and off methods to a constructor's prototype, to make\n // registering events on such objects more convenient.\n\n\n function eventMixin(ctor) {\n ctor.prototype.on = function (type, f) {\n on(this, type, f);\n };\n\n ctor.prototype.off = function (type, f) {\n off(this, type, f);\n };\n } // Due to the fact that we still support jurassic IE versions, some\n // compatibility wrappers are needed.\n\n\n function e_preventDefault(e) {\n if (e.preventDefault) {\n e.preventDefault();\n } else {\n e.returnValue = false;\n }\n }\n\n function e_stopPropagation(e) {\n if (e.stopPropagation) {\n e.stopPropagation();\n } else {\n e.cancelBubble = true;\n }\n }\n\n function e_defaultPrevented(e) {\n return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false;\n }\n\n function e_stop(e) {\n e_preventDefault(e);\n e_stopPropagation(e);\n }\n\n function e_target(e) {\n return e.target || e.srcElement;\n }\n\n function e_button(e) {\n var b = e.which;\n\n if (b == null) {\n if (e.button & 1) {\n b = 1;\n } else if (e.button & 2) {\n b = 3;\n } else if (e.button & 4) {\n b = 2;\n }\n }\n\n if (mac && e.ctrlKey && b == 1) {\n b = 3;\n }\n\n return b;\n } // Detect drag-and-drop\n\n\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) {\n return false;\n }\n\n var div = elt('div');\n return \"draggable\" in div || \"dragDrop\" in div;\n }();\n\n var zwspSupported;\n\n function zeroWidthElement(measure) {\n if (zwspSupported == null) {\n var test = elt(\"span\", \"\\u200B\");\n removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n\n if (measure.firstChild.offsetHeight != 0) {\n zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8);\n }\n }\n\n var node = zwspSupported ? elt(\"span\", \"\\u200B\") : elt(\"span\", \"\\xA0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node;\n } // Feature-detect IE's crummy client rect reporting for bidi text\n\n\n var badBidiRects;\n\n function hasBadBidiRects(measure) {\n if (badBidiRects != null) {\n return badBidiRects;\n }\n\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\n if (!r0 || r0.left == r0.right) {\n return false;\n } // Safari returns null in some cases (#2780)\n\n\n return badBidiRects = r1.right - r0.right < 3;\n } // See if \"\".split is the broken IE version, if so, provide an\n // alternative way to split lines.\n\n\n var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n var pos = 0,\n result = [],\n l = string.length;\n\n while (pos <= l) {\n var nl = string.indexOf(\"\\n\", pos);\n\n if (nl == -1) {\n nl = string.length;\n }\n\n var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n var rt = line.indexOf(\"\\r\");\n\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\n return result;\n } : function (string) {\n return string.split(/\\r\\n?|\\n/);\n };\n var hasSelection = window.getSelection ? function (te) {\n try {\n return te.selectionStart != te.selectionEnd;\n } catch (e) {\n return false;\n }\n } : function (te) {\n var range$$1;\n\n try {\n range$$1 = te.ownerDocument.selection.createRange();\n } catch (e) {}\n\n if (!range$$1 || range$$1.parentElement() != te) {\n return false;\n }\n\n return range$$1.compareEndPoints(\"StartToEnd\", range$$1) != 0;\n };\n\n var hasCopyEvent = function () {\n var e = elt(\"div\");\n\n if (\"oncopy\" in e) {\n return true;\n }\n\n e.setAttribute(\"oncopy\", \"return;\");\n return typeof e.oncopy == \"function\";\n }();\n\n var badZoomedRects = null;\n\n function hasBadZoomedRects(measure) {\n if (badZoomedRects != null) {\n return badZoomedRects;\n }\n\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 } // Known modes, by name and by MIME\n\n\n var modes = {},\n mimeModes = {}; // 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\n function defineMode(name, mode) {\n if (arguments.length > 2) {\n mode.dependencies = Array.prototype.slice.call(arguments, 2);\n }\n\n modes[name] = mode;\n }\n\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\n } // Given a MIME type, a {name, ...options} config object, or a name\n // string, return a mode config object.\n\n\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\n if (typeof found == \"string\") {\n found = {\n name: found\n };\n }\n\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\n if (typeof spec == \"string\") {\n return {\n name: spec\n };\n } else {\n return spec || {\n name: \"null\"\n };\n }\n } // Given a mode spec (anything that resolveMode accepts), find and\n // initialize an actual mode object.\n\n\n function getMode(options, spec) {\n spec = resolveMode(spec);\n var mfactory = modes[spec.name];\n\n if (!mfactory) {\n return getMode(options, \"text/plain\");\n }\n\n var modeObj = mfactory(options, spec);\n\n if (modeExtensions.hasOwnProperty(spec.name)) {\n var exts = modeExtensions[spec.name];\n\n for (var prop in exts) {\n if (!exts.hasOwnProperty(prop)) {\n continue;\n }\n\n if (modeObj.hasOwnProperty(prop)) {\n modeObj[\"_\" + prop] = modeObj[prop];\n }\n\n modeObj[prop] = exts[prop];\n }\n }\n\n modeObj.name = spec.name;\n\n if (spec.helperType) {\n modeObj.helperType = spec.helperType;\n }\n\n if (spec.modeProps) {\n for (var prop$1 in spec.modeProps) {\n modeObj[prop$1] = spec.modeProps[prop$1];\n }\n }\n\n return modeObj;\n } // This can be used to attach properties to mode objects from\n // outside the actual mode definition.\n\n\n var modeExtensions = {};\n\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) {\n return state;\n }\n\n if (mode.copyState) {\n return mode.copyState(state);\n }\n\n var nstate = {};\n\n for (var n in state) {\n var val = state[n];\n\n if (val instanceof Array) {\n val = val.concat([]);\n }\n\n nstate[n] = val;\n }\n\n return nstate;\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\n\n function innerMode(mode, state) {\n var info;\n\n while (mode.innerMode) {\n info = mode.innerMode(state);\n\n if (!info || info.mode == mode) {\n break;\n }\n\n state = info.state;\n mode = info.mode;\n }\n\n return info || {\n mode: mode,\n state: state\n };\n }\n\n function startState(mode, a1, a2) {\n return mode.startState ? mode.startState(a1, a2) : true;\n } // STRING STREAM\n // Fed to the mode parsers, provides helper functions to make\n // parsers more succinct.\n\n\n var StringStream = function StringStream(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 () {\n return this.pos >= this.string.length;\n };\n\n StringStream.prototype.sol = function () {\n return this.pos == this.lineStart;\n };\n\n StringStream.prototype.peek = function () {\n return this.string.charAt(this.pos) || undefined;\n };\n\n StringStream.prototype.next = function () {\n if (this.pos < this.string.length) {\n return this.string.charAt(this.pos++);\n }\n };\n\n StringStream.prototype.eat = function (match) {\n var ch = this.string.charAt(this.pos);\n var ok;\n\n if (typeof match == \"string\") {\n ok = ch == match;\n } else {\n ok = ch && (match.test ? match.test(ch) : match(ch));\n }\n\n if (ok) {\n ++this.pos;\n return ch;\n }\n };\n\n StringStream.prototype.eatWhile = function (match) {\n var start = this.pos;\n\n while (this.eat(match)) {}\n\n return this.pos > start;\n };\n\n StringStream.prototype.eatSpace = function () {\n var this$1 = this;\n var start = this.pos;\n\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) {\n ++this$1.pos;\n }\n\n return this.pos > start;\n };\n\n StringStream.prototype.skipToEnd = function () {\n this.pos = this.string.length;\n };\n\n StringStream.prototype.skipTo = function (ch) {\n var found = this.string.indexOf(ch, this.pos);\n\n if (found > -1) {\n this.pos = found;\n return true;\n }\n };\n\n StringStream.prototype.backUp = function (n) {\n this.pos -= n;\n };\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\n return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0);\n };\n\n StringStream.prototype.indentation = function () {\n return countColumn(this.string, null, this.tabSize) - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0);\n };\n\n StringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n var cased = function cased(str) {\n return caseInsensitive ? str.toLowerCase() : str;\n };\n\n var substr = this.string.substr(this.pos, pattern.length);\n\n if (cased(substr) == cased(pattern)) {\n if (consume !== false) {\n this.pos += pattern.length;\n }\n\n return true;\n }\n } else {\n var match = this.string.slice(this.pos).match(pattern);\n\n if (match && match.index > 0) {\n return null;\n }\n\n if (match && consume !== false) {\n this.pos += match[0].length;\n }\n\n return match;\n }\n };\n\n StringStream.prototype.current = function () {\n return this.string.slice(this.start, this.pos);\n };\n\n StringStream.prototype.hideFirstChars = function (n, inner) {\n this.lineStart += n;\n\n try {\n return inner();\n } finally {\n this.lineStart -= n;\n }\n };\n\n StringStream.prototype.lookAhead = function (n) {\n var oracle = this.lineOracle;\n return oracle && oracle.lookAhead(n);\n };\n\n StringStream.prototype.baseToken = function () {\n var oracle = this.lineOracle;\n return oracle && oracle.baseToken(this.pos);\n }; // Find the line object corresponding to the given line number.\n\n\n function getLine(doc, n) {\n n -= doc.first;\n\n if (n < 0 || n >= doc.size) {\n throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\");\n }\n\n var chunk = doc;\n\n while (!chunk.lines) {\n for (var i = 0;; ++i) {\n var child = chunk.children[i],\n sz = child.chunkSize();\n\n if (n < sz) {\n chunk = child;\n break;\n }\n\n n -= sz;\n }\n }\n\n return chunk.lines[n];\n } // Get the part of a document between two positions, as an array of\n // strings.\n\n\n function getBetween(doc, start, end) {\n var out = [],\n n = start.line;\n doc.iter(start.line, end.line + 1, function (line) {\n var text = line.text;\n\n if (n == end.line) {\n text = text.slice(0, end.ch);\n }\n\n if (n == start.line) {\n text = text.slice(start.ch);\n }\n\n out.push(text);\n ++n;\n });\n return out;\n } // Get the lines between from and to, as array of strings.\n\n\n function getLines(doc, from, to) {\n var out = [];\n doc.iter(from, to, function (line) {\n out.push(line.text);\n }); // iter aborts when callback returns truthy value\n\n return out;\n } // Update the height of a line, propagating the height change\n // upwards to parent nodes.\n\n\n function updateLineHeight(line, height) {\n var diff = height - line.height;\n\n if (diff) {\n for (var n = line; n; n = n.parent) {\n n.height += diff;\n }\n }\n } // Given a line object, find its line number by walking up through\n // its parent links.\n\n\n function lineNo(line) {\n if (line.parent == null) {\n return null;\n }\n\n var cur = line.parent,\n no = indexOf(cur.lines, line);\n\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n for (var i = 0;; ++i) {\n if (chunk.children[i] == cur) {\n break;\n }\n\n no += chunk.children[i].chunkSize();\n }\n }\n\n return no + cur.first;\n } // Find the line at the given vertical position, using the height\n // information in the document tree.\n\n\n function _lineAtHeight(chunk, h) {\n var n = chunk.first;\n\n outer: do {\n for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n var child = chunk.children[i$1],\n ch = child.height;\n\n if (h < ch) {\n chunk = child;\n continue outer;\n }\n\n h -= ch;\n n += child.chunkSize();\n }\n\n return n;\n } while (!chunk.lines);\n\n var i = 0;\n\n for (; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i],\n lh = line.height;\n\n if (h < lh) {\n break;\n }\n\n h -= lh;\n }\n\n return n + i;\n }\n\n function isLine(doc, l) {\n return l >= doc.first && l < doc.first + doc.size;\n }\n\n function lineNumberFor(options, i) {\n return String(options.lineNumberFormatter(i + options.firstLineNumber));\n } // A Pos instance represents a position within the text.\n\n\n function Pos(line, ch, sticky) {\n if (sticky === void 0) sticky = null;\n\n if (!(this instanceof Pos)) {\n return new Pos(line, ch, sticky);\n }\n\n this.line = line;\n this.ch = ch;\n this.sticky = sticky;\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\n\n function cmp(a, b) {\n return a.line - b.line || a.ch - b.ch;\n }\n\n function equalCursorPos(a, b) {\n return a.sticky == b.sticky && cmp(a, b) == 0;\n }\n\n function copyPos(x) {\n return Pos(x.line, x.ch);\n }\n\n function maxPos(a, b) {\n return cmp(a, b) < 0 ? b : a;\n }\n\n function minPos(a, b) {\n return cmp(a, b) < 0 ? a : b;\n } // Most of the external API clips given positions to make sure they\n // actually exist within the document.\n\n\n function clipLine(doc, n) {\n return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1));\n }\n\n function _clipPos(doc, pos) {\n if (pos.line < doc.first) {\n return Pos(doc.first, 0);\n }\n\n var last = doc.first + doc.size - 1;\n\n if (pos.line > last) {\n return Pos(last, getLine(doc, last).text.length);\n }\n\n return clipToLen(pos, getLine(doc, pos.line).text.length);\n }\n\n function clipToLen(pos, linelen) {\n var ch = pos.ch;\n\n if (ch == null || ch > linelen) {\n return Pos(pos.line, linelen);\n } else if (ch < 0) {\n return Pos(pos.line, 0);\n } else {\n return pos;\n }\n }\n\n function clipPosArray(doc, array) {\n var out = [];\n\n for (var i = 0; i < array.length; i++) {\n out[i] = _clipPos(doc, array[i]);\n }\n\n return out;\n }\n\n var SavedContext = function SavedContext(state, lookAhead) {\n this.state = state;\n this.lookAhead = lookAhead;\n };\n\n var Context = function Context(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\n if (line != null && n > this.maxLookAhead) {\n this.maxLookAhead = n;\n }\n\n return line;\n };\n\n Context.prototype.baseToken = function (n) {\n var this$1 = this;\n\n if (!this.baseTokens) {\n return null;\n }\n\n while (this.baseTokens[this.baseTokenPos] <= n) {\n this$1.baseTokenPos += 2;\n }\n\n var type = this.baseTokens[this.baseTokenPos + 1];\n return {\n type: type && type.replace(/( |^)overlay .*/, \"\"),\n size: this.baseTokens[this.baseTokenPos] - n\n };\n };\n\n Context.prototype.nextLine = function () {\n this.line++;\n\n if (this.maxLookAhead > 0) {\n this.maxLookAhead--;\n }\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\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 }; // 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\n\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],\n lineClasses = {}; // Compute the base array of styles\n\n runMode(cm, line.text, cm.doc.mode, context, function (end, style) {\n return st.push(end, style);\n }, lineClasses, forceToEnd);\n var state = context.state; // Run overlays, adjust style array.\n\n var loop = function loop(o) {\n context.baseTokens = st;\n var overlay = cm.state.overlays[o],\n i = 1,\n at = 0;\n context.state = true;\n runMode(cm, line.text, overlay.mode, context, function (end, style) {\n var start = i; // Ensure there's a token end at the current position, and that i points at it\n\n while (at < end) {\n var i_end = st[i];\n\n if (i_end > end) {\n st.splice(i, 1, end, st[i + 1], i_end);\n }\n\n i += 2;\n at = Math.min(end, i_end);\n }\n\n if (!style) {\n return;\n }\n\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) {\n loop(o);\n }\n\n return {\n styles: st,\n classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null\n };\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\n if (resetState) {\n context.state = resetState;\n }\n\n line.stateAfter = context.save(!resetState);\n line.styles = result.styles;\n\n if (result.classes) {\n line.styleClasses = result.classes;\n } else if (line.styleClasses) {\n line.styleClasses = null;\n }\n\n if (updateFrontier === cm.doc.highlightFrontier) {\n cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier);\n }\n }\n\n return line.styles;\n }\n\n function getContextBefore(cm, n, precise) {\n var doc = cm.doc,\n display = cm.display;\n\n if (!doc.mode.startState) {\n return new Context(doc, true, n);\n }\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 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\n if (precise) {\n doc.modeFrontier = context.line;\n }\n\n return context;\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\n\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\n if (text == \"\") {\n callBlankLine(mode, context.state);\n }\n\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) {\n return mode.blankLine(state);\n }\n\n if (!mode.innerMode) {\n return;\n }\n\n var inner = innerMode(mode, state);\n\n if (inner.mode.blankLine) {\n return inner.mode.blankLine(inner.state);\n }\n }\n\n function readToken(mode, stream, state, inner) {\n for (var i = 0; i < 10; i++) {\n if (inner) {\n inner[0] = innerMode(mode, state).mode;\n }\n\n var style = mode.token(stream, state);\n\n if (stream.pos > stream.start) {\n return style;\n }\n }\n\n throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\");\n }\n\n var Token = function Token(stream, type, state) {\n this.start = stream.start;\n this.end = stream.pos;\n this.string = stream.current();\n this.type = type || null;\n this.state = state;\n }; // Utility for getTokenAt and getLineTokens\n\n\n function takeToken(cm, pos, precise, asArray) {\n var doc = cm.doc,\n mode = doc.mode,\n style;\n pos = _clipPos(doc, pos);\n var line = getLine(doc, pos.line),\n context = getContextBefore(cm, pos.line, precise);\n var stream = new StringStream(line.text, cm.options.tabSize, context),\n tokens;\n\n if (asArray) {\n tokens = [];\n }\n\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n stream.start = stream.pos;\n style = readToken(mode, stream, context.state);\n\n if (asArray) {\n tokens.push(new Token(stream, style, copyState(doc.mode, context.state)));\n }\n }\n\n return asArray ? tokens : new Token(stream, style, context.state);\n }\n\n function extractLineClasses(type, output) {\n if (type) {\n for (;;) {\n var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n\n if (!lineClass) {\n break;\n }\n\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n\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 }\n }\n\n return type;\n } // Run the given mode's parser over a line, calling f for each token.\n\n\n function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n var flattenSpans = mode.flattenSpans;\n\n if (flattenSpans == null) {\n flattenSpans = cm.options.flattenSpans;\n }\n\n var curStart = 0,\n curStyle = null;\n var stream = new StringStream(text, cm.options.tabSize, context),\n style;\n var inner = cm.options.addModeClass && [null];\n\n if (text == \"\") {\n extractLineClasses(callBlankLine(mode, context.state), lineClasses);\n }\n\n while (!stream.eol()) {\n if (stream.pos > cm.options.maxHighlightLength) {\n flattenSpans = false;\n\n if (forceToEnd) {\n processLine(cm, text, context, stream.pos);\n }\n\n stream.pos = text.length;\n style = null;\n } else {\n style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n }\n\n if (inner) {\n var mName = inner[0].name;\n\n if (mName) {\n style = \"m-\" + (style ? mName + \" \" + style : mName);\n }\n }\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\n curStyle = style;\n }\n\n stream.start = stream.pos;\n }\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 } // 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\n\n function findStartLine(cm, n, precise) {\n var minindent,\n minline,\n doc = cm.doc;\n var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n\n for (var search = n; search > lim; --search) {\n if (search <= doc.first) {\n return doc.first;\n }\n\n var line = getLine(doc, search - 1),\n after = line.stateAfter;\n\n if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier)) {\n return search;\n }\n\n var indented = countColumn(line.text, null, cm.options.tabSize);\n\n if (minline == null || minindent > indented) {\n minline = search - 1;\n minindent = indented;\n }\n }\n\n return minline;\n }\n\n function retreatFrontier(doc, n) {\n doc.modeFrontier = Math.min(doc.modeFrontier, n);\n\n if (doc.highlightFrontier < n - 10) {\n return;\n }\n\n var start = doc.first;\n\n for (var line = n - 1; line > start; line--) {\n var saved = getLine(doc, line).stateAfter; // change is on 3\n // state on line 1 looked ahead 2 -- so saw 3\n // test 1 + 2 < 3 should cover this\n\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n start = line + 1;\n break;\n }\n }\n\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n } // Optimize some code when these features are not used.\n\n\n var sawReadOnlySpans = false,\n sawCollapsedSpans = false;\n\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n } // TEXTMARKER SPANS\n\n\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from;\n this.to = to;\n } // Search an array of spans for a span matching the given marker.\n\n\n function getMarkedSpanFor(spans, marker) {\n if (spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n\n if (span.marker == marker) {\n 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\n\n function removeMarkedSpan(spans, span) {\n var r;\n\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i] != span) {\n (r || (r = [])).push(spans[i]);\n }\n }\n\n return r;\n } // Add a span to a line.\n\n\n function addMarkedSpan(line, span) {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n span.marker.attachLine(line);\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\n\n function markedSpansBefore(old, startCh, isInsert) {\n var nw;\n\n if (old) {\n for (var i = 0; i < old.length; ++i) {\n var span = old[i],\n marker = span.marker;\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n\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 }\n\n return nw;\n }\n\n function markedSpansAfter(old, endCh, isInsert) {\n var nw;\n\n if (old) {\n for (var i = 0; i < old.length; ++i) {\n var span = old[i],\n marker = span.marker;\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n\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, span.to == null ? null : span.to - endCh));\n }\n }\n }\n\n return nw;\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\n\n function stretchSpansOverChange(doc, change) {\n if (change.full) {\n return null;\n }\n\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\n if (!oldFirst && !oldLast) {\n return null;\n }\n\n var startCh = change.from.ch,\n endCh = change.to.ch,\n isInsert = cmp(change.from, change.to) == 0; // Get the spans that 'stick out' on both sides\n\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\n var last = markedSpansAfter(oldLast, endCh, isInsert); // Next, merge those two ends\n\n var sameLine = change.text.length == 1,\n offset = lst(change.text).length + (sameLine ? startCh : 0);\n\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\n if (span.to == null) {\n var found = getMarkedSpanFor(last, span.marker);\n\n if (!found) {\n span.to = startCh;\n } else if (sameLine) {\n span.to = found.to == null ? null : found.to + offset;\n }\n }\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\n if (span$1.to != null) {\n span$1.to += offset;\n }\n\n if (span$1.from == null) {\n var found$1 = getMarkedSpanFor(first, span$1.marker);\n\n if (!found$1) {\n span$1.from = offset;\n\n if (sameLine) {\n (first || (first = [])).push(span$1);\n }\n }\n } else {\n span$1.from += offset;\n\n if (sameLine) {\n (first || (first = [])).push(span$1);\n }\n }\n }\n } // Make sure we didn't create any zero-length spans\n\n\n if (first) {\n first = clearEmptySpans(first);\n }\n\n if (last && last != first) {\n last = clearEmptySpans(last);\n }\n\n var newMarkers = [first];\n\n if (!sameLine) {\n // Fill gap with whole-line-spans\n var gap = change.text.length - 2,\n gapMarkers;\n\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 }\n }\n }\n\n for (var i$3 = 0; i$3 < gap; ++i$3) {\n newMarkers.push(gapMarkers);\n }\n\n newMarkers.push(last);\n }\n\n return newMarkers;\n } // Remove spans that are empty and don't have a clearWhenEmpty\n // option of false.\n\n\n function clearEmptySpans(spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false) {\n spans.splice(i--, 1);\n }\n }\n\n if (!spans.length) {\n return null;\n }\n\n return spans;\n } // Used to 'clip' out readOnly ranges when making a change.\n\n\n function removeReadOnlyRanges(doc, from, to) {\n var markers = null;\n doc.iter(from.line, to.line + 1, function (line) {\n if (line.markedSpans) {\n for (var i = 0; i < line.markedSpans.length; ++i) {\n var mark = line.markedSpans[i].marker;\n\n if (mark.readOnly && (!markers || indexOf(markers, mark) == -1)) {\n (markers || (markers = [])).push(mark);\n }\n }\n }\n });\n\n if (!markers) {\n return null;\n }\n\n var parts = [{\n from: from,\n to: to\n }];\n\n for (var i = 0; i < markers.length; ++i) {\n var mk = markers[i],\n m = mk.find(0);\n\n for (var j = 0; j < parts.length; ++j) {\n var p = parts[j];\n\n if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) {\n continue;\n }\n\n var newParts = [j, 1],\n dfrom = cmp(p.from, m.from),\n dto = cmp(p.to, m.to);\n\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom) {\n newParts.push({\n from: p.from,\n to: m.from\n });\n }\n\n if (dto > 0 || !mk.inclusiveRight && !dto) {\n newParts.push({\n from: m.to,\n to: p.to\n });\n }\n\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n\n return parts;\n } // Connect or disconnect spans from a line.\n\n\n function detachMarkedSpans(line) {\n var spans = line.markedSpans;\n\n if (!spans) {\n return;\n }\n\n for (var i = 0; i < spans.length; ++i) {\n spans[i].marker.detachLine(line);\n }\n\n line.markedSpans = null;\n }\n\n function attachMarkedSpans(line, spans) {\n if (!spans) {\n return;\n }\n\n for (var i = 0; i < spans.length; ++i) {\n spans[i].marker.attachLine(line);\n }\n\n line.markedSpans = spans;\n } // Helpers used when computing which overlapping collapsed span\n // counts as the larger one.\n\n\n function extraLeft(marker) {\n return marker.inclusiveLeft ? -1 : 0;\n }\n\n function extraRight(marker) {\n return marker.inclusiveRight ? 1 : 0;\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\n\n function compareCollapsedMarkers(a, b) {\n var lenDiff = a.lines.length - b.lines.length;\n\n if (lenDiff != 0) {\n return lenDiff;\n }\n\n var aPos = a.find(),\n bPos = b.find();\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n\n if (fromCmp) {\n return -fromCmp;\n }\n\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n\n if (toCmp) {\n return toCmp;\n }\n\n return b.id - a.id;\n } // Find out whether a line ends or starts in a collapsed span. If\n // so, return the marker for that span.\n\n\n function collapsedSpanAtSide(line, start) {\n var sps = sawCollapsedSpans && line.markedSpans,\n found;\n\n if (sps) {\n for (var sp = void 0, i = 0; i < sps.length; ++i) {\n sp = sps[i];\n\n if (sp.marker.collapsed && (start ? sp.from : sp.to) == null && (!found || compareCollapsedMarkers(found, sp.marker) < 0)) {\n found = sp.marker;\n }\n }\n }\n\n return found;\n }\n\n function collapsedSpanAtStart(line) {\n return collapsedSpanAtSide(line, true);\n }\n\n function collapsedSpanAtEnd(line) {\n return collapsedSpanAtSide(line, false);\n }\n\n function collapsedSpanAround(line, ch) {\n var sps = sawCollapsedSpans && line.markedSpans,\n found;\n\n if (sps) {\n for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n\n if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) && (!found || compareCollapsedMarkers(found, sp.marker) < 0)) {\n found = sp.marker;\n }\n }\n }\n\n return found;\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\n\n function conflictingCollapsedRange(doc, lineNo$$1, from, to, marker) {\n var line = getLine(doc, lineNo$$1);\n var sps = sawCollapsedSpans && line.markedSpans;\n\n if (sps) {\n for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n\n if (!sp.marker.collapsed) {\n continue;\n }\n\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\n if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) {\n continue;\n }\n\n if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) || 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\n\n function visualLine(line) {\n var merged;\n\n while (merged = collapsedSpanAtStart(line)) {\n line = merged.find(-1, true).line;\n }\n\n return line;\n }\n\n function visualLineEnd(line) {\n var merged;\n\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line;\n }\n\n return line;\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\n\n function visualLineContinued(line) {\n var merged, lines;\n\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line;\n (lines || (lines = [])).push(line);\n }\n\n return lines;\n } // Get the line number of the start of the visual line that the\n // given line number is part of.\n\n\n function visualLineNo(doc, lineN) {\n var line = getLine(doc, lineN),\n vis = visualLine(line);\n\n if (line == vis) {\n return lineN;\n }\n\n return lineNo(vis);\n } // Get the line number of the start of the next visual line after\n // the given line.\n\n\n function visualLineEndNo(doc, lineN) {\n if (lineN > doc.lastLine()) {\n return lineN;\n }\n\n var line = getLine(doc, lineN),\n merged;\n\n if (!lineIsHidden(doc, line)) {\n return lineN;\n }\n\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line;\n }\n\n return lineNo(line) + 1;\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\n\n function lineIsHidden(doc, line) {\n var sps = sawCollapsedSpans && line.markedSpans;\n\n if (sps) {\n for (var sp = void 0, i = 0; i < sps.length; ++i) {\n sp = sps[i];\n\n if (!sp.marker.collapsed) {\n continue;\n }\n\n if (sp.from == null) {\n return true;\n }\n\n if (sp.marker.widgetNode) {\n continue;\n }\n\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp)) {\n return true;\n }\n }\n }\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\n if (span.marker.inclusiveRight && span.to == line.text.length) {\n return true;\n }\n\n for (var sp = void 0, i = 0; i < line.markedSpans.length; ++i) {\n sp = line.markedSpans[i];\n\n if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to && (sp.to == null || sp.to != span.from) && (sp.marker.inclusiveLeft || span.marker.inclusiveRight) && lineIsHiddenInner(doc, line, sp)) {\n return true;\n }\n }\n } // Find the height above the given line.\n\n\n function _heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\n var h = 0,\n chunk = lineObj.parent;\n\n for (var i = 0; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i];\n\n if (line == lineObj) {\n break;\n } else {\n h += line.height;\n }\n }\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\n if (cur == chunk) {\n break;\n } else {\n h += cur.height;\n }\n }\n }\n\n return h;\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\n\n function lineLength(line) {\n if (line.height == 0) {\n return 0;\n }\n\n var len = line.text.length,\n merged,\n cur = line;\n\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\n cur = line;\n\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\n return len;\n } // Find the longest line in the document.\n\n\n function findMaxLine(cm) {\n var d = cm.display,\n 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\n if (len > d.maxLineLength) {\n d.maxLineLength = len;\n d.maxLine = line;\n }\n });\n } // LINE DATA STRUCTURE\n // Line objects. These hold state related to a line, including\n // highlighting info (the styles array).\n\n\n var Line = function Line(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 () {\n return lineNo(this);\n };\n\n eventMixin(Line); // Change the content (text, markers) of a line. Automatically\n // invalidates cached information and tries to re-estimate the\n // line's height.\n\n function updateLine(line, text, markedSpans, estimateHeight) {\n line.text = text;\n\n if (line.stateAfter) {\n line.stateAfter = null;\n }\n\n if (line.styles) {\n line.styles = null;\n }\n\n if (line.order != null) {\n line.order = null;\n }\n\n detachMarkedSpans(line);\n attachMarkedSpans(line, markedSpans);\n var estHeight = estimateHeight ? estimateHeight(line) : 1;\n\n if (estHeight != line.height) {\n updateLineHeight(line, estHeight);\n }\n } // Detach a line from the document tree and its markers.\n\n\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\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\n\n var styleToClassCache = {},\n styleToClassCacheWithMode = {};\n\n function interpretTokenStyle(style, options) {\n if (!style || /^\\s*$/.test(style)) {\n return null;\n }\n\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n return cache[style] || (cache[style] = style.replace(/\\S+/g, \"cm-$&\"));\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\n\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 = {\n pre: eltP(\"pre\", [content], \"CodeMirror-line\"),\n content: content,\n col: 0,\n pos: 0,\n cm: cm,\n trailingSpace: false,\n splitSpaces: cm.getOption(\"lineWrapping\")\n };\n lineView.measure = {}; // Iterate over the logical lines that make up this visual line.\n\n for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n var line = i ? lineView.rest[i - 1] : lineView.line,\n order = void 0;\n builder.pos = 0;\n builder.addToken = buildToken; // Optionally wire in some hacks into the token-rendering\n // algorithm, to deal with browser quirks.\n\n if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction))) {\n builder.addToken = buildTokenBadBidi(builder.addToken, order);\n }\n\n builder.map = [];\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n\n if (line.styleClasses) {\n if (line.styleClasses.bgClass) {\n builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\");\n }\n\n if (line.styleClasses.textClass) {\n builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\");\n }\n } // Ensure at least a single node is present, for measuring.\n\n\n if (builder.map.length == 0) {\n builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure)));\n } // Store the map and a cache object for the current logical line\n\n\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 } // See issue #2901\n\n\n if (webkit) {\n var last = builder.content.lastChild;\n\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\n signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n\n if (builder.pre.className) {\n builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\");\n }\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 } // 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\n\n function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n if (!text) {\n return;\n }\n\n var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n var special = builder.cm.state.specialChars,\n mustWrap = false;\n var content;\n\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\n if (ie && ie_version < 9) {\n mustWrap = true;\n }\n\n builder.pos += text.length;\n } else {\n content = document.createDocumentFragment();\n var pos = 0;\n\n while (true) {\n special.lastIndex = pos;\n var m = special.exec(text);\n var skipped = m ? m.index - pos : text.length - pos;\n\n if (skipped) {\n var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n\n if (ie && ie_version < 9) {\n content.appendChild(elt(\"span\", [txt]));\n } else {\n content.appendChild(txt);\n }\n\n builder.map.push(builder.pos, builder.pos + skipped, txt);\n builder.col += skipped;\n builder.pos += skipped;\n }\n\n if (!m) {\n break;\n }\n\n pos += skipped + 1;\n var txt$1 = void 0;\n\n if (m[0] == \"\\t\") {\n var tabSize = builder.cm.options.tabSize,\n 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\n if (ie && ie_version < 9) {\n content.appendChild(elt(\"span\", [txt$1]));\n } else {\n content.appendChild(txt$1);\n }\n\n builder.col += 1;\n }\n\n builder.map.push(builder.pos, builder.pos + 1, txt$1);\n builder.pos++;\n }\n }\n\n builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n\n if (style || startStyle || endStyle || mustWrap || css) {\n var fullStyle = style || \"\";\n\n if (startStyle) {\n fullStyle += startStyle;\n }\n\n if (endStyle) {\n fullStyle += endStyle;\n }\n\n var token = elt(\"span\", [content], fullStyle, css);\n\n if (attributes) {\n for (var attr in attributes) {\n if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\") {\n token.setAttribute(attr, attributes[attr]);\n }\n }\n }\n\n return builder.content.appendChild(token);\n }\n\n builder.content.appendChild(content);\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\n\n function splitSpaces(text, trailingBefore) {\n if (text.length > 1 && !/ /.test(text)) {\n return text;\n }\n\n var spaceBefore = trailingBefore,\n result = \"\";\n\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n\n if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32)) {\n ch = \"\\xA0\";\n }\n\n result += ch;\n spaceBefore = ch == \" \";\n }\n\n return result;\n } // Work around nonsense dimensions being reported for stretches of\n // right-to-left text.\n\n\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,\n end = start + text.length;\n\n for (;;) {\n // Find the part that overlaps with the start of this text\n var part = void 0;\n\n for (var i = 0; i < order.length; i++) {\n part = order[i];\n\n if (part.to > start && part.from <= start) {\n break;\n }\n }\n\n if (part.to >= end) {\n return inner(builder, text, style, startStyle, endStyle, css, attributes);\n }\n\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\n if (widget) {\n builder.map.push(builder.pos, builder.pos + size, widget);\n }\n\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n if (!widget) {\n widget = builder.content.appendChild(document.createElement(\"span\"));\n }\n\n widget.setAttribute(\"cm-marker\", marker.id);\n }\n\n if (widget) {\n builder.cm.display.input.setUneditable(widget);\n builder.content.appendChild(widget);\n }\n\n builder.pos += size;\n builder.trailingSpace = false;\n } // Outputs a number of spans to make up a line, taking highlighting\n // and marked text into account.\n\n\n function insertLineContent(line, builder, styles) {\n var spans = line.markedSpans,\n allText = line.text,\n at = 0;\n\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 }\n\n return;\n }\n\n var len = allText.length,\n pos = 0,\n i = 1,\n text = \"\",\n style,\n css;\n var nextChange = 0,\n spanStyle,\n spanEndStyle,\n spanStartStyle,\n collapsed,\n attributes;\n\n for (;;) {\n if (nextChange == pos) {\n // Update current marker set\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes = null;\n collapsed = null;\n nextChange = Infinity;\n var foundBookmarks = [],\n endStyles = void 0;\n\n for (var j = 0; j < spans.length; ++j) {\n var sp = spans[j],\n m = sp.marker;\n\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\n if (m.className) {\n spanStyle += \" \" + m.className;\n }\n\n if (m.css) {\n css = (css ? css + \";\" : \"\") + m.css;\n }\n\n if (m.startStyle && sp.from == pos) {\n spanStartStyle += \" \" + m.startStyle;\n }\n\n if (m.endStyle && sp.to == nextChange) {\n (endStyles || (endStyles = [])).push(m.endStyle, sp.to);\n } // support for the old title property\n // https://github.com/codemirror/CodeMirror/pull/5673\n\n\n if (m.title) {\n (attributes || (attributes = {})).title = m.title;\n }\n\n if (m.attributes) {\n for (var attr in m.attributes) {\n (attributes || (attributes = {}))[attr] = m.attributes[attr];\n }\n }\n\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0)) {\n collapsed = sp;\n }\n } else if (sp.from > pos && nextChange > sp.from) {\n nextChange = sp.from;\n }\n }\n\n if (endStyles) {\n for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2) {\n if (endStyles[j$1 + 1] == nextChange) {\n spanEndStyle += \" \" + endStyles[j$1];\n }\n }\n }\n\n if (!collapsed || collapsed.from == pos) {\n for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2) {\n buildCollapsedSpan(builder, 0, foundBookmarks[j$2]);\n }\n }\n\n if (collapsed && (collapsed.from || 0) == pos) {\n buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos, collapsed.marker, collapsed.from == null);\n\n if (collapsed.to == null) {\n return;\n }\n\n if (collapsed.to == pos) {\n collapsed = false;\n }\n }\n }\n\n if (pos >= len) {\n break;\n }\n\n var upto = Math.min(len, nextChange);\n\n while (true) {\n if (text) {\n var end = pos + text.length;\n\n if (!collapsed) {\n var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle, spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n }\n\n if (end >= upto) {\n text = text.slice(upto - pos);\n pos = upto;\n break;\n }\n\n pos = end;\n spanStartStyle = \"\";\n }\n\n text = allText.slice(at, at = styles[i++]);\n style = interpretTokenStyle(styles[i++], builder.cm.options);\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\n\n function LineView(doc, line, lineN) {\n // The starting line\n this.line = line; // Continuing lines, if any\n\n this.rest = visualLineContinued(line); // Number of logical lines in this visual line\n\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 } // Create a range of LineView objects for the given lines.\n\n\n function buildViewArray(cm, from, to) {\n var array = [],\n nextPos;\n\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\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,\n i = 0;\n\n do {\n for (; i < callbacks.length; i++) {\n callbacks[i].call(null);\n }\n\n for (var j = 0; j < group.ops.length; j++) {\n var op = group.ops[j];\n\n if (op.cursorActivityHandlers) {\n while (op.cursorActivityCalled < op.cursorActivityHandlers.length) {\n op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm);\n }\n }\n }\n } while (i < callbacks.length);\n }\n\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n\n if (!group) {\n return;\n }\n\n try {\n fireCallbacksForOps(group);\n } finally {\n operationGroup = null;\n endCb(group);\n }\n }\n\n var orphanDelayedCallbacks = null; // 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\n function signalLater(emitter, type\n /*, values...*/\n ) {\n var arr = getHandlers(emitter, type);\n\n if (!arr.length) {\n return;\n }\n\n var args = Array.prototype.slice.call(arguments, 2),\n list;\n\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\n var loop = function loop(i) {\n list.push(function () {\n return arr[i].apply(null, args);\n });\n };\n\n for (var i = 0; i < arr.length; ++i) {\n loop(i);\n }\n }\n\n function fireOrphanDelayed() {\n var delayed = orphanDelayedCallbacks;\n orphanDelayedCallbacks = null;\n\n for (var i = 0; i < delayed.length; ++i) {\n delayed[i]();\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\n\n function updateLineForChanges(cm, lineView, lineN, dims) {\n for (var j = 0; j < lineView.changes.length; j++) {\n var type = lineView.changes[j];\n\n if (type == \"text\") {\n updateLineText(cm, lineView);\n } else if (type == \"gutter\") {\n updateLineGutter(cm, lineView, lineN, dims);\n } else if (type == \"class\") {\n updateLineClasses(cm, lineView);\n } else if (type == \"widget\") {\n updateLineWidgets(cm, lineView, dims);\n }\n }\n\n lineView.changes = null;\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\n\n function ensureLineWrapped(lineView) {\n if (lineView.node == lineView.text) {\n lineView.node = elt(\"div\", null, null, \"position: relative\");\n\n if (lineView.text.parentNode) {\n lineView.text.parentNode.replaceChild(lineView.node, lineView.text);\n }\n\n lineView.node.appendChild(lineView.text);\n\n if (ie && ie_version < 8) {\n lineView.node.style.zIndex = 2;\n }\n }\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\n if (cls) {\n cls += \" CodeMirror-linebackground\";\n }\n\n if (lineView.background) {\n if (cls) {\n lineView.background.className = cls;\n } else {\n lineView.background.parentNode.removeChild(lineView.background);\n lineView.background = null;\n }\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 } // Wrapper around buildLineContent which will reuse the structure\n // in display.externalMeasured when possible.\n\n\n function getLineContent(cm, lineView) {\n var ext = cm.display.externalMeasured;\n\n if (ext && ext.line == lineView.line) {\n cm.display.externalMeasured = null;\n lineView.measure = ext.measure;\n return ext.built;\n }\n\n return buildLineContent(cm, lineView);\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\n\n function updateLineText(cm, lineView) {\n var cls = lineView.text.className;\n var built = getLineContent(cm, lineView);\n\n if (lineView.text == lineView.node) {\n lineView.node = built.pre;\n }\n\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n lineView.text = built.pre;\n\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\n if (lineView.line.wrapClass) {\n ensureLineWrapped(lineView).className = lineView.line.wrapClass;\n } else if (lineView.node != lineView.text) {\n lineView.node.className = \"\";\n }\n\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\n if (lineView.gutterBackground) {\n lineView.node.removeChild(lineView.gutterBackground);\n lineView.gutterBackground = null;\n }\n\n if (lineView.line.gutterClass) {\n var wrap = ensureLineWrapped(lineView);\n lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass, \"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\n var markers = lineView.line.gutterMarkers;\n\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 cm.display.input.setUneditable(gutterWrap);\n wrap$1.insertBefore(gutterWrap, lineView.text);\n\n if (lineView.line.gutterClass) {\n gutterWrap.className += \" \" + lineView.line.gutterClass;\n }\n\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"])) {\n lineView.lineNumber = gutterWrap.appendChild(elt(\"div\", lineNumberFor(cm.options, lineN), \"CodeMirror-linenumber CodeMirror-gutter-elt\", \"left: \" + dims.gutterLeft[\"CodeMirror-linenumbers\"] + \"px; width: \" + cm.display.lineNumInnerWidth + \"px\"));\n }\n\n if (markers) {\n for (var k = 0; k < cm.display.gutterSpecs.length; ++k) {\n var id = cm.display.gutterSpecs[k].className,\n found = markers.hasOwnProperty(id) && markers[id];\n\n if (found) {\n gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\", \"left: \" + dims.gutterLeft[id] + \"px; width: \" + dims.gutterWidth[id] + \"px\"));\n }\n }\n }\n }\n }\n\n function updateLineWidgets(cm, lineView, dims) {\n if (lineView.alignable) {\n lineView.alignable = null;\n }\n\n for (var node = lineView.node.firstChild, next = void 0; node; node = next) {\n next = node.nextSibling;\n\n if (node.className == \"CodeMirror-linewidget\") {\n lineView.node.removeChild(node);\n }\n }\n\n insertLineWidgets(cm, lineView, dims);\n } // Build a line's DOM representation from scratch\n\n\n function buildLineElement(cm, lineView, lineN, dims) {\n var built = getLineContent(cm, lineView);\n lineView.text = lineView.node = built.pre;\n\n if (built.bgClass) {\n lineView.bgClass = built.bgClass;\n }\n\n if (built.textClass) {\n lineView.textClass = built.textClass;\n }\n\n updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node;\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\n\n function insertLineWidgets(cm, lineView, dims) {\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n\n if (lineView.rest) {\n for (var i = 0; i < lineView.rest.length; i++) {\n insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false);\n }\n }\n }\n\n function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n if (!line.widgets) {\n return;\n }\n\n var wrap = ensureLineWrapped(lineView);\n\n for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n var widget = ws[i],\n node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\");\n\n if (!widget.handleMouseEvents) {\n node.setAttribute(\"cm-ignore-events\", \"true\");\n }\n\n positionLineWidget(widget, node, lineView, dims);\n cm.display.input.setUneditable(node);\n\n if (allowAbove && widget.above) {\n wrap.insertBefore(node, lineView.gutter || lineView.text);\n } else {\n wrap.appendChild(node);\n }\n\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\n if (!widget.coverGutter) {\n width -= dims.gutterTotalWidth;\n node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n }\n\n node.style.width = width + \"px\";\n }\n\n if (widget.coverGutter) {\n node.style.zIndex = 5;\n node.style.position = \"relative\";\n\n if (!widget.noHScroll) {\n node.style.marginLeft = -dims.gutterTotalWidth + \"px\";\n }\n }\n }\n\n function widgetHeight(widget) {\n if (widget.height != null) {\n return widget.height;\n }\n\n var cm = widget.doc.cm;\n\n if (!cm) {\n return 0;\n }\n\n if (!contains(document.body, widget.node)) {\n var parentStyle = \"position: relative;\";\n\n if (widget.coverGutter) {\n parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\";\n }\n\n if (widget.noHScroll) {\n parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\";\n }\n\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n }\n\n return widget.height = widget.node.parentNode.offsetHeight;\n } // Return true when the given mouse event happened in a widget\n\n\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.parentNode == display.sizer && n != display.mover) {\n return true;\n }\n }\n } // POSITION MEASUREMENT\n\n\n function paddingTop(display) {\n return display.lineSpace.offsetTop;\n }\n\n function paddingVert(display) {\n return display.mover.offsetHeight - display.lineSpace.offsetHeight;\n }\n\n function paddingH(display) {\n if (display.cachedPaddingH) {\n return display.cachedPaddingH;\n }\n\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 = {\n left: parseInt(style.paddingLeft),\n right: parseInt(style.paddingRight)\n };\n\n if (!isNaN(data.left) && !isNaN(data.right)) {\n display.cachedPaddingH = data;\n }\n\n return data;\n }\n\n function scrollGap(cm) {\n return scrollerGap - cm.display.nativeBarWidth;\n }\n\n function displayWidth(cm) {\n return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth;\n }\n\n function displayHeight(cm) {\n return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight;\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\n\n function ensureLineHeights(cm, lineView, rect) {\n var wrapping = cm.options.lineWrapping;\n var curWidth = wrapping && displayWidth(cm);\n\n if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n var heights = lineView.measure.heights = [];\n\n if (wrapping) {\n lineView.measure.width = curWidth;\n var rects = lineView.text.firstChild.getClientRects();\n\n for (var i = 0; i < rects.length - 1; i++) {\n var cur = rects[i],\n next = rects[i + 1];\n\n if (Math.abs(cur.bottom - next.bottom) > 2) {\n heights.push((cur.bottom + next.top) / 2 - rect.top);\n }\n }\n }\n\n heights.push(rect.bottom - rect.top);\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\n\n function mapFromLineView(lineView, line, lineN) {\n if (lineView.line == line) {\n return {\n map: lineView.measure.map,\n cache: lineView.measure.cache\n };\n }\n\n for (var i = 0; i < lineView.rest.length; i++) {\n if (lineView.rest[i] == line) {\n return {\n map: lineView.measure.maps[i],\n cache: lineView.measure.caches[i]\n };\n }\n }\n\n for (var i$1 = 0; i$1 < lineView.rest.length; i$1++) {\n if (lineNo(lineView.rest[i$1]) > lineN) {\n return {\n map: lineView.measure.maps[i$1],\n cache: lineView.measure.caches[i$1],\n 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\n\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 } // Get a {top, bottom, left, right} box (in line-local coordinates)\n // for a given character.\n\n\n function measureChar(cm, line, ch, bias) {\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias);\n } // Find a line view that corresponds to the given line number.\n\n\n function findViewForLine(cm, lineN) {\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo) {\n return cm.display.view[findViewIndex(cm, lineN)];\n }\n\n var ext = cm.display.externalMeasured;\n\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size) {\n return ext;\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\n\n function prepareMeasureForLine(cm, line) {\n var lineN = lineNo(line);\n var view = findViewForLine(cm, lineN);\n\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\n if (!view) {\n view = updateExternalMeasurement(cm, line);\n }\n\n var info = mapFromLineView(view, line, lineN);\n return {\n line: line,\n view: view,\n rect: null,\n map: info.map,\n cache: info.cache,\n before: info.before,\n hasHeights: false\n };\n } // Given a prepared measurement object, measures the position of an\n // actual character (or fetches it from the cache).\n\n\n function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n if (prepared.before) {\n ch = -1;\n }\n\n var key = ch + (bias || \"\"),\n found;\n\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 }\n\n if (!prepared.hasHeights) {\n ensureLineHeights(cm, prepared.view, prepared.rect);\n prepared.hasHeights = true;\n }\n\n found = measureCharInner(cm, prepared, ch, bias);\n\n if (!found.bogus) {\n prepared.cache[key] = found;\n }\n }\n\n return {\n left: found.left,\n right: found.right,\n top: varHeight ? found.rtop : found.top,\n bottom: varHeight ? found.rbottom : found.bottom\n };\n }\n\n var nullRect = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n\n function nodeAndOffsetInLineMap(map$$1, ch, bias) {\n var node, start, end, collapse, mStart, mEnd; // First, search the line map for the text node corresponding to,\n // or closest to, the target character.\n\n for (var i = 0; i < map$$1.length; i += 3) {\n mStart = map$$1[i];\n mEnd = map$$1[i + 1];\n\n if (ch < mStart) {\n start = 0;\n end = 1;\n collapse = \"left\";\n } else if (ch < mEnd) {\n start = ch - mStart;\n end = start + 1;\n } else if (i == map$$1.length - 3 || ch == mEnd && map$$1[i + 3] > ch) {\n end = mEnd - mStart;\n start = end - 1;\n\n if (ch >= mEnd) {\n collapse = \"right\";\n }\n }\n\n if (start != null) {\n node = map$$1[i + 2];\n\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\")) {\n collapse = bias;\n }\n\n if (bias == \"left\" && start == 0) {\n while (i && map$$1[i - 2] == map$$1[i - 3] && map$$1[i - 1].insertLeft) {\n node = map$$1[(i -= 3) + 2];\n collapse = \"left\";\n }\n }\n\n if (bias == \"right\" && start == mEnd - mStart) {\n while (i < map$$1.length - 3 && map$$1[i + 3] == map$$1[i + 4] && !map$$1[i + 5].insertLeft) {\n node = map$$1[(i += 3) + 2];\n collapse = \"right\";\n }\n }\n\n break;\n }\n }\n\n return {\n node: node,\n start: start,\n end: end,\n collapse: collapse,\n coverStart: mStart,\n coverEnd: mEnd\n };\n }\n\n function getUsefulRect(rects, bias) {\n var rect = nullRect;\n\n if (bias == \"left\") {\n for (var i = 0; i < rects.length; i++) {\n if ((rect = rects[i]).left != rect.right) {\n break;\n }\n }\n } else {\n for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n if ((rect = rects[i$1]).left != rect.right) {\n break;\n }\n }\n }\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,\n start = place.start,\n end = place.end,\n collapse = place.collapse;\n var rect;\n\n if (node.nodeType == 3) {\n // If it is a text node, use a range to retrieve the coordinates.\n for (var i$1 = 0; i$1 < 4; i$1++) {\n // Retry a maximum of 4 times when nonsense rectangles are returned\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) {\n --start;\n }\n\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) {\n ++end;\n }\n\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 }\n\n if (rect.left || rect.right || start == 0) {\n break;\n }\n\n end = start;\n start = start - 1;\n collapse = \"right\";\n }\n\n if (ie && ie_version < 11) {\n rect = maybeUpdateRectForZooming(cm.display.measure, rect);\n }\n } else {\n // If it is a widget, simply get the box for the whole widget.\n if (start > 0) {\n collapse = bias = \"right\";\n }\n\n var rects;\n\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 }\n\n if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n var rSpan = node.parentNode.getClientRects()[0];\n\n if (rSpan) {\n rect = {\n left: rSpan.left,\n right: rSpan.left + charWidth(cm.display),\n top: rSpan.top,\n bottom: rSpan.bottom\n };\n } else {\n rect = nullRect;\n }\n }\n\n var rtop = rect.top - prepared.rect.top,\n rbot = rect.bottom - prepared.rect.top;\n var mid = (rtop + rbot) / 2;\n var heights = prepared.view.measure.heights;\n var i = 0;\n\n for (; i < heights.length - 1; i++) {\n if (mid < heights[i]) {\n break;\n }\n }\n\n var top = i ? heights[i - 1] : 0,\n bot = heights[i];\n var result = {\n left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n top: top,\n bottom: bot\n };\n\n if (!rect.left && !rect.right) {\n result.bogus = true;\n }\n\n if (!cm.options.singleCursorHeightPerLine) {\n result.rtop = rtop;\n result.rbottom = rbot;\n }\n\n return result;\n } // Work around problem with bounding client rects on ranges being\n // returned incorrectly when zoomed on IE10 and below.\n\n\n function maybeUpdateRectForZooming(measure, rect) {\n if (!window.screen || screen.logicalXDPI == null || screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure)) {\n return rect;\n }\n\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n return {\n left: rect.left * scaleX,\n right: rect.right * scaleX,\n top: rect.top * scaleY,\n bottom: rect.bottom * scaleY\n };\n }\n\n function clearLineMeasurementCacheFor(lineView) {\n if (lineView.measure) {\n lineView.measure.cache = {};\n lineView.measure.heights = null;\n\n if (lineView.rest) {\n for (var i = 0; i < lineView.rest.length; i++) {\n lineView.measure.caches[i] = {};\n }\n }\n }\n }\n\n function clearLineMeasurementCache(cm) {\n cm.display.externalMeasure = null;\n removeChildren(cm.display.lineMeasure);\n\n for (var i = 0; i < cm.display.view.length; i++) {\n clearLineMeasurementCacheFor(cm.display.view[i]);\n }\n }\n\n function clearCaches(cm) {\n clearLineMeasurementCache(cm);\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n\n if (!cm.options.lineWrapping) {\n cm.display.maxLineChanged = true;\n }\n\n cm.display.lineNumChars = null;\n }\n\n function pageScrollX() {\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) {\n return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft));\n }\n\n return window.pageXOffset || (document.documentElement || document.body).scrollLeft;\n }\n\n function pageScrollY() {\n if (chrome && android) {\n return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop));\n }\n\n return window.pageYOffset || (document.documentElement || document.body).scrollTop;\n }\n\n function widgetTopHeight(lineObj) {\n var height = 0;\n\n if (lineObj.widgets) {\n for (var i = 0; i < lineObj.widgets.length; ++i) {\n if (lineObj.widgets[i].above) {\n height += widgetHeight(lineObj.widgets[i]);\n }\n }\n }\n\n return height;\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\n\n function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n if (!includeWidgets) {\n var height = widgetTopHeight(lineObj);\n rect.top += height;\n rect.bottom += height;\n }\n\n if (context == \"line\") {\n return rect;\n }\n\n if (!context) {\n context = \"local\";\n }\n\n var yOff = _heightAtLine(lineObj);\n\n if (context == \"local\") {\n yOff += paddingTop(cm.display);\n } else {\n yOff -= cm.display.viewOffset;\n }\n\n if (context == \"page\" || context == \"window\") {\n var lOff = cm.display.lineSpace.getBoundingClientRect();\n yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n rect.left += xOff;\n rect.right += xOff;\n }\n\n rect.top += yOff;\n rect.bottom += yOff;\n return rect;\n } // Coverts a box from \"div\" coords to another coordinate system.\n // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n\n\n function fromCoordSystem(cm, coords, context) {\n if (context == \"div\") {\n return coords;\n }\n\n var left = coords.left,\n top = coords.top; // First move into \"page\" coordinate system\n\n if (context == \"page\") {\n left -= pageScrollX();\n top -= pageScrollY();\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 {\n left: left - lineSpaceBox.left,\n top: top - lineSpaceBox.top\n };\n }\n\n function _charCoords(cm, pos, context, lineObj, bias) {\n if (!lineObj) {\n lineObj = getLine(cm.doc, pos.line);\n }\n\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context);\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\n\n function _cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n lineObj = lineObj || getLine(cm.doc, pos.line);\n\n if (!preparedMeasure) {\n preparedMeasure = prepareMeasureForLine(cm, lineObj);\n }\n\n function get(ch, right) {\n var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n\n if (right) {\n m.left = m.right;\n } else {\n m.right = m.left;\n }\n\n return intoCoordSystem(cm, lineObj, m, context);\n }\n\n var order = getOrder(lineObj, cm.doc.direction),\n ch = pos.ch,\n sticky = pos.sticky;\n\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\n if (!order) {\n return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\");\n }\n\n function getBidi(ch, partPos, invert) {\n var part = order[partPos],\n right = part.level == 1;\n return get(invert ? ch - 1 : ch, right != invert);\n }\n\n var partPos = getBidiPartAt(order, ch, sticky);\n var other = bidiOther;\n var val = getBidi(ch, partPos, sticky == \"before\");\n\n if (other != null) {\n val.other = getBidi(ch, other, sticky != \"before\");\n }\n\n return val;\n } // Used to cheaply estimate the coordinates for a position. Used for\n // intermediate scroll updates.\n\n\n function estimateCoords(cm, pos) {\n var left = 0;\n pos = _clipPos(cm.doc, pos);\n\n if (!cm.options.lineWrapping) {\n left = charWidth(cm.display) * pos.ch;\n }\n\n var lineObj = getLine(cm.doc, pos.line);\n var top = _heightAtLine(lineObj) + paddingTop(cm.display);\n return {\n left: left,\n right: left,\n top: top,\n bottom: top + lineObj.height\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\n\n function PosWithInfo(line, ch, sticky, outside, xRel) {\n var pos = Pos(line, ch, sticky);\n pos.xRel = xRel;\n\n if (outside) {\n pos.outside = outside;\n }\n\n return pos;\n } // Compute the character position closest to the given coordinates.\n // Input must be lineSpace-local (\"div\" coordinate system).\n\n\n function _coordsChar(cm, x, y) {\n var doc = cm.doc;\n y += cm.display.viewOffset;\n\n if (y < 0) {\n return PosWithInfo(doc.first, 0, null, -1, -1);\n }\n\n var lineN = _lineAtHeight(doc, y),\n last = doc.first + doc.size - 1;\n\n if (lineN > last) {\n return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1);\n }\n\n if (x < 0) {\n x = 0;\n }\n\n var lineObj = getLine(doc, lineN);\n\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\n if (!collapsed) {\n return found;\n }\n\n var rangeEnd = collapsed.find(1);\n\n if (rangeEnd.line == lineN) {\n return rangeEnd;\n }\n\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) {\n return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y;\n }, end, 0);\n end = findFirst(function (ch) {\n return measureCharPrepared(cm, preparedMeasure, ch).top > y;\n }, begin, end);\n return {\n begin: begin,\n end: end\n };\n }\n\n function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n if (!preparedMeasure) {\n preparedMeasure = prepareMeasureForLine(cm, lineObj);\n }\n\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop);\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\n\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$$1, x, y) {\n // Move y into line-local coordinate space\n y -= _heightAtLine(lineObj);\n var preparedMeasure = prepareMeasureForLine(cm, lineObj); // When directly calling `measureCharPrepared`, we have to adjust\n // for the widgets at this line.\n\n var widgetHeight$$1 = widgetTopHeight(lineObj);\n var begin = 0,\n end = lineObj.text.length,\n ltr = true;\n var order = getOrder(lineObj, cm.doc.direction); // If the line isn't plain left-to-right text, first figure out\n // which bidi section the coordinates fall into.\n\n if (order) {\n var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)(cm, lineObj, lineNo$$1, preparedMeasure, order, x, y);\n ltr = part.level != 1; // 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\n begin = ltr ? part.from : part.to - 1;\n end = ltr ? part.to : part.from - 1;\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\n\n var chAround = null,\n boxAround = null;\n var ch = findFirst(function (ch) {\n var box = measureCharPrepared(cm, preparedMeasure, ch);\n box.top += widgetHeight$$1;\n box.bottom += widgetHeight$$1;\n\n if (!boxIsAfter(box, x, y, false)) {\n return false;\n }\n\n if (box.top <= y && box.left <= x) {\n chAround = ch;\n boxAround = box;\n }\n\n return true;\n }, begin, end);\n var baseX,\n sticky,\n outside = false; // If a box around the coordinates was found, use that\n\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,\n 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)) {\n 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\n\n sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" : measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight$$1 <= y == ltr ? \"after\" : \"before\"; // Now get accurate coordinates for this place, in order to get a\n // base X position\n\n var coords = _cursorCoords(cm, Pos(lineNo$$1, ch, sticky), \"line\", lineObj, preparedMeasure);\n\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$$1, ch, sticky, outside, x - baseX);\n }\n\n function coordsBidiPart(cm, lineObj, lineNo$$1, 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],\n ltr = part.level != 1;\n return boxIsAfter(_cursorCoords(cm, Pos(lineNo$$1, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"), \"line\", lineObj, preparedMeasure), x, y, true);\n }, 0, order.length - 1);\n var part = order[index]; // 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\n if (index > 0) {\n var ltr = part.level != 1;\n\n var start = _cursorCoords(cm, Pos(lineNo$$1, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"), \"line\", lineObj, preparedMeasure);\n\n if (boxIsAfter(start, x, y, true) && start.top > y) {\n part = order[index - 1];\n }\n }\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\n if (/\\s/.test(lineObj.text.charAt(end - 1))) {\n end--;\n }\n\n var part = null,\n closestDist = null;\n\n for (var i = 0; i < order.length; i++) {\n var p = order[i];\n\n if (p.from >= end || p.to <= begin) {\n continue;\n }\n\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; // Weigh against spans ending before this, so that they are only\n // picked if nothing ends after\n\n var dist = endX < x ? x - endX + 1e9 : endX - x;\n\n if (!part || closestDist > dist) {\n part = p;\n closestDist = dist;\n }\n }\n\n if (!part) {\n part = order[order.length - 1];\n } // Clip the part to the wrapped line.\n\n\n if (part.from < begin) {\n part = {\n from: begin,\n to: part.to,\n level: part.level\n };\n }\n\n if (part.to > end) {\n part = {\n from: part.from,\n to: end,\n level: part.level\n };\n }\n\n return part;\n }\n\n var measureText; // Compute the default text height.\n\n function textHeight(display) {\n if (display.cachedTextHeight != null) {\n return display.cachedTextHeight;\n }\n\n if (measureText == null) {\n measureText = elt(\"pre\", null, \"CodeMirror-line-like\"); // Measure a bunch of lines, for browsers that compute\n // fractional heights.\n\n for (var i = 0; i < 49; ++i) {\n measureText.appendChild(document.createTextNode(\"x\"));\n measureText.appendChild(elt(\"br\"));\n }\n\n measureText.appendChild(document.createTextNode(\"x\"));\n }\n\n removeChildrenAndAdd(display.measure, measureText);\n var height = measureText.offsetHeight / 50;\n\n if (height > 3) {\n display.cachedTextHeight = height;\n }\n\n removeChildren(display.measure);\n return height || 1;\n } // Compute the default character width.\n\n\n function charWidth(display) {\n if (display.cachedCharWidth != null) {\n return display.cachedCharWidth;\n }\n\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(),\n width = (rect.right - rect.left) / 10;\n\n if (width > 2) {\n display.cachedCharWidth = width;\n }\n\n return width || 10;\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\n\n function getDimensions(cm) {\n var d = cm.display,\n left = {},\n width = {};\n var gutterLeft = d.gutters.clientLeft;\n\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\n return {\n fixedPos: compensateForHScroll(d),\n gutterTotalWidth: d.gutters.offsetWidth,\n gutterLeft: left,\n gutterWidth: width,\n wrapperWidth: d.wrapper.clientWidth\n };\n } // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n // but using getBoundingClientRect to get a sub-pixel-accurate\n // result.\n\n\n function compensateForHScroll(display) {\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left;\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\n\n function estimateHeight(cm) {\n var th = textHeight(cm.display),\n 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)) {\n return 0;\n }\n\n var widgetsHeight = 0;\n\n if (line.widgets) {\n for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].height) {\n widgetsHeight += line.widgets[i].height;\n }\n }\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\n function estimateLineHeights(cm) {\n var doc = cm.doc,\n est = estimateHeight(cm);\n doc.iter(function (line) {\n var estHeight = est(line);\n\n if (estHeight != line.height) {\n updateLineHeight(line, estHeight);\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\n\n function posFromMouse(cm, e, liberal, forRect) {\n var display = cm.display;\n\n if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") {\n return null;\n }\n\n var x,\n y,\n space = display.lineSpace.getBoundingClientRect(); // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n\n try {\n x = e.clientX - space.left;\n y = e.clientY - space.top;\n } catch (e) {\n return null;\n }\n\n var coords = _coordsChar(cm, x, y),\n line;\n\n if (forRect && coords.xRel == 1 && (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\n return coords;\n } // Find the view element corresponding to a given line. Return null\n // when the line isn't visible.\n\n\n function findViewIndex(cm, n) {\n if (n >= cm.display.viewTo) {\n return null;\n }\n\n n -= cm.display.viewFrom;\n\n if (n < 0) {\n return null;\n }\n\n var view = cm.display.view;\n\n for (var i = 0; i < view.length; i++) {\n n -= view[i].size;\n\n if (n < 0) {\n return i;\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\n\n function regChange(cm, from, to, lendiff) {\n if (from == null) {\n from = cm.doc.first;\n }\n\n if (to == null) {\n to = cm.doc.first + cm.doc.size;\n }\n\n if (!lendiff) {\n lendiff = 0;\n }\n\n var display = cm.display;\n\n if (lendiff && to < display.viewTo && (display.updateLineNumbers == null || display.updateLineNumbers > from)) {\n display.updateLineNumbers = from;\n }\n\n cm.curOp.viewChanged = true;\n\n if (from >= display.viewTo) {\n // Change after\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo) {\n resetView(cm);\n }\n } else if (to <= display.viewFrom) {\n // 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) {\n // Full overlap\n resetView(cm);\n } else if (from <= display.viewFrom) {\n // Top overlap\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n\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) {\n // Bottom overlap\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\n\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 {\n // Gap in the middle\n var cutTop = viewCuttingPoint(cm, from, from, -1);\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n\n if (cutTop && cutBot) {\n display.view = display.view.slice(0, cutTop.index).concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN)).concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n }\n\n var ext = display.externalMeasured;\n\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 } // Register a change to a single line. Type must be one of \"text\",\n // \"gutter\", \"class\", \"widget\"\n\n\n function regLineChange(cm, line, type) {\n cm.curOp.viewChanged = true;\n var display = cm.display,\n ext = cm.display.externalMeasured;\n\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size) {\n display.externalMeasured = null;\n }\n\n if (line < display.viewFrom || line >= display.viewTo) {\n return;\n }\n\n var lineView = display.view[findViewIndex(cm, line)];\n\n if (lineView.node == null) {\n return;\n }\n\n var arr = lineView.changes || (lineView.changes = []);\n\n if (indexOf(arr, type) == -1) {\n arr.push(type);\n }\n } // Clear the view.\n\n\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),\n diff,\n view = cm.display.view;\n\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size) {\n return {\n index: index,\n lineN: newN\n };\n }\n\n var n = cm.display.viewFrom;\n\n for (var i = 0; i < index; i++) {\n n += view[i].size;\n }\n\n if (n != oldN) {\n if (dir > 0) {\n if (index == view.length - 1) {\n return null;\n }\n\n diff = n + view[index].size - oldN;\n index++;\n } else {\n diff = n - oldN;\n }\n\n oldN += diff;\n newN += diff;\n }\n\n while (visualLineNo(cm.doc, newN) != newN) {\n if (index == (dir < 0 ? 0 : view.length - 1)) {\n return null;\n }\n\n newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n index += dir;\n }\n\n return {\n index: index,\n lineN: newN\n };\n } // Force the view to cover a given range, adding empty view element\n // or clipping off existing ones as needed.\n\n\n function adjustView(cm, from, to) {\n var display = cm.display,\n view = display.view;\n\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 }\n\n display.viewFrom = from;\n\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 }\n\n display.viewTo = to;\n } // Count the number of lines in the view whose DOM representation is\n // out of date (or nonexistent).\n\n\n function countDirtyView(cm) {\n var view = cm.display.view,\n dirty = 0;\n\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n\n if (!lineView.hidden && (!lineView.node || lineView.changes)) {\n ++dirty;\n }\n }\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 var doc = cm.doc,\n result = {};\n var curFragment = result.cursors = document.createDocumentFragment();\n var selFragment = result.selection = document.createDocumentFragment();\n\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n if (!primary && i == doc.sel.primIndex) {\n continue;\n }\n\n var range$$1 = doc.sel.ranges[i];\n\n if (range$$1.from().line >= cm.display.viewTo || range$$1.to().line < cm.display.viewFrom) {\n continue;\n }\n\n var collapsed = range$$1.empty();\n\n if (collapsed || cm.options.showCursorWhenSelecting) {\n drawSelectionCursor(cm, range$$1.head, curFragment);\n }\n\n if (!collapsed) {\n drawSelectionRange(cm, range$$1, selFragment);\n }\n }\n\n return result;\n } // Draws a cursor for the given range\n\n\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\", \"\\xA0\", \"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 (pos.other) {\n // Secondary cursor, shown when on a 'jump' in bi-directional text\n var otherCursor = output.appendChild(elt(\"div\", \"\\xA0\", \"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) {\n return a.top - b.top || a.left - b.left;\n } // Draws the given range as a highlighted selection\n\n\n function drawSelectionRange(cm, range$$1, output) {\n var display = cm.display,\n doc = cm.doc;\n var fragment = document.createDocumentFragment();\n var padding = paddingH(cm.display),\n 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) {\n top = 0;\n }\n\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\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 var openStart = fromArg == null && from == 0,\n openEnd = toArg == null && to == lineLen;\n var first = i == 0,\n last = !order || i == order.length - 1;\n\n if (toPos.top - fromPos.top <= 3) {\n // 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 {\n // Multiple lines\n var topLeft, topRight, botLeft, botRight;\n\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\n add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n\n if (fromPos.bottom < toPos.top) {\n add(leftSide, fromPos.bottom, null, toPos.top);\n }\n\n add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n }\n\n if (!start || cmpCoords(fromPos, start) < 0) {\n start = fromPos;\n }\n\n if (cmpCoords(toPos, start) < 0) {\n start = toPos;\n }\n\n if (!end || cmpCoords(fromPos, end) < 0) {\n end = fromPos;\n }\n\n if (cmpCoords(toPos, end) < 0) {\n end = toPos;\n }\n });\n return {\n start: start,\n end: end\n };\n }\n\n var sFrom = range$$1.from(),\n sTo = range$$1.to();\n\n if (sFrom.line == sTo.line) {\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n } else {\n var fromLine = getLine(doc, sFrom.line),\n 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\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\n if (leftEnd.bottom < rightStart.top) {\n add(leftSide, leftEnd.bottom, null, rightStart.top);\n }\n }\n\n output.appendChild(fragment);\n } // Cursor-blinking\n\n\n function restartBlink(cm) {\n if (!cm.state.focused) {\n return;\n }\n\n var display = cm.display;\n clearInterval(display.blinker);\n var on = true;\n display.cursorDiv.style.visibility = \"\";\n\n if (cm.options.cursorBlinkRate > 0) {\n display.blinker = setInterval(function () {\n return 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\n function ensureFocus(cm) {\n if (!cm.state.focused) {\n cm.display.input.focus();\n onFocus(cm);\n }\n }\n\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function () {\n if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n onBlur(cm);\n }\n }, 100);\n }\n\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n }\n\n if (cm.options.readOnly == \"nocursor\") {\n return;\n }\n\n if (!cm.state.focused) {\n signal(cm, \"focus\", cm, e);\n cm.state.focused = true;\n addClass(cm.display.wrapper, \"CodeMirror-focused\"); // 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\n if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n cm.display.input.reset();\n\n if (webkit) {\n setTimeout(function () {\n return cm.display.input.reset(true);\n }, 20);\n } // Issue #1730\n\n }\n\n cm.display.input.receivedFocus();\n }\n\n restartBlink(cm);\n }\n\n function onBlur(cm, e) {\n if (cm.state.delayingBlurEvent) {\n return;\n }\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\n clearInterval(cm.display.blinker);\n setTimeout(function () {\n if (!cm.state.focused) {\n cm.display.shift = false;\n }\n }, 150);\n } // Read the actual heights of the rendered lines, and update their\n // stored heights to match.\n\n\n function updateHeightsInViewport(cm) {\n var display = cm.display;\n var prevBottom = display.lineDiv.offsetTop;\n\n for (var i = 0; i < display.view.length; i++) {\n var cur = display.view[i],\n wrapping = cm.options.lineWrapping;\n var height = void 0,\n width = 0;\n\n if (cur.hidden) {\n continue;\n }\n\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; // Check that lines don't extend past the right of the current\n // editor width\n\n if (!wrapping && cur.text.firstChild) {\n width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1;\n }\n }\n\n var diff = cur.line.height - height;\n\n if (diff > .005 || diff < -.005) {\n updateLineHeight(cur.line, height);\n updateWidgetHeight(cur.line);\n\n if (cur.rest) {\n for (var j = 0; j < cur.rest.length; j++) {\n updateWidgetHeight(cur.rest[j]);\n }\n }\n }\n\n if (width > cm.display.sizerWidth) {\n var chWidth = Math.ceil(width / charWidth(cm.display));\n\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 } // Read and store the height of line widgets associated with the\n // given line.\n\n\n function updateWidgetHeight(line) {\n if (line.widgets) {\n for (var i = 0; i < line.widgets.length; ++i) {\n var w = line.widgets[i],\n parent = w.node.parentNode;\n\n if (parent) {\n 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\n\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),\n to = _lineAtHeight(doc, bottom); // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n // forces those lines into the viewport (if possible).\n\n\n if (viewport && viewport.ensure) {\n var ensureFrom = viewport.ensure.from.line,\n ensureTo = viewport.ensure.to.line;\n\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\n return {\n from: from,\n to: Math.max(to, from + 1)\n };\n } // SCROLLING THINGS INTO VIEW\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\n\n function maybeScrollWindow(cm, rect) {\n if (signalDOMEvent(cm, \"scrollCursorIntoView\")) {\n return;\n }\n\n var display = cm.display,\n box = display.sizer.getBoundingClientRect(),\n doScroll = null;\n\n if (rect.top + box.top < 0) {\n doScroll = true;\n } else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) {\n doScroll = false;\n }\n\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 } // 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\n\n function scrollPosIntoView(cm, pos, end, margin) {\n if (margin == null) {\n margin = 0;\n }\n\n var rect;\n\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 pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n }\n\n for (var limit = 0; limit < 5; limit++) {\n var changed = false;\n\n var coords = _cursorCoords(cm, pos);\n\n var endCoords = !end || end == pos ? coords : _cursorCoords(cm, end);\n rect = {\n 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 };\n var scrollPos = calculateScrollPos(cm, rect);\n var startTop = cm.doc.scrollTop,\n startLeft = cm.doc.scrollLeft;\n\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) {\n changed = true;\n }\n }\n\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) {\n changed = true;\n }\n }\n\n if (!changed) {\n break;\n }\n }\n\n return rect;\n } // Scroll a given set of coordinates into view (immediately).\n\n\n function scrollIntoView(cm, rect) {\n var scrollPos = calculateScrollPos(cm, rect);\n\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n }\n\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\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\n\n function calculateScrollPos(cm, rect) {\n var display = cm.display,\n snapMargin = textHeight(cm.display);\n\n if (rect.top < 0) {\n rect.top = 0;\n }\n\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n var screen = displayHeight(cm),\n result = {};\n\n if (rect.bottom - rect.top > screen) {\n rect.bottom = rect.top + screen;\n }\n\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin,\n atBottom = rect.bottom > docBottom - snapMargin;\n\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\n if (newTop != screentop) {\n result.scrollTop = newTop;\n }\n }\n\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft;\n var screenw = displayWidth(cm) - (cm.options.fixedGutter ? display.gutters.offsetWidth : 0);\n var tooWide = rect.right - rect.left > screenw;\n\n if (tooWide) {\n rect.right = rect.left + screenw;\n }\n\n if (rect.left < 10) {\n result.scrollLeft = 0;\n } else if (rect.left < screenleft) {\n result.scrollLeft = Math.max(0, rect.left - (tooWide ? 0 : 10));\n } else if (rect.right > screenw + screenleft - 3) {\n result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw;\n }\n\n return result;\n } // Store a relative adjustment to the scroll position in the current\n // operation (to be applied when the operation finishes).\n\n\n function addToScrollTop(cm, top) {\n if (top == null) {\n return;\n }\n\n resolveScrollToPos(cm);\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n } // Make sure that at the end of the operation the current cursor is\n // shown.\n\n\n function ensureCursorVisible(cm) {\n resolveScrollToPos(cm);\n var cur = cm.getCursor();\n cm.curOp.scrollToPos = {\n from: cur,\n to: cur,\n margin: cm.options.cursorScrollMargin\n };\n }\n\n function scrollToCoords(cm, x, y) {\n if (x != null || y != null) {\n resolveScrollToPos(cm);\n }\n\n if (x != null) {\n cm.curOp.scrollLeft = x;\n }\n\n if (y != null) {\n cm.curOp.scrollTop = y;\n }\n }\n\n function scrollToRange(cm, range$$1) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range$$1;\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\n\n function resolveScrollToPos(cm) {\n var range$$1 = cm.curOp.scrollToPos;\n\n if (range$$1) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range$$1.from),\n to = estimateCoords(cm, range$$1.to);\n scrollToCoordsRange(cm, from, to, range$$1.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 } // Sync the scrollable area and scrollbars, ensure the viewport\n // covers the visible area.\n\n\n function updateScrollTop(cm, val) {\n if (Math.abs(cm.doc.scrollTop - val) < 2) {\n return;\n }\n\n if (!gecko) {\n updateDisplaySimple(cm, {\n top: val\n });\n }\n\n setScrollTop(cm, val, true);\n\n if (gecko) {\n updateDisplaySimple(cm);\n }\n\n startWorker(cm, 100);\n }\n\n function setScrollTop(cm, val, forceScroll) {\n val = Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val);\n\n if (cm.display.scroller.scrollTop == val && !forceScroll) {\n return;\n }\n\n cm.doc.scrollTop = val;\n cm.display.scrollbars.setScrollTop(val);\n\n if (cm.display.scroller.scrollTop != val) {\n cm.display.scroller.scrollTop = val;\n }\n } // Sync scroller and scrollbar, ensure the gutter elements are\n // aligned.\n\n\n function setScrollLeft(cm, val, isScroller, forceScroll) {\n val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth);\n\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) {\n return;\n }\n\n cm.doc.scrollLeft = val;\n alignHorizontally(cm);\n\n if (cm.display.scroller.scrollLeft != val) {\n cm.display.scroller.scrollLeft = val;\n }\n\n cm.display.scrollbars.setScrollLeft(val);\n } // SCROLLBARS\n // Prepare DOM reads needed to update the scrollbars. Done in one\n // shot to minimize update/measure roundtrips.\n\n\n function measureForScrollbars(cm) {\n var d = cm.display,\n 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,\n 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 NativeScrollbars(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);\n place(horiz);\n on(vert, \"scroll\", function () {\n if (vert.clientHeight) {\n scroll(vert.scrollTop, \"vertical\");\n }\n });\n on(horiz, \"scroll\", function () {\n if (horiz.clientWidth) {\n scroll(horiz.scrollLeft, \"horizontal\");\n }\n });\n this.checkedZeroWidth = false; // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n\n if (ie && ie_version < 8) {\n this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\";\n }\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); // A bug in IE8 can cause this value to be negative, so guard it.\n\n this.vert.firstChild.style.height = Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n } else {\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 = 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) {\n this.zeroWidthHack();\n }\n\n this.checkedZeroWidth = true;\n }\n\n return {\n right: needsV ? sWidth : 0,\n bottom: needsH ? sWidth : 0\n };\n };\n\n NativeScrollbars.prototype.setScrollLeft = function (pos) {\n if (this.horiz.scrollLeft != pos) {\n this.horiz.scrollLeft = pos;\n }\n\n if (this.disableHoriz) {\n this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\");\n }\n };\n\n NativeScrollbars.prototype.setScrollTop = function (pos) {\n if (this.vert.scrollTop != pos) {\n this.vert.scrollTop = pos;\n }\n\n if (this.disableVert) {\n this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\");\n }\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.pointerEvents = this.vert.style.pointerEvents = \"none\";\n this.disableHoriz = new Delayed();\n this.disableVert = new Delayed();\n };\n\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.pointerEvents = \"auto\";\n\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$$1 = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2) : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n\n if (elt$$1 != bar) {\n bar.style.pointerEvents = \"none\";\n } else {\n delay.set(1000, maybeDisable);\n }\n }\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 NullScrollbars() {};\n\n NullScrollbars.prototype.update = function () {\n return {\n bottom: 0,\n right: 0\n };\n };\n\n NullScrollbars.prototype.setScrollLeft = function () {};\n\n NullScrollbars.prototype.setScrollTop = function () {};\n\n NullScrollbars.prototype.clear = function () {};\n\n function updateScrollbars(cm, measure) {\n if (!measure) {\n measure = measureForScrollbars(cm);\n }\n\n var startWidth = cm.display.barWidth,\n startHeight = cm.display.barHeight;\n updateScrollbarsInner(cm, measure);\n\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 }\n\n updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth;\n startHeight = cm.display.barHeight;\n }\n } // Re-synchronize the fake scrollbars with the actual size of the\n // content.\n\n\n function updateScrollbarsInner(cm, measure) {\n var d = cm.display;\n var sizes = d.scrollbars.update(measure);\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 {\n d.scrollbarFiller.style.display = \"\";\n }\n\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 {\n d.gutterFiller.style.display = \"\";\n }\n }\n\n var scrollbarModel = {\n \"native\": NativeScrollbars,\n \"null\": NullScrollbars\n };\n\n function initScrollbars(cm) {\n if (cm.display.scrollbars) {\n cm.display.scrollbars.clear();\n\n if (cm.display.scrollbars.addClass) {\n rmClass(cm.display.wrapper, cm.display.scrollbars.addClass);\n }\n }\n\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller); // Prevent clicks in the scrollbars from killing focus\n\n on(node, \"mousedown\", function () {\n if (cm.state.focused) {\n setTimeout(function () {\n return cm.display.input.focus();\n }, 0);\n }\n });\n node.setAttribute(\"cm-not-content\", \"true\");\n }, function (pos, axis) {\n if (axis == \"horizontal\") {\n setScrollLeft(cm, pos);\n } else {\n updateScrollTop(cm, pos);\n }\n }, cm);\n\n if (cm.display.scrollbars.addClass) {\n addClass(cm.display.wrapper, cm.display.scrollbars.addClass);\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\n var nextOpId = 0; // Start a new operation.\n\n function _startOperation(cm) {\n cm.curOp = {\n cm: cm,\n viewChanged: false,\n // Flag that indicates that lines might need to be redrawn\n startHeight: cm.doc.height,\n // Used to detect need to update scrollbar\n forceUpdate: false,\n // Used to force a redraw\n updateInput: 0,\n // Whether to reset the input textarea\n typing: false,\n // Whether this reset should be careful to leave existing text (for compositing)\n changeObjs: null,\n // Accumulated changes, for firing change events\n cursorActivityHandlers: null,\n // Set of handlers to fire cursorActivity on\n cursorActivityCalled: 0,\n // Tracks which cursorActivity handlers have been called already\n selectionChanged: false,\n // Whether the selection needs to be redrawn\n updateMaxLine: false,\n // Set when the widest line needs to be determined anew\n scrollLeft: null,\n scrollTop: null,\n // Intermediate scroll position, not pushed to DOM yet\n scrollToPos: null,\n // Used to scroll to a specific position\n focus: false,\n id: ++nextOpId // Unique ID\n\n };\n pushOperation(cm.curOp);\n } // Finish an operation, updating the display and signalling delayed events\n\n\n function _endOperation(cm) {\n var op = cm.curOp;\n\n if (op) {\n finishOperation(op, function (group) {\n for (var i = 0; i < group.ops.length; i++) {\n group.ops[i].cm.curOp = null;\n }\n\n endOperations(group);\n });\n }\n } // The DOM updates done when an operation finishes are batched so\n // that the minimum number of relayouts are required.\n\n\n function endOperations(group) {\n var ops = group.ops;\n\n for (var i = 0; i < ops.length; i++) // Read DOM\n {\n endOperation_R1(ops[i]);\n }\n\n for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n {\n endOperation_W1(ops[i$1]);\n }\n\n for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n {\n endOperation_R2(ops[i$2]);\n }\n\n for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n {\n endOperation_W2(ops[i$3]);\n }\n\n for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n {\n endOperation_finish(ops[i$4]);\n }\n }\n\n function endOperation_R1(op) {\n var cm = op.cm,\n display = cm.display;\n maybeClipScrollbars(cm);\n\n if (op.updateMaxLine) {\n findMaxLine(cm);\n }\n\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null || op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom || op.scrollToPos.to.line >= display.viewTo) || display.maxLineChanged && cm.options.lineWrapping;\n op.update = op.mustUpdate && new DisplayUpdate(cm, op.mustUpdate && {\n top: op.scrollTop,\n ensure: op.scrollToPos\n }, 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,\n display = cm.display;\n\n if (op.updatedDisplay) {\n updateHeightsInViewport(cm);\n }\n\n op.barMeasure = measureForScrollbars(cm); // 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\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 = 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\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\n if (op.maxScrollLeft < cm.doc.scrollLeft) {\n setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true);\n }\n\n cm.display.maxLineChanged = false;\n }\n\n var takeFocus = op.focus && op.focus == activeElt();\n\n if (op.preparedSelection) {\n cm.display.input.showSelection(op.preparedSelection, takeFocus);\n }\n\n if (op.updatedDisplay || op.startHeight != cm.doc.height) {\n updateScrollbars(cm, op.barMeasure);\n }\n\n if (op.updatedDisplay) {\n setDocumentHeight(cm, op.barMeasure);\n }\n\n if (op.selectionChanged) {\n restartBlink(cm);\n }\n\n if (cm.state.focused && op.updateInput) {\n cm.display.input.reset(op.typing);\n }\n\n if (takeFocus) {\n ensureFocus(op.cm);\n }\n }\n\n function endOperation_finish(op) {\n var cm = op.cm,\n display = cm.display,\n doc = cm.doc;\n\n if (op.updatedDisplay) {\n postUpdateDisplay(cm, op.update);\n } // Abort mouse wheel delta measurement, when scrolling explicitly\n\n\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos)) {\n display.wheelStartX = display.wheelStartY = null;\n } // Propagate the scroll position to the actual DOM scroller\n\n\n if (op.scrollTop != null) {\n setScrollTop(cm, op.scrollTop, op.forceScroll);\n }\n\n if (op.scrollLeft != null) {\n setScrollLeft(cm, op.scrollLeft, true, true);\n } // If we need to scroll a specific position into view, do so.\n\n\n if (op.scrollToPos) {\n var rect = scrollPosIntoView(cm, _clipPos(doc, op.scrollToPos.from), _clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n maybeScrollWindow(cm, rect);\n } // Fire events for markers that are hidden/unidden by editing or\n // undoing\n\n\n var hidden = op.maybeHiddenMarkers,\n unhidden = op.maybeUnhiddenMarkers;\n\n if (hidden) {\n for (var i = 0; i < hidden.length; ++i) {\n if (!hidden[i].lines.length) {\n signal(hidden[i], \"hide\");\n }\n }\n }\n\n if (unhidden) {\n for (var i$1 = 0; i$1 < unhidden.length; ++i$1) {\n if (unhidden[i$1].lines.length) {\n signal(unhidden[i$1], \"unhide\");\n }\n }\n }\n\n if (display.wrapper.offsetHeight) {\n doc.scrollTop = cm.display.scroller.scrollTop;\n } // Fire change events, and delayed event handlers\n\n\n if (op.changeObjs) {\n signal(cm, \"changes\", cm, op.changeObjs);\n }\n\n if (op.update) {\n op.update.finish();\n }\n } // Run the given function in an operation\n\n\n function runInOp(cm, f) {\n if (cm.curOp) {\n return f();\n }\n\n _startOperation(cm);\n\n try {\n return f();\n } finally {\n _endOperation(cm);\n }\n } // Wraps a function in an operation. Returns the wrapped function.\n\n\n function operation(cm, f) {\n return function () {\n if (cm.curOp) {\n return f.apply(cm, arguments);\n }\n\n _startOperation(cm);\n\n try {\n return f.apply(cm, arguments);\n } finally {\n _endOperation(cm);\n }\n };\n } // Used to add methods to editor and doc instances, wrapping them in\n // operations.\n\n\n function methodOp(f) {\n return function () {\n if (this.curOp) {\n return f.apply(this, arguments);\n }\n\n _startOperation(this);\n\n try {\n return f.apply(this, arguments);\n } finally {\n _endOperation(this);\n }\n };\n }\n\n function docMethodOp(f) {\n return function () {\n var cm = this.cm;\n\n if (!cm || cm.curOp) {\n return f.apply(this, arguments);\n }\n\n _startOperation(cm);\n\n try {\n return f.apply(this, arguments);\n } finally {\n _endOperation(cm);\n }\n };\n } // HIGHLIGHT WORKER\n\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\n function highlightWorker(cm) {\n var doc = cm.doc;\n\n if (doc.highlightFrontier >= cm.display.viewTo) {\n return;\n }\n\n var end = +new Date() + cm.options.workTime;\n var context = getContextBefore(cm, doc.highlightFrontier);\n var changedLines = [];\n doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n if (context.line >= cm.display.viewFrom) {\n // 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\n if (resetState) {\n context.state = resetState;\n }\n\n line.styles = highlighted.styles;\n var oldCls = line.styleClasses,\n newCls = highlighted.classes;\n\n if (newCls) {\n line.styleClasses = newCls;\n } else if (oldCls) {\n line.styleClasses = null;\n }\n\n var ischange = !oldStyles || oldStyles.length != line.styles.length || oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n\n for (var i = 0; !ischange && i < oldStyles.length; ++i) {\n ischange = oldStyles[i] != line.styles[i];\n }\n\n if (ischange) {\n changedLines.push(context.line);\n }\n\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 }\n\n line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n context.nextLine();\n }\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\n if (changedLines.length) {\n 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\n var DisplayUpdate = function DisplayUpdate(cm, viewport, force) {\n var display = cm.display;\n this.viewport = viewport; // Store some values that we'll need later (but don't want to force a relayout for)\n\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 };\n\n DisplayUpdate.prototype.finish = function () {\n var this$1 = this;\n\n for (var i = 0; i < this.events.length; i++) {\n signal.apply(null, this$1.events[i]);\n }\n };\n\n function maybeClipScrollbars(cm) {\n var display = cm.display;\n\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()) {\n return null;\n }\n\n var active = activeElt();\n\n if (!active || !contains(cm.display.lineDiv, active)) {\n return null;\n }\n\n var result = {\n activeElt: active\n };\n\n if (window.getSelection) {\n var sel = window.getSelection();\n\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\n return result;\n }\n\n function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) {\n return;\n }\n\n snapshot.activeElt.focus();\n\n if (snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var sel = window.getSelection(),\n range$$1 = document.createRange();\n range$$1.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range$$1.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range$$1);\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\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\n\n function updateDisplayIfNeeded(cm, update) {\n var display = cm.display,\n doc = cm.doc;\n\n if (update.editorIsHidden) {\n resetView(cm);\n return false;\n } // Bail out if the visible area is already rendered and nothing changed.\n\n\n if (!update.force && update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo && (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) && display.renderedView == display.view && countDirtyView(cm) == 0) {\n return false;\n }\n\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update.dims = getDimensions(cm);\n } // Compute a suitable new viewport (from & to)\n\n\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\n if (display.viewFrom < from && from - display.viewFrom < 20) {\n from = Math.max(doc.first, display.viewFrom);\n }\n\n if (display.viewTo > to && display.viewTo - to < 20) {\n to = Math.min(end, display.viewTo);\n }\n\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 || display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n adjustView(cm, from, to);\n display.viewOffset = _heightAtLine(getLine(cm.doc, display.viewFrom)); // Position the mover div to align with the current scroll position\n\n cm.display.mover.style.top = display.viewOffset + \"px\";\n var toUpdate = countDirtyView(cm);\n\n if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view && (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo)) {\n return false;\n } // For big changes, we hide the enclosing element during the\n // update, since that speeds up the operations on most browsers.\n\n\n var selSnapshot = selectionSnapshot(cm);\n\n if (toUpdate > 4) {\n display.lineDiv.style.display = \"none\";\n }\n\n patchDisplay(cm, display.updateLineNumbers, update.dims);\n\n if (toUpdate > 4) {\n display.lineDiv.style.display = \"\";\n }\n\n display.renderedView = display.view; // There might have been a widget with a focused element that got\n // hidden or updated, if so re-focus it.\n\n restoreSelection(selSnapshot); // Prevent selection and cursors from interfering with the scroll\n // width and height.\n\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 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 = {\n top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)\n };\n } // Updated line heights might result in the drawn area not\n // actually covering the viewport. Keep looping until it does.\n\n\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n\n if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo) {\n break;\n }\n }\n\n if (!updateDisplayIfNeeded(cm, update)) {\n break;\n }\n\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\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;\n cm.display.reportedViewTo = cm.display.viewTo;\n }\n }\n\n function updateDisplaySimple(cm, viewport) {\n var update = new DisplayUpdate(cm, viewport);\n\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 } // 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\n\n function patchDisplay(cm, updateNumbersFrom, dims) {\n var display = cm.display,\n lineNumbers = cm.options.lineNumbers;\n var container = display.lineDiv,\n cur = container.firstChild;\n\n function rm(node) {\n var next = node.nextSibling; // Works around a throw-scroll bug in OS X Webkit\n\n if (webkit && mac && cm.display.currentWheelTarget == node) {\n node.style.display = \"none\";\n } else {\n node.parentNode.removeChild(node);\n }\n\n return next;\n }\n\n var view = display.view,\n lineN = display.viewFrom; // Loop over the elements in the view, syncing cur (the DOM nodes\n // in display.lineDiv) with the view as we go.\n\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) {\n // Not drawn yet\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else {\n // Already drawn\n while (cur != lineView.node) {\n cur = rm(cur);\n }\n\n var updateNumber = lineNumbers && updateNumbersFrom != null && updateNumbersFrom <= lineN && lineView.lineNumber;\n\n if (lineView.changes) {\n if (indexOf(lineView.changes, \"gutter\") > -1) {\n updateNumber = false;\n }\n\n updateLineForChanges(cm, lineView, lineN, dims);\n }\n\n if (updateNumber) {\n removeChildren(lineView.lineNumber);\n lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n }\n\n cur = lineView.node.nextSibling;\n }\n lineN += lineView.size;\n }\n\n while (cur) {\n cur = rm(cur);\n }\n }\n\n function updateGutterSpace(display) {\n var width = display.gutters.offsetWidth;\n display.sizer.style.marginLeft = width + \"px\";\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 } // Re-align line numbers and gutter marks to compensate for\n // horizontal scrolling.\n\n\n function alignHorizontally(cm) {\n var display = cm.display,\n view = display.view;\n\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) {\n return;\n }\n\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n var gutterW = display.gutters.offsetWidth,\n left = comp + \"px\";\n\n for (var i = 0; i < view.length; i++) {\n if (!view[i].hidden) {\n if (cm.options.fixedGutter) {\n if (view[i].gutter) {\n view[i].gutter.style.left = left;\n }\n\n if (view[i].gutterBackground) {\n view[i].gutterBackground.style.left = left;\n }\n }\n\n var align = view[i].alignable;\n\n if (align) {\n for (var j = 0; j < align.length; j++) {\n align[j].style.left = left;\n }\n }\n }\n }\n\n if (cm.options.fixedGutter) {\n display.gutters.style.left = comp + gutterW + \"px\";\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\n\n function maybeUpdateLineNumberWidth(cm) {\n if (!cm.options.lineNumbers) {\n return false;\n }\n\n var doc = cm.doc,\n last = lineNumberFor(cm.options, doc.first + doc.size - 1),\n display = cm.display;\n\n if (last.length != display.lineNumChars) {\n var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)], \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n var innerW = test.firstChild.offsetWidth,\n 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\n return false;\n }\n\n function getGutters(gutters, lineNumbers) {\n var result = [],\n sawLineNumbers = false;\n\n for (var i = 0; i < gutters.length; i++) {\n var name = gutters[i],\n style = null;\n\n if (typeof name != \"string\") {\n style = name.style;\n name = name.className;\n }\n\n if (name == \"CodeMirror-linenumbers\") {\n if (!lineNumbers) {\n continue;\n } else {\n sawLineNumbers = true;\n }\n }\n\n result.push({\n className: name,\n style: style\n });\n }\n\n if (lineNumbers && !sawLineNumbers) {\n result.push({\n className: \"CodeMirror-linenumbers\",\n style: null\n });\n }\n\n return result;\n } // Rebuild the gutter elements, ensure the margin to the left of the\n // code matches their width.\n\n\n function renderGutters(display) {\n var gutters = display.gutters,\n specs = display.gutterSpecs;\n removeChildren(gutters);\n display.lineGutter = null;\n\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\n if (style) {\n gElt.style.cssText = style;\n }\n\n if (className == \"CodeMirror-linenumbers\") {\n display.lineGutter = gElt;\n gElt.style.width = (display.lineNumWidth || 1) + \"px\";\n }\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 } // 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\n function Display(place, doc, input, options) {\n var d = this;\n this.input = input; // Covers bottom-right square when both scrollbars are present.\n\n d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\"); // Covers bottom of gutter when coverGutterNextToScrollbar is on\n // and h scrollbar is present.\n\n d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n d.gutterFiller.setAttribute(\"cm-not-content\", \"true\"); // Will contain the actual code, positioned to cover the viewport.\n\n d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\"); // Elements are added to these to represent selection and cursors.\n\n d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\"); // A visibility: hidden element used to find the size of things.\n\n d.measure = elt(\"div\", null, \"CodeMirror-measure\"); // When lines outside of the viewport are measured, they are drawn in this.\n\n d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\"); // Wraps everything that needs to exist inside the vertically-padded coordinate system\n\n d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv], null, \"position: relative; outline: none\");\n var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\"); // Moved around its parent to cover visible view.\n\n d.mover = elt(\"div\", [lines], null, \"position: relative\"); // Set to the height of the document, allowing scrolling.\n\n d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n d.sizerWidth = null; // 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\n d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\"); // Will contain the gutters, if any.\n\n d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n d.lineGutter = null; // Actual scrollable element.\n\n d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\"); // The element in which the editor lives.\n\n d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\"); // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n\n if (ie && ie_version < 8) {\n d.gutters.style.zIndex = -1;\n d.scroller.style.paddingRight = 0;\n }\n\n if (!webkit && !(gecko && mobile)) {\n d.scroller.draggable = true;\n }\n\n if (place) {\n if (place.appendChild) {\n place.appendChild(d.wrapper);\n } else {\n place(d.wrapper);\n }\n } // Current rendered range (may be bigger than the view window).\n\n\n d.viewFrom = d.viewTo = doc.first;\n d.reportedViewFrom = d.reportedViewTo = doc.first; // Information about the rendered lines.\n\n d.view = [];\n d.renderedView = null; // Holds info about a single rendered line when it was rendered\n // for measurement, while not in view.\n\n d.externalMeasured = null; // Empty space (in pixels) above the view\n\n d.viewOffset = 0;\n d.lastWrapHeight = d.lastWrapWidth = 0;\n d.updateLineNumbers = null;\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false; // 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\n d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null; // 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\n d.alignWidgets = false;\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null; // Tracks the maximum line length so that the horizontal scrollbar\n // can be kept static when scrolling.\n\n d.maxLine = null;\n d.maxLineLength = 0;\n d.maxLineChanged = false; // Used for measuring wheel scrolling granularity\n\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null; // True when shift is held down.\n\n d.shift = false; // Used to track whether anything happened since the context menu\n // was opened.\n\n d.selForContextMenu = null;\n d.activeTouch = null;\n d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n renderGutters(d);\n input.init(d);\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\n var wheelSamples = 0,\n wheelPixelsPerUnit = null; // 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\n if (ie) {\n wheelPixelsPerUnit = -.53;\n } else if (gecko) {\n wheelPixelsPerUnit = 15;\n } else if (chrome) {\n wheelPixelsPerUnit = -.7;\n } else if (safari) {\n wheelPixelsPerUnit = -1 / 3;\n }\n\n function wheelEventDelta(e) {\n var dx = e.wheelDeltaX,\n dy = e.wheelDeltaY;\n\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) {\n dx = e.detail;\n }\n\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) {\n dy = e.detail;\n } else if (dy == null) {\n dy = e.wheelDelta;\n }\n\n return {\n x: dx,\n y: dy\n };\n }\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 var delta = wheelEventDelta(e),\n dx = delta.x,\n dy = delta.y;\n var display = cm.display,\n scroll = display.scroller; // Quit if there's nothing to scroll here\n\n var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n\n if (!(dx && canScrollX || dy && canScrollY)) {\n return;\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\n\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 } // 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\n\n if (dx && !gecko && !presto && wheelPixelsPerUnit != null) {\n if (dy && canScrollY) {\n updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * wheelPixelsPerUnit));\n }\n\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * wheelPixelsPerUnit)); // 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\n if (!dy || dy && canScrollY) {\n e_preventDefault(e);\n }\n\n display.wheelStartX = null; // Abort measurement, if in progress\n\n return;\n } // 'Project' the visible viewport to cover the area that is being\n // scrolled into view (if we know enough to estimate it).\n\n\n if (dy && wheelPixelsPerUnit != null) {\n var pixels = dy * wheelPixelsPerUnit;\n var top = cm.doc.scrollTop,\n bot = top + display.wrapper.clientHeight;\n\n if (pixels < 0) {\n top = Math.max(0, top + pixels - 50);\n } else {\n bot = Math.min(cm.doc.height, bot + pixels + 50);\n }\n\n updateDisplaySimple(cm, {\n top: top,\n bottom: bot\n });\n }\n\n if (wheelSamples < 20) {\n if (display.wheelStartX == null) {\n display.wheelStartX = scroll.scrollLeft;\n display.wheelStartY = scroll.scrollTop;\n display.wheelDX = dx;\n display.wheelDY = dy;\n setTimeout(function () {\n if (display.wheelStartX == null) {\n return;\n }\n\n var movedX = scroll.scrollLeft - display.wheelStartX;\n var movedY = scroll.scrollTop - display.wheelStartY;\n var sample = movedY && display.wheelDY && movedY / display.wheelDY || movedX && display.wheelDX && movedX / display.wheelDX;\n display.wheelStartX = display.wheelStartY = null;\n\n if (!sample) {\n return;\n }\n\n wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n ++wheelSamples;\n }, 200);\n } else {\n display.wheelDX += dx;\n display.wheelDY += dy;\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\n\n var Selection = function Selection(ranges, primIndex) {\n this.ranges = ranges;\n this.primIndex = primIndex;\n };\n\n Selection.prototype.primary = function () {\n return this.ranges[this.primIndex];\n };\n\n Selection.prototype.equals = function (other) {\n var this$1 = this;\n\n if (other == this) {\n return true;\n }\n\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) {\n return false;\n }\n\n for (var i = 0; i < this.ranges.length; i++) {\n var here = this$1.ranges[i],\n there = other.ranges[i];\n\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) {\n return false;\n }\n }\n\n return true;\n };\n\n Selection.prototype.deepCopy = function () {\n var this$1 = this;\n var out = [];\n\n for (var i = 0; i < this.ranges.length; i++) {\n out[i] = new Range(copyPos(this$1.ranges[i].anchor), copyPos(this$1.ranges[i].head));\n }\n\n return new Selection(out, this.primIndex);\n };\n\n Selection.prototype.somethingSelected = function () {\n var this$1 = this;\n\n for (var i = 0; i < this.ranges.length; i++) {\n if (!this$1.ranges[i].empty()) {\n return true;\n }\n }\n\n return false;\n };\n\n Selection.prototype.contains = function (pos, end) {\n var this$1 = this;\n\n if (!end) {\n end = pos;\n }\n\n for (var i = 0; i < this.ranges.length; i++) {\n var range = this$1.ranges[i];\n\n if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0) {\n return i;\n }\n }\n\n return -1;\n };\n\n var Range = function Range(anchor, head) {\n this.anchor = anchor;\n this.head = head;\n };\n\n Range.prototype.from = function () {\n return minPos(this.anchor, this.head);\n };\n\n Range.prototype.to = function () {\n return maxPos(this.anchor, this.head);\n };\n\n Range.prototype.empty = function () {\n return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch;\n }; // Take an unsorted, potentially overlapping set of ranges, and\n // build a selection out of it. 'Consumes' ranges array (modifying\n // it).\n\n\n function normalizeSelection(cm, ranges, primIndex) {\n var mayTouch = cm && cm.options.selectionsMayTouch;\n var prim = ranges[primIndex];\n ranges.sort(function (a, b) {\n return cmp(a.from(), b.from());\n });\n primIndex = indexOf(ranges, prim);\n\n for (var i = 1; i < ranges.length; i++) {\n var cur = ranges[i],\n prev = ranges[i - 1];\n var diff = cmp(prev.to(), cur.from());\n\n if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n var from = minPos(prev.from(), cur.from()),\n to = maxPos(prev.to(), cur.to());\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n\n if (i <= primIndex) {\n --primIndex;\n }\n\n ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n }\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 } // Compute the position of the end of a change (its 'to' property\n // refers to the pre-change end).\n\n\n function changeEnd(change) {\n if (!change.text) {\n return change.to;\n }\n\n return Pos(change.from.line + change.text.length - 1, lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0));\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\n\n function adjustForChange(pos, change) {\n if (cmp(pos, change.from) < 0) {\n return pos;\n }\n\n if (cmp(pos, change.to) <= 0) {\n return changeEnd(change);\n }\n\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1,\n ch = pos.ch;\n\n if (pos.line == change.to.line) {\n ch += changeEnd(change).ch - change.to.ch;\n }\n\n return Pos(line, ch);\n }\n\n function computeSelAfterChange(doc, change) {\n var out = [];\n\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), adjustForChange(range.head, change)));\n }\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 } // Used by replaceSelections to allow moving the selection to the\n // start or around the replaced test. Hint may be \"start\" or \"around\".\n\n\n function computeReplacedSel(doc, changes, hint) {\n var out = [];\n var oldPrev = Pos(doc.first, 0),\n newPrev = oldPrev;\n\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\n if (hint == \"around\") {\n var range = doc.sel.ranges[i],\n 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\n return new Selection(out, doc.sel.primIndex);\n } // Used to get the editor into a consistent state again when options change.\n\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) {\n line.stateAfter = null;\n }\n\n if (line.styles) {\n line.styles = null;\n }\n });\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n startWorker(cm, 100);\n cm.state.modeGen++;\n\n if (cm.curOp) {\n regChange(cm);\n }\n } // DOCUMENT DATA STRUCTURE\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\n\n function isWholeLineUpdate(doc, change) {\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" && (!doc.cm || doc.cm.options.wholeLineUpdateBefore);\n } // Perform a change on the document data structure.\n\n\n function updateDoc(doc, change, markedSpans, estimateHeight$$1) {\n function spansFor(n) {\n return markedSpans ? markedSpans[n] : null;\n }\n\n function update(line, text, spans) {\n updateLine(line, text, spans, estimateHeight$$1);\n signalLater(line, \"change\", line, change);\n }\n\n function linesFor(start, end) {\n var result = [];\n\n for (var i = start; i < end; ++i) {\n result.push(new Line(text[i], spansFor(i), estimateHeight$$1));\n }\n\n return result;\n }\n\n var from = change.from,\n to = change.to,\n text = change.text;\n var firstLine = getLine(doc, from.line),\n lastLine = getLine(doc, to.line);\n var lastText = lst(text),\n lastSpans = spansFor(text.length - 1),\n nlines = to.line - from.line; // Adjust the line structure\n\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\n if (nlines) {\n doc.remove(from.line, nlines);\n }\n\n if (added.length) {\n doc.insert(from.line, added);\n }\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$$1));\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\n if (nlines > 1) {\n doc.remove(from.line + 1, nlines - 1);\n }\n\n doc.insert(from.line + 1, added$2);\n }\n\n signalLater(doc, \"change\", doc, change);\n } // Call f for all linked documents.\n\n\n function linkedDocs(doc, f, sharedHistOnly) {\n function propagate(doc, skip, sharedHist) {\n if (doc.linked) {\n for (var i = 0; i < doc.linked.length; ++i) {\n var rel = doc.linked[i];\n\n if (rel.doc == skip) {\n continue;\n }\n\n var shared = sharedHist && rel.sharedHist;\n\n if (sharedHistOnly && !shared) {\n continue;\n }\n\n f(rel.doc, shared);\n propagate(rel.doc, doc, shared);\n }\n }\n }\n\n propagate(doc, null, true);\n } // Attach a document to an editor.\n\n\n function attachDoc(cm, doc) {\n if (doc.cm) {\n throw new Error(\"This document is already in use.\");\n }\n\n cm.doc = doc;\n doc.cm = cm;\n estimateLineHeights(cm);\n loadMode(cm);\n setDirectionClass(cm);\n\n if (!cm.options.lineWrapping) {\n findMaxLine(cm);\n }\n\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(startGen) {\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 = [];\n this.undone = [];\n this.undoDepth = Infinity; // Used to track when changes can be merged into a single undo\n // event\n\n this.lastModTime = this.lastSelTime = 0;\n this.lastOp = this.lastSelOp = null;\n this.lastOrigin = this.lastSelOrigin = null; // Used by the isClean() method\n\n this.generation = this.maxGeneration = startGen || 1;\n } // Create a history change event from an updateDoc-style change\n // object.\n\n\n function historyChangeFromChange(doc, change) {\n var histChange = {\n from: copyPos(change.from),\n to: changeEnd(change),\n text: getBetween(doc, change.from, change.to)\n };\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n linkedDocs(doc, function (doc) {\n return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n }, true);\n return histChange;\n } // Pop all selection events off the end of a history array. Stop at\n // a change event.\n\n\n function clearSelectionEvents(array) {\n while (array.length) {\n var last = lst(array);\n\n if (last.ranges) {\n array.pop();\n } else {\n break;\n }\n }\n } // Find the top change event in the history. Pop off selection\n // events that are in the way.\n\n\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 } // 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\n\n function addChangeToHistory(doc, change, selAfter, opId) {\n var hist = doc.history;\n hist.undone.length = 0;\n var time = +new Date(),\n cur;\n var last;\n\n if ((hist.lastOp == opId || hist.lastOrigin == change.origin && change.origin && (change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500) || change.origin.charAt(0) == \"*\")) && (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n // Merge this change into the last event\n last = lst(cur.changes);\n\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\n if (!before || !before.ranges) {\n pushSelectionToHistory(doc.sel, hist.done);\n }\n\n cur = {\n changes: [historyChangeFromChange(doc, change)],\n generation: hist.generation\n };\n hist.done.push(cur);\n\n while (hist.done.length > hist.undoDepth) {\n hist.done.shift();\n\n if (!hist.done[0].ranges) {\n hist.done.shift();\n }\n }\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) {\n signal(doc, \"historyAdded\");\n }\n }\n\n function selectionEventCanBeMerged(doc, origin, prev, sel) {\n var ch = origin.charAt(0);\n return ch == \"*\" || ch == \"+\" && prev.ranges.length == sel.ranges.length && prev.somethingSelected() == sel.somethingSelected() && new Date() - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500);\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\n\n function addSelectionToHistory(doc, sel, opId, options) {\n var hist = doc.history,\n origin = options && options.origin; // 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\n if (opId == hist.lastSelOp || origin && hist.lastSelOrigin == origin && (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin || selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))) {\n hist.done[hist.done.length - 1] = sel;\n } else {\n pushSelectionToHistory(sel, hist.done);\n }\n\n hist.lastSelTime = +new Date();\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n\n if (options && options.clearRedo !== false) {\n clearSelectionEvents(hist.undone);\n }\n }\n\n function pushSelectionToHistory(sel, dest) {\n var top = lst(dest);\n\n if (!(top && top.ranges && top.equals(sel))) {\n dest.push(sel);\n }\n } // Used to store marked span information in the history.\n\n\n function attachLocalSpans(doc, change, from, to) {\n var existing = change[\"spans_\" + doc.id],\n 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\n\n function removeClearedSpans(spans) {\n if (!spans) {\n return null;\n }\n\n var out;\n\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i].marker.explicitlyCleared) {\n if (!out) {\n out = spans.slice(0, i);\n }\n } else if (out) {\n out.push(spans[i]);\n }\n }\n\n return !out ? spans : out.length ? out : null;\n } // Retrieve and filter the old marked spans stored in a change event.\n\n\n function getOldSpans(doc, change) {\n var found = change[\"spans_\" + doc.id];\n\n if (!found) {\n return null;\n }\n\n var nw = [];\n\n for (var i = 0; i < change.text.length; ++i) {\n nw.push(removeClearedSpans(found[i]));\n }\n\n return nw;\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\n\n function mergeOldSpans(doc, change) {\n var old = getOldSpans(doc, change);\n var stretched = stretchSpansOverChange(doc, change);\n\n if (!old) {\n return stretched;\n }\n\n if (!stretched) {\n return old;\n }\n\n for (var i = 0; i < old.length; ++i) {\n var oldCur = old[i],\n stretchCur = stretched[i];\n\n if (oldCur && stretchCur) {\n spans: for (var j = 0; j < stretchCur.length; ++j) {\n var span = stretchCur[j];\n\n for (var k = 0; k < oldCur.length; ++k) {\n if (oldCur[k].marker == span.marker) {\n continue spans;\n }\n }\n\n oldCur.push(span);\n }\n } else if (stretchCur) {\n old[i] = stretchCur;\n }\n }\n\n return old;\n } // Used both to provide a JSON-safe object in .getHistory, and, when\n // detaching a document, to split the history in two\n\n\n function copyHistoryArray(events, newGroup, instantiateSel) {\n var copy = [];\n\n for (var i = 0; i < events.length; ++i) {\n var event = events[i];\n\n if (event.ranges) {\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n continue;\n }\n\n var changes = event.changes,\n newChanges = [];\n copy.push({\n changes: newChanges\n });\n\n for (var j = 0; j < changes.length; ++j) {\n var change = changes[j],\n m = void 0;\n newChanges.push({\n from: change.from,\n to: change.to,\n text: change.text\n });\n\n if (newGroup) {\n for (var prop in change) {\n 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 }\n }\n\n return copy;\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 // 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\n\n function extendRange(range, head, other, extend) {\n if (extend) {\n var anchor = range.anchor;\n\n if (other) {\n var posBefore = cmp(head, anchor) < 0;\n\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\n return new Range(anchor, head);\n } else {\n return new Range(other || head, head);\n }\n } // Extend the primary selection range, discard the rest.\n\n\n function extendSelection(doc, head, other, options, extend) {\n if (extend == null) {\n extend = doc.cm && (doc.cm.display.shift || doc.extend);\n }\n\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n } // Extend all selections (pos is an array of selections with length\n // equal the number of selections)\n\n\n function extendSelections(doc, heads, options) {\n var out = [];\n var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend);\n }\n\n var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n setSelection(doc, newSel, options);\n } // Updates a single range in the selection.\n\n\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 } // Reset the selection to a single range.\n\n\n function setSimpleSelection(doc, anchor, head, options) {\n setSelection(doc, simpleSelection(anchor, head), options);\n } // Give beforeSelectionChange handlers a change to influence a\n // selection update.\n\n\n function filterSelectionChange(doc, sel, options) {\n var obj = {\n ranges: sel.ranges,\n update: function update(ranges) {\n var this$1 = this;\n this.ranges = [];\n\n for (var i = 0; i < ranges.length; i++) {\n this$1.ranges[i] = new Range(_clipPos(doc, ranges[i].anchor), _clipPos(doc, ranges[i].head));\n }\n },\n origin: options && options.origin\n };\n signal(doc, \"beforeSelectionChange\", doc, obj);\n\n if (doc.cm) {\n signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj);\n }\n\n if (obj.ranges != sel.ranges) {\n return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1);\n } else {\n return sel;\n }\n }\n\n function setSelectionReplaceHistory(doc, sel, options) {\n var done = doc.history.done,\n last = lst(done);\n\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 } // Set a new selection.\n\n\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\n var bias = options && options.bias || (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) {\n ensureCursorVisible(doc.cm);\n }\n }\n\n function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) {\n return;\n }\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\n signalLater(doc, \"cursorActivity\", doc);\n } // Verify that the selection does not partially select any atomic\n // marked ranges.\n\n\n function reCheckSelection(doc) {\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n } // Return a selection that does not partially select any atomic\n // ranges.\n\n\n function skipAtomicInSelection(doc, sel, bias, mayClear) {\n var out;\n\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 = skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n\n if (out || newAnchor != range.anchor || newHead != range.head) {\n if (!out) {\n out = sel.ranges.slice(0, i);\n }\n\n out[i] = new Range(newAnchor, newHead);\n }\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\n if (line.markedSpans) {\n for (var i = 0; i < line.markedSpans.length; ++i) {\n var sp = line.markedSpans[i],\n m = sp.marker; // 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\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)) && (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n if (mayClear) {\n signal(m, \"beforeCursorEnter\");\n\n if (m.explicitlyCleared) {\n if (!line.markedSpans) {\n break;\n } else {\n --i;\n continue;\n }\n }\n }\n\n if (!m.atomic) {\n continue;\n }\n\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1),\n diff = void 0;\n\n if (dir < 0 ? preventCursorRight : preventCursorLeft) {\n near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null);\n }\n\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\n var far = m.find(dir < 0 ? -1 : 1);\n\n if (dir < 0 ? preventCursorLeft : preventCursorRight) {\n far = movePos(doc, far, dir, far.line == pos.line ? line : null);\n }\n\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null;\n }\n }\n }\n\n return pos;\n } // Ensure a given position is not inside an atomic range.\n\n\n function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n var dir = bias || 1;\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) || !mayClear && skipAtomicInner(doc, pos, oldPos, dir, true) || skipAtomicInner(doc, pos, oldPos, -dir, mayClear) || !mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true);\n\n if (!found) {\n doc.cantEdit = true;\n return Pos(doc.first, 0);\n }\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) {\n return _clipPos(doc, Pos(pos.line - 1));\n } else {\n return null;\n }\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n if (pos.line < doc.first + doc.size - 1) {\n return Pos(pos.line + 1, 0);\n } else {\n return null;\n }\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 } // UPDATING\n // Allow \"beforeChange\" event handlers to influence a change\n\n\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 cancel() {\n return obj.canceled = true;\n }\n };\n\n if (update) {\n obj.update = function (from, to, text, origin) {\n if (from) {\n obj.from = _clipPos(doc, from);\n }\n\n if (to) {\n obj.to = _clipPos(doc, to);\n }\n\n if (text) {\n obj.text = text;\n }\n\n if (origin !== undefined) {\n obj.origin = origin;\n }\n };\n }\n\n signal(doc, \"beforeChange\", doc, obj);\n\n if (doc.cm) {\n signal(doc.cm, \"beforeChange\", doc.cm, obj);\n }\n\n if (obj.canceled) {\n if (doc.cm) {\n doc.cm.curOp.updateInput = 2;\n }\n\n return null;\n }\n\n return {\n from: obj.from,\n to: obj.to,\n text: obj.text,\n origin: obj.origin\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\n\n function makeChange(doc, change, ignoreReadOnly) {\n if (doc.cm) {\n if (!doc.cm.curOp) {\n return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly);\n }\n\n if (doc.cm.state.suppressEdits) {\n return;\n }\n }\n\n if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n\n if (!change) {\n return;\n }\n } // Possibly split or suppress the update based on the presence\n // of read-only spans in its range.\n\n\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n\n if (split) {\n for (var i = split.length - 1; i >= 0; --i) {\n makeChangeInner(doc, {\n from: split[i].from,\n to: split[i].to,\n text: i ? [\"\"] : change.text,\n origin: change.origin\n });\n }\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) {\n return;\n }\n\n var selAfter = computeSelAfterChange(doc, change);\n addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n var rebased = [];\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\n makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n });\n } // Revert a change stored in a document's history.\n\n\n function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n var suppress = doc.cm && doc.cm.state.suppressEdits;\n\n if (suppress && !allowSelectionOnly) {\n return;\n }\n\n var hist = doc.history,\n event,\n selAfter = doc.sel;\n var source = type == \"undo\" ? hist.done : hist.undone,\n dest = type == \"undo\" ? hist.undone : hist.done; // Verify that there is a useable event (so that ctrl-z won't\n // needlessly clear selection events)\n\n var i = 0;\n\n for (; i < source.length; i++) {\n event = source[i];\n\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges) {\n break;\n }\n }\n\n if (i == source.length) {\n return;\n }\n\n hist.lastOrigin = hist.lastSelOrigin = null;\n\n for (;;) {\n event = source.pop();\n\n if (event.ranges) {\n pushSelectionToHistory(event, dest);\n\n if (allowSelectionOnly && !event.equals(doc.sel)) {\n setSelection(doc, event, {\n clearRedo: false\n });\n return;\n }\n\n selAfter = event;\n } else if (suppress) {\n source.push(event);\n return;\n } else {\n break;\n }\n } // Build up a reverse change object to add to the opposite history\n // stack (redo when undoing, and vice versa).\n\n\n var antiChanges = [];\n pushSelectionToHistory(selAfter, dest);\n dest.push({\n changes: antiChanges,\n generation: hist.generation\n });\n hist.generation = event.generation || ++hist.maxGeneration;\n var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n var loop = function loop(i) {\n var change = event.changes[i];\n change.origin = type;\n\n if (filter && !filterChange(doc, change, false)) {\n source.length = 0;\n return {};\n }\n\n antiChanges.push(historyChangeFromChange(doc, change));\n var after = i ? computeSelAfterChange(doc, change) : lst(source);\n makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n\n if (!i && doc.cm) {\n doc.cm.scrollIntoView({\n from: change.from,\n to: changeEnd(change)\n });\n }\n\n var rebased = []; // Propagate to the linked documents\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\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 if (returned) return returned.v;\n }\n } // Sub-views need their line numbers shifted when text is added\n // above or below them in the parent document.\n\n\n function shiftDoc(doc, distance) {\n if (distance == 0) {\n return;\n }\n\n doc.first += distance;\n doc.sel = new Selection(map(doc.sel.ranges, function (range) {\n return new Range(Pos(range.anchor.line + distance, range.anchor.ch), Pos(range.head.line + distance, range.head.ch));\n }), doc.sel.primIndex);\n\n if (doc.cm) {\n regChange(doc.cm, doc.first, doc.first - distance, distance);\n\n for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++) {\n regLineChange(doc.cm, l, \"gutter\");\n }\n }\n } // More lower-level change function, handling only a single document\n // (not linked ones).\n\n\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\n if (change.to.line < doc.first) {\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n return;\n }\n\n if (change.from.line > doc.lastLine()) {\n return;\n } // Clip the change to the size of this doc\n\n\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 = {\n from: Pos(doc.first, 0),\n to: Pos(change.to.line + shift, change.to.ch),\n text: [lst(change.text)],\n origin: change.origin\n };\n }\n\n var last = doc.lastLine();\n\n if (change.to.line > last) {\n change = {\n from: change.from,\n to: Pos(last, getLine(doc, last).text.length),\n text: [change.text[0]],\n origin: change.origin\n };\n }\n\n change.removed = getBetween(doc, change.from, change.to);\n\n if (!selAfter) {\n selAfter = computeSelAfterChange(doc, change);\n }\n\n if (doc.cm) {\n makeChangeSingleDocInEditor(doc.cm, change, spans);\n } else {\n updateDoc(doc, change, spans);\n }\n\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n\n if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0))) {\n doc.cantEdit = false;\n }\n } // Handle the interaction of a change to a document with the editor\n // that this document is part of.\n\n\n function makeChangeSingleDocInEditor(cm, change, spans) {\n var doc = cm.doc,\n display = cm.display,\n from = change.from,\n to = change.to;\n var recomputeMaxLength = false,\n checkWidthStart = from.line;\n\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\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\n if (len > display.maxLineLength) {\n display.maxLine = line;\n display.maxLineLength = len;\n display.maxLineChanged = true;\n recomputeMaxLength = false;\n }\n });\n\n if (recomputeMaxLength) {\n cm.curOp.updateMaxLine = true;\n }\n }\n\n retreatFrontier(doc, from.line);\n startWorker(cm, 400);\n var lendiff = change.text.length - (to.line - from.line) - 1; // Remember that these lines changed, for updating the display\n\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\n var changesHandler = hasHandler(cm, \"changes\"),\n changeHandler = hasHandler(cm, \"change\");\n\n if (changeHandler || changesHandler) {\n var obj = {\n from: from,\n to: to,\n text: change.text,\n removed: change.removed,\n origin: change.origin\n };\n\n if (changeHandler) {\n signalLater(cm, \"change\", cm, obj);\n }\n\n if (changesHandler) {\n (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj);\n }\n }\n\n cm.display.selForContextMenu = null;\n }\n\n function _replaceRange(doc, code, from, to, origin) {\n var assign;\n\n if (!to) {\n to = from;\n }\n\n if (cmp(to, from) < 0) {\n assign = [to, from], from = assign[0], to = assign[1];\n }\n\n if (typeof code == \"string\") {\n code = doc.splitLines(code);\n }\n\n makeChange(doc, {\n from: from,\n to: to,\n text: code,\n origin: origin\n });\n } // Rebasing/resetting history to deal with externally-sourced changes\n\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 } // 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\n\n function rebaseHistArray(array, from, to, diff) {\n for (var i = 0; i < array.length; ++i) {\n var sub = array[i],\n ok = true;\n\n if (sub.ranges) {\n if (!sub.copied) {\n sub = array[i] = sub.deepCopy();\n sub.copied = true;\n }\n\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\n continue;\n }\n\n for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n var cur = sub.changes[j$1];\n\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\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,\n to = change.to.line,\n diff = change.text.length - (to - from) - 1;\n rebaseHistArray(hist.done, from, to, diff);\n rebaseHistArray(hist.undone, from, to, diff);\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\n\n function changeLine(doc, handle, changeType, op) {\n var no = handle,\n line = handle;\n\n if (typeof handle == \"number\") {\n line = getLine(doc, clipLine(doc, handle));\n } else {\n no = lineNo(handle);\n }\n\n if (no == null) {\n return null;\n }\n\n if (op(line, no) && doc.cm) {\n regLineChange(doc.cm, no, changeType);\n }\n\n return line;\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\n function LeafChunk(lines) {\n var this$1 = this;\n this.lines = lines;\n this.parent = null;\n var height = 0;\n\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this$1;\n height += lines[i].height;\n }\n\n this.height = height;\n }\n\n LeafChunk.prototype = {\n chunkSize: function chunkSize() {\n return this.lines.length;\n },\n // Remove the n lines at offset 'at'.\n removeInner: function removeInner(at, n) {\n var this$1 = this;\n\n for (var i = at, e = at + n; i < e; ++i) {\n var line = this$1.lines[i];\n this$1.height -= line.height;\n cleanUpLine(line);\n signalLater(line, \"delete\");\n }\n\n this.lines.splice(at, n);\n },\n // Helper used to collapse a small branch into a single leaf.\n collapse: function collapse(lines) {\n lines.push.apply(lines, this.lines);\n },\n // Insert the given array of lines at offset 'at', count them as\n // having the given height.\n insertInner: function insertInner(at, lines, height) {\n var this$1 = this;\n this.height += height;\n this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this$1;\n }\n },\n // Used to iterate over a part of the tree.\n iterN: function iterN(at, n, op) {\n var this$1 = this;\n\n for (var e = at + n; at < e; ++at) {\n if (op(this$1.lines[at])) {\n return true;\n }\n }\n }\n };\n\n function BranchChunk(children) {\n var this$1 = this;\n this.children = children;\n var size = 0,\n height = 0;\n\n for (var i = 0; i < children.length; ++i) {\n var ch = children[i];\n size += ch.chunkSize();\n height += ch.height;\n ch.parent = this$1;\n }\n\n this.size = size;\n this.height = height;\n this.parent = null;\n }\n\n BranchChunk.prototype = {\n chunkSize: function chunkSize() {\n return this.size;\n },\n removeInner: function removeInner(at, n) {\n var this$1 = this;\n this.size -= n;\n\n for (var i = 0; i < this.children.length; ++i) {\n var child = this$1.children[i],\n sz = child.chunkSize();\n\n if (at < sz) {\n var rm = Math.min(n, sz - at),\n oldHeight = child.height;\n child.removeInner(at, rm);\n this$1.height -= oldHeight - child.height;\n\n if (sz == rm) {\n this$1.children.splice(i--, 1);\n child.parent = null;\n }\n\n if ((n -= rm) == 0) {\n break;\n }\n\n at = 0;\n } else {\n at -= sz;\n }\n } // If the result is smaller than 25 lines, ensure that it is a\n // single leaf node.\n\n\n if (this.size - n < 25 && (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 collapse: function collapse(lines) {\n var this$1 = this;\n\n for (var i = 0; i < this.children.length; ++i) {\n this$1.children[i].collapse(lines);\n }\n },\n insertInner: function insertInner(at, lines, height) {\n var this$1 = this;\n this.size += lines.length;\n this.height += height;\n\n for (var i = 0; i < this.children.length; ++i) {\n var child = this$1.children[i],\n sz = child.chunkSize();\n\n if (at <= sz) {\n child.insertInner(at, lines, height);\n\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\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$1.children.splice(++i, 0, leaf);\n leaf.parent = this$1;\n }\n\n child.lines = child.lines.slice(0, remaining);\n this$1.maybeSpill();\n }\n\n break;\n }\n\n at -= sz;\n }\n },\n // When a node has grown, check whether it should be split.\n maybeSpill: function maybeSpill() {\n if (this.children.length <= 10) {\n return;\n }\n\n var me = this;\n\n do {\n var spilled = me.children.splice(me.children.length - 5, 5);\n var sibling = new BranchChunk(spilled);\n\n if (!me.parent) {\n // 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\n sibling.parent = me.parent;\n } while (me.children.length > 10);\n\n me.parent.maybeSpill();\n },\n iterN: function iterN(at, n, op) {\n var this$1 = this;\n\n for (var i = 0; i < this.children.length; ++i) {\n var child = this$1.children[i],\n sz = child.chunkSize();\n\n if (at < sz) {\n var used = Math.min(n, sz - at);\n\n if (child.iterN(at, used, op)) {\n return true;\n }\n\n if ((n -= used) == 0) {\n break;\n }\n\n at = 0;\n } else {\n at -= sz;\n }\n }\n }\n }; // Line widgets are block elements displayed above or below a line.\n\n var LineWidget = function LineWidget(doc, node, options) {\n var this$1 = this;\n\n if (options) {\n for (var opt in options) {\n if (options.hasOwnProperty(opt)) {\n this$1[opt] = options[opt];\n }\n }\n }\n\n this.doc = doc;\n this.node = node;\n };\n\n LineWidget.prototype.clear = function () {\n var this$1 = this;\n var cm = this.doc.cm,\n ws = this.line.widgets,\n line = this.line,\n no = lineNo(line);\n\n if (no == null || !ws) {\n return;\n }\n\n for (var i = 0; i < ws.length; ++i) {\n if (ws[i] == this$1) {\n ws.splice(i--, 1);\n }\n }\n\n if (!ws.length) {\n line.widgets = null;\n }\n\n var height = widgetHeight(this);\n updateLineHeight(line, Math.max(0, line.height - height));\n\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 var oldH = this.height,\n cm = this.doc.cm,\n line = this.line;\n this.height = null;\n var diff = widgetHeight(this) - oldH;\n\n if (!diff) {\n return;\n }\n\n if (!lineIsHidden(this.doc, line)) {\n updateLineHeight(line, line.height + diff);\n }\n\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\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\n function addLineWidget(doc, handle, node, options) {\n var widget = new LineWidget(doc, node, options);\n var cm = doc.cm;\n\n if (cm && widget.noHScroll) {\n cm.display.alignWidgets = true;\n }\n\n changeLine(doc, handle, \"widget\", function (line) {\n var widgets = line.widgets || (line.widgets = []);\n\n if (widget.insertAt == null) {\n widgets.push(widget);\n } else {\n widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget);\n }\n\n widget.line = line;\n\n if (cm && !lineIsHidden(doc, line)) {\n var aboveVisible = _heightAtLine(line) < doc.scrollTop;\n updateLineHeight(line, line.height + widgetHeight(widget));\n\n if (aboveVisible) {\n addToScrollTop(cm, widget.height);\n }\n\n cm.curOp.forceUpdate = true;\n }\n\n return true;\n });\n\n if (cm) {\n signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle));\n }\n\n return widget;\n } // TEXTMARKERS\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 // 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\n\n var nextMarkerId = 0;\n\n var TextMarker = function TextMarker(doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\n }; // Clear the marker.\n\n\n TextMarker.prototype.clear = function () {\n var this$1 = this;\n\n if (this.explicitlyCleared) {\n return;\n }\n\n var cm = this.doc.cm,\n withOp = cm && !cm.curOp;\n\n if (withOp) {\n _startOperation(cm);\n }\n\n if (hasHandler(this, \"clear\")) {\n var found = this.find();\n\n if (found) {\n signalLater(this, \"clear\", found.from, found.to);\n }\n }\n\n var min = null,\n max = null;\n\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this$1.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this$1);\n\n if (cm && !this$1.collapsed) {\n regLineChange(cm, lineNo(line), \"text\");\n } else if (cm) {\n if (span.to != null) {\n max = lineNo(line);\n }\n\n if (span.from != null) {\n min = lineNo(line);\n }\n }\n\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n\n if (span.from == null && this$1.collapsed && !lineIsHidden(this$1.doc, line) && cm) {\n updateLineHeight(line, textHeight(cm.display));\n }\n }\n\n if (cm && this.collapsed && !cm.options.lineWrapping) {\n for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n var visual = visualLine(this$1.lines[i$1]),\n len = lineLength(visual);\n\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\n if (min != null && cm && this.collapsed) {\n regChange(cm, min, max + 1);\n }\n\n this.lines.length = 0;\n this.explicitlyCleared = true;\n\n if (this.atomic && this.doc.cantEdit) {\n this.doc.cantEdit = false;\n\n if (cm) {\n reCheckSelection(cm.doc);\n }\n }\n\n if (cm) {\n signalLater(cm, \"markerCleared\", cm, this, min, max);\n }\n\n if (withOp) {\n _endOperation(cm);\n }\n\n if (this.parent) {\n this.parent.clear();\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\n\n TextMarker.prototype.find = function (side, lineObj) {\n var this$1 = this;\n\n if (side == null && this.type == \"bookmark\") {\n side = 1;\n }\n\n var from, to;\n\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this$1.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this$1);\n\n if (span.from != null) {\n from = Pos(lineObj ? line : lineNo(line), span.from);\n\n if (side == -1) {\n return from;\n }\n }\n\n if (span.to != null) {\n to = Pos(lineObj ? line : lineNo(line), span.to);\n\n if (side == 1) {\n return to;\n }\n }\n }\n\n return from && {\n from: from,\n to: to\n };\n }; // Signals that the marker's widget changed, and surrounding layout\n // should be recomputed.\n\n\n TextMarker.prototype.changed = function () {\n var this$1 = this;\n var pos = this.find(-1, true),\n widget = this,\n cm = this.doc.cm;\n\n if (!pos || !cm) {\n return;\n }\n\n runInOp(cm, function () {\n var line = pos.line,\n lineN = lineNo(pos.line);\n var view = findViewForLine(cm, lineN);\n\n if (view) {\n clearLineMeasurementCacheFor(view);\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n }\n\n cm.curOp.updateMaxLine = true;\n\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\n if (dHeight) {\n updateLineHeight(line, line.height + dHeight);\n }\n }\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\n if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1) {\n (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this);\n }\n }\n\n this.lines.push(line);\n };\n\n TextMarker.prototype.detachLine = function (line) {\n this.lines.splice(indexOf(this.lines, line), 1);\n\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\n eventMixin(TextMarker); // Create a marker, wire it up to the right lines, and\n\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) {\n return markTextShared(doc, from, to, options, type);\n } // Ensure we are in an operation.\n\n\n if (doc.cm && !doc.cm.curOp) {\n return operation(doc.cm, _markText)(doc, from, to, options, type);\n }\n\n var marker = new TextMarker(doc, type),\n diff = cmp(from, to);\n\n if (options) {\n copyObj(options, marker, false);\n } // Don't connect empty markers unless clearWhenEmpty is false\n\n\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false) {\n return marker;\n }\n\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\n if (!options.handleMouseEvents) {\n marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\");\n }\n\n if (options.insertLeft) {\n marker.widgetNode.insertLeft = true;\n }\n }\n\n if (marker.collapsed) {\n if (conflictingCollapsedRange(doc, from.line, from, to, marker) || from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker)) {\n throw new Error(\"Inserting collapsed marker partially overlapping an existing one\");\n }\n\n seeCollapsedSpans();\n }\n\n if (marker.addToHistory) {\n addChangeToHistory(doc, {\n from: from,\n to: to,\n origin: \"markText\"\n }, doc.sel, NaN);\n }\n\n var curLine = from.line,\n cm = doc.cm,\n 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 }\n\n if (marker.collapsed && curLine != from.line) {\n updateLineHeight(line, 0);\n }\n\n addMarkedSpan(line, new MarkedSpan(marker, curLine == from.line ? from.ch : null, curLine == to.line ? to.ch : null));\n ++curLine;\n }); // lineIsHidden depends on the presence of the spans, so needs a second pass\n\n if (marker.collapsed) {\n doc.iter(from.line, to.line + 1, function (line) {\n if (lineIsHidden(doc, line)) {\n updateLineHeight(line, 0);\n }\n });\n }\n\n if (marker.clearOnEnter) {\n on(marker, \"beforeCursorEnter\", function () {\n return marker.clear();\n });\n }\n\n if (marker.readOnly) {\n seeReadOnlySpans();\n\n if (doc.history.done.length || doc.history.undone.length) {\n doc.clearHistory();\n }\n }\n\n if (marker.collapsed) {\n marker.id = ++nextMarkerId;\n marker.atomic = true;\n }\n\n if (cm) {\n // Sync editor state\n if (updateMaxLine) {\n cm.curOp.updateMaxLine = true;\n }\n\n if (marker.collapsed) {\n regChange(cm, from.line, to.line + 1);\n } else if (marker.className || marker.startStyle || marker.endStyle || marker.css || marker.attributes || marker.title) {\n for (var i = from.line; i <= to.line; i++) {\n regLineChange(cm, i, \"text\");\n }\n }\n\n if (marker.atomic) {\n reCheckSelection(cm.doc);\n }\n\n signalLater(cm, \"markerAdded\", cm, marker);\n }\n\n return marker;\n } // SHARED TEXTMARKERS\n // A shared marker spans multiple linked documents. It is\n // implemented as a meta-marker-object controlling multiple normal\n // markers.\n\n\n var SharedTextMarker = function SharedTextMarker(markers, primary) {\n var this$1 = this;\n this.markers = markers;\n this.primary = primary;\n\n for (var i = 0; i < markers.length; ++i) {\n markers[i].parent = this$1;\n }\n };\n\n SharedTextMarker.prototype.clear = function () {\n var this$1 = this;\n\n if (this.explicitlyCleared) {\n return;\n }\n\n this.explicitlyCleared = true;\n\n for (var i = 0; i < this.markers.length; ++i) {\n this$1.markers[i].clear();\n }\n\n signalLater(this, \"clear\");\n };\n\n SharedTextMarker.prototype.find = function (side, lineObj) {\n return this.primary.find(side, lineObj);\n };\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)],\n primary = markers[0];\n var widget = options.widgetNode;\n linkedDocs(doc, function (doc) {\n if (widget) {\n options.widgetNode = widget.cloneNode(true);\n }\n\n markers.push(_markText(doc, _clipPos(doc, from), _clipPos(doc, to), options, type));\n\n for (var i = 0; i < doc.linked.length; ++i) {\n if (doc.linked[i].isParent) {\n return;\n }\n }\n\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) {\n return m.parent;\n });\n }\n\n function copySharedMarkers(doc, markers) {\n for (var i = 0; i < markers.length; i++) {\n var marker = markers[i],\n pos = marker.find();\n var mFrom = doc.clipPos(pos.from),\n mTo = doc.clipPos(pos.to);\n\n if (cmp(mFrom, mTo)) {\n var subMark = _markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n\n marker.markers.push(subMark);\n subMark.parent = marker;\n }\n }\n }\n\n function detachSharedMarkers(markers) {\n var loop = function loop(i) {\n var marker = markers[i],\n linked = [marker.primary.doc];\n linkedDocs(marker.primary.doc, function (d) {\n return linked.push(d);\n });\n\n for (var j = 0; j < marker.markers.length; j++) {\n var subMarker = marker.markers[j];\n\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++) {\n loop(i);\n }\n }\n\n var nextDocId = 0;\n\n var Doc = function Doc(text, mode, firstLine, lineSep, direction) {\n if (!(this instanceof Doc)) {\n return new Doc(text, mode, firstLine, lineSep, direction);\n }\n\n if (firstLine == null) {\n firstLine = 0;\n }\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\") {\n text = this.splitLines(text);\n }\n\n updateDoc(this, {\n from: start,\n to: start,\n text: text\n });\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 iter(from, to, op) {\n if (op) {\n this.iterN(from - this.first, to - from, op);\n } else {\n this.iterN(this.first, this.first + this.size, from);\n }\n },\n // Non-public interface for adding and removing lines.\n insert: function insert(at, lines) {\n var height = 0;\n\n for (var i = 0; i < lines.length; ++i) {\n height += lines[i].height;\n }\n\n this.insertInner(at - this.first, lines, height);\n },\n remove: function remove(at, n) {\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 getValue: function getValue(lineSep) {\n var lines = getLines(this, this.first, this.first + this.size);\n\n if (lineSep === false) {\n return lines;\n }\n\n return lines.join(lineSep || this.lineSeparator());\n },\n setValue: docMethodOp(function (code) {\n var top = Pos(this.first, 0),\n last = this.first + this.size - 1;\n makeChange(this, {\n from: top,\n to: Pos(last, getLine(this, last).text.length),\n text: this.splitLines(code),\n origin: \"setValue\",\n full: true\n }, true);\n\n if (this.cm) {\n scrollToCoords(this.cm, 0, 0);\n }\n\n setSelection(this, simpleSelection(top), sel_dontScroll);\n }),\n replaceRange: function replaceRange(code, from, to, origin) {\n from = _clipPos(this, from);\n to = to ? _clipPos(this, to) : from;\n\n _replaceRange(this, code, from, to, origin);\n },\n getRange: function getRange(from, to, lineSep) {\n var lines = getBetween(this, _clipPos(this, from), _clipPos(this, to));\n\n if (lineSep === false) {\n return lines;\n }\n\n return lines.join(lineSep || this.lineSeparator());\n },\n getLine: function getLine(line) {\n var l = this.getLineHandle(line);\n return l && l.text;\n },\n getLineHandle: function getLineHandle(line) {\n if (isLine(this, line)) {\n return getLine(this, line);\n }\n },\n getLineNumber: function getLineNumber(line) {\n return lineNo(line);\n },\n getLineHandleVisualStart: function getLineHandleVisualStart(line) {\n if (typeof line == \"number\") {\n line = getLine(this, line);\n }\n\n return visualLine(line);\n },\n lineCount: function lineCount() {\n return this.size;\n },\n firstLine: function firstLine() {\n return this.first;\n },\n lastLine: function lastLine() {\n return this.first + this.size - 1;\n },\n clipPos: function clipPos(pos) {\n return _clipPos(this, pos);\n },\n getCursor: function getCursor(start) {\n var range$$1 = this.sel.primary(),\n pos;\n\n if (start == null || start == \"head\") {\n pos = range$$1.head;\n } else if (start == \"anchor\") {\n pos = range$$1.anchor;\n } else if (start == \"end\" || start == \"to\" || start === false) {\n pos = range$$1.to();\n } else {\n pos = range$$1.from();\n }\n\n return pos;\n },\n listSelections: function listSelections() {\n return this.sel.ranges;\n },\n somethingSelected: function somethingSelected() {\n 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 var this$1 = this;\n\n if (!ranges.length) {\n return;\n }\n\n var out = [];\n\n for (var i = 0; i < ranges.length; i++) {\n out[i] = new Range(_clipPos(this$1, ranges[i].anchor), _clipPos(this$1, ranges[i].head));\n }\n\n if (primary == null) {\n primary = Math.min(ranges.length - 1, this.sel.primIndex);\n }\n\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 getSelection: function getSelection(lineSep) {\n var this$1 = this;\n var ranges = this.sel.ranges,\n lines;\n\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this$1, ranges[i].from(), ranges[i].to());\n lines = lines ? lines.concat(sel) : sel;\n }\n\n if (lineSep === false) {\n return lines;\n } else {\n return lines.join(lineSep || this.lineSeparator());\n }\n },\n getSelections: function getSelections(lineSep) {\n var this$1 = this;\n var parts = [],\n ranges = this.sel.ranges;\n\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this$1, ranges[i].from(), ranges[i].to());\n\n if (lineSep !== false) {\n sel = sel.join(lineSep || this$1.lineSeparator());\n }\n\n parts[i] = sel;\n }\n\n return parts;\n },\n replaceSelection: function replaceSelection(code, collapse, origin) {\n var dup = [];\n\n for (var i = 0; i < this.sel.ranges.length; i++) {\n dup[i] = code;\n }\n\n this.replaceSelections(dup, collapse, origin || \"+input\");\n },\n replaceSelections: docMethodOp(function (code, collapse, origin) {\n var this$1 = this;\n var changes = [],\n sel = this.sel;\n\n for (var i = 0; i < sel.ranges.length; i++) {\n var range$$1 = sel.ranges[i];\n changes[i] = {\n from: range$$1.from(),\n to: range$$1.to(),\n text: this$1.splitLines(code[i]),\n origin: origin\n };\n }\n\n var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n\n for (var i$1 = changes.length - 1; i$1 >= 0; i$1--) {\n makeChange(this$1, changes[i$1]);\n }\n\n if (newSel) {\n setSelectionReplaceHistory(this, newSel);\n } else if (this.cm) {\n ensureCursorVisible(this.cm);\n }\n }),\n undo: docMethodOp(function () {\n makeChangeFromHistory(this, \"undo\");\n }),\n redo: docMethodOp(function () {\n makeChangeFromHistory(this, \"redo\");\n }),\n undoSelection: docMethodOp(function () {\n makeChangeFromHistory(this, \"undo\", true);\n }),\n redoSelection: docMethodOp(function () {\n makeChangeFromHistory(this, \"redo\", true);\n }),\n setExtending: function setExtending(val) {\n this.extend = val;\n },\n getExtending: function getExtending() {\n return this.extend;\n },\n historySize: function historySize() {\n var hist = this.history,\n done = 0,\n undone = 0;\n\n for (var i = 0; i < hist.done.length; i++) {\n if (!hist.done[i].ranges) {\n ++done;\n }\n }\n\n for (var i$1 = 0; i$1 < hist.undone.length; i$1++) {\n if (!hist.undone[i$1].ranges) {\n ++undone;\n }\n }\n\n return {\n undo: done,\n redo: undone\n };\n },\n clearHistory: function clearHistory() {\n this.history = new History(this.history.maxGeneration);\n },\n markClean: function markClean() {\n this.cleanGeneration = this.changeGeneration(true);\n },\n changeGeneration: function changeGeneration(forceSplit) {\n if (forceSplit) {\n this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null;\n }\n\n return this.history.generation;\n },\n isClean: function isClean(gen) {\n return this.history.generation == (gen || this.cleanGeneration);\n },\n getHistory: function getHistory() {\n return {\n done: copyHistoryArray(this.history.done),\n undone: copyHistoryArray(this.history.undone)\n };\n },\n setHistory: function setHistory(histData) {\n var hist = this.history = new History(this.history.maxGeneration);\n hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\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\n if (!value && isEmpty(markers)) {\n line.gutterMarkers = null;\n }\n\n return true;\n });\n }),\n clearGutter: docMethodOp(function (gutterID) {\n var this$1 = this;\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\n if (isEmpty(line.gutterMarkers)) {\n line.gutterMarkers = null;\n }\n\n return true;\n });\n }\n });\n }),\n lineInfo: function lineInfo(line) {\n var n;\n\n if (typeof line == \"number\") {\n if (!isLine(this, line)) {\n return null;\n }\n\n n = line;\n line = getLine(this, line);\n\n if (!line) {\n return null;\n }\n } else {\n n = lineNo(line);\n\n if (n == null) {\n return null;\n }\n }\n\n return {\n line: n,\n handle: line,\n text: line.text,\n gutterMarkers: line.gutterMarkers,\n textClass: line.textClass,\n bgClass: line.bgClass,\n 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\" : where == \"background\" ? \"bgClass\" : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n\n if (!line[prop]) {\n line[prop] = cls;\n } else if (classTest(cls).test(line[prop])) {\n return false;\n } else {\n line[prop] += \" \" + cls;\n }\n\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\" : where == \"background\" ? \"bgClass\" : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n var cur = line[prop];\n\n if (!cur) {\n return false;\n } else if (cls == null) {\n line[prop] = null;\n } else {\n var found = cur.match(classTest(cls));\n\n if (!found) {\n return false;\n }\n\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\n return true;\n });\n }),\n addLineWidget: docMethodOp(function (handle, node, options) {\n return addLineWidget(this, handle, node, options);\n }),\n removeLineWidget: function removeLineWidget(widget) {\n widget.clear();\n },\n markText: function markText(from, to, options) {\n return _markText(this, _clipPos(this, from), _clipPos(this, to), options, options && options.type || \"range\");\n },\n setBookmark: function setBookmark(pos, options) {\n var realOpts = {\n replacedWith: options && (options.nodeType == null ? options.widget : options),\n insertLeft: options && options.insertLeft,\n clearWhenEmpty: false,\n shared: options && options.shared,\n handleMouseEvents: options && options.handleMouseEvents\n };\n pos = _clipPos(this, pos);\n return _markText(this, pos, pos, realOpts, \"bookmark\");\n },\n findMarksAt: function findMarksAt(pos) {\n pos = _clipPos(this, pos);\n var markers = [],\n spans = getLine(this, pos.line).markedSpans;\n\n if (spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n\n if ((span.from == null || span.from <= pos.ch) && (span.to == null || span.to >= pos.ch)) {\n markers.push(span.marker.parent || span.marker);\n }\n }\n }\n\n return markers;\n },\n findMarks: function findMarks(from, to, filter) {\n from = _clipPos(this, from);\n to = _clipPos(this, to);\n var found = [],\n lineNo$$1 = from.line;\n this.iter(from.line, to.line + 1, function (line) {\n var spans = line.markedSpans;\n\n if (spans) {\n for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n\n if (!(span.to != null && lineNo$$1 == from.line && from.ch >= span.to || span.from == null && lineNo$$1 != from.line || span.from != null && lineNo$$1 == to.line && span.from >= to.ch) && (!filter || filter(span.marker))) {\n found.push(span.marker.parent || span.marker);\n }\n }\n }\n\n ++lineNo$$1;\n });\n return found;\n },\n getAllMarks: function getAllMarks() {\n var markers = [];\n this.iter(function (line) {\n var sps = line.markedSpans;\n\n if (sps) {\n for (var i = 0; i < sps.length; ++i) {\n if (sps[i].from != null) {\n markers.push(sps[i].marker);\n }\n }\n }\n });\n return markers;\n },\n posFromIndex: function posFromIndex(off) {\n var ch,\n lineNo$$1 = this.first,\n sepSize = this.lineSeparator().length;\n this.iter(function (line) {\n var sz = line.text.length + sepSize;\n\n if (sz > off) {\n ch = off;\n return true;\n }\n\n off -= sz;\n ++lineNo$$1;\n });\n return _clipPos(this, Pos(lineNo$$1, ch));\n },\n indexFromPos: function indexFromPos(coords) {\n coords = _clipPos(this, coords);\n var index = coords.ch;\n\n if (coords.line < this.first || coords.ch < 0) {\n return 0;\n }\n\n var sepSize = this.lineSeparator().length;\n this.iter(this.first, coords.line, function (line) {\n // iter aborts when callback returns a truthy value\n index += line.text.length + sepSize;\n });\n return index;\n },\n copy: function copy(copyHistory) {\n var doc = new Doc(getLines(this, this.first, this.first + this.size), this.modeOption, this.first, this.lineSep, this.direction);\n doc.scrollTop = this.scrollTop;\n doc.scrollLeft = this.scrollLeft;\n doc.sel = this.sel;\n doc.extend = false;\n\n if (copyHistory) {\n doc.history.undoDepth = this.history.undoDepth;\n doc.setHistory(this.getHistory());\n }\n\n return doc;\n },\n linkedDoc: function linkedDoc(options) {\n if (!options) {\n options = {};\n }\n\n var from = this.first,\n to = this.first + this.size;\n\n if (options.from != null && options.from > from) {\n from = options.from;\n }\n\n if (options.to != null && options.to < to) {\n to = options.to;\n }\n\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n\n if (options.sharedHist) {\n copy.history = this.history;\n }\n\n (this.linked || (this.linked = [])).push({\n doc: copy,\n sharedHist: options.sharedHist\n });\n copy.linked = [{\n doc: this,\n isParent: true,\n sharedHist: options.sharedHist\n }];\n copySharedMarkers(copy, findSharedMarkers(this));\n return copy;\n },\n unlinkDoc: function unlinkDoc(other) {\n var this$1 = this;\n\n if (other instanceof CodeMirror) {\n other = other.doc;\n }\n\n if (this.linked) {\n for (var i = 0; i < this.linked.length; ++i) {\n var link = this$1.linked[i];\n\n if (link.doc != other) {\n continue;\n }\n\n this$1.linked.splice(i, 1);\n other.unlinkDoc(this$1);\n detachSharedMarkers(findSharedMarkers(this$1));\n break;\n }\n } // If the histories were shared, split them again\n\n\n if (other.history == this.history) {\n var splitIds = [other.id];\n linkedDocs(other, function (doc) {\n return splitIds.push(doc.id);\n }, 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 iterLinkedDocs(f) {\n linkedDocs(this, f);\n },\n getMode: function getMode() {\n return this.mode;\n },\n getEditor: function getEditor() {\n return this.cm;\n },\n splitLines: function splitLines(str) {\n if (this.lineSep) {\n return str.split(this.lineSep);\n }\n\n return splitLinesAuto(str);\n },\n lineSeparator: function lineSeparator() {\n return this.lineSep || \"\\n\";\n },\n setDirection: docMethodOp(function (dir) {\n if (dir != \"rtl\") {\n dir = \"ltr\";\n }\n\n if (dir == this.direction) {\n return;\n }\n\n this.direction = dir;\n this.iter(function (line) {\n return line.order = null;\n });\n\n if (this.cm) {\n directionChanged(this.cm);\n }\n })\n }); // Public alias.\n\n Doc.prototype.eachLine = Doc.prototype.iter; // 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\n var lastDrop = 0;\n\n function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) {\n return;\n }\n\n e_preventDefault(e);\n\n if (ie) {\n lastDrop = +new Date();\n }\n\n var pos = posFromMouse(cm, e, true),\n files = e.dataTransfer.files;\n\n if (!pos || cm.isReadOnly()) {\n return;\n } // Might be a file drop, in which case we simply extract the text\n // and insert it.\n\n\n if (files && files.length && window.FileReader && window.File) {\n var n = files.length,\n text = Array(n),\n read = 0;\n\n var loadFile = function loadFile(file, i) {\n if (cm.options.allowDropFileTypes && indexOf(cm.options.allowDropFileTypes, file.type) == -1) {\n return;\n }\n\n var reader = new FileReader();\n reader.onload = operation(cm, function () {\n var content = reader.result;\n\n if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) {\n content = \"\";\n }\n\n text[i] = content;\n\n if (++read == n) {\n pos = _clipPos(cm.doc, pos);\n var change = {\n from: pos,\n to: pos,\n text: cm.doc.splitLines(text.join(cm.doc.lineSeparator())),\n origin: \"paste\"\n };\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(pos, changeEnd(change)));\n }\n });\n reader.readAsText(file);\n };\n\n for (var i = 0; i < n; ++i) {\n loadFile(files[i], i);\n }\n } else {\n // 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); // Ensure the editor is re-focused\n\n setTimeout(function () {\n return cm.display.input.focus();\n }, 20);\n return;\n }\n\n try {\n var text$1 = e.dataTransfer.getData(\"Text\");\n\n if (text$1) {\n var selected;\n\n if (cm.state.draggingText && !cm.state.draggingText.copy) {\n selected = cm.listSelections();\n }\n\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n\n if (selected) {\n 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 }\n }\n\n cm.replaceSelection(text$1, \"around\", \"paste\");\n cm.display.input.focus();\n }\n } catch (e) {}\n }\n }\n\n function onDragStart(cm, e) {\n if (ie && (!cm.state.draggingText || +new Date() - lastDrop < 100)) {\n e_stop(e);\n return;\n }\n\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) {\n return;\n }\n\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\"; // 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\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\n if (presto) {\n img.width = img.height = 1;\n cm.display.wrapper.appendChild(img); // Force a relayout, or Opera won't use our image for some obscure reason\n\n img._top = img.offsetTop;\n }\n\n e.dataTransfer.setDragImage(img, 0, 0);\n\n if (presto) {\n img.parentNode.removeChild(img);\n }\n }\n }\n\n function onDragOver(cm, e) {\n var pos = posFromMouse(cm, e);\n\n if (!pos) {\n return;\n }\n\n var frag = document.createDocumentFragment();\n drawSelectionCursor(cm, pos, frag);\n\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\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 } // 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\n function forEachCodeMirror(f) {\n if (!document.getElementsByClassName) {\n return;\n }\n\n var byClass = document.getElementsByClassName(\"CodeMirror\"),\n editors = [];\n\n for (var i = 0; i < byClass.length; i++) {\n var cm = byClass[i].CodeMirror;\n\n if (cm) {\n editors.push(cm);\n }\n }\n\n if (editors.length) {\n editors[0].operation(function () {\n for (var i = 0; i < editors.length; i++) {\n f(editors[i]);\n }\n });\n }\n }\n\n var globalsRegistered = false;\n\n function ensureGlobalHandlers() {\n if (globalsRegistered) {\n return;\n }\n\n registerGlobalHandlers();\n globalsRegistered = true;\n }\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) {\n 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\n on(window, \"blur\", function () {\n return forEachCodeMirror(onBlur);\n });\n } // Called when the window resizes\n\n\n function onResize(cm) {\n var d = cm.display; // Might be a text scaling operation, clear size caches.\n\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.scrollbarsClipped = false;\n cm.setSize();\n }\n\n var keyNames = {\n 3: \"Pause\",\n 8: \"Backspace\",\n 9: \"Tab\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Ctrl\",\n 18: \"Alt\",\n 19: \"Pause\",\n 20: \"CapsLock\",\n 27: \"Esc\",\n 32: \"Space\",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"Left\",\n 38: \"Up\",\n 39: \"Right\",\n 40: \"Down\",\n 44: \"PrintScrn\",\n 45: \"Insert\",\n 46: \"Delete\",\n 59: \";\",\n 61: \"=\",\n 91: \"Mod\",\n 92: \"Mod\",\n 93: \"Mod\",\n 106: \"*\",\n 107: \"=\",\n 109: \"-\",\n 110: \".\",\n 111: \"/\",\n 145: \"ScrollLock\",\n 173: \"-\",\n 186: \";\",\n 187: \"=\",\n 188: \",\",\n 189: \"-\",\n 190: \".\",\n 191: \"/\",\n 192: \"`\",\n 219: \"[\",\n 220: \"\\\\\",\n 221: \"]\",\n 222: \"'\",\n 63232: \"Up\",\n 63233: \"Down\",\n 63234: \"Left\",\n 63235: \"Right\",\n 63272: \"Delete\",\n 63273: \"Home\",\n 63275: \"End\",\n 63276: \"PageUp\",\n 63277: \"PageDown\",\n 63302: \"Insert\"\n }; // Number keys\n\n for (var i = 0; i < 10; i++) {\n keyNames[i + 48] = keyNames[i + 96] = String(i);\n } // Alphabetic keys\n\n\n for (var i$1 = 65; i$1 <= 90; i$1++) {\n keyNames[i$1] = String.fromCharCode(i$1);\n } // Function keys\n\n\n for (var i$2 = 1; i$2 <= 12; i$2++) {\n keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2;\n }\n\n var keyMap = {};\n keyMap.basic = {\n \"Left\": \"goCharLeft\",\n \"Right\": \"goCharRight\",\n \"Up\": \"goLineUp\",\n \"Down\": \"goLineDown\",\n \"End\": \"goLineEnd\",\n \"Home\": \"goLineStartSmart\",\n \"PageUp\": \"goPageUp\",\n \"PageDown\": \"goPageDown\",\n \"Delete\": \"delCharAfter\",\n \"Backspace\": \"delCharBefore\",\n \"Shift-Backspace\": \"delCharBefore\",\n \"Tab\": \"defaultTab\",\n \"Shift-Tab\": \"indentAuto\",\n \"Enter\": \"newlineAndIndent\",\n \"Insert\": \"toggleOverwrite\",\n \"Esc\": \"singleSelection\"\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\n keyMap.pcDefault = {\n \"Ctrl-A\": \"selectAll\",\n \"Ctrl-D\": \"deleteLine\",\n \"Ctrl-Z\": \"undo\",\n \"Shift-Ctrl-Z\": \"redo\",\n \"Ctrl-Y\": \"redo\",\n \"Ctrl-Home\": \"goDocStart\",\n \"Ctrl-End\": \"goDocEnd\",\n \"Ctrl-Up\": \"goLineUp\",\n \"Ctrl-Down\": \"goLineDown\",\n \"Ctrl-Left\": \"goGroupLeft\",\n \"Ctrl-Right\": \"goGroupRight\",\n \"Alt-Left\": \"goLineStart\",\n \"Alt-Right\": \"goLineEnd\",\n \"Ctrl-Backspace\": \"delGroupBefore\",\n \"Ctrl-Delete\": \"delGroupAfter\",\n \"Ctrl-S\": \"save\",\n \"Ctrl-F\": \"find\",\n \"Ctrl-G\": \"findNext\",\n \"Shift-Ctrl-G\": \"findPrev\",\n \"Shift-Ctrl-F\": \"replace\",\n \"Shift-Ctrl-R\": \"replaceAll\",\n \"Ctrl-[\": \"indentLess\",\n \"Ctrl-]\": \"indentMore\",\n \"Ctrl-U\": \"undoSelection\",\n \"Shift-Ctrl-U\": \"redoSelection\",\n \"Alt-U\": \"redoSelection\",\n \"fallthrough\": \"basic\"\n }; // Very basic readline/emacs-style bindings, which are standard on Mac.\n\n keyMap.emacsy = {\n \"Ctrl-F\": \"goCharRight\",\n \"Ctrl-B\": \"goCharLeft\",\n \"Ctrl-P\": \"goLineUp\",\n \"Ctrl-N\": \"goLineDown\",\n \"Alt-F\": \"goWordRight\",\n \"Alt-B\": \"goWordLeft\",\n \"Ctrl-A\": \"goLineStart\",\n \"Ctrl-E\": \"goLineEnd\",\n \"Ctrl-V\": \"goPageDown\",\n \"Shift-Ctrl-V\": \"goPageUp\",\n \"Ctrl-D\": \"delCharAfter\",\n \"Ctrl-H\": \"delCharBefore\",\n \"Alt-D\": \"delWordAfter\",\n \"Alt-Backspace\": \"delWordBefore\",\n \"Ctrl-K\": \"killLine\",\n \"Ctrl-T\": \"transposeChars\",\n \"Ctrl-O\": \"openLine\"\n };\n keyMap.macDefault = {\n \"Cmd-A\": \"selectAll\",\n \"Cmd-D\": \"deleteLine\",\n \"Cmd-Z\": \"undo\",\n \"Shift-Cmd-Z\": \"redo\",\n \"Cmd-Y\": \"redo\",\n \"Cmd-Home\": \"goDocStart\",\n \"Cmd-Up\": \"goDocStart\",\n \"Cmd-End\": \"goDocEnd\",\n \"Cmd-Down\": \"goDocEnd\",\n \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\",\n \"Cmd-Left\": \"goLineLeft\",\n \"Cmd-Right\": \"goLineRight\",\n \"Alt-Backspace\": \"delGroupBefore\",\n \"Ctrl-Alt-Backspace\": \"delGroupAfter\",\n \"Alt-Delete\": \"delGroupAfter\",\n \"Cmd-S\": \"save\",\n \"Cmd-F\": \"find\",\n \"Cmd-G\": \"findNext\",\n \"Shift-Cmd-G\": \"findPrev\",\n \"Cmd-Alt-F\": \"replace\",\n \"Shift-Cmd-Alt-F\": \"replaceAll\",\n \"Cmd-[\": \"indentLess\",\n \"Cmd-]\": \"indentMore\",\n \"Cmd-Backspace\": \"delWrappedLineLeft\",\n \"Cmd-Delete\": \"delWrappedLineRight\",\n \"Cmd-U\": \"undoSelection\",\n \"Shift-Cmd-U\": \"redoSelection\",\n \"Ctrl-Up\": \"goDocStart\",\n \"Ctrl-Down\": \"goDocEnd\",\n \"fallthrough\": [\"basic\", \"emacsy\"]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault; // 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\n for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n\n if (/^(cmd|meta|m)$/i.test(mod)) {\n cmd = true;\n } else if (/^a(lt)?$/i.test(mod)) {\n alt = true;\n } else if (/^(c|ctrl|control)$/i.test(mod)) {\n ctrl = true;\n } else if (/^s(hift)?$/i.test(mod)) {\n shift = true;\n } else {\n throw new Error(\"Unrecognized modifier name: \" + mod);\n }\n }\n\n if (alt) {\n name = \"Alt-\" + name;\n }\n\n if (ctrl) {\n name = \"Ctrl-\" + name;\n }\n\n if (cmd) {\n name = \"Cmd-\" + name;\n }\n\n if (shift) {\n name = \"Shift-\" + name;\n }\n\n return name;\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\n\n function normalizeKeyMap(keymap) {\n var copy = {};\n\n for (var keyname in keymap) {\n if (keymap.hasOwnProperty(keyname)) {\n var value = keymap[keyname];\n\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) {\n continue;\n }\n\n if (value == \"...\") {\n delete keymap[keyname];\n continue;\n }\n\n var keys = map(keyname.split(\" \"), normalizeKeyName);\n\n for (var i = 0; i < keys.length; i++) {\n var val = void 0,\n name = void 0;\n\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\n var prev = copy[name];\n\n if (!prev) {\n copy[name] = val;\n } else if (prev != val) {\n throw new Error(\"Inconsistent bindings for \" + name);\n }\n }\n\n delete keymap[keyname];\n }\n }\n\n for (var prop in copy) {\n keymap[prop] = copy[prop];\n }\n\n return keymap;\n }\n\n function lookupKey(key, map$$1, handle, context) {\n map$$1 = getKeyMap(map$$1);\n var found = map$$1.call ? map$$1.call(key, context) : map$$1[key];\n\n if (found === false) {\n return \"nothing\";\n }\n\n if (found === \"...\") {\n return \"multi\";\n }\n\n if (found != null && handle(found)) {\n return \"handled\";\n }\n\n if (map$$1.fallthrough) {\n if (Object.prototype.toString.call(map$$1.fallthrough) != \"[object Array]\") {\n return lookupKey(key, map$$1.fallthrough, handle, context);\n }\n\n for (var i = 0; i < map$$1.fallthrough.length; i++) {\n var result = lookupKey(key, map$$1.fallthrough[i], handle, context);\n\n if (result) {\n return result;\n }\n }\n }\n } // Modifier key presses don't count as 'real' key presses for the\n // purpose of keymap fallthrough.\n\n\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\n if (event.altKey && base != \"Alt\") {\n name = \"Alt-\" + name;\n }\n\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") {\n name = \"Ctrl-\" + name;\n }\n\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Cmd\") {\n name = \"Cmd-\" + name;\n }\n\n if (!noShift && event.shiftKey && base != \"Shift\") {\n name = \"Shift-\" + name;\n }\n\n return name;\n } // Look up the name of a key as indicated by an event object.\n\n\n function keyName(event, noShift) {\n if (presto && event.keyCode == 34 && event[\"char\"]) {\n return false;\n }\n\n var name = keyNames[event.keyCode];\n\n if (name == null || event.altGraphKey) {\n 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\n\n if (event.keyCode == 3 && event.code) {\n name = event.code;\n }\n\n return addModifierNames(name, event, noShift);\n }\n\n function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val;\n } // Helper for deleting text near the selection(s), used to implement\n // backspace, delete, and similar functionality.\n\n\n function deleteNearSelection(cm, compute) {\n var ranges = cm.doc.sel.ranges,\n kill = []; // Build up a set of ranges to kill first, merging overlapping\n // ranges.\n\n for (var i = 0; i < ranges.length; i++) {\n var toKill = compute(ranges[i]);\n\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n var replaced = kill.pop();\n\n if (cmp(replaced.from, toKill.from) < 0) {\n toKill.from = replaced.from;\n break;\n }\n }\n\n kill.push(toKill);\n } // Next, remove those actual ranges.\n\n\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 }\n\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 var order = getOrder(lineObj, cm.doc.direction);\n\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; // 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\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) {\n return measureCharPrepared(cm, prep, ch).top == targetTop;\n }, dir < 0 == (part.level == 1) ? part.from : part.to - 1, ch);\n\n if (sticky == \"before\") {\n ch = moveCharLogically(lineObj, ch, 1);\n }\n } else {\n ch = dir < 0 ? part.to : part.from;\n }\n\n return new Pos(lineNo, ch, sticky);\n }\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\n if (!bidi) {\n return moveLogically(line, start, dir);\n }\n\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\n var partPos = getBidiPartAt(bidi, start.ch, start.sticky),\n part = bidi[partPos];\n\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 mv(pos, dir) {\n return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir);\n };\n\n var prep;\n\n var getWrappedLineExtent = function getWrappedLineExtent(ch) {\n if (!cm.options.lineWrapping) {\n return {\n begin: 0,\n end: line.text.length\n };\n }\n\n prep = prep || prepareMeasureForLine(cm, line);\n return wrappedLineExtentChar(cm, line, prep, ch);\n };\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\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 } // Case 3: Could not move within this bidi part in this visual line, so leave\n // the current bidi part\n\n\n var searchInVisualLine = function searchInVisualLine(partPos, dir, wrappedLineExtent) {\n var getRes = function getRes(ch, moveInStorageOrder) {\n return moveInStorageOrder ? new Pos(start.line, mv(ch, 1), \"before\") : new Pos(start.line, ch, \"after\");\n };\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\n if (part.from <= ch && ch < part.to) {\n return getRes(ch, moveInStorageOrder);\n }\n\n ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n\n if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) {\n return getRes(ch, moveInStorageOrder);\n }\n }\n }; // Case 3a: Look for other bidi parts on the same visual line\n\n\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n\n if (res) {\n return res;\n } // Case 3b: Look for other bidi parts on the next visual line\n\n\n var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n\n if (res) {\n return res;\n }\n } // Case 4: Nowhere to move\n\n\n return null;\n } // Commands are parameter-less actions that can be performed on an\n // editor, mostly used for keybindings.\n\n\n var commands = {\n selectAll: selectAll,\n singleSelection: function singleSelection(cm) {\n return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll);\n },\n killLine: function killLine(cm) {\n return deleteNearSelection(cm, function (range) {\n if (range.empty()) {\n var len = getLine(cm.doc, range.head.line).text.length;\n\n if (range.head.ch == len && range.head.line < cm.lastLine()) {\n return {\n from: range.head,\n to: Pos(range.head.line + 1, 0)\n };\n } else {\n return {\n from: range.head,\n to: Pos(range.head.line, len)\n };\n }\n } else {\n return {\n from: range.from(),\n to: range.to()\n };\n }\n });\n },\n deleteLine: function deleteLine(cm) {\n return deleteNearSelection(cm, function (range) {\n return {\n from: Pos(range.from().line, 0),\n to: _clipPos(cm.doc, Pos(range.to().line + 1, 0))\n };\n });\n },\n delLineLeft: function delLineLeft(cm) {\n return deleteNearSelection(cm, function (range) {\n return {\n from: Pos(range.from().line, 0),\n to: range.from()\n };\n });\n },\n delWrappedLineLeft: function delWrappedLineLeft(cm) {\n return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var leftPos = cm.coordsChar({\n left: 0,\n top: top\n }, \"div\");\n return {\n from: leftPos,\n to: range.from()\n };\n });\n },\n delWrappedLineRight: function delWrappedLineRight(cm) {\n return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var rightPos = cm.coordsChar({\n left: cm.display.lineDiv.offsetWidth + 100,\n top: top\n }, \"div\");\n return {\n from: range.from(),\n to: rightPos\n };\n });\n },\n undo: function undo(cm) {\n return cm.undo();\n },\n redo: function redo(cm) {\n return cm.redo();\n },\n undoSelection: function undoSelection(cm) {\n return cm.undoSelection();\n },\n redoSelection: function redoSelection(cm) {\n return cm.redoSelection();\n },\n goDocStart: function goDocStart(cm) {\n return cm.extendSelection(Pos(cm.firstLine(), 0));\n },\n goDocEnd: function goDocEnd(cm) {\n return cm.extendSelection(Pos(cm.lastLine()));\n },\n goLineStart: function goLineStart(cm) {\n return cm.extendSelectionsBy(function (range) {\n return lineStart(cm, range.head.line);\n }, {\n origin: \"+move\",\n bias: 1\n });\n },\n goLineStartSmart: function goLineStartSmart(cm) {\n return cm.extendSelectionsBy(function (range) {\n return lineStartSmart(cm, range.head);\n }, {\n origin: \"+move\",\n bias: 1\n });\n },\n goLineEnd: function goLineEnd(cm) {\n return cm.extendSelectionsBy(function (range) {\n return lineEnd(cm, range.head.line);\n }, {\n origin: \"+move\",\n bias: -1\n });\n },\n goLineRight: function goLineRight(cm) {\n return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({\n left: cm.display.lineDiv.offsetWidth + 100,\n top: top\n }, \"div\");\n }, sel_move);\n },\n goLineLeft: function goLineLeft(cm) {\n return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({\n left: 0,\n top: top\n }, \"div\");\n }, sel_move);\n },\n goLineLeftSmart: function goLineLeftSmart(cm) {\n return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n var pos = cm.coordsChar({\n left: 0,\n top: top\n }, \"div\");\n\n if (pos.ch < cm.getLine(pos.line).search(/\\S/)) {\n return lineStartSmart(cm, range.head);\n }\n\n return pos;\n }, sel_move);\n },\n goLineUp: function goLineUp(cm) {\n return cm.moveV(-1, \"line\");\n },\n goLineDown: function goLineDown(cm) {\n return cm.moveV(1, \"line\");\n },\n goPageUp: function goPageUp(cm) {\n return cm.moveV(-1, \"page\");\n },\n goPageDown: function goPageDown(cm) {\n return cm.moveV(1, \"page\");\n },\n goCharLeft: function goCharLeft(cm) {\n return cm.moveH(-1, \"char\");\n },\n goCharRight: function goCharRight(cm) {\n return cm.moveH(1, \"char\");\n },\n goColumnLeft: function goColumnLeft(cm) {\n return cm.moveH(-1, \"column\");\n },\n goColumnRight: function goColumnRight(cm) {\n return cm.moveH(1, \"column\");\n },\n goWordLeft: function goWordLeft(cm) {\n return cm.moveH(-1, \"word\");\n },\n goGroupRight: function goGroupRight(cm) {\n return cm.moveH(1, \"group\");\n },\n goGroupLeft: function goGroupLeft(cm) {\n return cm.moveH(-1, \"group\");\n },\n goWordRight: function goWordRight(cm) {\n return cm.moveH(1, \"word\");\n },\n delCharBefore: function delCharBefore(cm) {\n return cm.deleteH(-1, \"char\");\n },\n delCharAfter: function delCharAfter(cm) {\n return cm.deleteH(1, \"char\");\n },\n delWordBefore: function delWordBefore(cm) {\n return cm.deleteH(-1, \"word\");\n },\n delWordAfter: function delWordAfter(cm) {\n return cm.deleteH(1, \"word\");\n },\n delGroupBefore: function delGroupBefore(cm) {\n return cm.deleteH(-1, \"group\");\n },\n delGroupAfter: function delGroupAfter(cm) {\n return cm.deleteH(1, \"group\");\n },\n indentAuto: function indentAuto(cm) {\n return cm.indentSelection(\"smart\");\n },\n indentMore: function indentMore(cm) {\n return cm.indentSelection(\"add\");\n },\n indentLess: function indentLess(cm) {\n return cm.indentSelection(\"subtract\");\n },\n insertTab: function insertTab(cm) {\n return cm.replaceSelection(\"\\t\");\n },\n insertSoftTab: function insertSoftTab(cm) {\n var spaces = [],\n ranges = cm.listSelections(),\n tabSize = cm.options.tabSize;\n\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\n cm.replaceSelections(spaces);\n },\n defaultTab: function defaultTab(cm) {\n if (cm.somethingSelected()) {\n cm.indentSelection(\"add\");\n } else {\n cm.execCommand(\"insertTab\");\n }\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 transposeChars(cm) {\n return runInOp(cm, function () {\n var ranges = cm.listSelections(),\n newSel = [];\n\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) {\n continue;\n }\n\n var cur = ranges[i].head,\n line = getLine(cm.doc, cur.line).text;\n\n if (line) {\n if (cur.ch == line.length) {\n cur = new Pos(cur.line, cur.ch - 1);\n }\n\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), 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\n if (prev) {\n cur = new Pos(cur.line, 1);\n cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() + prev.charAt(prev.length - 1), Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n }\n }\n }\n\n newSel.push(new Range(cur, cur));\n }\n\n cm.setSelections(newSel);\n });\n },\n newlineAndIndent: function newlineAndIndent(cm) {\n return runInOp(cm, function () {\n var sels = cm.listSelections();\n\n for (var i = sels.length - 1; i >= 0; i--) {\n cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\");\n }\n\n sels = cm.listSelections();\n\n for (var i$1 = 0; i$1 < sels.length; i$1++) {\n cm.indentLine(sels[i$1].from().line, null, true);\n }\n\n ensureCursorVisible(cm);\n });\n },\n openLine: function openLine(cm) {\n return cm.replaceSelection(\"\\n\", \"start\");\n },\n toggleOverwrite: function toggleOverwrite(cm) {\n return cm.toggleOverwrite();\n }\n };\n\n function lineStart(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLine(line);\n\n if (visual != line) {\n lineN = lineNo(visual);\n }\n\n return endOfLine(true, cm, visual, lineN, 1);\n }\n\n function lineEnd(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLineEnd(line);\n\n if (visual != line) {\n lineN = lineNo(visual);\n }\n\n return endOfLine(true, cm, line, lineN, -1);\n }\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\n if (!order || order[0].level == 0) {\n var firstNonWS = Math.max(0, 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\n return start;\n } // Run a handler that was bound to a key.\n\n\n function doHandleBinding(cm, bound, dropShift) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n\n if (!bound) {\n return false;\n }\n } // Ensure previous input has been read, so that the handler sees a\n // consistent view of the document\n\n\n cm.display.input.ensurePolled();\n var prevShift = cm.display.shift,\n done = false;\n\n try {\n if (cm.isReadOnly()) {\n cm.state.suppressEdits = true;\n }\n\n if (dropShift) {\n cm.display.shift = false;\n }\n\n done = bound(cm) != Pass;\n } finally {\n cm.display.shift = prevShift;\n cm.state.suppressEdits = false;\n }\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\n if (result) {\n return result;\n }\n }\n\n return cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm) || lookupKey(name, cm.options.keyMap, handle, cm);\n } // Note that, despite the name, this function is also used to check\n // for bound mouse clicks.\n\n\n var stopSeq = new Delayed();\n\n function dispatchKey(cm, name, e, handle) {\n var seq = cm.state.keySeq;\n\n if (seq) {\n if (isModifierKey(name)) {\n return \"handled\";\n }\n\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 }\n\n if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) {\n return true;\n }\n }\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 }\n\n if (result == \"handled\") {\n signalLater(cm, \"keyHandled\", cm, name, e);\n }\n\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n\n return !!result;\n } // Handle a key from the keydown event.\n\n\n function handleKeyBinding(cm, e) {\n var name = keyName(e, true);\n\n if (!name) {\n return false;\n }\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) {\n 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 });\n } else {\n return dispatchKey(cm, name, e, function (b) {\n return doHandleBinding(cm, b);\n });\n }\n } // Handle a key from the keypress event\n\n\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) {\n return doHandleBinding(cm, b, true);\n });\n }\n\n var lastStoppedKey = null;\n\n function onKeyDown(e) {\n var cm = this;\n cm.curOp.focus = activeElt();\n\n if (signalDOMEvent(cm, e)) {\n return;\n } // IE does strange things with escape.\n\n\n if (ie && ie_version < 11 && e.keyCode == 27) {\n e.returnValue = false;\n }\n\n var code = e.keyCode;\n cm.display.shift = code == 16 || e.shiftKey;\n var handled = handleKeyBinding(cm, e);\n\n if (presto) {\n lastStoppedKey = handled ? code : null; // Opera has no cut event... we try to at least catch the key combo\n\n if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey)) {\n cm.replaceSelection(\"\", null, \"cut\");\n }\n } // Turn mouse into crosshair when Alt is held on Mac.\n\n\n if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className)) {\n showCrossHair(cm);\n }\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\n on(document, \"keyup\", up);\n on(document, \"mouseover\", up);\n }\n\n function onKeyUp(e) {\n if (e.keyCode == 16) {\n this.doc.sel.shift = false;\n }\n\n signalDOMEvent(this, e);\n }\n\n function onKeyPress(e) {\n var cm = this;\n\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) {\n return;\n }\n\n var keyCode = e.keyCode,\n charCode = e.charCode;\n\n if (presto && keyCode == lastStoppedKey) {\n lastStoppedKey = null;\n e_preventDefault(e);\n return;\n }\n\n if (presto && (!e.which || e.which < 10) && handleKeyBinding(cm, e)) {\n return;\n }\n\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode); // Some browsers fire keypress events for backspace\n\n if (ch == \"\\x08\") {\n return;\n }\n\n if (handleCharBinding(cm, e, ch)) {\n return;\n }\n\n cm.display.input.onKeyPress(e);\n }\n\n var DOUBLECLICK_DELAY = 400;\n\n var PastClick = function PastClick(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 && cmp(pos, this.pos) == 0 && button == this.button;\n };\n\n var lastClick, lastDoubleClick;\n\n function clickRepeat(pos, button) {\n var now = +new Date();\n\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 } // 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\n\n function onMouseDown(e) {\n var cm = this,\n display = cm.display;\n\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) {\n return;\n }\n\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 () {\n return display.scroller.draggable = true;\n }, 100);\n }\n\n return;\n }\n\n if (clickInGutter(cm, e)) {\n return;\n }\n\n var pos = posFromMouse(cm, e),\n button = e_button(e),\n repeat = pos ? clickRepeat(pos, button) : \"single\";\n window.focus(); // #3261: make sure, that we're not starting a second selection\n\n if (button == 1 && cm.state.selectingText) {\n cm.state.selectingText(e);\n }\n\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) {\n return;\n }\n\n if (button == 1) {\n if (pos) {\n leftButtonDown(cm, pos, repeat, e);\n } else if (e_target(e) == display.scroller) {\n e_preventDefault(e);\n }\n } else if (button == 2) {\n if (pos) {\n extendSelection(cm.doc, pos);\n }\n\n setTimeout(function () {\n return display.input.focus();\n }, 20);\n } else if (button == 3) {\n if (captureRightClick) {\n cm.display.input.onContextMenu(e);\n } else {\n delayBlurEvent(cm);\n }\n }\n }\n\n function handleMappedButton(cm, button, pos, repeat, event) {\n var name = \"Click\";\n\n if (repeat == \"double\") {\n name = \"Double\" + name;\n } else if (repeat == \"triple\") {\n name = \"Triple\" + name;\n }\n\n name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n return dispatchKey(cm, addModifierNames(name, event), event, function (bound) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n }\n\n if (!bound) {\n return false;\n }\n\n var done = false;\n\n try {\n if (cm.isReadOnly()) {\n cm.state.suppressEdits = true;\n }\n\n done = bound(cm, pos) != Pass;\n } finally {\n cm.state.suppressEdits = false;\n }\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\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\n if (value.extend == null || cm.doc.extend) {\n value.extend = cm.doc.extend || event.shiftKey;\n }\n\n if (value.addNew == null) {\n value.addNew = mac ? event.metaKey : event.ctrlKey;\n }\n\n if (value.moveOnDrag == null) {\n value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey);\n }\n\n return value;\n }\n\n function leftButtonDown(cm, pos, repeat, event) {\n if (ie) {\n setTimeout(bind(ensureFocus, cm), 0);\n } else {\n cm.curOp.focus = activeElt();\n }\n\n var behavior = configureMouse(cm, repeat, event);\n var sel = cm.doc.sel,\n contained;\n\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() && repeat == \"single\" && (contained = sel.contains(pos)) > -1 && (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) && (cmp(contained.to(), pos) > 0 || pos.xRel < 0)) {\n leftButtonStartDrag(cm, event, pos, behavior);\n } else {\n leftButtonSelect(cm, event, pos, behavior);\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\n\n function leftButtonStartDrag(cm, event, pos, behavior) {\n var display = cm.display,\n moved = false;\n var dragEnd = operation(cm, function (e) {\n if (webkit) {\n display.scroller.draggable = false;\n }\n\n cm.state.draggingText = false;\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\n if (!moved) {\n e_preventDefault(e);\n\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\n\n if (webkit || ie && ie_version == 9) {\n setTimeout(function () {\n display.wrapper.ownerDocument.body.focus();\n display.input.focus();\n }, 20);\n } else {\n display.input.focus();\n }\n }\n });\n\n var mouseMove = function mouseMove(e2) {\n moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n };\n\n var dragStart = function dragStart() {\n return moved = true;\n }; // Let the drag handler handle this.\n\n\n if (webkit) {\n display.scroller.draggable = true;\n }\n\n cm.state.draggingText = dragEnd;\n dragEnd.copy = !behavior.moveOnDrag; // IE's approach to draggable\n\n if (display.scroller.dragDrop) {\n display.scroller.dragDrop();\n }\n\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 delayBlurEvent(cm);\n setTimeout(function () {\n return display.input.focus();\n }, 20);\n }\n\n function rangeForUnit(cm, pos, unit) {\n if (unit == \"char\") {\n return new Range(pos, pos);\n }\n\n if (unit == \"word\") {\n return cm.findWordAt(pos);\n }\n\n if (unit == \"line\") {\n return new Range(Pos(pos.line, 0), _clipPos(cm.doc, Pos(pos.line + 1, 0)));\n }\n\n var result = unit(cm, pos);\n return new Range(result.from, result.to);\n } // Normal selection, as opposed to text dragging.\n\n\n function leftButtonSelect(cm, event, start, behavior) {\n var display = cm.display,\n doc = cm.doc;\n e_preventDefault(event);\n var ourRange,\n ourIndex,\n startSel = doc.sel,\n ranges = startSel.ranges;\n\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc.sel.contains(start);\n\n if (ourIndex > -1) {\n ourRange = ranges[ourIndex];\n } else {\n ourRange = new Range(start, start);\n }\n } else {\n ourRange = doc.sel.primary();\n ourIndex = doc.sel.primIndex;\n }\n\n if (behavior.unit == \"rectangle\") {\n if (!behavior.addNew) {\n ourRange = new Range(start, start);\n }\n\n start = posFromMouse(cm, event, true, true);\n ourIndex = -1;\n } else {\n var range$$1 = rangeForUnit(cm, start, behavior.unit);\n\n if (behavior.extend) {\n ourRange = extendRange(ourRange, range$$1.anchor, range$$1.head, behavior.extend);\n } else {\n ourRange = range$$1;\n }\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,\n origin: \"*mouse\"\n });\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,\n origin: \"*mouse\"\n });\n startSel = doc.sel;\n } else {\n replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n }\n\n var lastPos = start;\n\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) {\n return;\n }\n\n lastPos = pos;\n\n if (behavior.unit == \"rectangle\") {\n var ranges = [],\n 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),\n right = Math.max(startCol, posCol);\n\n for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line)); line <= end; line++) {\n var text = getLine(doc, line).text,\n leftPos = findColumn(text, left, tabSize);\n\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 }\n\n if (!ranges.length) {\n ranges.push(new Range(start, start));\n }\n\n setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex), {\n origin: \"*mouse\",\n scroll: false\n });\n cm.scrollIntoView(pos);\n } else {\n var oldRange = ourRange;\n var range$$1 = rangeForUnit(cm, pos, behavior.unit);\n var anchor = oldRange.anchor,\n head;\n\n if (cmp(range$$1.anchor, anchor) > 0) {\n head = range$$1.head;\n anchor = minPos(oldRange.from(), range$$1.anchor);\n } else {\n head = range$$1.anchor;\n anchor = maxPos(oldRange.to(), range$$1.head);\n }\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(); // 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\n var counter = 0;\n\n function extend(e) {\n var curCount = ++counter;\n var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n\n if (!cur) {\n return;\n }\n\n if (cmp(cur, lastPos) != 0) {\n cm.curOp.focus = activeElt();\n extendTo(cur);\n var visible = visibleLines(display, doc);\n\n if (cur.line >= visible.to || cur.line < visible.from) {\n setTimeout(operation(cm, function () {\n if (counter == curCount) {\n extend(e);\n }\n }), 150);\n }\n } else {\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n\n if (outside) {\n setTimeout(operation(cm, function () {\n if (counter != curCount) {\n return;\n }\n\n display.scroller.scrollTop += outside;\n extend(e);\n }), 50);\n }\n }\n }\n\n function done(e) {\n cm.state.selectingText = false;\n counter = Infinity; // 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\n if (e) {\n e_preventDefault(e);\n display.input.focus();\n }\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)) {\n done(e);\n } else {\n extend(e);\n }\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 } // 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\n\n function bidiSimplify(cm, range$$1) {\n var anchor = range$$1.anchor;\n var head = range$$1.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n\n if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) {\n return range$$1;\n }\n\n var order = getOrder(anchorLine);\n\n if (!order) {\n return range$$1;\n }\n\n var index = getBidiPartAt(order, anchor.ch, anchor.sticky),\n part = order[index];\n\n if (part.from != anchor.ch && part.to != anchor.ch) {\n return range$$1;\n }\n\n var boundary = index + (part.from == anchor.ch == (part.level != 1) ? 0 : 1);\n\n if (boundary == 0 || boundary == order.length) {\n return range$$1;\n } // Compute the relative visual position of the head compared to the\n // anchor (<0 is to the left, >0 to the right)\n\n\n var leftSide;\n\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\n if (headIndex == boundary - 1 || headIndex == boundary) {\n leftSide = dir < 0;\n } else {\n leftSide = dir > 0;\n }\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,\n sticky = from ? \"after\" : \"before\";\n return anchor.ch == ch && anchor.sticky == sticky ? range$$1 : new Range(new Pos(anchor.line, ch, sticky), head);\n } // Determines whether an event happened in the gutter, and fires the\n // handlers for the corresponding event.\n\n\n function gutterEvent(cm, e, type, prevent) {\n var mX, mY;\n\n if (e.touches) {\n mX = e.touches[0].clientX;\n mY = e.touches[0].clientY;\n } else {\n try {\n mX = e.clientX;\n mY = e.clientY;\n } catch (e) {\n return false;\n }\n }\n\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) {\n return false;\n }\n\n if (prevent) {\n e_preventDefault(e);\n }\n\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n\n if (mY > lineBox.bottom || !hasHandler(cm, type)) {\n return e_defaultPrevented(e);\n }\n\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\n if (g && g.getBoundingClientRect().right >= mX) {\n var line = _lineAtHeight(cm.doc, mY);\n\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 } // CONTEXT MENU HANDLING\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\n\n function onContextMenu(cm, e) {\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) {\n return;\n }\n\n if (signalDOMEvent(cm, e, \"contextmenu\")) {\n return;\n }\n\n if (!captureRightClick) {\n cm.display.input.onContextMenu(e);\n }\n }\n\n function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) {\n return false;\n }\n\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, \"\") + cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n clearCaches(cm);\n }\n\n var Init = {\n toString: function toString() {\n return \"CodeMirror.Init\";\n }\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\n if (handle) {\n optionHandlers[name] = notOnInit ? function (cm, val, old) {\n if (old != Init) {\n handle(cm, val, old);\n }\n } : handle;\n }\n }\n\n CodeMirror.defineOption = option; // Passed to option handlers when there is no old value.\n\n CodeMirror.Init = Init; // These two are, on init, called from the constructor because they\n // have to be initialized before the editor can start at all.\n\n option(\"value\", \"\", function (cm, val) {\n return cm.setValue(val);\n }, true);\n option(\"mode\", null, function (cm, val) {\n cm.doc.modeOption = val;\n loadMode(cm);\n }, true);\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 option(\"lineSeparator\", null, function (cm, val) {\n cm.doc.lineSep = val;\n\n if (!val) {\n return;\n }\n\n var newBreaks = [],\n lineNo = cm.doc.first;\n cm.doc.iter(function (line) {\n for (var pos = 0;;) {\n var found = line.text.indexOf(val, pos);\n\n if (found == -1) {\n break;\n }\n\n pos = found + val.length;\n newBreaks.push(Pos(lineNo, found));\n }\n\n lineNo++;\n });\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 });\n option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b-\\u200f\\u2028\\u2029\\ufeff\\ufff9-\\ufffc]/g, function (cm, val, old) {\n cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n\n if (old != Init) {\n cm.refresh();\n }\n });\n option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) {\n return cm.refresh();\n }, 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) {\n return cm.getInputField().spellcheck = val;\n }, true);\n option(\"autocorrect\", false, function (cm, val) {\n return cm.getInputField().autocorrect = val;\n }, true);\n option(\"autocapitalize\", false, function (cm, val) {\n return cm.getInputField().autocapitalize = val;\n }, true);\n option(\"rtlMoveVisually\", !windows);\n option(\"wholeLineUpdateBefore\", true);\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\n if (prev && prev.detach) {\n prev.detach(cm, next);\n }\n\n if (next.attach) {\n next.attach(cm, prev || null);\n }\n });\n option(\"extraKeys\", null);\n option(\"configureMouse\", null);\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) {\n return updateScrollbars(cm);\n }, 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) {\n return integer;\n }, updateGutters, true);\n option(\"showCursorWhenSelecting\", false, updateSelection, true);\n option(\"resetSelectionOnContextMenu\", true);\n option(\"lineWiseCopyCut\", true);\n option(\"pasteLinesPerSelection\", true);\n option(\"selectionsMayTouch\", false);\n option(\"readOnly\", false, function (cm, val) {\n if (val == \"nocursor\") {\n onBlur(cm);\n cm.display.input.blur();\n }\n\n cm.display.input.readOnlyChanged(val);\n });\n option(\"disableInput\", false, function (cm, val) {\n if (!val) {\n cm.display.input.reset();\n }\n }, true);\n option(\"dragDrop\", true, dragDropChanged);\n option(\"allowDropFileTypes\", null);\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) {\n return cm.doc.history.undoDepth = val;\n });\n option(\"historyEventDelay\", 1250);\n option(\"viewportMargin\", 10, function (cm) {\n return cm.refresh();\n }, true);\n option(\"maxHighlightLength\", 10000, resetModeState, true);\n option(\"moveInputWithCursor\", true, function (cm, val) {\n if (!val) {\n cm.display.input.resetPosition();\n }\n });\n option(\"tabindex\", null, function (cm, val) {\n return cm.display.input.getField().tabIndex = val || \"\";\n });\n option(\"autofocus\", null);\n option(\"direction\", \"ltr\", function (cm, val) {\n return cm.doc.setDirection(val);\n }, true);\n option(\"phrases\", null);\n }\n\n function dragDropChanged(cm, value, old) {\n var wasOn = old && old != Init;\n\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\n estimateLineHeights(cm);\n regChange(cm);\n clearCaches(cm);\n setTimeout(function () {\n return updateScrollbars(cm);\n }, 100);\n } // A CodeMirror instance represents an editor. This is the object\n // that user code is usually dealing with.\n\n\n function CodeMirror(place, options) {\n var this$1 = this;\n\n if (!(this instanceof CodeMirror)) {\n return new CodeMirror(place, options);\n }\n\n this.options = options = options ? copyObj(options) : {}; // Determine effective options based on given values and defaults.\n\n copyObj(defaults, options, false);\n var doc = options.value;\n\n if (typeof doc == \"string\") {\n doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction);\n } else if (options.mode) {\n doc.modeOption = options.mode;\n }\n\n this.doc = doc;\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\n if (options.lineWrapping) {\n this.display.wrapper.className += \" CodeMirror-wrap\";\n }\n\n initScrollbars(this);\n this.state = {\n keyMaps: [],\n // stores maps added by addKeyMap\n overlays: [],\n // highlighting overlays, as added by addOverlay\n modeGen: 0,\n // bumped when mode/overlay changes, used to invalidate highlighting info\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false,\n // used to disable editing during key handlers when in readOnly mode\n pasteIncoming: -1,\n cutIncoming: -1,\n // help recognize paste/cut edits in input.poll\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(),\n // stores highlight worker timeout\n keySeq: null,\n // Unfinished key sequence\n specialChars: null\n };\n\n if (options.autofocus && !mobile) {\n display.input.focus();\n } // Override magic textarea content restore that IE sometimes does\n // on our hidden textarea on reload\n\n\n if (ie && ie_version < 11) {\n setTimeout(function () {\n return this$1.display.input.reset(true);\n }, 20);\n }\n\n registerEventHandlers(this);\n ensureGlobalHandlers();\n\n _startOperation(this);\n\n this.curOp.forceUpdate = true;\n attachDoc(this, doc);\n\n if (options.autofocus && !mobile || this.hasFocus()) {\n setTimeout(bind(onFocus, this), 20);\n } else {\n onBlur(this);\n }\n\n for (var opt in optionHandlers) {\n if (optionHandlers.hasOwnProperty(opt)) {\n optionHandlers[opt](this$1, options[opt], Init);\n }\n }\n\n maybeUpdateLineNumberWidth(this);\n\n if (options.finishInit) {\n options.finishInit(this);\n }\n\n for (var i = 0; i < initHooks.length; ++i) {\n initHooks[i](this$1);\n }\n\n _endOperation(this); // Suppress optimizelegibility in Webkit, since it breaks text\n // measuring on line wrapping boundaries.\n\n\n if (webkit && options.lineWrapping && getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\") {\n display.lineDiv.style.textRendering = \"auto\";\n }\n } // The default configuration options.\n\n\n CodeMirror.defaults = defaults; // Functions to run when options are changed.\n\n CodeMirror.optionHandlers = optionHandlers; // Attach the necessary event handlers when initializing the editor\n\n function registerEventHandlers(cm) {\n var d = cm.display;\n on(d.scroller, \"mousedown\", operation(cm, onMouseDown)); // Older IE's will not fire a second mousedown for a double click\n\n if (ie && ie_version < 11) {\n on(d.scroller, \"dblclick\", operation(cm, function (e) {\n if (signalDOMEvent(cm, e)) {\n return;\n }\n\n var pos = posFromMouse(cm, e);\n\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) {\n return;\n }\n\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) {\n return signalDOMEvent(cm, e) || e_preventDefault(e);\n });\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\n\n on(d.scroller, \"contextmenu\", function (e) {\n return onContextMenu(cm, e);\n }); // Used to suppress mouse event handling when a touch happens\n\n var touchFinished,\n prevTouch = {\n end: 0\n };\n\n function finishTouch() {\n if (d.activeTouch) {\n touchFinished = setTimeout(function () {\n return d.activeTouch = null;\n }, 1000);\n prevTouch = d.activeTouch;\n prevTouch.end = +new Date();\n }\n }\n\n function isMouseLikeTouchEvent(e) {\n if (e.touches.length != 1) {\n return false;\n }\n\n var touch = e.touches[0];\n return touch.radiusX <= 1 && touch.radiusY <= 1;\n }\n\n function farAway(touch, other) {\n if (other.left == null) {\n return true;\n }\n\n var dx = other.left - touch.left,\n dy = other.top - touch.top;\n return dx * dx + dy * dy > 20 * 20;\n }\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 = {\n start: now,\n moved: false,\n prev: now - prevTouch.end <= 300 ? prevTouch : null\n };\n\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) {\n d.activeTouch.moved = true;\n }\n });\n on(d.scroller, \"touchend\", function (e) {\n var touch = d.activeTouch;\n\n if (touch && !eventInWidget(d, e) && touch.left != null && !touch.moved && new Date() - touch.start < 300) {\n var pos = cm.coordsChar(d.activeTouch, \"page\"),\n range;\n\n if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n {\n range = new Range(pos, pos);\n } else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n {\n range = cm.findWordAt(pos);\n } else // Triple tap\n {\n range = new Range(Pos(pos.line, 0), _clipPos(cm.doc, Pos(pos.line + 1, 0)));\n }\n\n cm.setSelection(range.anchor, range.head);\n cm.focus();\n e_preventDefault(e);\n }\n\n finishTouch();\n });\n on(d.scroller, \"touchcancel\", finishTouch); // Sync scrolling between fake scrollbars and real scrollable\n // area, ensure viewport is updated when scrolling.\n\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 }); // Listen to wheel events in order to try and update the viewport on time.\n\n on(d.scroller, \"mousewheel\", function (e) {\n return onScrollWheel(cm, e);\n });\n on(d.scroller, \"DOMMouseScroll\", function (e) {\n return onScrollWheel(cm, e);\n }); // Prevent wrapper from ever scrolling\n\n on(d.wrapper, \"scroll\", function () {\n return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0;\n });\n d.dragFunctions = {\n enter: function enter(e) {\n if (!signalDOMEvent(cm, e)) {\n e_stop(e);\n }\n },\n over: function over(e) {\n if (!signalDOMEvent(cm, e)) {\n onDragOver(cm, e);\n e_stop(e);\n }\n },\n start: function start(e) {\n return onDragStart(cm, e);\n },\n drop: operation(cm, onDrop),\n leave: function leave(e) {\n if (!signalDOMEvent(cm, e)) {\n clearDragCursor(cm);\n }\n }\n };\n var inp = d.input.getField();\n on(inp, \"keyup\", function (e) {\n return onKeyUp.call(cm, e);\n });\n on(inp, \"keydown\", operation(cm, onKeyDown));\n on(inp, \"keypress\", operation(cm, onKeyPress));\n on(inp, \"focus\", function (e) {\n return onFocus(cm, e);\n });\n on(inp, \"blur\", function (e) {\n return onBlur(cm, e);\n });\n }\n\n var initHooks = [];\n\n CodeMirror.defineInitHook = function (f) {\n return initHooks.push(f);\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\n\n function indentLine(cm, n, how, aggressive) {\n var doc = cm.doc,\n state;\n\n if (how == null) {\n how = \"add\";\n }\n\n if (how == \"smart\") {\n // Fall back to \"prev\" when the mode doesn't have an indentation\n // method.\n if (!doc.mode.indent) {\n how = \"prev\";\n } else {\n state = getContextBefore(cm, n).state;\n }\n }\n\n var tabSize = cm.options.tabSize;\n var line = getLine(doc, n),\n curSpace = countColumn(line.text, null, tabSize);\n\n if (line.stateAfter) {\n line.stateAfter = null;\n }\n\n var curSpaceString = line.text.match(/^\\s*/)[0],\n indentation;\n\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\n if (indentation == Pass || indentation > 150) {\n if (!aggressive) {\n return;\n }\n\n how = \"prev\";\n }\n }\n\n if (how == \"prev\") {\n if (n > doc.first) {\n indentation = countColumn(getLine(doc, n - 1).text, null, tabSize);\n } else {\n indentation = 0;\n }\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\n indentation = Math.max(0, indentation);\n var indentString = \"\",\n pos = 0;\n\n if (cm.options.indentWithTabs) {\n for (var i = Math.floor(indentation / tabSize); i; --i) {\n pos += tabSize;\n indentString += \"\\t\";\n }\n }\n\n if (pos < indentation) {\n indentString += spaceStr(indentation - pos);\n }\n\n if (indentString != curSpaceString) {\n _replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n\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\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 } // 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\n\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\n if (!sel) {\n sel = doc.sel;\n }\n\n var recent = +new Date() - 200;\n var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n var textLines = splitLinesAuto(inserted),\n multiPaste = null; // When pasting N lines into N selections, insert one line per selection\n\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\n for (var i = 0; i < lastCopied.text.length; i++) {\n multiPaste.push(doc.splitLines(lastCopied.text[i]));\n }\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n multiPaste = map(textLines, function (l) {\n return [l];\n });\n }\n }\n\n var updateInput = cm.curOp.updateInput; // Normal behavior is to insert the new text into every selection\n\n for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n var range$$1 = sel.ranges[i$1];\n var from = range$$1.from(),\n to = range$$1.to();\n\n if (range$$1.empty()) {\n if (deleted && deleted > 0) // Handle deletion\n {\n from = Pos(from.line, from.ch - deleted);\n } else if (cm.state.overwrite && !paste) // Handle overwrite\n {\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\") == inserted) {\n from = to = Pos(from.line, 0);\n }\n }\n\n var changeEvent = {\n from: from,\n to: to,\n text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")\n };\n makeChange(cm.doc, changeEvent);\n signalLater(cm, \"inputRead\", cm, changeEvent);\n }\n\n if (inserted && !paste) {\n triggerElectric(cm, inserted);\n }\n\n ensureCursorVisible(cm);\n\n if (cm.curOp.updateInput < 2) {\n cm.curOp.updateInput = updateInput;\n }\n\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\n if (pasted) {\n e.preventDefault();\n\n if (!cm.isReadOnly() && !cm.options.disableInput) {\n runInOp(cm, function () {\n return applyTextInput(cm, pasted, 0, null, \"paste\");\n });\n }\n\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) {\n return;\n }\n\n var sel = cm.doc.sel;\n\n for (var i = sel.ranges.length - 1; i >= 0; i--) {\n var range$$1 = sel.ranges[i];\n\n if (range$$1.head.ch > 100 || i && sel.ranges[i - 1].head.line == range$$1.head.line) {\n continue;\n }\n\n var mode = cm.getModeAt(range$$1.head);\n var indented = false;\n\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$$1.head.line, \"smart\");\n break;\n }\n }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range$$1.head.line).text.slice(0, range$$1.head.ch))) {\n indented = indentLine(cm, range$$1.head.line, \"smart\");\n }\n }\n\n if (indented) {\n signalLater(cm, \"electricInput\", cm, range$$1.head.line);\n }\n }\n }\n\n function copyableRanges(cm) {\n var text = [],\n ranges = [];\n\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 = {\n anchor: Pos(line, 0),\n head: Pos(line + 1, 0)\n };\n ranges.push(lineRange);\n text.push(cm.getRange(lineRange.anchor, lineRange.head));\n }\n\n return {\n text: text,\n ranges: ranges\n };\n }\n\n function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n field.setAttribute(\"autocorrect\", autocorrect ? \"\" : \"off\");\n field.setAttribute(\"autocapitalize\", autocapitalize ? \"\" : \"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; outline: none\");\n var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\"); // 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\n if (webkit) {\n te.style.width = \"1000px\";\n } else {\n te.setAttribute(\"wrap\", \"off\");\n } // If border: 0; -- iOS fails to open keyboard (issue #1287)\n\n\n if (ios) {\n te.style.border = \"1px solid black\";\n }\n\n disableBrowserMagic(te);\n return div;\n } // The publicly visible API. Note that methodOp(f) means\n // 'wrap f in an operation, performed on its `this` parameter'.\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\n function addEditorMethods(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n var helpers = CodeMirror.helpers = {};\n CodeMirror.prototype = {\n constructor: CodeMirror,\n focus: function focus() {\n window.focus();\n this.display.input.focus();\n },\n setOption: function setOption(option, value) {\n var options = this.options,\n old = options[option];\n\n if (options[option] == value && option != \"mode\") {\n return;\n }\n\n options[option] = value;\n\n if (optionHandlers.hasOwnProperty(option)) {\n operation(this, optionHandlers[option])(this, value, old);\n }\n\n signal(this, \"optionChange\", this, option);\n },\n getOption: function getOption(option) {\n return this.options[option];\n },\n getDoc: function getDoc() {\n return this.doc;\n },\n addKeyMap: function addKeyMap(map$$1, bottom) {\n this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map$$1));\n },\n removeKeyMap: function removeKeyMap(map$$1) {\n var maps = this.state.keyMaps;\n\n for (var i = 0; i < maps.length; ++i) {\n if (maps[i] == map$$1 || maps[i].name == map$$1) {\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\n if (mode.startState) {\n throw new Error(\"Overlays may not be stateful.\");\n }\n\n insertSorted(this.state.overlays, {\n mode: mode,\n modeSpec: spec,\n opaque: options && options.opaque,\n priority: options && options.priority || 0\n }, function (overlay) {\n return overlay.priority;\n });\n this.state.modeGen++;\n regChange(this);\n }),\n removeOverlay: methodOp(function (spec) {\n var this$1 = this;\n var overlays = this.state.overlays;\n\n for (var i = 0; i < overlays.length; ++i) {\n var cur = overlays[i].modeSpec;\n\n if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n overlays.splice(i, 1);\n this$1.state.modeGen++;\n regChange(this$1);\n return;\n }\n }\n }),\n indentLine: methodOp(function (n, dir, aggressive) {\n if (typeof dir != \"string\" && typeof dir != \"number\") {\n if (dir == null) {\n dir = this.options.smartIndent ? \"smart\" : \"prev\";\n } else {\n dir = dir ? \"add\" : \"subtract\";\n }\n }\n\n if (isLine(this.doc, n)) {\n indentLine(this, n, dir, aggressive);\n }\n }),\n indentSelection: methodOp(function (how) {\n var this$1 = this;\n var ranges = this.doc.sel.ranges,\n end = -1;\n\n for (var i = 0; i < ranges.length; i++) {\n var range$$1 = ranges[i];\n\n if (!range$$1.empty()) {\n var from = range$$1.from(),\n to = range$$1.to();\n var start = Math.max(end, from.line);\n end = Math.min(this$1.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n\n for (var j = start; j < end; ++j) {\n indentLine(this$1, j, how);\n }\n\n var newRanges = this$1.doc.sel.ranges;\n\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0) {\n replaceOneSelection(this$1.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll);\n }\n } else if (range$$1.head.line > end) {\n indentLine(this$1, range$$1.head.line, how, true);\n end = range$$1.head.line;\n\n if (i == this$1.doc.sel.primIndex) {\n ensureCursorVisible(this$1);\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 getTokenAt(pos, precise) {\n return takeToken(this, pos, precise);\n },\n getLineTokens: function getLineTokens(line, precise) {\n return takeToken(this, Pos(line), precise, true);\n },\n getTokenTypeAt: function getTokenTypeAt(pos) {\n pos = _clipPos(this.doc, pos);\n var styles = getLineStyles(this, getLine(this.doc, pos.line));\n var before = 0,\n after = (styles.length - 1) / 2,\n ch = pos.ch;\n var type;\n\n if (ch == 0) {\n type = styles[2];\n } else {\n for (;;) {\n var mid = before + after >> 1;\n\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) {\n after = mid;\n } else if (styles[mid * 2 + 1] < ch) {\n before = mid + 1;\n } else {\n type = styles[mid * 2 + 2];\n break;\n }\n }\n }\n\n var cut = type ? type.indexOf(\"overlay \") : -1;\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1);\n },\n getModeAt: function getModeAt(pos) {\n var mode = this.doc.mode;\n\n if (!mode.innerMode) {\n return mode;\n }\n\n return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode;\n },\n getHelper: function getHelper(pos, type) {\n return this.getHelpers(pos, type)[0];\n },\n getHelpers: function getHelpers(pos, type) {\n var this$1 = this;\n var found = [];\n\n if (!helpers.hasOwnProperty(type)) {\n return found;\n }\n\n var help = helpers[type],\n mode = this.getModeAt(pos);\n\n if (typeof mode[type] == \"string\") {\n if (help[mode[type]]) {\n found.push(help[mode[type]]);\n }\n } else if (mode[type]) {\n for (var i = 0; i < mode[type].length; i++) {\n var val = help[mode[type][i]];\n\n if (val) {\n found.push(val);\n }\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\n for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n var cur = help._global[i$1];\n\n if (cur.pred(mode, this$1) && indexOf(found, cur.val) == -1) {\n found.push(cur.val);\n }\n }\n\n return found;\n },\n getStateAfter: function getStateAfter(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 cursorCoords: function cursorCoords(start, mode) {\n var pos,\n range$$1 = this.doc.sel.primary();\n\n if (start == null) {\n pos = range$$1.head;\n } else if (typeof start == \"object\") {\n pos = _clipPos(this.doc, start);\n } else {\n pos = start ? range$$1.from() : range$$1.to();\n }\n\n return _cursorCoords(this, pos, mode || \"page\");\n },\n charCoords: function charCoords(pos, mode) {\n return _charCoords(this, _clipPos(this.doc, pos), mode || \"page\");\n },\n coordsChar: function coordsChar(coords, mode) {\n coords = fromCoordSystem(this, coords, mode || \"page\");\n return _coordsChar(this, coords.left, coords.top);\n },\n lineAtHeight: function lineAtHeight(height, mode) {\n height = fromCoordSystem(this, {\n top: height,\n left: 0\n }, mode || \"page\").top;\n return _lineAtHeight(this.doc, height + this.display.viewOffset);\n },\n heightAtLine: function heightAtLine(line, mode, includeWidgets) {\n var end = false,\n lineObj;\n\n if (typeof line == \"number\") {\n var last = this.doc.first + this.doc.size - 1;\n\n if (line < this.doc.first) {\n line = this.doc.first;\n } else if (line > last) {\n line = last;\n end = true;\n }\n\n lineObj = getLine(this.doc, line);\n } else {\n lineObj = line;\n }\n\n return intoCoordSystem(this, lineObj, {\n top: 0,\n left: 0\n }, mode || \"page\", includeWidgets || end).top + (end ? this.doc.height - _heightAtLine(lineObj) : 0);\n },\n defaultTextHeight: function defaultTextHeight() {\n return textHeight(this.display);\n },\n defaultCharWidth: function defaultCharWidth() {\n return charWidth(this.display);\n },\n getViewport: function getViewport() {\n return {\n from: this.display.viewFrom,\n to: this.display.viewTo\n };\n },\n addWidget: function addWidget(pos, node, scroll, vert, horiz) {\n var display = this.display;\n pos = _cursorCoords(this, _clipPos(this.doc, pos));\n var top = pos.bottom,\n 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\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); // Default to positioning above (if specified and possible); otherwise default to positioning below\n\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 }\n\n if (left + node.offsetWidth > hspace) {\n left = hspace - node.offsetWidth;\n }\n }\n\n node.style.top = top + \"px\";\n node.style.left = node.style.right = \"\";\n\n if (horiz == \"right\") {\n left = display.sizer.clientWidth - node.offsetWidth;\n node.style.right = \"0px\";\n } else {\n if (horiz == \"left\") {\n left = 0;\n } else if (horiz == \"middle\") {\n left = (display.sizer.clientWidth - node.offsetWidth) / 2;\n }\n\n node.style.left = left + \"px\";\n }\n\n if (scroll) {\n scrollIntoView(this, {\n left: left,\n top: top,\n right: left + node.offsetWidth,\n bottom: top + node.offsetHeight\n });\n }\n },\n triggerOnKeyDown: methodOp(onKeyDown),\n triggerOnKeyPress: methodOp(onKeyPress),\n triggerOnKeyUp: onKeyUp,\n triggerOnMouseDown: methodOp(onMouseDown),\n execCommand: function execCommand(cmd) {\n if (commands.hasOwnProperty(cmd)) {\n return commands[cmd].call(null, this);\n }\n },\n triggerElectric: methodOp(function (text) {\n triggerElectric(this, text);\n }),\n findPosH: function findPosH(from, amount, unit, visually) {\n var this$1 = this;\n var dir = 1;\n\n if (amount < 0) {\n dir = -1;\n amount = -amount;\n }\n\n var cur = _clipPos(this.doc, from);\n\n for (var i = 0; i < amount; ++i) {\n cur = _findPosH(this$1.doc, cur, dir, unit, visually);\n\n if (cur.hitSide) {\n break;\n }\n }\n\n return cur;\n },\n moveH: methodOp(function (dir, unit) {\n var this$1 = this;\n this.extendSelectionsBy(function (range$$1) {\n if (this$1.display.shift || this$1.doc.extend || range$$1.empty()) {\n return _findPosH(this$1.doc, range$$1.head, dir, unit, this$1.options.rtlMoveVisually);\n } else {\n return dir < 0 ? range$$1.from() : range$$1.to();\n }\n }, sel_move);\n }),\n deleteH: methodOp(function (dir, unit) {\n var sel = this.doc.sel,\n doc = this.doc;\n\n if (sel.somethingSelected()) {\n doc.replaceSelection(\"\", null, \"+delete\");\n } else {\n deleteNearSelection(this, function (range$$1) {\n var other = _findPosH(doc, range$$1.head, dir, unit, false);\n\n return dir < 0 ? {\n from: other,\n to: range$$1.head\n } : {\n from: range$$1.head,\n to: other\n };\n });\n }\n }),\n findPosV: function findPosV(from, amount, unit, goalColumn) {\n var this$1 = this;\n var dir = 1,\n x = goalColumn;\n\n if (amount < 0) {\n dir = -1;\n amount = -amount;\n }\n\n var cur = _clipPos(this.doc, from);\n\n for (var i = 0; i < amount; ++i) {\n var coords = _cursorCoords(this$1, cur, \"div\");\n\n if (x == null) {\n x = coords.left;\n } else {\n coords.left = x;\n }\n\n cur = _findPosV(this$1, coords, dir, unit);\n\n if (cur.hitSide) {\n break;\n }\n }\n\n return cur;\n },\n moveV: methodOp(function (dir, unit) {\n var this$1 = this;\n var doc = this.doc,\n goals = [];\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n doc.extendSelectionsBy(function (range$$1) {\n if (collapse) {\n return dir < 0 ? range$$1.from() : range$$1.to();\n }\n\n var headPos = _cursorCoords(this$1, range$$1.head, \"div\");\n\n if (range$$1.goalColumn != null) {\n headPos.left = range$$1.goalColumn;\n }\n\n goals.push(headPos.left);\n\n var pos = _findPosV(this$1, headPos, dir, unit);\n\n if (unit == \"page\" && range$$1 == doc.sel.primary()) {\n addToScrollTop(this$1, _charCoords(this$1, pos, \"div\").top - headPos.top);\n }\n\n return pos;\n }, sel_move);\n\n if (goals.length) {\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n doc.sel.ranges[i].goalColumn = goals[i];\n }\n }\n }),\n // Find the word at the given position (as returned by coordsChar).\n findWordAt: function findWordAt(pos) {\n var doc = this.doc,\n line = getLine(doc, pos.line).text;\n var start = pos.ch,\n end = pos.ch;\n\n if (line) {\n var helper = this.getHelper(pos, \"wordChars\");\n\n if ((pos.sticky == \"before\" || end == line.length) && start) {\n --start;\n } else {\n ++end;\n }\n\n var startChar = line.charAt(start);\n var check = isWordChar(startChar, helper) ? function (ch) {\n return isWordChar(ch, helper);\n } : /\\s/.test(startChar) ? function (ch) {\n return /\\s/.test(ch);\n } : function (ch) {\n return !/\\s/.test(ch) && !isWordChar(ch);\n };\n\n while (start > 0 && check(line.charAt(start - 1))) {\n --start;\n }\n\n while (end < line.length && check(line.charAt(end))) {\n ++end;\n }\n }\n\n return new Range(Pos(pos.line, start), Pos(pos.line, end));\n },\n toggleOverwrite: function toggleOverwrite(value) {\n if (value != null && value == this.state.overwrite) {\n return;\n }\n\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\n signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function hasFocus() {\n return this.display.input.getField() == activeElt();\n },\n isReadOnly: function isReadOnly() {\n return !!(this.options.readOnly || this.doc.cantEdit);\n },\n scrollTo: methodOp(function (x, y) {\n scrollToCoords(this, x, y);\n }),\n getScrollInfo: function getScrollInfo() {\n var scroller = this.display.scroller;\n return {\n left: scroller.scrollLeft,\n 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),\n clientWidth: displayWidth(this)\n };\n },\n scrollIntoView: methodOp(function (range$$1, margin) {\n if (range$$1 == null) {\n range$$1 = {\n from: this.doc.sel.primary().head,\n to: null\n };\n\n if (margin == null) {\n margin = this.options.cursorScrollMargin;\n }\n } else if (typeof range$$1 == \"number\") {\n range$$1 = {\n from: Pos(range$$1, 0),\n to: null\n };\n } else if (range$$1.from == null) {\n range$$1 = {\n from: range$$1,\n to: null\n };\n }\n\n if (!range$$1.to) {\n range$$1.to = range$$1.from;\n }\n\n range$$1.margin = margin || 0;\n\n if (range$$1.from.line != null) {\n scrollToRange(this, range$$1);\n } else {\n scrollToCoordsRange(this, range$$1.from, range$$1.to, range$$1.margin);\n }\n }),\n setSize: methodOp(function (width, height) {\n var this$1 = this;\n\n var interpret = function interpret(val) {\n return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val;\n };\n\n if (width != null) {\n this.display.wrapper.style.width = interpret(width);\n }\n\n if (height != null) {\n this.display.wrapper.style.height = interpret(height);\n }\n\n if (this.options.lineWrapping) {\n clearLineMeasurementCache(this);\n }\n\n var lineNo$$1 = this.display.viewFrom;\n this.doc.iter(lineNo$$1, this.display.viewTo, function (line) {\n if (line.widgets) {\n for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].noHScroll) {\n regLineChange(this$1, lineNo$$1, \"widget\");\n break;\n }\n }\n }\n\n ++lineNo$$1;\n });\n this.curOp.forceUpdate = true;\n signal(this, \"refresh\", this);\n }),\n operation: function operation(f) {\n return runInOp(this, f);\n },\n startOperation: function startOperation() {\n return _startOperation(this);\n },\n endOperation: function endOperation() {\n 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\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5) {\n estimateLineHeights(this);\n }\n\n signal(this, \"refresh\", this);\n }),\n swapDoc: methodOp(function (doc) {\n var old = this.doc;\n old.cm = null; // Cancel the current text selection if any (#5821)\n\n if (this.state.selectingText) {\n this.state.selectingText();\n }\n\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 phrase: function phrase(phraseText) {\n var phrases = this.options.phrases;\n return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText;\n },\n getInputField: function getInputField() {\n return this.display.input.getField();\n },\n getWrapperElement: function getWrapperElement() {\n return this.display.wrapper;\n },\n getScrollerElement: function getScrollerElement() {\n return this.display.scroller;\n },\n getGutterElement: function getGutterElement() {\n return this.display.gutters;\n }\n };\n eventMixin(CodeMirror);\n\n CodeMirror.registerHelper = function (type, name, value) {\n if (!helpers.hasOwnProperty(type)) {\n helpers[type] = CodeMirror[type] = {\n _global: []\n };\n }\n\n helpers[type][name] = value;\n };\n\n CodeMirror.registerGlobalHelper = function (type, name, predicate, value) {\n CodeMirror.registerHelper(type, name, value);\n\n helpers[type]._global.push({\n pred: predicate,\n val: value\n });\n };\n } // Used for horizontal relative motion. Dir is -1 or 1 (left or\n // right), unit can be \"char\", \"column\" (like char, but doesn't\n // cross line boundaries), \"word\" (across next word), or \"group\" (to\n // the start of next group of word or non-word-non-whitespace\n // chars). The visually param controls whether, in right-to-left\n // text, direction 1 means to move towards the next index in the\n // string, or towards the character to the right of the current\n // position. The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n\n\n function _findPosH(doc, pos, dir, unit, visually) {\n var oldPos = pos;\n var origDir = dir;\n var lineObj = getLine(doc, pos.line);\n\n function findNextLine() {\n var l = pos.line + dir;\n\n if (l < doc.first || l >= doc.first + doc.size) {\n return false;\n }\n\n pos = new Pos(l, pos.ch, pos.sticky);\n return lineObj = getLine(doc, l);\n }\n\n function moveOnce(boundToLine) {\n var next;\n\n if (visually) {\n next = moveVisually(doc.cm, lineObj, pos, dir);\n } else {\n next = moveLogically(lineObj, pos, dir);\n }\n\n if (next == null) {\n if (!boundToLine && findNextLine()) {\n pos = endOfLine(visually, doc.cm, lineObj, pos.line, dir);\n } else {\n return false;\n }\n } else {\n pos = next;\n }\n\n return true;\n }\n\n if (unit == \"char\") {\n moveOnce();\n } else if (unit == \"column\") {\n moveOnce(true);\n } else if (unit == \"word\" || unit == \"group\") {\n var sawType = null,\n group = unit == \"group\";\n var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n\n for (var first = true;; first = false) {\n if (dir < 0 && !moveOnce(!first)) {\n break;\n }\n\n var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n var type = isWordChar(cur, helper) ? \"w\" : group && cur == \"\\n\" ? \"n\" : !group || /\\s/.test(cur) ? null : \"p\";\n\n if (group && !first && !type) {\n type = \"s\";\n }\n\n if (sawType && sawType != type) {\n if (dir < 0) {\n dir = 1;\n moveOnce();\n pos.sticky = \"after\";\n }\n\n break;\n }\n\n if (type) {\n sawType = type;\n }\n\n if (dir > 0 && !moveOnce(!first)) {\n break;\n }\n }\n }\n\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\n\n if (equalCursorPos(oldPos, result)) {\n result.hitSide = true;\n }\n\n return result;\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\n\n function _findPosV(cm, pos, dir, unit) {\n var doc = cm.doc,\n x = pos.left,\n y;\n\n if (unit == \"page\") {\n var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n } else if (unit == \"line\") {\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n }\n\n var target;\n\n for (;;) {\n target = _coordsChar(cm, x, y);\n\n if (!target.outside) {\n break;\n }\n\n if (dir < 0 ? y <= 0 : y >= doc.height) {\n target.hitSide = true;\n break;\n }\n\n y += dir * 5;\n }\n\n return target;\n } // CONTENTEDITABLE INPUT STYLE\n\n\n var ContentEditableInput = function ContentEditableInput(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 var input = this,\n cm = input.cm;\n var div = input.div = display.lineDiv;\n disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n on(div, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) {\n return;\n } // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n\n\n if (ie_version <= 11) {\n setTimeout(operation(cm, function () {\n return this$1.updateFromDOM();\n }), 20);\n }\n });\n on(div, \"compositionstart\", function (e) {\n this$1.composing = {\n data: e.data,\n done: false\n };\n });\n on(div, \"compositionupdate\", function (e) {\n if (!this$1.composing) {\n this$1.composing = {\n data: e.data,\n done: false\n };\n }\n });\n on(div, \"compositionend\", function (e) {\n if (this$1.composing) {\n if (e.data != this$1.composing.data) {\n this$1.readFromDOMSoon();\n }\n\n this$1.composing.done = true;\n }\n });\n on(div, \"touchstart\", function () {\n return input.forceCompositionEnd();\n });\n on(div, \"input\", function () {\n if (!this$1.composing) {\n this$1.readFromDOMSoon();\n }\n });\n\n function onCopyCut(e) {\n if (signalDOMEvent(cm, e)) {\n return;\n }\n\n if (cm.somethingSelected()) {\n setLastCopied({\n lineWise: false,\n text: cm.getSelections()\n });\n\n if (e.type == \"cut\") {\n cm.replaceSelection(\"\", null, \"cut\");\n }\n } else if (!cm.options.lineWiseCopyCut) {\n return;\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({\n lineWise: true,\n text: ranges.text\n });\n\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\n if (e.clipboardData) {\n e.clipboardData.clearData();\n var content = lastCopied.text.join(\"\\n\"); // iOS exposes the clipboard API, but seems to discard content inserted into it\n\n e.clipboardData.setData(\"Text\", content);\n\n if (e.clipboardData.getData(\"Text\") == content) {\n e.preventDefault();\n return;\n }\n } // Old-fashioned briefly-focus-a-textarea hack\n\n\n var kludge = hiddenTextarea(),\n te = kludge.firstChild;\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = document.activeElement;\n selectInput(te);\n setTimeout(function () {\n cm.display.lineSpace.removeChild(kludge);\n hadFocus.focus();\n\n if (hadFocus == div) {\n input.showPrimarySelection();\n }\n }, 50);\n }\n\n on(div, \"copy\", onCopyCut);\n on(div, \"cut\", onCopyCut);\n };\n\n ContentEditableInput.prototype.prepareSelection = function () {\n var result = prepareSelection(this.cm, false);\n result.focus = this.cm.state.focused;\n return result;\n };\n\n ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n if (!info || !this.cm.display.view.length) {\n return;\n }\n\n if (info.focus || takeFocus) {\n this.showPrimarySelection();\n }\n\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(),\n cm = this.cm,\n prim = cm.doc.sel.primary();\n var from = prim.from(),\n 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\n if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad && cmp(minPos(curAnchor, curFocus), from) == 0 && cmp(maxPos(curAnchor, curFocus), to) == 0) {\n return;\n }\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],\n offset: 0\n };\n var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n\n if (!end) {\n var measure = view[view.length - 1].measure;\n var map$$1 = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n end = {\n node: map$$1[map$$1.length - 1],\n offset: map$$1[map$$1.length - 2] - map$$1[map$$1.length - 3]\n };\n }\n\n if (!start || !end) {\n sel.removeAllRanges();\n return;\n }\n\n var old = sel.rangeCount && sel.getRangeAt(0),\n rng;\n\n try {\n 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\n\n if (rng) {\n if (!gecko && cm.state.focused) {\n sel.collapse(start.node, start.offset);\n\n if (!rng.collapsed) {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n } else {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n\n if (old && sel.anchorNode == null) {\n sel.addRange(old);\n } else if (gecko) {\n this.startGracePeriod();\n }\n }\n\n this.rememberSelection();\n };\n\n ContentEditableInput.prototype.startGracePeriod = function () {\n var this$1 = this;\n clearTimeout(this.gracePeriod);\n this.gracePeriod = setTimeout(function () {\n this$1.gracePeriod = false;\n\n if (this$1.selectionChanged()) {\n this$1.cm.operation(function () {\n return this$1.cm.curOp.selectionChanged = true;\n });\n }\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;\n this.lastAnchorOffset = sel.anchorOffset;\n this.lastFocusNode = sel.focusNode;\n this.lastFocusOffset = sel.focusOffset;\n };\n\n ContentEditableInput.prototype.selectionInEditor = function () {\n var sel = this.getSelection();\n\n if (!sel.rangeCount) {\n return false;\n }\n\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()) {\n this.showSelection(this.prepareSelection(), true);\n }\n\n this.div.focus();\n }\n };\n\n ContentEditableInput.prototype.blur = function () {\n this.div.blur();\n };\n\n ContentEditableInput.prototype.getField = function () {\n return this.div;\n };\n\n ContentEditableInput.prototype.supportsTouch = function () {\n return true;\n };\n\n ContentEditableInput.prototype.receivedFocus = function () {\n var input = this;\n\n if (this.selectionInEditor()) {\n this.pollSelection();\n } else {\n runInOp(this.cm, function () {\n return input.cm.curOp.selectionChanged = true;\n });\n }\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\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 || sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset;\n };\n\n ContentEditableInput.prototype.pollSelection = function () {\n if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) {\n return;\n }\n\n var sel = this.getSelection(),\n cm = this.cm; // 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\n if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) {\n this.cm.triggerOnKeyDown({\n type: \"keydown\",\n keyCode: 8,\n preventDefault: Math.abs\n });\n this.blur();\n this.focus();\n return;\n }\n\n if (this.composing) {\n return;\n }\n\n this.rememberSelection();\n var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n\n if (anchor && head) {\n runInOp(cm, function () {\n setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n\n if (anchor.bad || head.bad) {\n cm.curOp.selectionChanged = true;\n }\n });\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,\n display = cm.display,\n sel = cm.doc.sel.primary();\n var from = sel.from(),\n to = sel.to();\n\n if (from.ch == 0 && from.line > cm.firstLine()) {\n from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length);\n }\n\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine()) {\n to = Pos(to.line + 1, 0);\n }\n\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) {\n return false;\n }\n\n var fromIndex, fromLine, fromNode;\n\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\n var toIndex = findViewIndex(cm, to.line);\n var toLine, toNode;\n\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) {\n return false;\n }\n\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\n while (newText.length > 1 && oldText.length > 1) {\n if (lst(newText) == lst(oldText)) {\n newText.pop();\n oldText.pop();\n toLine--;\n } else if (newText[0] == oldText[0]) {\n newText.shift();\n oldText.shift();\n fromLine++;\n } else {\n break;\n }\n }\n\n var cutFront = 0,\n cutEnd = 0;\n var newTop = newText[0],\n oldTop = oldText[0],\n maxCutFront = Math.min(newTop.length, oldTop.length);\n\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront)) {\n ++cutFront;\n }\n\n var newBot = lst(newText),\n oldBot = lst(oldText);\n var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0), oldBot.length - (oldText.length == 1 ? cutFront : 0));\n\n while (cutEnd < maxCutEnd && 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\n\n if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n while (cutFront && cutFront > from.ch && 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 var chFrom = Pos(fromLine, cutFront);\n var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n\n if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n _replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n\n return true;\n }\n };\n\n ContentEditableInput.prototype.ensurePolled = function () {\n this.forceCompositionEnd();\n };\n\n ContentEditableInput.prototype.reset = function () {\n this.forceCompositionEnd();\n };\n\n ContentEditableInput.prototype.forceCompositionEnd = function () {\n if (!this.composing) {\n return;\n }\n\n clearTimeout(this.readDOMTimeout);\n this.composing = null;\n this.updateFromDOM();\n this.div.blur();\n this.div.focus();\n };\n\n ContentEditableInput.prototype.readFromDOMSoon = function () {\n var this$1 = this;\n\n if (this.readDOMTimeout != null) {\n return;\n }\n\n this.readDOMTimeout = setTimeout(function () {\n this$1.readDOMTimeout = null;\n\n if (this$1.composing) {\n if (this$1.composing.done) {\n this$1.composing = null;\n } else {\n return;\n }\n }\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 () {\n return regChange(this$1.cm);\n });\n }\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) {\n return;\n }\n\n e.preventDefault();\n\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\n ContentEditableInput.prototype.readOnlyChanged = function (val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n\n ContentEditableInput.prototype.onContextMenu = function () {};\n\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\n if (!view || view.hidden) {\n return null;\n }\n\n var line = getLine(cm.doc, pos.line);\n var info = mapFromLineView(view, line, pos.line);\n var order = getOrder(line, cm.doc.direction),\n side = \"left\";\n\n if (order) {\n var partPos = getBidiPartAt(order, pos.ch);\n side = partPos % 2 ? \"right\" : \"left\";\n }\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)) {\n return true;\n }\n }\n\n return false;\n }\n\n function badPos(pos, bad) {\n if (bad) {\n pos.bad = true;\n }\n\n return pos;\n }\n\n function domTextBetween(cm, from, to, fromLine, toLine) {\n var text = \"\",\n closing = false,\n lineSep = cm.doc.lineSeparator(),\n extraLinebreak = false;\n\n function recognizeMarker(id) {\n return function (marker) {\n return marker.id == id;\n };\n }\n\n function close() {\n if (closing) {\n text += lineSep;\n\n if (extraLinebreak) {\n text += lineSep;\n }\n\n closing = extraLinebreak = false;\n }\n }\n\n function addText(str) {\n if (str) {\n close();\n text += str;\n }\n }\n\n function walk(node) {\n if (node.nodeType == 1) {\n var cmText = node.getAttribute(\"cm-text\");\n\n if (cmText) {\n addText(cmText);\n return;\n }\n\n var markerID = node.getAttribute(\"cm-marker\"),\n range$$1;\n\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n\n if (found.length && (range$$1 = found[0].find(0))) {\n addText(getBetween(cm.doc, range$$1.from, range$$1.to).join(lineSep));\n }\n\n return;\n }\n\n if (node.getAttribute(\"contenteditable\") == \"false\") {\n return;\n }\n\n var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n\n if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) {\n return;\n }\n\n if (isBlock) {\n close();\n }\n\n for (var i = 0; i < node.childNodes.length; i++) {\n walk(node.childNodes[i]);\n }\n\n if (/^(pre|p)$/i.test(node.nodeName)) {\n extraLinebreak = true;\n }\n\n if (isBlock) {\n closing = true;\n }\n } else if (node.nodeType == 3) {\n addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n }\n\n for (;;) {\n walk(from);\n\n if (from == to) {\n break;\n }\n\n from = from.nextSibling;\n extraLinebreak = false;\n }\n\n return text;\n }\n\n function domToPos(cm, node, offset) {\n var lineNode;\n\n if (node == cm.display.lineDiv) {\n lineNode = cm.display.lineDiv.childNodes[offset];\n\n if (!lineNode) {\n return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true);\n }\n\n node = null;\n offset = 0;\n } else {\n for (lineNode = node;; lineNode = lineNode.parentNode) {\n if (!lineNode || lineNode == cm.display.lineDiv) {\n return null;\n }\n\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) {\n break;\n }\n }\n }\n\n for (var i = 0; i < cm.display.view.length; i++) {\n var lineView = cm.display.view[i];\n\n if (lineView.node == lineNode) {\n return locateNodeInLineView(lineView, node, offset);\n }\n }\n }\n\n function locateNodeInLineView(lineView, node, offset) {\n var wrapper = lineView.text.firstChild,\n bad = false;\n\n if (!node || !contains(wrapper, node)) {\n return badPos(Pos(lineNo(lineView.line), 0), true);\n }\n\n if (node == wrapper) {\n bad = true;\n node = wrapper.childNodes[offset];\n offset = 0;\n\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,\n topNode = node;\n\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n textNode = node.firstChild;\n\n if (offset) {\n offset = textNode.nodeValue.length;\n }\n }\n\n while (topNode.parentNode != wrapper) {\n topNode = topNode.parentNode;\n }\n\n var measure = lineView.measure,\n maps = measure.maps;\n\n function find(textNode, topNode, offset) {\n for (var i = -1; i < (maps ? maps.length : 0); i++) {\n var map$$1 = i < 0 ? measure.map : maps[i];\n\n for (var j = 0; j < map$$1.length; j += 3) {\n var curNode = map$$1[j + 2];\n\n if (curNode == textNode || curNode == topNode) {\n var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n var ch = map$$1[j] + offset;\n\n if (offset < 0 || curNode != textNode) {\n ch = map$$1[j + (offset ? 1 : 0)];\n }\n\n return Pos(line, ch);\n }\n }\n }\n }\n\n var found = find(textNode, topNode, offset);\n\n if (found) {\n return badPos(found, bad);\n } // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n\n\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\n if (found) {\n return badPos(Pos(found.line, found.ch - dist), bad);\n } else {\n dist += after.textContent.length;\n }\n }\n\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n found = find(before, before.firstChild, -1);\n\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 } // TEXTAREA INPUT STYLE\n\n\n var TextareaInput = function TextareaInput(cm) {\n this.cm = cm; // See input.poll and input.reset\n\n this.prevInput = \"\"; // 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\n this.pollingFast = false; // Self-resetting timeout for the poller\n\n this.polling = new Delayed(); // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n\n this.hasSelection = false;\n this.composing = null;\n };\n\n TextareaInput.prototype.init = function (display) {\n var this$1 = this;\n var input = this,\n cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild); // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n\n if (ios) {\n te.style.width = \"0px\";\n }\n\n on(te, \"input\", function () {\n if (ie && ie_version >= 9 && this$1.hasSelection) {\n this$1.hasSelection = null;\n }\n\n input.poll();\n });\n on(te, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) {\n return;\n }\n\n cm.state.pasteIncoming = +new Date();\n input.fastPoll();\n });\n\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) {\n return;\n }\n\n if (cm.somethingSelected()) {\n setLastCopied({\n lineWise: false,\n text: cm.getSelections()\n });\n } else if (!cm.options.lineWiseCopyCut) {\n return;\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({\n lineWise: true,\n text: ranges.text\n });\n\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\n if (e.type == \"cut\") {\n cm.state.cutIncoming = +new Date();\n }\n }\n\n on(te, \"cut\", prepareCopyCut);\n on(te, \"copy\", prepareCopyCut);\n on(display.scroller, \"paste\", function (e) {\n if (eventInWidget(display, e) || signalDOMEvent(cm, e)) {\n return;\n }\n\n if (!te.dispatchEvent) {\n cm.state.pasteIncoming = +new Date();\n input.focus();\n return;\n } // Pass the `paste` event to the textarea so it's handled by its event listener.\n\n\n var event = new Event(\"paste\");\n event.clipboardData = e.clipboardData;\n te.dispatchEvent(event);\n }); // Prevent normal selection in the editor (we handle our own)\n\n on(display.lineSpace, \"selectstart\", function (e) {\n if (!eventInWidget(display, e)) {\n e_preventDefault(e);\n }\n });\n on(te, \"compositionstart\", function () {\n var start = cm.getCursor(\"from\");\n\n if (input.composing) {\n input.composing.range.clear();\n }\n\n input.composing = {\n start: start,\n range: cm.markText(start, cm.getCursor(\"to\"), {\n className: \"CodeMirror-composing\"\n })\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(); // The semihidden textarea that is focused when the editor is\n // focused, and receives input.\n\n this.textarea = this.wrapper.firstChild;\n };\n\n TextareaInput.prototype.prepareSelection = function () {\n // Redraw the selection and/or cursor\n var cm = this.cm,\n display = cm.display,\n doc = cm.doc;\n var result = prepareSelection(cm); // Move the hidden textarea near the cursor to prevent scrolling artifacts\n\n if (cm.options.moveInputWithCursor) {\n var headPos = _cursorCoords(cm, doc.sel.primary().head, \"div\");\n\n var wrapOff = display.wrapper.getBoundingClientRect(),\n lineOff = display.lineDiv.getBoundingClientRect();\n result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10, headPos.top + lineOff.top - wrapOff.top));\n result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10, headPos.left + lineOff.left - wrapOff.left));\n }\n\n return result;\n };\n\n TextareaInput.prototype.showSelection = function (drawn) {\n var cm = this.cm,\n display = cm.display;\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n\n if (drawn.teTop != null) {\n this.wrapper.style.top = drawn.teTop + \"px\";\n this.wrapper.style.left = drawn.teLeft + \"px\";\n }\n }; // Reset the input to correspond to the selection (or to be empty,\n // when not typing and nothing is selected)\n\n\n TextareaInput.prototype.reset = function (typing) {\n if (this.contextMenuPending || this.composing) {\n return;\n }\n\n var cm = this.cm;\n\n if (cm.somethingSelected()) {\n this.prevInput = \"\";\n var content = cm.getSelection();\n this.textarea.value = content;\n\n if (cm.state.focused) {\n selectInput(this.textarea);\n }\n\n if (ie && ie_version >= 9) {\n this.hasSelection = content;\n }\n } else if (!typing) {\n this.prevInput = this.textarea.value = \"\";\n\n if (ie && ie_version >= 9) {\n this.hasSelection = null;\n }\n }\n };\n\n TextareaInput.prototype.getField = function () {\n return this.textarea;\n };\n\n TextareaInput.prototype.supportsTouch = function () {\n return false;\n };\n\n TextareaInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n try {\n this.textarea.focus();\n } catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n\n }\n };\n\n TextareaInput.prototype.blur = function () {\n this.textarea.blur();\n };\n\n TextareaInput.prototype.resetPosition = function () {\n this.wrapper.style.top = this.wrapper.style.left = 0;\n };\n\n TextareaInput.prototype.receivedFocus = function () {\n this.slowPoll();\n }; // Poll for input changes, using the normal rate of polling. This\n // runs as long as the editor is focused.\n\n\n TextareaInput.prototype.slowPoll = function () {\n var this$1 = this;\n\n if (this.pollingFast) {\n return;\n }\n\n this.polling.set(this.cm.options.pollInterval, function () {\n this$1.poll();\n\n if (this$1.cm.state.focused) {\n this$1.slowPoll();\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\n\n TextareaInput.prototype.fastPoll = function () {\n var missed = false,\n input = this;\n input.pollingFast = true;\n\n function p() {\n var changed = input.poll();\n\n if (!changed && !missed) {\n missed = true;\n input.polling.set(60, p);\n } else {\n input.pollingFast = false;\n input.slowPoll();\n }\n }\n\n input.polling.set(20, p);\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\n\n TextareaInput.prototype.poll = function () {\n var this$1 = this;\n var cm = this.cm,\n input = this.textarea,\n prevInput = this.prevInput; // 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\n if (this.contextMenuPending || !cm.state.focused || hasSelection(input) && !prevInput && !this.composing || cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq) {\n return false;\n }\n\n var text = input.value; // If nothing changed, bail.\n\n if (text == prevInput && !cm.somethingSelected()) {\n 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\n\n if (ie && ie_version >= 9 && this.hasSelection === text || 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\n if (first == 0x200b && !prevInput) {\n prevInput = \"\\u200B\";\n }\n\n if (first == 0x21da) {\n this.reset();\n return this.cm.execCommand(\"undo\");\n }\n } // Find the part of the input that is actually new\n\n\n var same = 0,\n l = Math.min(prevInput.length, text.length);\n\n while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) {\n ++same;\n }\n\n runInOp(cm, function () {\n applyTextInput(cm, text.slice(same), prevInput.length - same, null, this$1.composing ? \"*compose\" : null); // Don't leave long text in the textarea, since it makes further polling slow\n\n if (text.length > 1000 || text.indexOf(\"\\n\") > -1) {\n input.value = this$1.prevInput = \"\";\n } else {\n this$1.prevInput = text;\n }\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 });\n return true;\n };\n\n TextareaInput.prototype.ensurePolled = function () {\n if (this.pollingFast && this.poll()) {\n this.pollingFast = false;\n }\n };\n\n TextareaInput.prototype.onKeyPress = function () {\n if (ie && ie_version >= 9) {\n this.hasSelection = null;\n }\n\n this.fastPoll();\n };\n\n TextareaInput.prototype.onContextMenu = function (e) {\n var input = this,\n cm = input.cm,\n display = cm.display,\n te = input.textarea;\n\n if (input.contextMenuPending) {\n input.contextMenuPending();\n }\n\n var pos = posFromMouse(cm, e),\n scrollPos = display.scroller.scrollTop;\n\n if (!pos || presto) {\n return;\n } // Opera is difficult.\n // Reset the current text selection only if the click is done outside of the selection\n // and 'resetSelectionOnContextMenu' option is true.\n\n\n var reset = cm.options.resetSelectionOnContextMenu;\n\n if (reset && cm.doc.sel.contains(pos) == -1) {\n operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll);\n }\n\n var oldCSS = te.style.cssText,\n 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\n if (webkit) {\n oldScrollY = window.scrollY;\n } // Work around Chrome issue (#2712)\n\n\n display.input.focus();\n\n if (webkit) {\n window.scrollTo(null, oldScrollY);\n }\n\n display.input.reset(); // Adds \"Select all\" to context menu in FF\n\n if (!cm.somethingSelected()) {\n te.value = input.prevInput = \" \";\n }\n\n input.contextMenuPending = rehide;\n display.selForContextMenu = cm.doc.sel;\n clearTimeout(display.detectingSelectAll); // 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\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\n te.value = extval;\n input.prevInput = selected ? \"\" : \"\\u200B\";\n te.selectionStart = 1;\n te.selectionEnd = extval.length; // Re-set this, in case some other handler touched the\n // selection in the meantime.\n\n display.selForContextMenu = cm.doc.sel;\n }\n }\n\n function rehide() {\n if (input.contextMenuPending != rehide) {\n return;\n }\n\n input.contextMenuPending = false;\n input.wrapper.style.cssText = oldWrapperCSS;\n te.style.cssText = oldCSS;\n\n if (ie && ie_version < 9) {\n display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos);\n } // Try to detect the user choosing select-all\n\n\n if (te.selectionStart != null) {\n if (!ie || ie && ie_version < 9) {\n prepareSelectAllHack();\n }\n\n var i = 0,\n poll = function poll() {\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 && 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\n display.detectingSelectAll = setTimeout(poll, 200);\n }\n }\n\n if (ie && ie_version >= 9) {\n prepareSelectAllHack();\n }\n\n if (captureRightClick) {\n e_stop(e);\n\n var mouseup = function mouseup() {\n off(window, \"mouseup\", mouseup);\n setTimeout(rehide, 20);\n };\n\n on(window, \"mouseup\", mouseup);\n } else {\n setTimeout(rehide, 50);\n }\n };\n\n TextareaInput.prototype.readOnlyChanged = function (val) {\n if (!val) {\n this.reset();\n }\n\n this.textarea.disabled = val == \"nocursor\";\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\n if (!options.tabindex && textarea.tabIndex) {\n options.tabindex = textarea.tabIndex;\n }\n\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\n\n if (options.autofocus == null) {\n var hasFocus = activeElt();\n options.autofocus = hasFocus == textarea || textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n }\n\n function save() {\n textarea.value = cm.getValue();\n }\n\n var realSubmit;\n\n if (textarea.form) {\n on(textarea.form, \"submit\", save); // Deplorable hack to make the submit method do the right thing.\n\n if (!options.leaveSubmitMethodAlone) {\n var form = textarea.form;\n realSubmit = form.submit;\n\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\n cm.getTextArea = function () {\n return textarea;\n };\n\n cm.toTextArea = function () {\n cm.toTextArea = isNaN; // Prevent this from being ran twice\n\n save();\n textarea.parentNode.removeChild(cm.getWrapperElement());\n textarea.style.display = \"\";\n\n if (textarea.form) {\n off(textarea.form, \"submit\", save);\n\n if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == \"function\") {\n textarea.form.submit = realSubmit;\n }\n }\n };\n };\n\n textarea.style.display = \"none\";\n var cm = CodeMirror(function (node) {\n 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 } // EDITOR CONSTRUCTOR\n\n\n defineOptions(CodeMirror);\n addEditorMethods(CodeMirror); // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n\n var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n\n for (var prop in Doc.prototype) {\n if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0) {\n CodeMirror.prototype[prop] = function (method) {\n return function () {\n return method.apply(this.doc, arguments);\n };\n }(Doc.prototype[prop]);\n }\n }\n\n eventMixin(Doc);\n CodeMirror.inputStyles = {\n \"textarea\": TextareaInput,\n \"contenteditable\": ContentEditableInput\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\n CodeMirror.defineMode = function (name\n /*, mode, …*/\n ) {\n if (!CodeMirror.defaults.mode && name != \"null\") {\n CodeMirror.defaults.mode = name;\n }\n\n defineMode.apply(this, arguments);\n };\n\n CodeMirror.defineMIME = defineMIME; // Minimal default mode.\n\n CodeMirror.defineMode(\"null\", function () {\n return {\n token: function token(stream) {\n return stream.skipToEnd();\n }\n };\n });\n CodeMirror.defineMIME(\"text/plain\", \"null\"); // EXTENSIONS\n\n CodeMirror.defineExtension = function (name, func) {\n CodeMirror.prototype[name] = func;\n };\n\n CodeMirror.defineDocExtension = function (name, func) {\n Doc.prototype[name] = func;\n };\n\n CodeMirror.fromTextArea = fromTextArea;\n addLegacyProps(CodeMirror);\n CodeMirror.version = \"5.49.2\";\n return CodeMirror;\n});","// Utilities\n//\n'use strict';\n\nfunction _class(obj) {\n return Object.prototype.toString.call(obj);\n}\n\nfunction isString(obj) {\n return _class(obj) === '[object String]';\n}\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction has(object, key) {\n return _hasOwnProperty.call(object, key);\n} // Merge objects\n//\n\n\nfunction assign(obj\n/*from1, from2, from3, ...*/\n) {\n var sources = Array.prototype.slice.call(arguments, 1);\n sources.forEach(function (source) {\n if (!source) {\n return;\n }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be object');\n }\n\n Object.keys(source).forEach(function (key) {\n obj[key] = source[key];\n });\n });\n return obj;\n} // Remove element from array and put another array at those position.\n// Useful for some operations with tokens\n\n\nfunction arrayReplaceAt(src, pos, newElements) {\n return [].concat(src.slice(0, pos), newElements, src.slice(pos + 1));\n} ////////////////////////////////////////////////////////////////////////////////\n\n\nfunction isValidEntityCode(c) {\n /*eslint no-bitwise:0*/\n // broken sequence\n if (c >= 0xD800 && c <= 0xDFFF) {\n return false;\n } // never used\n\n\n if (c >= 0xFDD0 && c <= 0xFDEF) {\n return false;\n }\n\n if ((c & 0xFFFF) === 0xFFFF || (c & 0xFFFF) === 0xFFFE) {\n return false;\n } // control codes\n\n\n if (c >= 0x00 && c <= 0x08) {\n return false;\n }\n\n if (c === 0x0B) {\n return false;\n }\n\n if (c >= 0x0E && c <= 0x1F) {\n return false;\n }\n\n if (c >= 0x7F && c <= 0x9F) {\n return false;\n } // out of range\n\n\n if (c > 0x10FFFF) {\n return false;\n }\n\n return true;\n}\n\nfunction fromCodePoint(c) {\n /*eslint no-bitwise:0*/\n if (c > 0xffff) {\n c -= 0x10000;\n var surrogate1 = 0xd800 + (c >> 10),\n surrogate2 = 0xdc00 + (c & 0x3ff);\n return String.fromCharCode(surrogate1, surrogate2);\n }\n\n return String.fromCharCode(c);\n}\n\nvar UNESCAPE_MD_RE = /\\\\([!\"#$%&'()*+,\\-.\\/:;<=>?@[\\\\\\]^_`{|}~])/g;\nvar ENTITY_RE = /&([a-z#][a-z0-9]{1,31});/gi;\nvar UNESCAPE_ALL_RE = new RegExp(UNESCAPE_MD_RE.source + '|' + ENTITY_RE.source, 'gi');\nvar DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i;\n\nvar entities = require('./entities');\n\nfunction replaceEntityPattern(match, name) {\n var code = 0;\n\n if (has(entities, name)) {\n return entities[name];\n }\n\n if (name.charCodeAt(0) === 0x23\n /* # */\n && DIGITAL_ENTITY_TEST_RE.test(name)) {\n code = name[1].toLowerCase() === 'x' ? parseInt(name.slice(2), 16) : parseInt(name.slice(1), 10);\n\n if (isValidEntityCode(code)) {\n return fromCodePoint(code);\n }\n }\n\n return match;\n}\n/*function replaceEntities(str) {\n if (str.indexOf('&') < 0) { return str; }\n\n return str.replace(ENTITY_RE, replaceEntityPattern);\n}*/\n\n\nfunction unescapeMd(str) {\n if (str.indexOf('\\\\') < 0) {\n return str;\n }\n\n return str.replace(UNESCAPE_MD_RE, '$1');\n}\n\nfunction unescapeAll(str) {\n if (str.indexOf('\\\\') < 0 && str.indexOf('&') < 0) {\n return str;\n }\n\n return str.replace(UNESCAPE_ALL_RE, function (match, escaped, entity) {\n if (escaped) {\n return escaped;\n }\n\n return replaceEntityPattern(match, entity);\n });\n} ////////////////////////////////////////////////////////////////////////////////\n\n\nvar HTML_ESCAPE_TEST_RE = /[&<>\"]/;\nvar HTML_ESCAPE_REPLACE_RE = /[&<>\"]/g;\nvar HTML_REPLACEMENTS = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"'\n};\n\nfunction replaceUnsafeChar(ch) {\n return HTML_REPLACEMENTS[ch];\n}\n\nfunction escapeHtml(str) {\n if (HTML_ESCAPE_TEST_RE.test(str)) {\n return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar);\n }\n\n return str;\n} ////////////////////////////////////////////////////////////////////////////////\n\n\nvar REGEXP_ESCAPE_RE = /[.?*+^$[\\]\\\\(){}|-]/g;\n\nfunction escapeRE(str) {\n return str.replace(REGEXP_ESCAPE_RE, '\\\\$&');\n} ////////////////////////////////////////////////////////////////////////////////\n\n\nfunction isSpace(code) {\n switch (code) {\n case 0x09:\n case 0x20:\n return true;\n }\n\n return false;\n} // Zs (unicode class) || [\\t\\f\\v\\r\\n]\n\n\nfunction isWhiteSpace(code) {\n if (code >= 0x2000 && code <= 0x200A) {\n return true;\n }\n\n switch (code) {\n case 0x09: // \\t\n\n case 0x0A: // \\n\n\n case 0x0B: // \\v\n\n case 0x0C: // \\f\n\n case 0x0D: // \\r\n\n case 0x20:\n case 0xA0:\n case 0x1680:\n case 0x202F:\n case 0x205F:\n case 0x3000:\n return true;\n }\n\n return false;\n} ////////////////////////////////////////////////////////////////////////////////\n\n/*eslint-disable max-len*/\n\n\nvar UNICODE_PUNCT_RE = require('uc.micro/categories/P/regex'); // Currently without astral characters support.\n\n\nfunction isPunctChar(ch) {\n return UNICODE_PUNCT_RE.test(ch);\n} // Markdown ASCII punctuation characters.\n//\n// !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n// http://spec.commonmark.org/0.15/#ascii-punctuation-character\n//\n// Don't confuse with unicode punctuation !!! It lacks some chars in ascii range.\n//\n\n\nfunction isMdAsciiPunct(ch) {\n switch (ch) {\n case 0x21\n /* ! */\n :\n case 0x22\n /* \" */\n :\n case 0x23\n /* # */\n :\n case 0x24\n /* $ */\n :\n case 0x25\n /* % */\n :\n case 0x26\n /* & */\n :\n case 0x27\n /* ' */\n :\n case 0x28\n /* ( */\n :\n case 0x29\n /* ) */\n :\n case 0x2A\n /* * */\n :\n case 0x2B\n /* + */\n :\n case 0x2C\n /* , */\n :\n case 0x2D\n /* - */\n :\n case 0x2E\n /* . */\n :\n case 0x2F\n /* / */\n :\n case 0x3A\n /* : */\n :\n case 0x3B\n /* ; */\n :\n case 0x3C\n /* < */\n :\n case 0x3D\n /* = */\n :\n case 0x3E\n /* > */\n :\n case 0x3F\n /* ? */\n :\n case 0x40\n /* @ */\n :\n case 0x5B\n /* [ */\n :\n case 0x5C\n /* \\ */\n :\n case 0x5D\n /* ] */\n :\n case 0x5E\n /* ^ */\n :\n case 0x5F\n /* _ */\n :\n case 0x60\n /* ` */\n :\n case 0x7B\n /* { */\n :\n case 0x7C\n /* | */\n :\n case 0x7D\n /* } */\n :\n case 0x7E\n /* ~ */\n :\n return true;\n\n default:\n return false;\n }\n} // Hepler to unify [reference labels].\n//\n\n\nfunction normalizeReference(str) {\n // use .toUpperCase() instead of .toLowerCase()\n // here to avoid a conflict with Object.prototype\n // members (most notably, `__proto__`)\n return str.trim().replace(/\\s+/g, ' ').toUpperCase();\n} ////////////////////////////////////////////////////////////////////////////////\n// Re-export libraries commonly used in both markdown-it and its plugins,\n// so plugins won't have to depend on them explicitly, which reduces their\n// bundled size (e.g. a browser build).\n//\n\n\nexports.lib = {};\nexports.lib.mdurl = require('mdurl');\nexports.lib.ucmicro = require('uc.micro');\nexports.assign = assign;\nexports.isString = isString;\nexports.has = has;\nexports.unescapeMd = unescapeMd;\nexports.unescapeAll = unescapeAll;\nexports.isValidEntityCode = isValidEntityCode;\nexports.fromCodePoint = fromCodePoint; // exports.replaceEntities = replaceEntities;\n\nexports.escapeHtml = escapeHtml;\nexports.arrayReplaceAt = arrayReplaceAt;\nexports.isSpace = isSpace;\nexports.isWhiteSpace = isWhiteSpace;\nexports.isMdAsciiPunct = isMdAsciiPunct;\nexports.isPunctChar = isPunctChar;\nexports.escapeRE = escapeRE;\nexports.normalizeReference = normalizeReference;","import { visit } from './visitor';\nimport { printBlockString } from './blockString';\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\n\nexport function print(ast) {\n return visit(ast, {\n leave: printDocASTReducer\n });\n} // TODO: provide better type coverage in future\n\nvar printDocASTReducer = {\n Name: function Name(node) {\n return node.value;\n },\n Variable: function Variable(node) {\n return '$' + node.name;\n },\n // Document\n Document: function Document(node) {\n return join(node.definitions, '\\n\\n') + '\\n';\n },\n OperationDefinition: function OperationDefinition(node) {\n var op = node.operation;\n var name = node.name;\n var varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n var directives = join(node.directives, ' ');\n var selectionSet = node.selectionSet; // Anonymous queries with no directives or variable definitions can use\n // the query short form.\n\n return !name && !directives && !varDefs && op === 'query' ? selectionSet : join([op, join([name, varDefs]), directives, selectionSet], ' ');\n },\n VariableDefinition: function VariableDefinition(_ref) {\n var variable = _ref.variable,\n type = _ref.type,\n defaultValue = _ref.defaultValue,\n directives = _ref.directives;\n return variable + ': ' + type + wrap(' = ', defaultValue) + wrap(' ', join(directives, ' '));\n },\n SelectionSet: function SelectionSet(_ref2) {\n var selections = _ref2.selections;\n return block(selections);\n },\n Field: function Field(_ref3) {\n var alias = _ref3.alias,\n name = _ref3.name,\n args = _ref3.arguments,\n directives = _ref3.directives,\n selectionSet = _ref3.selectionSet;\n return join([wrap('', alias, ': ') + name + wrap('(', join(args, ', '), ')'), join(directives, ' '), selectionSet], ' ');\n },\n Argument: function Argument(_ref4) {\n var name = _ref4.name,\n value = _ref4.value;\n return name + ': ' + value;\n },\n // Fragments\n FragmentSpread: function FragmentSpread(_ref5) {\n var name = _ref5.name,\n directives = _ref5.directives;\n return '...' + name + wrap(' ', join(directives, ' '));\n },\n InlineFragment: function InlineFragment(_ref6) {\n var typeCondition = _ref6.typeCondition,\n directives = _ref6.directives,\n selectionSet = _ref6.selectionSet;\n return join(['...', wrap('on ', typeCondition), join(directives, ' '), selectionSet], ' ');\n },\n FragmentDefinition: function FragmentDefinition(_ref7) {\n var name = _ref7.name,\n typeCondition = _ref7.typeCondition,\n variableDefinitions = _ref7.variableDefinitions,\n directives = _ref7.directives,\n selectionSet = _ref7.selectionSet;\n return (// Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n \"fragment \".concat(name).concat(wrap('(', join(variableDefinitions, ', '), ')'), \" \") + \"on \".concat(typeCondition, \" \").concat(wrap('', join(directives, ' '), ' ')) + selectionSet\n );\n },\n // Value\n IntValue: function IntValue(_ref8) {\n var value = _ref8.value;\n return value;\n },\n FloatValue: function FloatValue(_ref9) {\n var value = _ref9.value;\n return value;\n },\n StringValue: function StringValue(_ref10, key) {\n var value = _ref10.value,\n isBlockString = _ref10.block;\n return isBlockString ? printBlockString(value, key === 'description' ? '' : ' ') : JSON.stringify(value);\n },\n BooleanValue: function BooleanValue(_ref11) {\n var value = _ref11.value;\n return value ? 'true' : 'false';\n },\n NullValue: function NullValue() {\n return 'null';\n },\n EnumValue: function EnumValue(_ref12) {\n var value = _ref12.value;\n return value;\n },\n ListValue: function ListValue(_ref13) {\n var values = _ref13.values;\n return '[' + join(values, ', ') + ']';\n },\n ObjectValue: function ObjectValue(_ref14) {\n var fields = _ref14.fields;\n return '{' + join(fields, ', ') + '}';\n },\n ObjectField: function ObjectField(_ref15) {\n var name = _ref15.name,\n value = _ref15.value;\n return name + ': ' + value;\n },\n // Directive\n Directive: function Directive(_ref16) {\n var name = _ref16.name,\n args = _ref16.arguments;\n return '@' + name + wrap('(', join(args, ', '), ')');\n },\n // Type\n NamedType: function NamedType(_ref17) {\n var name = _ref17.name;\n return name;\n },\n ListType: function ListType(_ref18) {\n var type = _ref18.type;\n return '[' + type + ']';\n },\n NonNullType: function NonNullType(_ref19) {\n var type = _ref19.type;\n return type + '!';\n },\n // Type System Definitions\n SchemaDefinition: function SchemaDefinition(_ref20) {\n var directives = _ref20.directives,\n operationTypes = _ref20.operationTypes;\n return join(['schema', join(directives, ' '), block(operationTypes)], ' ');\n },\n OperationTypeDefinition: function OperationTypeDefinition(_ref21) {\n var operation = _ref21.operation,\n type = _ref21.type;\n return operation + ': ' + type;\n },\n ScalarTypeDefinition: addDescription(function (_ref22) {\n var name = _ref22.name,\n directives = _ref22.directives;\n return join(['scalar', name, join(directives, ' ')], ' ');\n }),\n ObjectTypeDefinition: addDescription(function (_ref23) {\n var name = _ref23.name,\n interfaces = _ref23.interfaces,\n directives = _ref23.directives,\n fields = _ref23.fields;\n return join(['type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n }),\n FieldDefinition: addDescription(function (_ref24) {\n var name = _ref24.name,\n args = _ref24.arguments,\n type = _ref24.type,\n directives = _ref24.directives;\n return name + (hasMultilineItems(args) ? wrap('(\\n', indent(join(args, '\\n')), '\\n)') : wrap('(', join(args, ', '), ')')) + ': ' + type + wrap(' ', join(directives, ' '));\n }),\n InputValueDefinition: addDescription(function (_ref25) {\n var name = _ref25.name,\n type = _ref25.type,\n defaultValue = _ref25.defaultValue,\n directives = _ref25.directives;\n return join([name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')], ' ');\n }),\n InterfaceTypeDefinition: addDescription(function (_ref26) {\n var name = _ref26.name,\n directives = _ref26.directives,\n fields = _ref26.fields;\n return join(['interface', name, join(directives, ' '), block(fields)], ' ');\n }),\n UnionTypeDefinition: addDescription(function (_ref27) {\n var name = _ref27.name,\n directives = _ref27.directives,\n types = _ref27.types;\n return join(['union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n }),\n EnumTypeDefinition: addDescription(function (_ref28) {\n var name = _ref28.name,\n directives = _ref28.directives,\n values = _ref28.values;\n return join(['enum', name, join(directives, ' '), block(values)], ' ');\n }),\n EnumValueDefinition: addDescription(function (_ref29) {\n var name = _ref29.name,\n directives = _ref29.directives;\n return join([name, join(directives, ' ')], ' ');\n }),\n InputObjectTypeDefinition: addDescription(function (_ref30) {\n var name = _ref30.name,\n directives = _ref30.directives,\n fields = _ref30.fields;\n return join(['input', name, join(directives, ' '), block(fields)], ' ');\n }),\n DirectiveDefinition: addDescription(function (_ref31) {\n var name = _ref31.name,\n args = _ref31.arguments,\n repeatable = _ref31.repeatable,\n locations = _ref31.locations;\n return 'directive @' + name + (hasMultilineItems(args) ? wrap('(\\n', indent(join(args, '\\n')), '\\n)') : wrap('(', join(args, ', '), ')')) + (repeatable ? ' repeatable' : '') + ' on ' + join(locations, ' | ');\n }),\n SchemaExtension: function SchemaExtension(_ref32) {\n var directives = _ref32.directives,\n operationTypes = _ref32.operationTypes;\n return join(['extend schema', join(directives, ' '), block(operationTypes)], ' ');\n },\n ScalarTypeExtension: function ScalarTypeExtension(_ref33) {\n var name = _ref33.name,\n directives = _ref33.directives;\n return join(['extend scalar', name, join(directives, ' ')], ' ');\n },\n ObjectTypeExtension: function ObjectTypeExtension(_ref34) {\n var name = _ref34.name,\n interfaces = _ref34.interfaces,\n directives = _ref34.directives,\n fields = _ref34.fields;\n return join(['extend type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n },\n InterfaceTypeExtension: function InterfaceTypeExtension(_ref35) {\n var name = _ref35.name,\n directives = _ref35.directives,\n fields = _ref35.fields;\n return join(['extend interface', name, join(directives, ' '), block(fields)], ' ');\n },\n UnionTypeExtension: function UnionTypeExtension(_ref36) {\n var name = _ref36.name,\n directives = _ref36.directives,\n types = _ref36.types;\n return join(['extend union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n },\n EnumTypeExtension: function EnumTypeExtension(_ref37) {\n var name = _ref37.name,\n directives = _ref37.directives,\n values = _ref37.values;\n return join(['extend enum', name, join(directives, ' '), block(values)], ' ');\n },\n InputObjectTypeExtension: function InputObjectTypeExtension(_ref38) {\n var name = _ref38.name,\n directives = _ref38.directives,\n fields = _ref38.fields;\n return join(['extend input', name, join(directives, ' '), block(fields)], ' ');\n }\n};\n\nfunction addDescription(cb) {\n return function (node) {\n return join([node.description, cb(node)], '\\n');\n };\n}\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\n\n\nfunction join(maybeArray, separator) {\n return maybeArray ? maybeArray.filter(function (x) {\n return x;\n }).join(separator || '') : '';\n}\n/**\n * Given array, print each item on its own line, wrapped in an\n * indented \"{ }\" block.\n */\n\n\nfunction block(array) {\n return array && array.length !== 0 ? '{\\n' + indent(join(array, '\\n')) + '\\n}' : '';\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise\n * print an empty string.\n */\n\n\nfunction wrap(start, maybeString, end) {\n return maybeString ? start + maybeString + (end || '') : '';\n}\n\nfunction indent(maybeString) {\n return maybeString && ' ' + maybeString.replace(/\\n/g, '\\n ');\n}\n\nfunction isMultiline(string) {\n return string.indexOf('\\n') !== -1;\n}\n\nfunction hasMultilineItems(maybeArray) {\n return maybeArray && maybeArray.some(isMultiline);\n}","import inspect from '../jsutils/inspect';\nexport var QueryDocumentKeys = {\n Name: [],\n Document: ['definitions'],\n OperationDefinition: ['name', 'variableDefinitions', 'directives', 'selectionSet'],\n VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'],\n Variable: ['name'],\n SelectionSet: ['selections'],\n Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n Argument: ['name', 'value'],\n FragmentSpread: ['name', 'directives'],\n InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n FragmentDefinition: ['name', // Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n 'variableDefinitions', 'typeCondition', 'directives', 'selectionSet'],\n IntValue: [],\n FloatValue: [],\n StringValue: [],\n BooleanValue: [],\n NullValue: [],\n EnumValue: [],\n ListValue: ['values'],\n ObjectValue: ['fields'],\n ObjectField: ['name', 'value'],\n Directive: ['name', 'arguments'],\n NamedType: ['name'],\n ListType: ['type'],\n NonNullType: ['type'],\n SchemaDefinition: ['directives', 'operationTypes'],\n OperationTypeDefinition: ['type'],\n ScalarTypeDefinition: ['description', 'name', 'directives'],\n ObjectTypeDefinition: ['description', 'name', 'interfaces', 'directives', 'fields'],\n FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n InputValueDefinition: ['description', 'name', 'type', 'defaultValue', 'directives'],\n InterfaceTypeDefinition: ['description', 'name', 'directives', 'fields'],\n UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n EnumValueDefinition: ['description', 'name', 'directives'],\n InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n DirectiveDefinition: ['description', 'name', 'arguments', 'locations'],\n SchemaExtension: ['directives', 'operationTypes'],\n ScalarTypeExtension: ['name', 'directives'],\n ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n InterfaceTypeExtension: ['name', 'directives', 'fields'],\n UnionTypeExtension: ['name', 'directives', 'types'],\n EnumTypeExtension: ['name', 'directives', 'values'],\n InputObjectTypeExtension: ['name', 'directives', 'fields']\n};\nexport var BREAK = Object.freeze({});\n/**\n * visit() will walk through an AST using a depth first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to four permutations of\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node a specific kind.\n *\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n *\n * 2) Named visitors that trigger upon entering and leaving a node of\n * a specific kind.\n *\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n *\n * 4) Parallel visitors for entering and leaving nodes of a specific kind.\n *\n * visit(ast, {\n * enter: {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * },\n * leave: {\n * Kind(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n */\n\nexport function visit(root, visitor) {\n var visitorKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : QueryDocumentKeys;\n /* eslint-disable no-undef-init */\n\n var stack = undefined;\n var inArray = Array.isArray(root);\n var keys = [root];\n var index = -1;\n var edits = [];\n var node = undefined;\n var key = undefined;\n var parent = undefined;\n var path = [];\n var ancestors = [];\n var newRoot = root;\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n var isLeaving = index === keys.length;\n var isEdited = isLeaving && edits.length !== 0;\n\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n } else {\n var clone = {};\n\n for (var _i2 = 0, _Object$keys2 = Object.keys(node); _i2 < _Object$keys2.length; _i2++) {\n var k = _Object$keys2[_i2];\n clone[k] = node[k];\n }\n\n node = clone;\n }\n\n var editOffset = 0;\n\n for (var ii = 0; ii < edits.length; ii++) {\n var editKey = edits[ii][0];\n var editValue = edits[ii][1];\n\n if (inArray) {\n editKey -= editOffset;\n }\n\n if (inArray && editValue === null) {\n node.splice(editKey, 1);\n editOffset++;\n } else {\n node[editKey] = editValue;\n }\n }\n }\n\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else {\n key = parent ? inArray ? index : keys[index] : undefined;\n node = parent ? parent[key] : newRoot;\n\n if (node === null || node === undefined) {\n continue;\n }\n\n if (parent) {\n path.push(key);\n }\n }\n\n var result = void 0;\n\n if (!Array.isArray(node)) {\n if (!isNode(node)) {\n throw new Error('Invalid AST Node: ' + inspect(node));\n }\n\n var visitFn = getVisitFn(visitor, node.kind, isLeaving);\n\n if (visitFn) {\n result = visitFn.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n\n if (!isLeaving) {\n if (isNode(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n stack = {\n inArray: inArray,\n index: index,\n keys: keys,\n edits: edits,\n prev: stack\n };\n inArray = Array.isArray(node);\n keys = inArray ? node : visitorKeys[node.kind] || [];\n index = -1;\n edits = [];\n\n if (parent) {\n ancestors.push(parent);\n }\n\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n newRoot = edits[edits.length - 1][1];\n }\n\n return newRoot;\n}\n\nfunction isNode(maybeNode) {\n return Boolean(maybeNode && typeof maybeNode.kind === 'string');\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\n\nexport function visitInParallel(visitors) {\n var skipping = new Array(visitors.length);\n return {\n enter: function enter(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (!skipping[i]) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n false);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n }\n },\n leave: function leave(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (!skipping[i]) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n true);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n }\n };\n}\n/**\n * Creates a new visitor instance which maintains a provided TypeInfo instance\n * along with visiting visitor.\n */\n\nexport function visitWithTypeInfo(typeInfo, visitor) {\n return {\n enter: function enter(node) {\n typeInfo.enter(node);\n var fn = getVisitFn(visitor, node.kind,\n /* isLeaving */\n false);\n\n if (fn) {\n var result = fn.apply(visitor, arguments);\n\n if (result !== undefined) {\n typeInfo.leave(node);\n\n if (isNode(result)) {\n typeInfo.enter(result);\n }\n }\n\n return result;\n }\n },\n leave: function leave(node) {\n var fn = getVisitFn(visitor, node.kind,\n /* isLeaving */\n true);\n var result;\n\n if (fn) {\n result = fn.apply(visitor, arguments);\n }\n\n typeInfo.leave(node);\n return result;\n }\n };\n}\n/**\n * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n */\n\nexport function getVisitFn(visitor, kind, isLeaving) {\n var kindVisitor = visitor[kind];\n\n if (kindVisitor) {\n if (!isLeaving && typeof kindVisitor === 'function') {\n // { Kind() {} }\n return kindVisitor;\n }\n\n var kindSpecificVisitor = isLeaving ? kindVisitor.leave : kindVisitor.enter;\n\n if (typeof kindSpecificVisitor === 'function') {\n // { Kind: { enter() {}, leave() {} } }\n return kindSpecificVisitor;\n }\n } else {\n var specificVisitor = isLeaving ? visitor.leave : visitor.enter;\n\n if (specificVisitor) {\n if (typeof specificVisitor === 'function') {\n // { enter() {}, leave() {} }\n return specificVisitor;\n }\n\n var specificKindVisitor = specificVisitor[kind];\n\n if (typeof specificKindVisitor === 'function') {\n // { enter: { Kind() {} }, leave: { Kind() {} } }\n return specificKindVisitor;\n }\n }\n }\n}","/**\n * Note: This file is autogenerated using \"resources/gen-version.js\" script and\n * automatically updated by \"yarn version\" command.\n */\n\n/**\n * A string containing the version of the GraphQL.js library\n */\nexport var version = '14.5.8';\n/**\n * An object containing the components of the GraphQL.js version string\n */\n\nexport var versionInfo = Object.freeze({\n major: 14,\n minor: 5,\n patch: 8,\n preReleaseTag: null\n});","/**\n * Returns true if the value acts like a Promise, i.e. has a \"then\" function,\n * otherwise returns false.\n */\n// eslint-disable-next-line no-redeclare\nexport default function isPromise(value) {\n return Boolean(value && typeof value.then === 'function');\n}","import { GraphQLError } from './GraphQLError';\n/**\n * Produces a GraphQLError representing a syntax error, containing useful\n * descriptive information about the syntax error's position in the source.\n */\n\nexport function syntaxError(source, position, description) {\n return new GraphQLError(\"Syntax Error: \".concat(description), undefined, source, [position]);\n}","import devAssert from '../jsutils/devAssert';\nimport defineToStringTag from '../jsutils/defineToStringTag';\n/**\n * A representation of source input to GraphQL.\n * `name` and `locationOffset` are optional. They are useful for clients who\n * store GraphQL documents in source files; for example, if the GraphQL input\n * starts at line 40 in a file named Foo.graphql, it might be useful for name to\n * be \"Foo.graphql\" and location to be `{ line: 40, column: 0 }`.\n * line and column in locationOffset are 1-indexed\n */\n\nexport var Source = function Source(body, name, locationOffset) {\n this.body = body;\n this.name = name || 'GraphQL request';\n this.locationOffset = locationOffset || {\n line: 1,\n column: 1\n };\n this.locationOffset.line > 0 || devAssert(0, 'line in locationOffset is 1-indexed and must be positive');\n this.locationOffset.column > 0 || devAssert(0, 'column in locationOffset is 1-indexed and must be positive');\n}; // Conditionally apply `[Symbol.toStringTag]` if `Symbol`s are supported\n\ndefineToStringTag(Source);","/**\n * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\nexport var TokenKind = Object.freeze({\n SOF: '',\n EOF: '',\n BANG: '!',\n DOLLAR: '$',\n AMP: '&',\n PAREN_L: '(',\n PAREN_R: ')',\n SPREAD: '...',\n COLON: ':',\n EQUALS: '=',\n AT: '@',\n BRACKET_L: '[',\n BRACKET_R: ']',\n BRACE_L: '{',\n PIPE: '|',\n BRACE_R: '}',\n NAME: 'Name',\n INT: 'Int',\n FLOAT: 'Float',\n STRING: 'String',\n BLOCK_STRING: 'BlockString',\n COMMENT: 'Comment'\n});\n/**\n * The enum type representing the token kinds values.\n */","import defineToJSON from '../jsutils/defineToJSON';\nimport { syntaxError } from '../error/syntaxError';\nimport { dedentBlockStringValue } from './blockString';\nimport { TokenKind } from './tokenKind';\n/**\n * Given a Source object, this returns a Lexer for that source.\n * A Lexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\n\nexport function createLexer(source, options) {\n var startOfFileToken = new Tok(TokenKind.SOF, 0, 0, 0, 0, null);\n var lexer = {\n source: source,\n options: options,\n lastToken: startOfFileToken,\n token: startOfFileToken,\n line: 1,\n lineStart: 0,\n advance: advanceLexer,\n lookahead: lookahead\n };\n return lexer;\n}\n\nfunction advanceLexer() {\n this.lastToken = this.token;\n var token = this.token = this.lookahead();\n return token;\n}\n\nfunction lookahead() {\n var token = this.token;\n\n if (token.kind !== TokenKind.EOF) {\n do {\n // Note: next is only mutable during parsing, so we cast to allow this.\n token = token.next || (token.next = readToken(this, token));\n } while (token.kind === TokenKind.COMMENT);\n }\n\n return token;\n}\n/**\n * The return type of createLexer.\n */\n// @internal\n\n\nexport function isPunctuatorToken(token) {\n var kind = token.kind;\n return kind === TokenKind.BANG || kind === TokenKind.DOLLAR || kind === TokenKind.AMP || kind === TokenKind.PAREN_L || kind === TokenKind.PAREN_R || kind === TokenKind.SPREAD || kind === TokenKind.COLON || kind === TokenKind.EQUALS || kind === TokenKind.AT || kind === TokenKind.BRACKET_L || kind === TokenKind.BRACKET_R || kind === TokenKind.BRACE_L || kind === TokenKind.PIPE || kind === TokenKind.BRACE_R;\n}\n/**\n * Helper function for constructing the Token object.\n */\n\nfunction Tok(kind, start, end, line, column, prev, value) {\n this.kind = kind;\n this.start = start;\n this.end = end;\n this.line = line;\n this.column = column;\n this.value = value;\n this.prev = prev;\n this.next = null;\n} // Print a simplified form when appearing in JSON/util.inspect.\n\n\ndefineToJSON(Tok, function () {\n return {\n kind: this.kind,\n value: this.value,\n line: this.line,\n column: this.column\n };\n});\n\nfunction printCharCode(code) {\n return (// NaN/undefined represents access beyond the end of the file.\n isNaN(code) ? TokenKind.EOF : // Trust JSON for ASCII.\n code < 0x007f ? JSON.stringify(String.fromCharCode(code)) : // Otherwise print the escaped form.\n \"\\\"\\\\u\".concat(('00' + code.toString(16).toUpperCase()).slice(-4), \"\\\"\")\n );\n}\n/**\n * Gets the next token from the source starting at the given position.\n *\n * This skips over whitespace until it finds the next lexable token, then lexes\n * punctuators immediately or calls the appropriate helper function for more\n * complicated tokens.\n */\n\n\nfunction readToken(lexer, prev) {\n var source = lexer.source;\n var body = source.body;\n var bodyLength = body.length;\n var pos = positionAfterWhitespace(body, prev.end, lexer);\n var line = lexer.line;\n var col = 1 + pos - lexer.lineStart;\n\n if (pos >= bodyLength) {\n return new Tok(TokenKind.EOF, bodyLength, bodyLength, line, col, prev);\n }\n\n var code = body.charCodeAt(pos); // SourceCharacter\n\n switch (code) {\n // !\n case 33:\n return new Tok(TokenKind.BANG, pos, pos + 1, line, col, prev);\n // #\n\n case 35:\n return readComment(source, pos, line, col, prev);\n // $\n\n case 36:\n return new Tok(TokenKind.DOLLAR, pos, pos + 1, line, col, prev);\n // &\n\n case 38:\n return new Tok(TokenKind.AMP, pos, pos + 1, line, col, prev);\n // (\n\n case 40:\n return new Tok(TokenKind.PAREN_L, pos, pos + 1, line, col, prev);\n // )\n\n case 41:\n return new Tok(TokenKind.PAREN_R, pos, pos + 1, line, col, prev);\n // .\n\n case 46:\n if (body.charCodeAt(pos + 1) === 46 && body.charCodeAt(pos + 2) === 46) {\n return new Tok(TokenKind.SPREAD, pos, pos + 3, line, col, prev);\n }\n\n break;\n // :\n\n case 58:\n return new Tok(TokenKind.COLON, pos, pos + 1, line, col, prev);\n // =\n\n case 61:\n return new Tok(TokenKind.EQUALS, pos, pos + 1, line, col, prev);\n // @\n\n case 64:\n return new Tok(TokenKind.AT, pos, pos + 1, line, col, prev);\n // [\n\n case 91:\n return new Tok(TokenKind.BRACKET_L, pos, pos + 1, line, col, prev);\n // ]\n\n case 93:\n return new Tok(TokenKind.BRACKET_R, pos, pos + 1, line, col, prev);\n // {\n\n case 123:\n return new Tok(TokenKind.BRACE_L, pos, pos + 1, line, col, prev);\n // |\n\n case 124:\n return new Tok(TokenKind.PIPE, pos, pos + 1, line, col, prev);\n // }\n\n case 125:\n return new Tok(TokenKind.BRACE_R, pos, pos + 1, line, col, prev);\n // A-Z _ a-z\n\n case 65:\n case 66:\n case 67:\n case 68:\n case 69:\n case 70:\n case 71:\n case 72:\n case 73:\n case 74:\n case 75:\n case 76:\n case 77:\n case 78:\n case 79:\n case 80:\n case 81:\n case 82:\n case 83:\n case 84:\n case 85:\n case 86:\n case 87:\n case 88:\n case 89:\n case 90:\n case 95:\n case 97:\n case 98:\n case 99:\n case 100:\n case 101:\n case 102:\n case 103:\n case 104:\n case 105:\n case 106:\n case 107:\n case 108:\n case 109:\n case 110:\n case 111:\n case 112:\n case 113:\n case 114:\n case 115:\n case 116:\n case 117:\n case 118:\n case 119:\n case 120:\n case 121:\n case 122:\n return readName(source, pos, line, col, prev);\n // - 0-9\n\n case 45:\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n return readNumber(source, pos, code, line, col, prev);\n // \"\n\n case 34:\n if (body.charCodeAt(pos + 1) === 34 && body.charCodeAt(pos + 2) === 34) {\n return readBlockString(source, pos, line, col, prev, lexer);\n }\n\n return readString(source, pos, line, col, prev);\n }\n\n throw syntaxError(source, pos, unexpectedCharacterMessage(code));\n}\n/**\n * Report a message that an unexpected character was encountered.\n */\n\n\nfunction unexpectedCharacterMessage(code) {\n if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n return \"Cannot contain the invalid character \".concat(printCharCode(code), \".\");\n }\n\n if (code === 39) {\n // '\n return 'Unexpected single quote character (\\'), did you mean to use a double quote (\")?';\n }\n\n return \"Cannot parse the unexpected character \".concat(printCharCode(code), \".\");\n}\n/**\n * Reads from body starting at startPosition until it finds a non-whitespace\n * character, then returns the position of that character for lexing.\n */\n\n\nfunction positionAfterWhitespace(body, startPosition, lexer) {\n var bodyLength = body.length;\n var position = startPosition;\n\n while (position < bodyLength) {\n var code = body.charCodeAt(position); // tab | space | comma | BOM\n\n if (code === 9 || code === 32 || code === 44 || code === 0xfeff) {\n ++position;\n } else if (code === 10) {\n // new line\n ++position;\n ++lexer.line;\n lexer.lineStart = position;\n } else if (code === 13) {\n // carriage return\n if (body.charCodeAt(position + 1) === 10) {\n position += 2;\n } else {\n ++position;\n }\n\n ++lexer.line;\n lexer.lineStart = position;\n } else {\n break;\n }\n }\n\n return position;\n}\n/**\n * Reads a comment token from the source file.\n *\n * #[\\u0009\\u0020-\\uFFFF]*\n */\n\n\nfunction readComment(source, start, line, col, prev) {\n var body = source.body;\n var code;\n var position = start;\n\n do {\n code = body.charCodeAt(++position);\n } while (!isNaN(code) && ( // SourceCharacter but not LineTerminator\n code > 0x001f || code === 0x0009));\n\n return new Tok(TokenKind.COMMENT, start, position, line, col, prev, body.slice(start + 1, position));\n}\n/**\n * Reads a number token from the source file, either a float\n * or an int depending on whether a decimal point appears.\n *\n * Int: -?(0|[1-9][0-9]*)\n * Float: -?(0|[1-9][0-9]*)(\\.[0-9]+)?((E|e)(+|-)?[0-9]+)?\n */\n\n\nfunction readNumber(source, start, firstCode, line, col, prev) {\n var body = source.body;\n var code = firstCode;\n var position = start;\n var isFloat = false;\n\n if (code === 45) {\n // -\n code = body.charCodeAt(++position);\n }\n\n if (code === 48) {\n // 0\n code = body.charCodeAt(++position);\n\n if (code >= 48 && code <= 57) {\n throw syntaxError(source, position, \"Invalid number, unexpected digit after 0: \".concat(printCharCode(code), \".\"));\n }\n } else {\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n }\n\n if (code === 46) {\n // .\n isFloat = true;\n code = body.charCodeAt(++position);\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n }\n\n if (code === 69 || code === 101) {\n // E e\n isFloat = true;\n code = body.charCodeAt(++position);\n\n if (code === 43 || code === 45) {\n // + -\n code = body.charCodeAt(++position);\n }\n\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n } // Numbers cannot be followed by . or e\n\n\n if (code === 46 || code === 69 || code === 101) {\n throw syntaxError(source, position, \"Invalid number, expected digit but got: \".concat(printCharCode(code), \".\"));\n }\n\n return new Tok(isFloat ? TokenKind.FLOAT : TokenKind.INT, start, position, line, col, prev, body.slice(start, position));\n}\n/**\n * Returns the new position in the source after reading digits.\n */\n\n\nfunction readDigits(source, start, firstCode) {\n var body = source.body;\n var position = start;\n var code = firstCode;\n\n if (code >= 48 && code <= 57) {\n // 0 - 9\n do {\n code = body.charCodeAt(++position);\n } while (code >= 48 && code <= 57); // 0 - 9\n\n\n return position;\n }\n\n throw syntaxError(source, position, \"Invalid number, expected digit but got: \".concat(printCharCode(code), \".\"));\n}\n/**\n * Reads a string token from the source file.\n *\n * \"([^\"\\\\\\u000A\\u000D]|(\\\\(u[0-9a-fA-F]{4}|[\"\\\\/bfnrt])))*\"\n */\n\n\nfunction readString(source, start, line, col, prev) {\n var body = source.body;\n var position = start + 1;\n var chunkStart = position;\n var code = 0;\n var value = '';\n\n while (position < body.length && !isNaN(code = body.charCodeAt(position)) && // not LineTerminator\n code !== 0x000a && code !== 0x000d) {\n // Closing Quote (\")\n if (code === 34) {\n value += body.slice(chunkStart, position);\n return new Tok(TokenKind.STRING, start, position + 1, line, col, prev, value);\n } // SourceCharacter\n\n\n if (code < 0x0020 && code !== 0x0009) {\n throw syntaxError(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n }\n\n ++position;\n\n if (code === 92) {\n // \\\n value += body.slice(chunkStart, position - 1);\n code = body.charCodeAt(position);\n\n switch (code) {\n case 34:\n value += '\"';\n break;\n\n case 47:\n value += '/';\n break;\n\n case 92:\n value += '\\\\';\n break;\n\n case 98:\n value += '\\b';\n break;\n\n case 102:\n value += '\\f';\n break;\n\n case 110:\n value += '\\n';\n break;\n\n case 114:\n value += '\\r';\n break;\n\n case 116:\n value += '\\t';\n break;\n\n case 117:\n {\n // uXXXX\n var charCode = uniCharCode(body.charCodeAt(position + 1), body.charCodeAt(position + 2), body.charCodeAt(position + 3), body.charCodeAt(position + 4));\n\n if (charCode < 0) {\n var invalidSequence = body.slice(position + 1, position + 5);\n throw syntaxError(source, position, \"Invalid character escape sequence: \\\\u\".concat(invalidSequence, \".\"));\n }\n\n value += String.fromCharCode(charCode);\n position += 4;\n break;\n }\n\n default:\n throw syntaxError(source, position, \"Invalid character escape sequence: \\\\\".concat(String.fromCharCode(code), \".\"));\n }\n\n ++position;\n chunkStart = position;\n }\n }\n\n throw syntaxError(source, position, 'Unterminated string.');\n}\n/**\n * Reads a block string token from the source file.\n *\n * \"\"\"(\"?\"?(\\\\\"\"\"|\\\\(?!=\"\"\")|[^\"\\\\]))*\"\"\"\n */\n\n\nfunction readBlockString(source, start, line, col, prev, lexer) {\n var body = source.body;\n var position = start + 3;\n var chunkStart = position;\n var code = 0;\n var rawValue = '';\n\n while (position < body.length && !isNaN(code = body.charCodeAt(position))) {\n // Closing Triple-Quote (\"\"\")\n if (code === 34 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34) {\n rawValue += body.slice(chunkStart, position);\n return new Tok(TokenKind.BLOCK_STRING, start, position + 3, line, col, prev, dedentBlockStringValue(rawValue));\n } // SourceCharacter\n\n\n if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n throw syntaxError(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n }\n\n if (code === 10) {\n // new line\n ++position;\n ++lexer.line;\n lexer.lineStart = position;\n } else if (code === 13) {\n // carriage return\n if (body.charCodeAt(position + 1) === 10) {\n position += 2;\n } else {\n ++position;\n }\n\n ++lexer.line;\n lexer.lineStart = position;\n } else if ( // Escape Triple-Quote (\\\"\"\")\n code === 92 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34 && body.charCodeAt(position + 3) === 34) {\n rawValue += body.slice(chunkStart, position) + '\"\"\"';\n position += 4;\n chunkStart = position;\n } else {\n ++position;\n }\n }\n\n throw syntaxError(source, position, 'Unterminated string.');\n}\n/**\n * Converts four hexadecimal chars to the integer that the\n * string represents. For example, uniCharCode('0','0','0','f')\n * will return 15, and uniCharCode('0','0','f','f') returns 255.\n *\n * Returns a negative number on error, if a char was invalid.\n *\n * This is implemented by noting that char2hex() returns -1 on error,\n * which means the result of ORing the char2hex() will also be negative.\n */\n\n\nfunction uniCharCode(a, b, c, d) {\n return char2hex(a) << 12 | char2hex(b) << 8 | char2hex(c) << 4 | char2hex(d);\n}\n/**\n * Converts a hex character to its integer value.\n * '0' becomes 0, '9' becomes 9\n * 'A' becomes 10, 'F' becomes 15\n * 'a' becomes 10, 'f' becomes 15\n *\n * Returns -1 on error.\n */\n\n\nfunction char2hex(a) {\n return a >= 48 && a <= 57 ? a - 48 // 0-9\n : a >= 65 && a <= 70 ? a - 55 // A-F\n : a >= 97 && a <= 102 ? a - 87 // a-f\n : -1;\n}\n/**\n * Reads an alphanumeric + underscore name from the source.\n *\n * [_A-Za-z][_0-9A-Za-z]*\n */\n\n\nfunction readName(source, start, line, col, prev) {\n var body = source.body;\n var bodyLength = body.length;\n var position = start + 1;\n var code = 0;\n\n while (position !== bodyLength && !isNaN(code = body.charCodeAt(position)) && (code === 95 || // _\n code >= 48 && code <= 57 || // 0-9\n code >= 65 && code <= 90 || // A-Z\n code >= 97 && code <= 122) // a-z\n ) {\n ++position;\n }\n\n return new Tok(TokenKind.NAME, start, position, line, col, prev, body.slice(start, position));\n}","import inspect from '../jsutils/inspect';\nimport devAssert from '../jsutils/devAssert';\nimport defineToJSON from '../jsutils/defineToJSON';\nimport { syntaxError } from '../error/syntaxError';\nimport { Kind } from './kinds';\nimport { Source } from './source';\nimport { createLexer } from './lexer';\nimport { DirectiveLocation } from './directiveLocation';\nimport { TokenKind } from './tokenKind';\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\n\nexport function parse(source, options) {\n var parser = new Parser(source, options);\n return parser.parseDocument();\n}\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: valueFromAST().\n */\n\nexport function parseValue(source, options) {\n var parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n var value = parser.parseValueLiteral(false);\n parser.expectToken(TokenKind.EOF);\n return value;\n}\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n */\n\nexport function parseType(source, options) {\n var parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n var type = parser.parseTypeReference();\n parser.expectToken(TokenKind.EOF);\n return type;\n}\n\nvar Parser =\n/*#__PURE__*/\nfunction () {\n function Parser(source, options) {\n var sourceObj = typeof source === 'string' ? new Source(source) : source;\n sourceObj instanceof Source || devAssert(0, \"Must provide Source. Received: \".concat(inspect(sourceObj)));\n this._lexer = createLexer(sourceObj);\n this._options = options || {};\n }\n /**\n * Converts a name lex token into a name parse node.\n */\n\n\n var _proto = Parser.prototype;\n\n _proto.parseName = function parseName() {\n var token = this.expectToken(TokenKind.NAME);\n return {\n kind: Kind.NAME,\n value: token.value,\n loc: this.loc(token)\n };\n } // Implements the parsing rules in the Document section.\n\n /**\n * Document : Definition+\n */\n ;\n\n _proto.parseDocument = function parseDocument() {\n var start = this._lexer.token;\n return {\n kind: Kind.DOCUMENT,\n definitions: this.many(TokenKind.SOF, this.parseDefinition, TokenKind.EOF),\n loc: this.loc(start)\n };\n }\n /**\n * Definition :\n * - ExecutableDefinition\n * - TypeSystemDefinition\n * - TypeSystemExtension\n *\n * ExecutableDefinition :\n * - OperationDefinition\n * - FragmentDefinition\n */\n ;\n\n _proto.parseDefinition = function parseDefinition() {\n if (this.peek(TokenKind.NAME)) {\n switch (this._lexer.token.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n return this.parseOperationDefinition();\n\n case 'fragment':\n return this.parseFragmentDefinition();\n\n case 'schema':\n case 'scalar':\n case 'type':\n case 'interface':\n case 'union':\n case 'enum':\n case 'input':\n case 'directive':\n return this.parseTypeSystemDefinition();\n\n case 'extend':\n return this.parseTypeSystemExtension();\n }\n } else if (this.peek(TokenKind.BRACE_L)) {\n return this.parseOperationDefinition();\n } else if (this.peekDescription()) {\n return this.parseTypeSystemDefinition();\n }\n\n throw this.unexpected();\n } // Implements the parsing rules in the Operations section.\n\n /**\n * OperationDefinition :\n * - SelectionSet\n * - OperationType Name? VariableDefinitions? Directives? SelectionSet\n */\n ;\n\n _proto.parseOperationDefinition = function parseOperationDefinition() {\n var start = this._lexer.token;\n\n if (this.peek(TokenKind.BRACE_L)) {\n return {\n kind: Kind.OPERATION_DEFINITION,\n operation: 'query',\n name: undefined,\n variableDefinitions: [],\n directives: [],\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n\n var operation = this.parseOperationType();\n var name;\n\n if (this.peek(TokenKind.NAME)) {\n name = this.parseName();\n }\n\n return {\n kind: Kind.OPERATION_DEFINITION,\n operation: operation,\n name: name,\n variableDefinitions: this.parseVariableDefinitions(),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * OperationType : one of query mutation subscription\n */\n ;\n\n _proto.parseOperationType = function parseOperationType() {\n var operationToken = this.expectToken(TokenKind.NAME);\n\n switch (operationToken.value) {\n case 'query':\n return 'query';\n\n case 'mutation':\n return 'mutation';\n\n case 'subscription':\n return 'subscription';\n }\n\n throw this.unexpected(operationToken);\n }\n /**\n * VariableDefinitions : ( VariableDefinition+ )\n */\n ;\n\n _proto.parseVariableDefinitions = function parseVariableDefinitions() {\n return this.optionalMany(TokenKind.PAREN_L, this.parseVariableDefinition, TokenKind.PAREN_R);\n }\n /**\n * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n */\n ;\n\n _proto.parseVariableDefinition = function parseVariableDefinition() {\n var start = this._lexer.token;\n return {\n kind: Kind.VARIABLE_DEFINITION,\n variable: this.parseVariable(),\n type: (this.expectToken(TokenKind.COLON), this.parseTypeReference()),\n defaultValue: this.expectOptionalToken(TokenKind.EQUALS) ? this.parseValueLiteral(true) : undefined,\n directives: this.parseDirectives(true),\n loc: this.loc(start)\n };\n }\n /**\n * Variable : $ Name\n */\n ;\n\n _proto.parseVariable = function parseVariable() {\n var start = this._lexer.token;\n this.expectToken(TokenKind.DOLLAR);\n return {\n kind: Kind.VARIABLE,\n name: this.parseName(),\n loc: this.loc(start)\n };\n }\n /**\n * SelectionSet : { Selection+ }\n */\n ;\n\n _proto.parseSelectionSet = function parseSelectionSet() {\n var start = this._lexer.token;\n return {\n kind: Kind.SELECTION_SET,\n selections: this.many(TokenKind.BRACE_L, this.parseSelection, TokenKind.BRACE_R),\n loc: this.loc(start)\n };\n }\n /**\n * Selection :\n * - Field\n * - FragmentSpread\n * - InlineFragment\n */\n ;\n\n _proto.parseSelection = function parseSelection() {\n return this.peek(TokenKind.SPREAD) ? this.parseFragment() : this.parseField();\n }\n /**\n * Field : Alias? Name Arguments? Directives? SelectionSet?\n *\n * Alias : Name :\n */\n ;\n\n _proto.parseField = function parseField() {\n var start = this._lexer.token;\n var nameOrAlias = this.parseName();\n var alias;\n var name;\n\n if (this.expectOptionalToken(TokenKind.COLON)) {\n alias = nameOrAlias;\n name = this.parseName();\n } else {\n name = nameOrAlias;\n }\n\n return {\n kind: Kind.FIELD,\n alias: alias,\n name: name,\n arguments: this.parseArguments(false),\n directives: this.parseDirectives(false),\n selectionSet: this.peek(TokenKind.BRACE_L) ? this.parseSelectionSet() : undefined,\n loc: this.loc(start)\n };\n }\n /**\n * Arguments[Const] : ( Argument[?Const]+ )\n */\n ;\n\n _proto.parseArguments = function parseArguments(isConst) {\n var item = isConst ? this.parseConstArgument : this.parseArgument;\n return this.optionalMany(TokenKind.PAREN_L, item, TokenKind.PAREN_R);\n }\n /**\n * Argument[Const] : Name : Value[?Const]\n */\n ;\n\n _proto.parseArgument = function parseArgument() {\n var start = this._lexer.token;\n var name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return {\n kind: Kind.ARGUMENT,\n name: name,\n value: this.parseValueLiteral(false),\n loc: this.loc(start)\n };\n };\n\n _proto.parseConstArgument = function parseConstArgument() {\n var start = this._lexer.token;\n return {\n kind: Kind.ARGUMENT,\n name: this.parseName(),\n value: (this.expectToken(TokenKind.COLON), this.parseValueLiteral(true)),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Fragments section.\n\n /**\n * Corresponds to both FragmentSpread and InlineFragment in the spec.\n *\n * FragmentSpread : ... FragmentName Directives?\n *\n * InlineFragment : ... TypeCondition? Directives? SelectionSet\n */\n ;\n\n _proto.parseFragment = function parseFragment() {\n var start = this._lexer.token;\n this.expectToken(TokenKind.SPREAD);\n var hasTypeCondition = this.expectOptionalKeyword('on');\n\n if (!hasTypeCondition && this.peek(TokenKind.NAME)) {\n return {\n kind: Kind.FRAGMENT_SPREAD,\n name: this.parseFragmentName(),\n directives: this.parseDirectives(false),\n loc: this.loc(start)\n };\n }\n\n return {\n kind: Kind.INLINE_FRAGMENT,\n typeCondition: hasTypeCondition ? this.parseNamedType() : undefined,\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * FragmentDefinition :\n * - fragment FragmentName on TypeCondition Directives? SelectionSet\n *\n * TypeCondition : NamedType\n */\n ;\n\n _proto.parseFragmentDefinition = function parseFragmentDefinition() {\n var start = this._lexer.token;\n this.expectKeyword('fragment'); // Experimental support for defining variables within fragments changes\n // the grammar of FragmentDefinition:\n // - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n\n if (this._options.experimentalFragmentVariables) {\n return {\n kind: Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n variableDefinitions: this.parseVariableDefinitions(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n\n return {\n kind: Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * FragmentName : Name but not `on`\n */\n ;\n\n _proto.parseFragmentName = function parseFragmentName() {\n if (this._lexer.token.value === 'on') {\n throw this.unexpected();\n }\n\n return this.parseName();\n } // Implements the parsing rules in the Values section.\n\n /**\n * Value[Const] :\n * - [~Const] Variable\n * - IntValue\n * - FloatValue\n * - StringValue\n * - BooleanValue\n * - NullValue\n * - EnumValue\n * - ListValue[?Const]\n * - ObjectValue[?Const]\n *\n * BooleanValue : one of `true` `false`\n *\n * NullValue : `null`\n *\n * EnumValue : Name but not `true`, `false` or `null`\n */\n ;\n\n _proto.parseValueLiteral = function parseValueLiteral(isConst) {\n var token = this._lexer.token;\n\n switch (token.kind) {\n case TokenKind.BRACKET_L:\n return this.parseList(isConst);\n\n case TokenKind.BRACE_L:\n return this.parseObject(isConst);\n\n case TokenKind.INT:\n this._lexer.advance();\n\n return {\n kind: Kind.INT,\n value: token.value,\n loc: this.loc(token)\n };\n\n case TokenKind.FLOAT:\n this._lexer.advance();\n\n return {\n kind: Kind.FLOAT,\n value: token.value,\n loc: this.loc(token)\n };\n\n case TokenKind.STRING:\n case TokenKind.BLOCK_STRING:\n return this.parseStringLiteral();\n\n case TokenKind.NAME:\n if (token.value === 'true' || token.value === 'false') {\n this._lexer.advance();\n\n return {\n kind: Kind.BOOLEAN,\n value: token.value === 'true',\n loc: this.loc(token)\n };\n } else if (token.value === 'null') {\n this._lexer.advance();\n\n return {\n kind: Kind.NULL,\n loc: this.loc(token)\n };\n }\n\n this._lexer.advance();\n\n return {\n kind: Kind.ENUM,\n value: token.value,\n loc: this.loc(token)\n };\n\n case TokenKind.DOLLAR:\n if (!isConst) {\n return this.parseVariable();\n }\n\n break;\n }\n\n throw this.unexpected();\n };\n\n _proto.parseStringLiteral = function parseStringLiteral() {\n var token = this._lexer.token;\n\n this._lexer.advance();\n\n return {\n kind: Kind.STRING,\n value: token.value,\n block: token.kind === TokenKind.BLOCK_STRING,\n loc: this.loc(token)\n };\n }\n /**\n * ListValue[Const] :\n * - [ ]\n * - [ Value[?Const]+ ]\n */\n ;\n\n _proto.parseList = function parseList(isConst) {\n var _this = this;\n\n var start = this._lexer.token;\n\n var item = function item() {\n return _this.parseValueLiteral(isConst);\n };\n\n return {\n kind: Kind.LIST,\n values: this.any(TokenKind.BRACKET_L, item, TokenKind.BRACKET_R),\n loc: this.loc(start)\n };\n }\n /**\n * ObjectValue[Const] :\n * - { }\n * - { ObjectField[?Const]+ }\n */\n ;\n\n _proto.parseObject = function parseObject(isConst) {\n var _this2 = this;\n\n var start = this._lexer.token;\n\n var item = function item() {\n return _this2.parseObjectField(isConst);\n };\n\n return {\n kind: Kind.OBJECT,\n fields: this.any(TokenKind.BRACE_L, item, TokenKind.BRACE_R),\n loc: this.loc(start)\n };\n }\n /**\n * ObjectField[Const] : Name : Value[?Const]\n */\n ;\n\n _proto.parseObjectField = function parseObjectField(isConst) {\n var start = this._lexer.token;\n var name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return {\n kind: Kind.OBJECT_FIELD,\n name: name,\n value: this.parseValueLiteral(isConst),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Directives section.\n\n /**\n * Directives[Const] : Directive[?Const]+\n */\n ;\n\n _proto.parseDirectives = function parseDirectives(isConst) {\n var directives = [];\n\n while (this.peek(TokenKind.AT)) {\n directives.push(this.parseDirective(isConst));\n }\n\n return directives;\n }\n /**\n * Directive[Const] : @ Name Arguments[?Const]?\n */\n ;\n\n _proto.parseDirective = function parseDirective(isConst) {\n var start = this._lexer.token;\n this.expectToken(TokenKind.AT);\n return {\n kind: Kind.DIRECTIVE,\n name: this.parseName(),\n arguments: this.parseArguments(isConst),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Types section.\n\n /**\n * Type :\n * - NamedType\n * - ListType\n * - NonNullType\n */\n ;\n\n _proto.parseTypeReference = function parseTypeReference() {\n var start = this._lexer.token;\n var type;\n\n if (this.expectOptionalToken(TokenKind.BRACKET_L)) {\n type = this.parseTypeReference();\n this.expectToken(TokenKind.BRACKET_R);\n type = {\n kind: Kind.LIST_TYPE,\n type: type,\n loc: this.loc(start)\n };\n } else {\n type = this.parseNamedType();\n }\n\n if (this.expectOptionalToken(TokenKind.BANG)) {\n return {\n kind: Kind.NON_NULL_TYPE,\n type: type,\n loc: this.loc(start)\n };\n }\n\n return type;\n }\n /**\n * NamedType : Name\n */\n ;\n\n _proto.parseNamedType = function parseNamedType() {\n var start = this._lexer.token;\n return {\n kind: Kind.NAMED_TYPE,\n name: this.parseName(),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Type Definition section.\n\n /**\n * TypeSystemDefinition :\n * - SchemaDefinition\n * - TypeDefinition\n * - DirectiveDefinition\n *\n * TypeDefinition :\n * - ScalarTypeDefinition\n * - ObjectTypeDefinition\n * - InterfaceTypeDefinition\n * - UnionTypeDefinition\n * - EnumTypeDefinition\n * - InputObjectTypeDefinition\n */\n ;\n\n _proto.parseTypeSystemDefinition = function parseTypeSystemDefinition() {\n // Many definitions begin with a description and require a lookahead.\n var keywordToken = this.peekDescription() ? this._lexer.lookahead() : this._lexer.token;\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaDefinition();\n\n case 'scalar':\n return this.parseScalarTypeDefinition();\n\n case 'type':\n return this.parseObjectTypeDefinition();\n\n case 'interface':\n return this.parseInterfaceTypeDefinition();\n\n case 'union':\n return this.parseUnionTypeDefinition();\n\n case 'enum':\n return this.parseEnumTypeDefinition();\n\n case 'input':\n return this.parseInputObjectTypeDefinition();\n\n case 'directive':\n return this.parseDirectiveDefinition();\n }\n }\n\n throw this.unexpected(keywordToken);\n };\n\n _proto.peekDescription = function peekDescription() {\n return this.peek(TokenKind.STRING) || this.peek(TokenKind.BLOCK_STRING);\n }\n /**\n * Description : StringValue\n */\n ;\n\n _proto.parseDescription = function parseDescription() {\n if (this.peekDescription()) {\n return this.parseStringLiteral();\n }\n }\n /**\n * SchemaDefinition : schema Directives[Const]? { OperationTypeDefinition+ }\n */\n ;\n\n _proto.parseSchemaDefinition = function parseSchemaDefinition() {\n var start = this._lexer.token;\n this.expectKeyword('schema');\n var directives = this.parseDirectives(true);\n var operationTypes = this.many(TokenKind.BRACE_L, this.parseOperationTypeDefinition, TokenKind.BRACE_R);\n return {\n kind: Kind.SCHEMA_DEFINITION,\n directives: directives,\n operationTypes: operationTypes,\n loc: this.loc(start)\n };\n }\n /**\n * OperationTypeDefinition : OperationType : NamedType\n */\n ;\n\n _proto.parseOperationTypeDefinition = function parseOperationTypeDefinition() {\n var start = this._lexer.token;\n var operation = this.parseOperationType();\n this.expectToken(TokenKind.COLON);\n var type = this.parseNamedType();\n return {\n kind: Kind.OPERATION_TYPE_DEFINITION,\n operation: operation,\n type: type,\n loc: this.loc(start)\n };\n }\n /**\n * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n */\n ;\n\n _proto.parseScalarTypeDefinition = function parseScalarTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('scalar');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.SCALAR_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ObjectTypeDefinition :\n * Description?\n * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n */\n ;\n\n _proto.parseObjectTypeDefinition = function parseObjectTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('type');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n return {\n kind: Kind.OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * ImplementsInterfaces :\n * - implements `&`? NamedType\n * - ImplementsInterfaces & NamedType\n */\n ;\n\n _proto.parseImplementsInterfaces = function parseImplementsInterfaces() {\n var types = [];\n\n if (this.expectOptionalKeyword('implements')) {\n // Optional leading ampersand\n this.expectOptionalToken(TokenKind.AMP);\n\n do {\n types.push(this.parseNamedType());\n } while (this.expectOptionalToken(TokenKind.AMP) || // Legacy support for the SDL?\n this._options.allowLegacySDLImplementsInterfaces && this.peek(TokenKind.NAME));\n }\n\n return types;\n }\n /**\n * FieldsDefinition : { FieldDefinition+ }\n */\n ;\n\n _proto.parseFieldsDefinition = function parseFieldsDefinition() {\n // Legacy support for the SDL?\n if (this._options.allowLegacySDLEmptyFields && this.peek(TokenKind.BRACE_L) && this._lexer.lookahead().kind === TokenKind.BRACE_R) {\n this._lexer.advance();\n\n this._lexer.advance();\n\n return [];\n }\n\n return this.optionalMany(TokenKind.BRACE_L, this.parseFieldDefinition, TokenKind.BRACE_R);\n }\n /**\n * FieldDefinition :\n * - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n */\n ;\n\n _proto.parseFieldDefinition = function parseFieldDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n var args = this.parseArgumentDefs();\n this.expectToken(TokenKind.COLON);\n var type = this.parseTypeReference();\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.FIELD_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n type: type,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ArgumentsDefinition : ( InputValueDefinition+ )\n */\n ;\n\n _proto.parseArgumentDefs = function parseArgumentDefs() {\n return this.optionalMany(TokenKind.PAREN_L, this.parseInputValueDef, TokenKind.PAREN_R);\n }\n /**\n * InputValueDefinition :\n * - Description? Name : Type DefaultValue? Directives[Const]?\n */\n ;\n\n _proto.parseInputValueDef = function parseInputValueDef() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n this.expectToken(TokenKind.COLON);\n var type = this.parseTypeReference();\n var defaultValue;\n\n if (this.expectOptionalToken(TokenKind.EQUALS)) {\n defaultValue = this.parseValueLiteral(true);\n }\n\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.INPUT_VALUE_DEFINITION,\n description: description,\n name: name,\n type: type,\n defaultValue: defaultValue,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * InterfaceTypeDefinition :\n * - Description? interface Name Directives[Const]? FieldsDefinition?\n */\n ;\n\n _proto.parseInterfaceTypeDefinition = function parseInterfaceTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('interface');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n return {\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * UnionTypeDefinition :\n * - Description? union Name Directives[Const]? UnionMemberTypes?\n */\n ;\n\n _proto.parseUnionTypeDefinition = function parseUnionTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('union');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var types = this.parseUnionMemberTypes();\n return {\n kind: Kind.UNION_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n types: types,\n loc: this.loc(start)\n };\n }\n /**\n * UnionMemberTypes :\n * - = `|`? NamedType\n * - UnionMemberTypes | NamedType\n */\n ;\n\n _proto.parseUnionMemberTypes = function parseUnionMemberTypes() {\n var types = [];\n\n if (this.expectOptionalToken(TokenKind.EQUALS)) {\n // Optional leading pipe\n this.expectOptionalToken(TokenKind.PIPE);\n\n do {\n types.push(this.parseNamedType());\n } while (this.expectOptionalToken(TokenKind.PIPE));\n }\n\n return types;\n }\n /**\n * EnumTypeDefinition :\n * - Description? enum Name Directives[Const]? EnumValuesDefinition?\n */\n ;\n\n _proto.parseEnumTypeDefinition = function parseEnumTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('enum');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var values = this.parseEnumValuesDefinition();\n return {\n kind: Kind.ENUM_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n values: values,\n loc: this.loc(start)\n };\n }\n /**\n * EnumValuesDefinition : { EnumValueDefinition+ }\n */\n ;\n\n _proto.parseEnumValuesDefinition = function parseEnumValuesDefinition() {\n return this.optionalMany(TokenKind.BRACE_L, this.parseEnumValueDefinition, TokenKind.BRACE_R);\n }\n /**\n * EnumValueDefinition : Description? EnumValue Directives[Const]?\n *\n * EnumValue : Name\n */\n ;\n\n _proto.parseEnumValueDefinition = function parseEnumValueDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.ENUM_VALUE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * InputObjectTypeDefinition :\n * - Description? input Name Directives[Const]? InputFieldsDefinition?\n */\n ;\n\n _proto.parseInputObjectTypeDefinition = function parseInputObjectTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('input');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var fields = this.parseInputFieldsDefinition();\n return {\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * InputFieldsDefinition : { InputValueDefinition+ }\n */\n ;\n\n _proto.parseInputFieldsDefinition = function parseInputFieldsDefinition() {\n return this.optionalMany(TokenKind.BRACE_L, this.parseInputValueDef, TokenKind.BRACE_R);\n }\n /**\n * TypeSystemExtension :\n * - SchemaExtension\n * - TypeExtension\n *\n * TypeExtension :\n * - ScalarTypeExtension\n * - ObjectTypeExtension\n * - InterfaceTypeExtension\n * - UnionTypeExtension\n * - EnumTypeExtension\n * - InputObjectTypeDefinition\n */\n ;\n\n _proto.parseTypeSystemExtension = function parseTypeSystemExtension() {\n var keywordToken = this._lexer.lookahead();\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaExtension();\n\n case 'scalar':\n return this.parseScalarTypeExtension();\n\n case 'type':\n return this.parseObjectTypeExtension();\n\n case 'interface':\n return this.parseInterfaceTypeExtension();\n\n case 'union':\n return this.parseUnionTypeExtension();\n\n case 'enum':\n return this.parseEnumTypeExtension();\n\n case 'input':\n return this.parseInputObjectTypeExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n }\n /**\n * SchemaExtension :\n * - extend schema Directives[Const]? { OperationTypeDefinition+ }\n * - extend schema Directives[Const]\n */\n ;\n\n _proto.parseSchemaExtension = function parseSchemaExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('schema');\n var directives = this.parseDirectives(true);\n var operationTypes = this.optionalMany(TokenKind.BRACE_L, this.parseOperationTypeDefinition, TokenKind.BRACE_R);\n\n if (directives.length === 0 && operationTypes.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.SCHEMA_EXTENSION,\n directives: directives,\n operationTypes: operationTypes,\n loc: this.loc(start)\n };\n }\n /**\n * ScalarTypeExtension :\n * - extend scalar Name Directives[Const]\n */\n ;\n\n _proto.parseScalarTypeExtension = function parseScalarTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('scalar');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n\n if (directives.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.SCALAR_TYPE_EXTENSION,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ObjectTypeExtension :\n * - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend type Name ImplementsInterfaces? Directives[Const]\n * - extend type Name ImplementsInterfaces\n */\n ;\n\n _proto.parseObjectTypeExtension = function parseObjectTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('type');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n\n if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.OBJECT_TYPE_EXTENSION,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * InterfaceTypeExtension :\n * - extend interface Name Directives[Const]? FieldsDefinition\n * - extend interface Name Directives[Const]\n */\n ;\n\n _proto.parseInterfaceTypeExtension = function parseInterfaceTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('interface');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n\n if (directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.INTERFACE_TYPE_EXTENSION,\n name: name,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * UnionTypeExtension :\n * - extend union Name Directives[Const]? UnionMemberTypes\n * - extend union Name Directives[Const]\n */\n ;\n\n _proto.parseUnionTypeExtension = function parseUnionTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('union');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var types = this.parseUnionMemberTypes();\n\n if (directives.length === 0 && types.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.UNION_TYPE_EXTENSION,\n name: name,\n directives: directives,\n types: types,\n loc: this.loc(start)\n };\n }\n /**\n * EnumTypeExtension :\n * - extend enum Name Directives[Const]? EnumValuesDefinition\n * - extend enum Name Directives[Const]\n */\n ;\n\n _proto.parseEnumTypeExtension = function parseEnumTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('enum');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var values = this.parseEnumValuesDefinition();\n\n if (directives.length === 0 && values.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.ENUM_TYPE_EXTENSION,\n name: name,\n directives: directives,\n values: values,\n loc: this.loc(start)\n };\n }\n /**\n * InputObjectTypeExtension :\n * - extend input Name Directives[Const]? InputFieldsDefinition\n * - extend input Name Directives[Const]\n */\n ;\n\n _proto.parseInputObjectTypeExtension = function parseInputObjectTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('input');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var fields = this.parseInputFieldsDefinition();\n\n if (directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.INPUT_OBJECT_TYPE_EXTENSION,\n name: name,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * DirectiveDefinition :\n * - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations\n */\n ;\n\n _proto.parseDirectiveDefinition = function parseDirectiveDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('directive');\n this.expectToken(TokenKind.AT);\n var name = this.parseName();\n var args = this.parseArgumentDefs();\n var repeatable = this.expectOptionalKeyword('repeatable');\n this.expectKeyword('on');\n var locations = this.parseDirectiveLocations();\n return {\n kind: Kind.DIRECTIVE_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n repeatable: repeatable,\n locations: locations,\n loc: this.loc(start)\n };\n }\n /**\n * DirectiveLocations :\n * - `|`? DirectiveLocation\n * - DirectiveLocations | DirectiveLocation\n */\n ;\n\n _proto.parseDirectiveLocations = function parseDirectiveLocations() {\n // Optional leading pipe\n this.expectOptionalToken(TokenKind.PIPE);\n var locations = [];\n\n do {\n locations.push(this.parseDirectiveLocation());\n } while (this.expectOptionalToken(TokenKind.PIPE));\n\n return locations;\n }\n /*\n * DirectiveLocation :\n * - ExecutableDirectiveLocation\n * - TypeSystemDirectiveLocation\n *\n * ExecutableDirectiveLocation : one of\n * `QUERY`\n * `MUTATION`\n * `SUBSCRIPTION`\n * `FIELD`\n * `FRAGMENT_DEFINITION`\n * `FRAGMENT_SPREAD`\n * `INLINE_FRAGMENT`\n *\n * TypeSystemDirectiveLocation : one of\n * `SCHEMA`\n * `SCALAR`\n * `OBJECT`\n * `FIELD_DEFINITION`\n * `ARGUMENT_DEFINITION`\n * `INTERFACE`\n * `UNION`\n * `ENUM`\n * `ENUM_VALUE`\n * `INPUT_OBJECT`\n * `INPUT_FIELD_DEFINITION`\n */\n ;\n\n _proto.parseDirectiveLocation = function parseDirectiveLocation() {\n var start = this._lexer.token;\n var name = this.parseName();\n\n if (DirectiveLocation[name.value] !== undefined) {\n return name;\n }\n\n throw this.unexpected(start);\n } // Core parsing utility functions\n\n /**\n * Returns a location object, used to identify the place in\n * the source that created a given parsed object.\n */\n ;\n\n _proto.loc = function loc(startToken) {\n if (!this._options.noLocation) {\n return new Loc(startToken, this._lexer.lastToken, this._lexer.source);\n }\n }\n /**\n * Determines if the next token is of a given kind\n */\n ;\n\n _proto.peek = function peek(kind) {\n return this._lexer.token.kind === kind;\n }\n /**\n * If the next token is of the given kind, return that token after advancing\n * the lexer. Otherwise, do not change the parser state and throw an error.\n */\n ;\n\n _proto.expectToken = function expectToken(kind) {\n var token = this._lexer.token;\n\n if (token.kind === kind) {\n this._lexer.advance();\n\n return token;\n }\n\n throw syntaxError(this._lexer.source, token.start, \"Expected \".concat(kind, \", found \").concat(getTokenDesc(token)));\n }\n /**\n * If the next token is of the given kind, return that token after advancing\n * the lexer. Otherwise, do not change the parser state and return undefined.\n */\n ;\n\n _proto.expectOptionalToken = function expectOptionalToken(kind) {\n var token = this._lexer.token;\n\n if (token.kind === kind) {\n this._lexer.advance();\n\n return token;\n }\n\n return undefined;\n }\n /**\n * If the next token is a given keyword, advance the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n ;\n\n _proto.expectKeyword = function expectKeyword(value) {\n var token = this._lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n this._lexer.advance();\n } else {\n throw syntaxError(this._lexer.source, token.start, \"Expected \\\"\".concat(value, \"\\\", found \").concat(getTokenDesc(token)));\n }\n }\n /**\n * If the next token is a given keyword, return \"true\" after advancing\n * the lexer. Otherwise, do not change the parser state and return \"false\".\n */\n ;\n\n _proto.expectOptionalKeyword = function expectOptionalKeyword(value) {\n var token = this._lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n this._lexer.advance();\n\n return true;\n }\n\n return false;\n }\n /**\n * Helper function for creating an error when an unexpected lexed token\n * is encountered.\n */\n ;\n\n _proto.unexpected = function unexpected(atToken) {\n var token = atToken || this._lexer.token;\n return syntaxError(this._lexer.source, token.start, \"Unexpected \".concat(getTokenDesc(token)));\n }\n /**\n * Returns a possibly empty list of parse nodes, determined by\n * the parseFn. This list begins with a lex token of openKind\n * and ends with a lex token of closeKind. Advances the parser\n * to the next lex token after the closing token.\n */\n ;\n\n _proto.any = function any(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n var nodes = [];\n\n while (!this.expectOptionalToken(closeKind)) {\n nodes.push(parseFn.call(this));\n }\n\n return nodes;\n }\n /**\n * Returns a list of parse nodes, determined by the parseFn.\n * It can be empty only if open token is missing otherwise it will always\n * return non-empty list that begins with a lex token of openKind and ends\n * with a lex token of closeKind. Advances the parser to the next lex token\n * after the closing token.\n */\n ;\n\n _proto.optionalMany = function optionalMany(openKind, parseFn, closeKind) {\n if (this.expectOptionalToken(openKind)) {\n var nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n\n return [];\n }\n /**\n * Returns a non-empty list of parse nodes, determined by\n * the parseFn. This list begins with a lex token of openKind\n * and ends with a lex token of closeKind. Advances the parser\n * to the next lex token after the closing token.\n */\n ;\n\n _proto.many = function many(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n var nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n };\n\n return Parser;\n}();\n\nfunction Loc(startToken, endToken, source) {\n this.start = startToken.start;\n this.end = endToken.end;\n this.startToken = startToken;\n this.endToken = endToken;\n this.source = source;\n} // Print a simplified form when appearing in JSON/util.inspect.\n\n\ndefineToJSON(Loc, function () {\n return {\n start: this.start,\n end: this.end\n };\n});\n/**\n * A helper function to describe a token as a string for debugging\n */\n\nfunction getTokenDesc(token) {\n var value = token.value;\n return value ? \"\".concat(token.kind, \" \\\"\").concat(value, \"\\\"\") : token.kind;\n}","/* eslint-disable no-redeclare */\n// $FlowFixMe\nvar find = Array.prototype.find ? function (list, predicate) {\n return Array.prototype.find.call(list, predicate);\n} : function (list, predicate) {\n for (var _i2 = 0; _i2 < list.length; _i2++) {\n var value = list[_i2];\n\n if (predicate(value)) {\n return value;\n }\n }\n};\nexport default find;","// Workaround to make older Flow versions happy\nvar flatMapMethod = Array.prototype.flatMap;\n/* eslint-disable no-redeclare */\n// $FlowFixMe\n\nvar flatMap = flatMapMethod ? function (list, fn) {\n return flatMapMethod.call(list, fn);\n} : function (list, fn) {\n var result = [];\n\n for (var _i2 = 0; _i2 < list.length; _i2++) {\n var _item = list[_i2];\n var value = fn(_item);\n\n if (Array.isArray(value)) {\n result = result.concat(value);\n } else {\n result.push(value);\n }\n }\n\n return result;\n};\nexport default flatMap;","import devAssert from '../jsutils/devAssert';\nimport { GraphQLError } from '../error/GraphQLError';\nvar NAME_RX = /^[_a-zA-Z][_a-zA-Z0-9]*$/;\n/**\n * Upholds the spec rules about naming.\n */\n\nexport function assertValidName(name) {\n var error = isValidNameError(name);\n\n if (error) {\n throw error;\n }\n\n return name;\n}\n/**\n * Returns an Error if a name is invalid.\n */\n\nexport function isValidNameError(name, node) {\n typeof name === 'string' || devAssert(0, 'Expected string');\n\n if (name.length > 1 && name[0] === '_' && name[1] === '_') {\n return new GraphQLError(\"Name \\\"\".concat(name, \"\\\" must not begin with \\\"__\\\", which is reserved by GraphQL introspection.\"), node);\n }\n\n if (!NAME_RX.test(name)) {\n return new GraphQLError(\"Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but \\\"\".concat(name, \"\\\" does not.\"), node);\n }\n}","import { isObjectType, isListType, isNonNullType, isAbstractType } from '../type/definition';\n/**\n * Provided two types, return true if the types are equal (invariant).\n */\n\nexport function isEqualType(typeA, typeB) {\n // Equivalent types are equal.\n if (typeA === typeB) {\n return true;\n } // If either type is non-null, the other must also be non-null.\n\n\n if (isNonNullType(typeA) && isNonNullType(typeB)) {\n return isEqualType(typeA.ofType, typeB.ofType);\n } // If either type is a list, the other must also be a list.\n\n\n if (isListType(typeA) && isListType(typeB)) {\n return isEqualType(typeA.ofType, typeB.ofType);\n } // Otherwise the types are not equal.\n\n\n return false;\n}\n/**\n * Provided a type and a super type, return true if the first type is either\n * equal or a subset of the second super type (covariant).\n */\n\nexport function isTypeSubTypeOf(schema, maybeSubType, superType) {\n // Equivalent type is a valid subtype\n if (maybeSubType === superType) {\n return true;\n } // If superType is non-null, maybeSubType must also be non-null.\n\n\n if (isNonNullType(superType)) {\n if (isNonNullType(maybeSubType)) {\n return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType);\n }\n\n return false;\n }\n\n if (isNonNullType(maybeSubType)) {\n // If superType is nullable, maybeSubType may be non-null or nullable.\n return isTypeSubTypeOf(schema, maybeSubType.ofType, superType);\n } // If superType type is a list, maybeSubType type must also be a list.\n\n\n if (isListType(superType)) {\n if (isListType(maybeSubType)) {\n return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType);\n }\n\n return false;\n }\n\n if (isListType(maybeSubType)) {\n // If superType is not a list, maybeSubType must also be not a list.\n return false;\n } // If superType type is an abstract type, maybeSubType type may be a currently\n // possible object type.\n\n\n if (isAbstractType(superType) && isObjectType(maybeSubType) && schema.isPossibleType(superType, maybeSubType)) {\n return true;\n } // Otherwise, the child type is not a valid subtype of the parent type.\n\n\n return false;\n}\n/**\n * Provided two composite types, determine if they \"overlap\". Two composite\n * types overlap when the Sets of possible concrete types for each intersect.\n *\n * This is often used to determine if a fragment of a given type could possibly\n * be visited in a context of another type.\n *\n * This function is commutative.\n */\n\nexport function doTypesOverlap(schema, typeA, typeB) {\n // Equivalent types overlap\n if (typeA === typeB) {\n return true;\n }\n\n if (isAbstractType(typeA)) {\n if (isAbstractType(typeB)) {\n // If both types are abstract, then determine if there is any intersection\n // between possible concrete types of each.\n return schema.getPossibleTypes(typeA).some(function (type) {\n return schema.isPossibleType(typeB, type);\n });\n } // Determine if the latter type is a possible concrete type of the former.\n\n\n return schema.isPossibleType(typeA, typeB);\n }\n\n if (isAbstractType(typeB)) {\n // Determine if the former type is a possible concrete type of the latter.\n return schema.isPossibleType(typeB, typeA);\n } // Otherwise the types do not overlap.\n\n\n return false;\n}","import objectEntries from '../polyfills/objectEntries';\nimport inspect from '../jsutils/inspect';\nimport toObjMap from '../jsutils/toObjMap';\nimport devAssert from '../jsutils/devAssert';\nimport instanceOf from '../jsutils/instanceOf';\nimport defineToJSON from '../jsutils/defineToJSON';\nimport isObjectLike from '../jsutils/isObjectLike';\nimport defineToStringTag from '../jsutils/defineToStringTag';\nimport { DirectiveLocation } from '../language/directiveLocation';\nimport { GraphQLString, GraphQLBoolean } from './scalars';\nimport { argsToArgsConfig, GraphQLNonNull } from './definition';\n/**\n * Test if the given value is a GraphQL directive.\n */\n// eslint-disable-next-line no-redeclare\n\nexport function isDirective(directive) {\n return instanceOf(directive, GraphQLDirective);\n}\nexport function assertDirective(directive) {\n if (!isDirective(directive)) {\n throw new Error(\"Expected \".concat(inspect(directive), \" to be a GraphQL directive.\"));\n }\n\n return directive;\n}\n/**\n * Directives are used by the GraphQL runtime as a way of modifying execution\n * behavior. Type system creators will usually not create these directly.\n */\n\nexport var GraphQLDirective =\n/*#__PURE__*/\nfunction () {\n function GraphQLDirective(config) {\n this.name = config.name;\n this.description = config.description;\n this.locations = config.locations;\n this.isRepeatable = config.isRepeatable != null && config.isRepeatable;\n this.extensions = config.extensions && toObjMap(config.extensions);\n this.astNode = config.astNode;\n config.name || devAssert(0, 'Directive must be named.');\n Array.isArray(config.locations) || devAssert(0, \"@\".concat(config.name, \" locations must be an Array.\"));\n var args = config.args || {};\n isObjectLike(args) && !Array.isArray(args) || devAssert(0, \"@\".concat(config.name, \" args must be an object with argument names as keys.\"));\n this.args = objectEntries(args).map(function (_ref) {\n var argName = _ref[0],\n arg = _ref[1];\n return {\n name: argName,\n description: arg.description === undefined ? null : arg.description,\n type: arg.type,\n defaultValue: arg.defaultValue,\n extensions: arg.extensions && toObjMap(arg.extensions),\n astNode: arg.astNode\n };\n });\n }\n\n var _proto = GraphQLDirective.prototype;\n\n _proto.toString = function toString() {\n return '@' + this.name;\n };\n\n _proto.toConfig = function toConfig() {\n return {\n name: this.name,\n description: this.description,\n locations: this.locations,\n args: argsToArgsConfig(this.args),\n isRepeatable: this.isRepeatable,\n extensions: this.extensions,\n astNode: this.astNode\n };\n };\n\n return GraphQLDirective;\n}(); // Conditionally apply `[Symbol.toStringTag]` if `Symbol`s are supported\n\ndefineToStringTag(GraphQLDirective);\ndefineToJSON(GraphQLDirective);\n/**\n * Used to conditionally include fields or fragments.\n */\n\nexport var GraphQLIncludeDirective = new GraphQLDirective({\n name: 'include',\n description: 'Directs the executor to include this field or fragment only when the `if` argument is true.',\n locations: [DirectiveLocation.FIELD, DirectiveLocation.FRAGMENT_SPREAD, DirectiveLocation.INLINE_FRAGMENT],\n args: {\n if: {\n type: GraphQLNonNull(GraphQLBoolean),\n description: 'Included when true.'\n }\n }\n});\n/**\n * Used to conditionally skip (exclude) fields or fragments.\n */\n\nexport var GraphQLSkipDirective = new GraphQLDirective({\n name: 'skip',\n description: 'Directs the executor to skip this field or fragment when the `if` argument is true.',\n locations: [DirectiveLocation.FIELD, DirectiveLocation.FRAGMENT_SPREAD, DirectiveLocation.INLINE_FRAGMENT],\n args: {\n if: {\n type: GraphQLNonNull(GraphQLBoolean),\n description: 'Skipped when true.'\n }\n }\n});\n/**\n * Constant string used for default reason for a deprecation.\n */\n\nexport var DEFAULT_DEPRECATION_REASON = 'No longer supported';\n/**\n * Used to declare element of a GraphQL schema as deprecated.\n */\n\nexport var GraphQLDeprecatedDirective = new GraphQLDirective({\n name: 'deprecated',\n description: 'Marks an element of a GraphQL schema as no longer supported.',\n locations: [DirectiveLocation.FIELD_DEFINITION, DirectiveLocation.ENUM_VALUE],\n args: {\n reason: {\n type: GraphQLString,\n description: 'Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted using the Markdown syntax (as specified by [CommonMark](https://commonmark.org/).',\n defaultValue: DEFAULT_DEPRECATION_REASON\n }\n }\n});\n/**\n * The full list of specified directives.\n */\n\nexport var specifiedDirectives = Object.freeze([GraphQLIncludeDirective, GraphQLSkipDirective, GraphQLDeprecatedDirective]);\nexport function isSpecifiedDirective(directive) {\n return isDirective(directive) && specifiedDirectives.some(function (_ref2) {\n var name = _ref2.name;\n return name === directive.name;\n });\n}","import find from '../polyfills/find';\nimport objectValues from '../polyfills/objectValues';\nimport inspect from '../jsutils/inspect';\nimport toObjMap from '../jsutils/toObjMap';\nimport devAssert from '../jsutils/devAssert';\nimport instanceOf from '../jsutils/instanceOf';\nimport isObjectLike from '../jsutils/isObjectLike';\nimport defineToStringTag from '../jsutils/defineToStringTag';\nimport { __Schema } from './introspection';\nimport { GraphQLDirective, isDirective, specifiedDirectives } from './directives';\nimport { isObjectType, isInterfaceType, isUnionType, isInputObjectType, getNamedType } from './definition';\n/**\n * Test if the given value is a GraphQL schema.\n */\n// eslint-disable-next-line no-redeclare\n\nexport function isSchema(schema) {\n return instanceOf(schema, GraphQLSchema);\n}\nexport function assertSchema(schema) {\n if (!isSchema(schema)) {\n throw new Error(\"Expected \".concat(inspect(schema), \" to be a GraphQL schema.\"));\n }\n\n return schema;\n}\n/**\n * Schema Definition\n *\n * A Schema is created by supplying the root types of each type of operation,\n * query and mutation (optional). A schema definition is then supplied to the\n * validator and executor.\n *\n * Example:\n *\n * const MyAppSchema = new GraphQLSchema({\n * query: MyAppQueryRootType,\n * mutation: MyAppMutationRootType,\n * })\n *\n * Note: When the schema is constructed, by default only the types that are\n * reachable by traversing the root types are included, other types must be\n * explicitly referenced.\n *\n * Example:\n *\n * const characterInterface = new GraphQLInterfaceType({\n * name: 'Character',\n * ...\n * });\n *\n * const humanType = new GraphQLObjectType({\n * name: 'Human',\n * interfaces: [characterInterface],\n * ...\n * });\n *\n * const droidType = new GraphQLObjectType({\n * name: 'Droid',\n * interfaces: [characterInterface],\n * ...\n * });\n *\n * const schema = new GraphQLSchema({\n * query: new GraphQLObjectType({\n * name: 'Query',\n * fields: {\n * hero: { type: characterInterface, ... },\n * }\n * }),\n * ...\n * // Since this schema references only the `Character` interface it's\n * // necessary to explicitly list the types that implement it if\n * // you want them to be included in the final schema.\n * types: [humanType, droidType],\n * })\n *\n * Note: If an array of `directives` are provided to GraphQLSchema, that will be\n * the exact list of directives represented and allowed. If `directives` is not\n * provided then a default set of the specified directives (e.g. @include and\n * @skip) will be used. If you wish to provide *additional* directives to these\n * specified directives, you must explicitly declare them. Example:\n *\n * const MyAppSchema = new GraphQLSchema({\n * ...\n * directives: specifiedDirectives.concat([ myCustomDirective ]),\n * })\n *\n */\n\nexport var GraphQLSchema =\n/*#__PURE__*/\nfunction () {\n // Used as a cache for validateSchema().\n // Referenced by validateSchema().\n function GraphQLSchema(config) {\n // If this schema was built from a source known to be valid, then it may be\n // marked with assumeValid to avoid an additional type system validation.\n if (config && config.assumeValid) {\n this.__validationErrors = [];\n } else {\n this.__validationErrors = undefined; // Otherwise check for common mistakes during construction to produce\n // clear and early error messages.\n\n isObjectLike(config) || devAssert(0, 'Must provide configuration object.');\n !config.types || Array.isArray(config.types) || devAssert(0, \"\\\"types\\\" must be Array if provided but got: \".concat(inspect(config.types), \".\"));\n !config.directives || Array.isArray(config.directives) || devAssert(0, '\"directives\" must be Array if provided but got: ' + \"\".concat(inspect(config.directives), \".\"));\n !config.allowedLegacyNames || Array.isArray(config.allowedLegacyNames) || devAssert(0, '\"allowedLegacyNames\" must be Array if provided but got: ' + \"\".concat(inspect(config.allowedLegacyNames), \".\"));\n }\n\n this.extensions = config.extensions && toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = config.extensionASTNodes;\n this.__allowedLegacyNames = config.allowedLegacyNames || [];\n this._queryType = config.query;\n this._mutationType = config.mutation;\n this._subscriptionType = config.subscription; // Provide specified directives (e.g. @include and @skip) by default.\n\n this._directives = config.directives || specifiedDirectives; // Build type map now to detect any errors within this schema.\n\n var initialTypes = [this._queryType, this._mutationType, this._subscriptionType, __Schema].concat(config.types); // Keep track of all types referenced within the schema.\n\n var typeMap = Object.create(null); // First by deeply visiting all initial types.\n\n typeMap = initialTypes.reduce(typeMapReducer, typeMap); // Then by deeply visiting all directive types.\n\n typeMap = this._directives.reduce(typeMapDirectiveReducer, typeMap); // Storing the resulting map for reference by the schema.\n\n this._typeMap = typeMap;\n this._possibleTypeMap = Object.create(null); // Keep track of all implementations by interface name.\n\n this._implementations = Object.create(null);\n\n for (var _i2 = 0, _objectValues2 = objectValues(this._typeMap); _i2 < _objectValues2.length; _i2++) {\n var type = _objectValues2[_i2];\n\n if (isObjectType(type)) {\n for (var _i4 = 0, _type$getInterfaces2 = type.getInterfaces(); _i4 < _type$getInterfaces2.length; _i4++) {\n var iface = _type$getInterfaces2[_i4];\n\n if (isInterfaceType(iface)) {\n var impls = this._implementations[iface.name];\n\n if (impls) {\n impls.push(type);\n } else {\n this._implementations[iface.name] = [type];\n }\n }\n }\n }\n }\n }\n\n var _proto = GraphQLSchema.prototype;\n\n _proto.getQueryType = function getQueryType() {\n return this._queryType;\n };\n\n _proto.getMutationType = function getMutationType() {\n return this._mutationType;\n };\n\n _proto.getSubscriptionType = function getSubscriptionType() {\n return this._subscriptionType;\n };\n\n _proto.getTypeMap = function getTypeMap() {\n return this._typeMap;\n };\n\n _proto.getType = function getType(name) {\n return this.getTypeMap()[name];\n };\n\n _proto.getPossibleTypes = function getPossibleTypes(abstractType) {\n if (isUnionType(abstractType)) {\n return abstractType.getTypes();\n }\n\n return this._implementations[abstractType.name] || [];\n };\n\n _proto.isPossibleType = function isPossibleType(abstractType, possibleType) {\n if (this._possibleTypeMap[abstractType.name] == null) {\n var map = Object.create(null);\n\n for (var _i6 = 0, _this$getPossibleType2 = this.getPossibleTypes(abstractType); _i6 < _this$getPossibleType2.length; _i6++) {\n var type = _this$getPossibleType2[_i6];\n map[type.name] = true;\n }\n\n this._possibleTypeMap[abstractType.name] = map;\n }\n\n return Boolean(this._possibleTypeMap[abstractType.name][possibleType.name]);\n };\n\n _proto.getDirectives = function getDirectives() {\n return this._directives;\n };\n\n _proto.getDirective = function getDirective(name) {\n return find(this.getDirectives(), function (directive) {\n return directive.name === name;\n });\n };\n\n _proto.toConfig = function toConfig() {\n return {\n query: this.getQueryType(),\n mutation: this.getMutationType(),\n subscription: this.getSubscriptionType(),\n types: objectValues(this.getTypeMap()),\n directives: this.getDirectives().slice(),\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes || [],\n assumeValid: this.__validationErrors !== undefined,\n allowedLegacyNames: this.__allowedLegacyNames\n };\n };\n\n return GraphQLSchema;\n}(); // Conditionally apply `[Symbol.toStringTag]` if `Symbol`s are supported\n\ndefineToStringTag(GraphQLSchema);\n\nfunction typeMapReducer(map, type) {\n if (!type) {\n return map;\n }\n\n var namedType = getNamedType(type);\n var seenType = map[namedType.name];\n\n if (seenType) {\n if (seenType !== namedType) {\n throw new Error(\"Schema must contain uniquely named types but contains multiple types named \\\"\".concat(namedType.name, \"\\\".\"));\n }\n\n return map;\n }\n\n map[namedType.name] = namedType;\n var reducedMap = map;\n\n if (isUnionType(namedType)) {\n reducedMap = namedType.getTypes().reduce(typeMapReducer, reducedMap);\n }\n\n if (isObjectType(namedType)) {\n reducedMap = namedType.getInterfaces().reduce(typeMapReducer, reducedMap);\n }\n\n if (isObjectType(namedType) || isInterfaceType(namedType)) {\n for (var _i8 = 0, _objectValues4 = objectValues(namedType.getFields()); _i8 < _objectValues4.length; _i8++) {\n var field = _objectValues4[_i8];\n var fieldArgTypes = field.args.map(function (arg) {\n return arg.type;\n });\n reducedMap = fieldArgTypes.reduce(typeMapReducer, reducedMap);\n reducedMap = typeMapReducer(reducedMap, field.type);\n }\n }\n\n if (isInputObjectType(namedType)) {\n for (var _i10 = 0, _objectValues6 = objectValues(namedType.getFields()); _i10 < _objectValues6.length; _i10++) {\n var _field = _objectValues6[_i10];\n reducedMap = typeMapReducer(reducedMap, _field.type);\n }\n }\n\n return reducedMap;\n}\n\nfunction typeMapDirectiveReducer(map, directive) {\n // Directives are not validated until validateSchema() is called.\n if (!isDirective(directive)) {\n return map;\n }\n\n return directive.args.reduce(function (_map, arg) {\n return typeMapReducer(_map, arg.type);\n }, map);\n}","import find from '../polyfills/find';\nimport flatMap from '../polyfills/flatMap';\nimport objectValues from '../polyfills/objectValues';\nimport objectEntries from '../polyfills/objectEntries';\nimport inspect from '../jsutils/inspect';\nimport { GraphQLError } from '../error/GraphQLError';\nimport { isValidNameError } from '../utilities/assertValidName';\nimport { isEqualType, isTypeSubTypeOf } from '../utilities/typeComparators';\nimport { isDirective } from './directives';\nimport { isIntrospectionType } from './introspection';\nimport { assertSchema } from './schema';\nimport { isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType, isNamedType, isNonNullType, isInputType, isOutputType, isRequiredArgument } from './definition';\n/**\n * Implements the \"Type Validation\" sub-sections of the specification's\n * \"Type System\" section.\n *\n * Validation runs synchronously, returning an array of encountered errors, or\n * an empty array if no errors were encountered and the Schema is valid.\n */\n\nexport function validateSchema(schema) {\n // First check to ensure the provided value is in fact a GraphQLSchema.\n assertSchema(schema); // If this Schema has already been validated, return the previous results.\n\n if (schema.__validationErrors) {\n return schema.__validationErrors;\n } // Validate the schema, producing a list of errors.\n\n\n var context = new SchemaValidationContext(schema);\n validateRootTypes(context);\n validateDirectives(context);\n validateTypes(context); // Persist the results of validation before returning to ensure validation\n // does not run multiple times for this schema.\n\n var errors = context.getErrors();\n schema.__validationErrors = errors;\n return errors;\n}\n/**\n * Utility function which asserts a schema is valid by throwing an error if\n * it is invalid.\n */\n\nexport function assertValidSchema(schema) {\n var errors = validateSchema(schema);\n\n if (errors.length !== 0) {\n throw new Error(errors.map(function (error) {\n return error.message;\n }).join('\\n\\n'));\n }\n}\n\nvar SchemaValidationContext =\n/*#__PURE__*/\nfunction () {\n function SchemaValidationContext(schema) {\n this._errors = [];\n this.schema = schema;\n }\n\n var _proto = SchemaValidationContext.prototype;\n\n _proto.reportError = function reportError(message, nodes) {\n var _nodes = Array.isArray(nodes) ? nodes.filter(Boolean) : nodes;\n\n this.addError(new GraphQLError(message, _nodes));\n };\n\n _proto.addError = function addError(error) {\n this._errors.push(error);\n };\n\n _proto.getErrors = function getErrors() {\n return this._errors;\n };\n\n return SchemaValidationContext;\n}();\n\nfunction validateRootTypes(context) {\n var schema = context.schema;\n var queryType = schema.getQueryType();\n\n if (!queryType) {\n context.reportError('Query root type must be provided.', schema.astNode);\n } else if (!isObjectType(queryType)) {\n context.reportError(\"Query root type must be Object type, it cannot be \".concat(inspect(queryType), \".\"), getOperationTypeNode(schema, queryType, 'query'));\n }\n\n var mutationType = schema.getMutationType();\n\n if (mutationType && !isObjectType(mutationType)) {\n context.reportError('Mutation root type must be Object type if provided, it cannot be ' + \"\".concat(inspect(mutationType), \".\"), getOperationTypeNode(schema, mutationType, 'mutation'));\n }\n\n var subscriptionType = schema.getSubscriptionType();\n\n if (subscriptionType && !isObjectType(subscriptionType)) {\n context.reportError('Subscription root type must be Object type if provided, it cannot be ' + \"\".concat(inspect(subscriptionType), \".\"), getOperationTypeNode(schema, subscriptionType, 'subscription'));\n }\n}\n\nfunction getOperationTypeNode(schema, type, operation) {\n var operationNodes = getAllSubNodes(schema, function (node) {\n return node.operationTypes;\n });\n\n for (var _i2 = 0; _i2 < operationNodes.length; _i2++) {\n var node = operationNodes[_i2];\n\n if (node.operation === operation) {\n return node.type;\n }\n }\n\n return type.astNode;\n}\n\nfunction validateDirectives(context) {\n for (var _i4 = 0, _context$schema$getDi2 = context.schema.getDirectives(); _i4 < _context$schema$getDi2.length; _i4++) {\n var directive = _context$schema$getDi2[_i4]; // Ensure all directives are in fact GraphQL directives.\n\n if (!isDirective(directive)) {\n context.reportError(\"Expected directive but got: \".concat(inspect(directive), \".\"), directive && directive.astNode);\n continue;\n } // Ensure they are named correctly.\n\n\n validateName(context, directive); // TODO: Ensure proper locations.\n // Ensure the arguments are valid.\n\n var argNames = Object.create(null);\n\n var _loop = function _loop(_i6, _directive$args2) {\n var arg = _directive$args2[_i6];\n var argName = arg.name; // Ensure they are named correctly.\n\n validateName(context, arg); // Ensure they are unique per directive.\n\n if (argNames[argName]) {\n context.reportError(\"Argument @\".concat(directive.name, \"(\").concat(argName, \":) can only be defined once.\"), directive.astNode && directive.args.filter(function (_ref) {\n var name = _ref.name;\n return name === argName;\n }).map(function (_ref2) {\n var astNode = _ref2.astNode;\n return astNode;\n }));\n return \"continue\";\n }\n\n argNames[argName] = true; // Ensure the type is an input type.\n\n if (!isInputType(arg.type)) {\n context.reportError(\"The type of @\".concat(directive.name, \"(\").concat(argName, \":) must be Input Type \") + \"but got: \".concat(inspect(arg.type), \".\"), arg.astNode);\n }\n };\n\n for (var _i6 = 0, _directive$args2 = directive.args; _i6 < _directive$args2.length; _i6++) {\n var _ret = _loop(_i6, _directive$args2);\n\n if (_ret === \"continue\") continue;\n }\n }\n}\n\nfunction validateName(context, node) {\n // If a schema explicitly allows some legacy name which is no longer valid,\n // allow it to be assumed valid.\n if (context.schema.__allowedLegacyNames.indexOf(node.name) !== -1) {\n return;\n } // Ensure names are valid, however introspection types opt out.\n\n\n var error = isValidNameError(node.name, node.astNode || undefined);\n\n if (error) {\n context.addError(error);\n }\n}\n\nfunction validateTypes(context) {\n var validateInputObjectCircularRefs = createInputObjectCircularRefsValidator(context);\n var typeMap = context.schema.getTypeMap();\n\n for (var _i8 = 0, _objectValues2 = objectValues(typeMap); _i8 < _objectValues2.length; _i8++) {\n var type = _objectValues2[_i8]; // Ensure all provided types are in fact GraphQL type.\n\n if (!isNamedType(type)) {\n context.reportError(\"Expected GraphQL named type but got: \".concat(inspect(type), \".\"), type && type.astNode);\n continue;\n } // Ensure it is named correctly (excluding introspection types).\n\n\n if (!isIntrospectionType(type)) {\n validateName(context, type);\n }\n\n if (isObjectType(type)) {\n // Ensure fields are valid\n validateFields(context, type); // Ensure objects implement the interfaces they claim to.\n\n validateObjectInterfaces(context, type);\n } else if (isInterfaceType(type)) {\n // Ensure fields are valid.\n validateFields(context, type);\n } else if (isUnionType(type)) {\n // Ensure Unions include valid member types.\n validateUnionMembers(context, type);\n } else if (isEnumType(type)) {\n // Ensure Enums have valid values.\n validateEnumValues(context, type);\n } else if (isInputObjectType(type)) {\n // Ensure Input Object fields are valid.\n validateInputFields(context, type); // Ensure Input Objects do not contain non-nullable circular references\n\n validateInputObjectCircularRefs(type);\n }\n }\n}\n\nfunction validateFields(context, type) {\n var fields = objectValues(type.getFields()); // Objects and Interfaces both must define one or more fields.\n\n if (fields.length === 0) {\n context.reportError(\"Type \".concat(type.name, \" must define one or more fields.\"), getAllNodes(type));\n }\n\n for (var _i10 = 0; _i10 < fields.length; _i10++) {\n var field = fields[_i10]; // Ensure they are named correctly.\n\n validateName(context, field); // Ensure the type is an output type\n\n if (!isOutputType(field.type)) {\n context.reportError(\"The type of \".concat(type.name, \".\").concat(field.name, \" must be Output Type \") + \"but got: \".concat(inspect(field.type), \".\"), field.astNode && field.astNode.type);\n } // Ensure the arguments are valid\n\n\n var argNames = Object.create(null);\n\n var _loop2 = function _loop2(_i12, _field$args2) {\n var arg = _field$args2[_i12];\n var argName = arg.name; // Ensure they are named correctly.\n\n validateName(context, arg); // Ensure they are unique per field.\n\n if (argNames[argName]) {\n context.reportError(\"Field argument \".concat(type.name, \".\").concat(field.name, \"(\").concat(argName, \":) can only be defined once.\"), field.args.filter(function (_ref3) {\n var name = _ref3.name;\n return name === argName;\n }).map(function (_ref4) {\n var astNode = _ref4.astNode;\n return astNode;\n }));\n }\n\n argNames[argName] = true; // Ensure the type is an input type\n\n if (!isInputType(arg.type)) {\n context.reportError(\"The type of \".concat(type.name, \".\").concat(field.name, \"(\").concat(argName, \":) must be Input \") + \"Type but got: \".concat(inspect(arg.type), \".\"), arg.astNode && arg.astNode.type);\n }\n };\n\n for (var _i12 = 0, _field$args2 = field.args; _i12 < _field$args2.length; _i12++) {\n _loop2(_i12, _field$args2);\n }\n }\n}\n\nfunction validateObjectInterfaces(context, object) {\n var implementedTypeNames = Object.create(null);\n\n for (var _i14 = 0, _object$getInterfaces2 = object.getInterfaces(); _i14 < _object$getInterfaces2.length; _i14++) {\n var iface = _object$getInterfaces2[_i14];\n\n if (!isInterfaceType(iface)) {\n context.reportError(\"Type \".concat(inspect(object), \" must only implement Interface types, \") + \"it cannot implement \".concat(inspect(iface), \".\"), getAllImplementsInterfaceNodes(object, iface));\n continue;\n }\n\n if (implementedTypeNames[iface.name]) {\n context.reportError(\"Type \".concat(object.name, \" can only implement \").concat(iface.name, \" once.\"), getAllImplementsInterfaceNodes(object, iface));\n continue;\n }\n\n implementedTypeNames[iface.name] = true;\n validateObjectImplementsInterface(context, object, iface);\n }\n}\n\nfunction validateObjectImplementsInterface(context, object, iface) {\n var objectFieldMap = object.getFields();\n var ifaceFieldMap = iface.getFields(); // Assert each interface field is implemented.\n\n for (var _i16 = 0, _objectEntries2 = objectEntries(ifaceFieldMap); _i16 < _objectEntries2.length; _i16++) {\n var _ref6 = _objectEntries2[_i16];\n var fieldName = _ref6[0];\n var ifaceField = _ref6[1];\n var objectField = objectFieldMap[fieldName]; // Assert interface field exists on object.\n\n if (!objectField) {\n context.reportError(\"Interface field \".concat(iface.name, \".\").concat(fieldName, \" expected but \").concat(object.name, \" does not provide it.\"), [ifaceField.astNode].concat(getAllNodes(object)));\n continue;\n } // Assert interface field type is satisfied by object field type, by being\n // a valid subtype. (covariant)\n\n\n if (!isTypeSubTypeOf(context.schema, objectField.type, ifaceField.type)) {\n context.reportError(\"Interface field \".concat(iface.name, \".\").concat(fieldName, \" expects type \") + \"\".concat(inspect(ifaceField.type), \" but \").concat(object.name, \".\").concat(fieldName, \" \") + \"is type \".concat(inspect(objectField.type), \".\"), [ifaceField.astNode && ifaceField.astNode.type, objectField.astNode && objectField.astNode.type]);\n } // Assert each interface field arg is implemented.\n\n\n var _loop3 = function _loop3(_i18, _ifaceField$args2) {\n var ifaceArg = _ifaceField$args2[_i18];\n var argName = ifaceArg.name;\n var objectArg = find(objectField.args, function (arg) {\n return arg.name === argName;\n }); // Assert interface field arg exists on object field.\n\n if (!objectArg) {\n context.reportError(\"Interface field argument \".concat(iface.name, \".\").concat(fieldName, \"(\").concat(argName, \":) expected but \").concat(object.name, \".\").concat(fieldName, \" does not provide it.\"), [ifaceArg.astNode, objectField.astNode]);\n return \"continue\";\n } // Assert interface field arg type matches object field arg type.\n // (invariant)\n // TODO: change to contravariant?\n\n\n if (!isEqualType(ifaceArg.type, objectArg.type)) {\n context.reportError(\"Interface field argument \".concat(iface.name, \".\").concat(fieldName, \"(\").concat(argName, \":) \") + \"expects type \".concat(inspect(ifaceArg.type), \" but \") + \"\".concat(object.name, \".\").concat(fieldName, \"(\").concat(argName, \":) is type \") + \"\".concat(inspect(objectArg.type), \".\"), [ifaceArg.astNode && ifaceArg.astNode.type, objectArg.astNode && objectArg.astNode.type]);\n } // TODO: validate default values?\n\n };\n\n for (var _i18 = 0, _ifaceField$args2 = ifaceField.args; _i18 < _ifaceField$args2.length; _i18++) {\n var _ret2 = _loop3(_i18, _ifaceField$args2);\n\n if (_ret2 === \"continue\") continue;\n } // Assert additional arguments must not be required.\n\n\n var _loop4 = function _loop4(_i20, _objectField$args2) {\n var objectArg = _objectField$args2[_i20];\n var argName = objectArg.name;\n var ifaceArg = find(ifaceField.args, function (arg) {\n return arg.name === argName;\n });\n\n if (!ifaceArg && isRequiredArgument(objectArg)) {\n context.reportError(\"Object field \".concat(object.name, \".\").concat(fieldName, \" includes required argument \").concat(argName, \" that is missing from the Interface field \").concat(iface.name, \".\").concat(fieldName, \".\"), [objectArg.astNode, ifaceField.astNode]);\n }\n };\n\n for (var _i20 = 0, _objectField$args2 = objectField.args; _i20 < _objectField$args2.length; _i20++) {\n _loop4(_i20, _objectField$args2);\n }\n }\n}\n\nfunction validateUnionMembers(context, union) {\n var memberTypes = union.getTypes();\n\n if (memberTypes.length === 0) {\n context.reportError(\"Union type \".concat(union.name, \" must define one or more member types.\"), getAllNodes(union));\n }\n\n var includedTypeNames = Object.create(null);\n\n for (var _i22 = 0; _i22 < memberTypes.length; _i22++) {\n var memberType = memberTypes[_i22];\n\n if (includedTypeNames[memberType.name]) {\n context.reportError(\"Union type \".concat(union.name, \" can only include type \").concat(memberType.name, \" once.\"), getUnionMemberTypeNodes(union, memberType.name));\n continue;\n }\n\n includedTypeNames[memberType.name] = true;\n\n if (!isObjectType(memberType)) {\n context.reportError(\"Union type \".concat(union.name, \" can only include Object types, \") + \"it cannot include \".concat(inspect(memberType), \".\"), getUnionMemberTypeNodes(union, String(memberType)));\n }\n }\n}\n\nfunction validateEnumValues(context, enumType) {\n var enumValues = enumType.getValues();\n\n if (enumValues.length === 0) {\n context.reportError(\"Enum type \".concat(enumType.name, \" must define one or more values.\"), getAllNodes(enumType));\n }\n\n for (var _i24 = 0; _i24 < enumValues.length; _i24++) {\n var enumValue = enumValues[_i24];\n var valueName = enumValue.name; // Ensure valid name.\n\n validateName(context, enumValue);\n\n if (valueName === 'true' || valueName === 'false' || valueName === 'null') {\n context.reportError(\"Enum type \".concat(enumType.name, \" cannot include value: \").concat(valueName, \".\"), enumValue.astNode);\n }\n }\n}\n\nfunction validateInputFields(context, inputObj) {\n var fields = objectValues(inputObj.getFields());\n\n if (fields.length === 0) {\n context.reportError(\"Input Object type \".concat(inputObj.name, \" must define one or more fields.\"), getAllNodes(inputObj));\n } // Ensure the arguments are valid\n\n\n for (var _i26 = 0; _i26 < fields.length; _i26++) {\n var field = fields[_i26]; // Ensure they are named correctly.\n\n validateName(context, field); // Ensure the type is an input type\n\n if (!isInputType(field.type)) {\n context.reportError(\"The type of \".concat(inputObj.name, \".\").concat(field.name, \" must be Input Type \") + \"but got: \".concat(inspect(field.type), \".\"), field.astNode && field.astNode.type);\n }\n }\n}\n\nfunction createInputObjectCircularRefsValidator(context) {\n // Modified copy of algorithm from 'src/validation/rules/NoFragmentCycles.js'.\n // Tracks already visited types to maintain O(N) and to ensure that cycles\n // are not redundantly reported.\n var visitedTypes = Object.create(null); // Array of types nodes used to produce meaningful errors\n\n var fieldPath = []; // Position in the type path\n\n var fieldPathIndexByTypeName = Object.create(null);\n return detectCycleRecursive; // This does a straight-forward DFS to find cycles.\n // It does not terminate when a cycle was found but continues to explore\n // the graph to find all possible cycles.\n\n function detectCycleRecursive(inputObj) {\n if (visitedTypes[inputObj.name]) {\n return;\n }\n\n visitedTypes[inputObj.name] = true;\n fieldPathIndexByTypeName[inputObj.name] = fieldPath.length;\n var fields = objectValues(inputObj.getFields());\n\n for (var _i28 = 0; _i28 < fields.length; _i28++) {\n var field = fields[_i28];\n\n if (isNonNullType(field.type) && isInputObjectType(field.type.ofType)) {\n var fieldType = field.type.ofType;\n var cycleIndex = fieldPathIndexByTypeName[fieldType.name];\n fieldPath.push(field);\n\n if (cycleIndex === undefined) {\n detectCycleRecursive(fieldType);\n } else {\n var cyclePath = fieldPath.slice(cycleIndex);\n var pathStr = cyclePath.map(function (fieldObj) {\n return fieldObj.name;\n }).join('.');\n context.reportError(\"Cannot reference Input Object \\\"\".concat(fieldType.name, \"\\\" within itself through a series of non-null fields: \\\"\").concat(pathStr, \"\\\".\"), cyclePath.map(function (fieldObj) {\n return fieldObj.astNode;\n }));\n }\n\n fieldPath.pop();\n }\n }\n\n fieldPathIndexByTypeName[inputObj.name] = undefined;\n }\n}\n\nfunction getAllNodes(object) {\n var astNode = object.astNode,\n extensionASTNodes = object.extensionASTNodes;\n return astNode ? extensionASTNodes ? [astNode].concat(extensionASTNodes) : [astNode] : extensionASTNodes || [];\n}\n\nfunction getAllSubNodes(object, getter) {\n return flatMap(getAllNodes(object), function (item) {\n return getter(item) || [];\n });\n}\n\nfunction getAllImplementsInterfaceNodes(type, iface) {\n return getAllSubNodes(type, function (typeNode) {\n return typeNode.interfaces;\n }).filter(function (ifaceNode) {\n return ifaceNode.name.value === iface.name;\n });\n}\n\nfunction getUnionMemberTypeNodes(union, typeName) {\n return getAllSubNodes(union, function (unionNode) {\n return unionNode.types;\n }).filter(function (typeNode) {\n return typeNode.name.value === typeName;\n });\n}","import inspect from '../jsutils/inspect';\nimport invariant from '../jsutils/invariant';\nimport { Kind } from '../language/kinds';\nimport { GraphQLList, GraphQLNonNull } from '../type/definition';\n/**\n * Given a Schema and an AST node describing a type, return a GraphQLType\n * definition which applies to that type. For example, if provided the parsed\n * AST node for `[User]`, a GraphQLList instance will be returned, containing\n * the type called \"User\" found in the schema. If a type called \"User\" is not\n * found in the schema, then undefined will be returned.\n */\n\n/* eslint-disable no-redeclare */\n\nexport function typeFromAST(schema, typeNode) {\n /* eslint-enable no-redeclare */\n var innerType;\n\n if (typeNode.kind === Kind.LIST_TYPE) {\n innerType = typeFromAST(schema, typeNode.type);\n return innerType && GraphQLList(innerType);\n }\n\n if (typeNode.kind === Kind.NON_NULL_TYPE) {\n innerType = typeFromAST(schema, typeNode.type);\n return innerType && GraphQLNonNull(innerType);\n }\n /* istanbul ignore else */\n\n\n if (typeNode.kind === Kind.NAMED_TYPE) {\n return schema.getType(typeNode.name.value);\n } // Not reachable. All possible type nodes have been considered.\n\n /* istanbul ignore next */\n\n\n invariant(false, 'Unexpected type node: ' + inspect(typeNode));\n}","import find from '../polyfills/find';\nimport { Kind } from '../language/kinds';\nimport { isObjectType, isInterfaceType, isEnumType, isInputObjectType, isListType, isCompositeType, isInputType, isOutputType, getNullableType, getNamedType } from '../type/definition';\nimport { SchemaMetaFieldDef, TypeMetaFieldDef, TypeNameMetaFieldDef } from '../type/introspection';\nimport { typeFromAST } from './typeFromAST';\n/**\n * TypeInfo is a utility class which, given a GraphQL schema, can keep track\n * of the current field and type definitions at any point in a GraphQL document\n * AST during a recursive descent by calling `enter(node)` and `leave(node)`.\n */\n\nexport var TypeInfo =\n/*#__PURE__*/\nfunction () {\n function TypeInfo(schema, // NOTE: this experimental optional second parameter is only needed in order\n // to support non-spec-compliant codebases. You should never need to use it.\n // It may disappear in the future.\n getFieldDefFn, // Initial type may be provided in rare cases to facilitate traversals\n // beginning somewhere other than documents.\n initialType) {\n this._schema = schema;\n this._typeStack = [];\n this._parentTypeStack = [];\n this._inputTypeStack = [];\n this._fieldDefStack = [];\n this._defaultValueStack = [];\n this._directive = null;\n this._argument = null;\n this._enumValue = null;\n this._getFieldDef = getFieldDefFn || getFieldDef;\n\n if (initialType) {\n if (isInputType(initialType)) {\n this._inputTypeStack.push(initialType);\n }\n\n if (isCompositeType(initialType)) {\n this._parentTypeStack.push(initialType);\n }\n\n if (isOutputType(initialType)) {\n this._typeStack.push(initialType);\n }\n }\n }\n\n var _proto = TypeInfo.prototype;\n\n _proto.getType = function getType() {\n if (this._typeStack.length > 0) {\n return this._typeStack[this._typeStack.length - 1];\n }\n };\n\n _proto.getParentType = function getParentType() {\n if (this._parentTypeStack.length > 0) {\n return this._parentTypeStack[this._parentTypeStack.length - 1];\n }\n };\n\n _proto.getInputType = function getInputType() {\n if (this._inputTypeStack.length > 0) {\n return this._inputTypeStack[this._inputTypeStack.length - 1];\n }\n };\n\n _proto.getParentInputType = function getParentInputType() {\n if (this._inputTypeStack.length > 1) {\n return this._inputTypeStack[this._inputTypeStack.length - 2];\n }\n };\n\n _proto.getFieldDef = function getFieldDef() {\n if (this._fieldDefStack.length > 0) {\n return this._fieldDefStack[this._fieldDefStack.length - 1];\n }\n };\n\n _proto.getDefaultValue = function getDefaultValue() {\n if (this._defaultValueStack.length > 0) {\n return this._defaultValueStack[this._defaultValueStack.length - 1];\n }\n };\n\n _proto.getDirective = function getDirective() {\n return this._directive;\n };\n\n _proto.getArgument = function getArgument() {\n return this._argument;\n };\n\n _proto.getEnumValue = function getEnumValue() {\n return this._enumValue;\n };\n\n _proto.enter = function enter(node) {\n var schema = this._schema; // Note: many of the types below are explicitly typed as \"mixed\" to drop\n // any assumptions of a valid schema to ensure runtime types are properly\n // checked before continuing since TypeInfo is used as part of validation\n // which occurs before guarantees of schema and document validity.\n\n switch (node.kind) {\n case Kind.SELECTION_SET:\n {\n var namedType = getNamedType(this.getType());\n\n this._parentTypeStack.push(isCompositeType(namedType) ? namedType : undefined);\n\n break;\n }\n\n case Kind.FIELD:\n {\n var parentType = this.getParentType();\n var fieldDef;\n var fieldType;\n\n if (parentType) {\n fieldDef = this._getFieldDef(schema, parentType, node);\n\n if (fieldDef) {\n fieldType = fieldDef.type;\n }\n }\n\n this._fieldDefStack.push(fieldDef);\n\n this._typeStack.push(isOutputType(fieldType) ? fieldType : undefined);\n\n break;\n }\n\n case Kind.DIRECTIVE:\n this._directive = schema.getDirective(node.name.value);\n break;\n\n case Kind.OPERATION_DEFINITION:\n {\n var type;\n\n if (node.operation === 'query') {\n type = schema.getQueryType();\n } else if (node.operation === 'mutation') {\n type = schema.getMutationType();\n } else if (node.operation === 'subscription') {\n type = schema.getSubscriptionType();\n }\n\n this._typeStack.push(isObjectType(type) ? type : undefined);\n\n break;\n }\n\n case Kind.INLINE_FRAGMENT:\n case Kind.FRAGMENT_DEFINITION:\n {\n var typeConditionAST = node.typeCondition;\n var outputType = typeConditionAST ? typeFromAST(schema, typeConditionAST) : getNamedType(this.getType());\n\n this._typeStack.push(isOutputType(outputType) ? outputType : undefined);\n\n break;\n }\n\n case Kind.VARIABLE_DEFINITION:\n {\n var inputType = typeFromAST(schema, node.type);\n\n this._inputTypeStack.push(isInputType(inputType) ? inputType : undefined);\n\n break;\n }\n\n case Kind.ARGUMENT:\n {\n var argDef;\n var argType;\n var fieldOrDirective = this.getDirective() || this.getFieldDef();\n\n if (fieldOrDirective) {\n argDef = find(fieldOrDirective.args, function (arg) {\n return arg.name === node.name.value;\n });\n\n if (argDef) {\n argType = argDef.type;\n }\n }\n\n this._argument = argDef;\n\n this._defaultValueStack.push(argDef ? argDef.defaultValue : undefined);\n\n this._inputTypeStack.push(isInputType(argType) ? argType : undefined);\n\n break;\n }\n\n case Kind.LIST:\n {\n var listType = getNullableType(this.getInputType());\n var itemType = isListType(listType) ? listType.ofType : listType; // List positions never have a default value.\n\n this._defaultValueStack.push(undefined);\n\n this._inputTypeStack.push(isInputType(itemType) ? itemType : undefined);\n\n break;\n }\n\n case Kind.OBJECT_FIELD:\n {\n var objectType = getNamedType(this.getInputType());\n var inputFieldType;\n var inputField;\n\n if (isInputObjectType(objectType)) {\n inputField = objectType.getFields()[node.name.value];\n\n if (inputField) {\n inputFieldType = inputField.type;\n }\n }\n\n this._defaultValueStack.push(inputField ? inputField.defaultValue : undefined);\n\n this._inputTypeStack.push(isInputType(inputFieldType) ? inputFieldType : undefined);\n\n break;\n }\n\n case Kind.ENUM:\n {\n var enumType = getNamedType(this.getInputType());\n var enumValue;\n\n if (isEnumType(enumType)) {\n enumValue = enumType.getValue(node.value);\n }\n\n this._enumValue = enumValue;\n break;\n }\n }\n };\n\n _proto.leave = function leave(node) {\n switch (node.kind) {\n case Kind.SELECTION_SET:\n this._parentTypeStack.pop();\n\n break;\n\n case Kind.FIELD:\n this._fieldDefStack.pop();\n\n this._typeStack.pop();\n\n break;\n\n case Kind.DIRECTIVE:\n this._directive = null;\n break;\n\n case Kind.OPERATION_DEFINITION:\n case Kind.INLINE_FRAGMENT:\n case Kind.FRAGMENT_DEFINITION:\n this._typeStack.pop();\n\n break;\n\n case Kind.VARIABLE_DEFINITION:\n this._inputTypeStack.pop();\n\n break;\n\n case Kind.ARGUMENT:\n this._argument = null;\n\n this._defaultValueStack.pop();\n\n this._inputTypeStack.pop();\n\n break;\n\n case Kind.LIST:\n case Kind.OBJECT_FIELD:\n this._defaultValueStack.pop();\n\n this._inputTypeStack.pop();\n\n break;\n\n case Kind.ENUM:\n this._enumValue = null;\n break;\n }\n };\n\n return TypeInfo;\n}();\n/**\n * Not exactly the same as the executor's definition of getFieldDef, in this\n * statically evaluated environment we do not always have an Object type,\n * and need to handle Interface and Union types.\n */\n\nfunction getFieldDef(schema, parentType, fieldNode) {\n var name = fieldNode.name.value;\n\n if (name === SchemaMetaFieldDef.name && schema.getQueryType() === parentType) {\n return SchemaMetaFieldDef;\n }\n\n if (name === TypeMetaFieldDef.name && schema.getQueryType() === parentType) {\n return TypeMetaFieldDef;\n }\n\n if (name === TypeNameMetaFieldDef.name && isCompositeType(parentType)) {\n return TypeNameMetaFieldDef;\n }\n\n if (isObjectType(parentType) || isInterfaceType(parentType)) {\n return parentType.getFields()[name];\n }\n}","import { GraphQLError } from '../../error/GraphQLError';\nexport function duplicateOperationNameMessage(operationName) {\n return \"There can be only one operation named \\\"\".concat(operationName, \"\\\".\");\n}\n/**\n * Unique operation names\n *\n * A GraphQL document is only valid if all defined operations have unique names.\n */\n\nexport function UniqueOperationNames(context) {\n var knownOperationNames = Object.create(null);\n return {\n OperationDefinition: function OperationDefinition(node) {\n var operationName = node.name;\n\n if (operationName) {\n if (knownOperationNames[operationName.value]) {\n context.reportError(new GraphQLError(duplicateOperationNameMessage(operationName.value), [knownOperationNames[operationName.value], operationName]));\n } else {\n knownOperationNames[operationName.value] = operationName;\n }\n }\n\n return false;\n },\n FragmentDefinition: function FragmentDefinition() {\n return false;\n }\n };\n}","import { GraphQLError } from '../../error/GraphQLError';\nimport { Kind } from '../../language/kinds';\nexport function anonOperationNotAloneMessage() {\n return 'This anonymous operation must be the only defined operation.';\n}\n/**\n * Lone anonymous operation\n *\n * A GraphQL document is only valid if when it contains an anonymous operation\n * (the query short-hand) that it contains only that one operation definition.\n */\n\nexport function LoneAnonymousOperation(context) {\n var operationCount = 0;\n return {\n Document: function Document(node) {\n operationCount = node.definitions.filter(function (definition) {\n return definition.kind === Kind.OPERATION_DEFINITION;\n }).length;\n },\n OperationDefinition: function OperationDefinition(node) {\n if (!node.name && operationCount > 1) {\n context.reportError(new GraphQLError(anonOperationNotAloneMessage(), node));\n }\n }\n };\n}","import { GraphQLError } from '../../error/GraphQLError';\nexport function singleFieldOnlyMessage(name) {\n return name ? \"Subscription \\\"\".concat(name, \"\\\" must select only one top level field.\") : 'Anonymous Subscription must select only one top level field.';\n}\n/**\n * Subscriptions must only include one field.\n *\n * A GraphQL subscription is valid only if it contains a single root field.\n */\n\nexport function SingleFieldSubscriptions(context) {\n return {\n OperationDefinition: function OperationDefinition(node) {\n if (node.operation === 'subscription') {\n if (node.selectionSet.selections.length !== 1) {\n context.reportError(new GraphQLError(singleFieldOnlyMessage(node.name && node.name.value), node.selectionSet.selections.slice(1)));\n }\n }\n }\n };\n}","var MAX_SUGGESTIONS = 5;\n/**\n * Given [ A, B, C ] return ' Did you mean A, B, or C?'.\n */\n// eslint-disable-next-line no-redeclare\n\nexport default function didYouMean(firstArg, secondArg) {\n var _ref = typeof firstArg === 'string' ? [firstArg, secondArg] : [undefined, firstArg],\n subMessage = _ref[0],\n suggestions = _ref[1];\n\n var message = ' Did you mean ';\n\n if (subMessage) {\n message += subMessage + ' ';\n }\n\n switch (suggestions.length) {\n case 0:\n return '';\n\n case 1:\n return message + suggestions[0] + '?';\n\n case 2:\n return message + suggestions[0] + ' or ' + suggestions[1] + '?';\n }\n\n var selected = suggestions.slice(0, MAX_SUGGESTIONS);\n var lastItem = selected.pop();\n return message + selected.join(', ') + ', or ' + lastItem + '?';\n}","/**\n * Given an invalid input string and a list of valid options, returns a filtered\n * list of valid options sorted based on their similarity with the input.\n */\nexport default function suggestionList(input, options) {\n var optionsByDistance = Object.create(null);\n var inputThreshold = input.length / 2;\n\n for (var _i2 = 0; _i2 < options.length; _i2++) {\n var option = options[_i2];\n var distance = lexicalDistance(input, option);\n var threshold = Math.max(inputThreshold, option.length / 2, 1);\n\n if (distance <= threshold) {\n optionsByDistance[option] = distance;\n }\n }\n\n return Object.keys(optionsByDistance).sort(function (a, b) {\n return optionsByDistance[a] - optionsByDistance[b];\n });\n}\n/**\n * Computes the lexical distance between strings A and B.\n *\n * The \"distance\" between two strings is given by counting the minimum number\n * of edits needed to transform string A into string B. An edit can be an\n * insertion, deletion, or substitution of a single character, or a swap of two\n * adjacent characters.\n *\n * Includes a custom alteration from Damerau-Levenshtein to treat case changes\n * as a single edit which helps identify mis-cased values with an edit distance\n * of 1.\n *\n * This distance can be useful for detecting typos in input or sorting\n *\n * @param {string} a\n * @param {string} b\n * @return {int} distance in number of edits\n */\n\nfunction lexicalDistance(aStr, bStr) {\n if (aStr === bStr) {\n return 0;\n }\n\n var d = [];\n var a = aStr.toLowerCase();\n var b = bStr.toLowerCase();\n var aLength = a.length;\n var bLength = b.length; // Any case change counts as a single edit\n\n if (a === b) {\n return 1;\n }\n\n for (var i = 0; i <= aLength; i++) {\n d[i] = [i];\n }\n\n for (var j = 1; j <= bLength; j++) {\n d[0][j] = j;\n }\n\n for (var _i3 = 1; _i3 <= aLength; _i3++) {\n for (var _j = 1; _j <= bLength; _j++) {\n var cost = a[_i3 - 1] === b[_j - 1] ? 0 : 1;\n d[_i3][_j] = Math.min(d[_i3 - 1][_j] + 1, d[_i3][_j - 1] + 1, d[_i3 - 1][_j - 1] + cost);\n\n if (_i3 > 1 && _j > 1 && a[_i3 - 1] === b[_j - 2] && a[_i3 - 2] === b[_j - 1]) {\n d[_i3][_j] = Math.min(d[_i3][_j], d[_i3 - 2][_j - 2] + cost);\n }\n }\n }\n\n return d[aLength][bLength];\n}","import didYouMean from '../../jsutils/didYouMean';\nimport suggestionList from '../../jsutils/suggestionList';\nimport { GraphQLError } from '../../error/GraphQLError';\nimport { isTypeDefinitionNode, isTypeSystemDefinitionNode, isTypeSystemExtensionNode } from '../../language/predicates';\nimport { specifiedScalarTypes } from '../../type/scalars';\nexport function unknownTypeMessage(typeName, suggestedTypes) {\n return \"Unknown type \\\"\".concat(typeName, \"\\\".\") + didYouMean(suggestedTypes.map(function (x) {\n return \"\\\"\".concat(x, \"\\\"\");\n }));\n}\n/**\n * Known type names\n *\n * A GraphQL document is only valid if referenced types (specifically\n * variable definitions and fragment conditions) are defined by the type schema.\n */\n\nexport function KnownTypeNames(context) {\n var schema = context.getSchema();\n var existingTypesMap = schema ? schema.getTypeMap() : Object.create(null);\n var definedTypes = Object.create(null);\n\n for (var _i2 = 0, _context$getDocument$2 = context.getDocument().definitions; _i2 < _context$getDocument$2.length; _i2++) {\n var def = _context$getDocument$2[_i2];\n\n if (isTypeDefinitionNode(def)) {\n definedTypes[def.name.value] = true;\n }\n }\n\n var typeNames = Object.keys(existingTypesMap).concat(Object.keys(definedTypes));\n return {\n NamedType: function NamedType(node, _1, parent, _2, ancestors) {\n var typeName = node.name.value;\n\n if (!existingTypesMap[typeName] && !definedTypes[typeName]) {\n var definitionNode = ancestors[2] || parent;\n var isSDL = isSDLNode(definitionNode);\n\n if (isSDL && isSpecifiedScalarName(typeName)) {\n return;\n }\n\n var suggestedTypes = suggestionList(typeName, isSDL ? specifiedScalarsNames.concat(typeNames) : typeNames);\n context.reportError(new GraphQLError(unknownTypeMessage(typeName, suggestedTypes), node));\n }\n }\n };\n}\nvar specifiedScalarsNames = specifiedScalarTypes.map(function (type) {\n return type.name;\n});\n\nfunction isSpecifiedScalarName(typeName) {\n return specifiedScalarsNames.indexOf(typeName) !== -1;\n}\n\nfunction isSDLNode(value) {\n return Boolean(value && !Array.isArray(value) && (isTypeSystemDefinitionNode(value) || isTypeSystemExtensionNode(value)));\n}","import { GraphQLError } from '../../error/GraphQLError';\nimport { print } from '../../language/printer';\nimport { isCompositeType } from '../../type/definition';\nimport { typeFromAST } from '../../utilities/typeFromAST';\nexport function inlineFragmentOnNonCompositeErrorMessage(type) {\n return \"Fragment cannot condition on non composite type \\\"\".concat(type, \"\\\".\");\n}\nexport function fragmentOnNonCompositeErrorMessage(fragName, type) {\n return \"Fragment \\\"\".concat(fragName, \"\\\" cannot condition on non composite type \\\"\").concat(type, \"\\\".\");\n}\n/**\n * Fragments on composite type\n *\n * Fragments use a type condition to determine if they apply, since fragments\n * can only be spread into a composite type (object, interface, or union), the\n * type condition must also be a composite type.\n */\n\nexport function FragmentsOnCompositeTypes(context) {\n return {\n InlineFragment: function InlineFragment(node) {\n var typeCondition = node.typeCondition;\n\n if (typeCondition) {\n var type = typeFromAST(context.getSchema(), typeCondition);\n\n if (type && !isCompositeType(type)) {\n context.reportError(new GraphQLError(inlineFragmentOnNonCompositeErrorMessage(print(typeCondition)), typeCondition));\n }\n }\n },\n FragmentDefinition: function FragmentDefinition(node) {\n var type = typeFromAST(context.getSchema(), node.typeCondition);\n\n if (type && !isCompositeType(type)) {\n context.reportError(new GraphQLError(fragmentOnNonCompositeErrorMessage(node.name.value, print(node.typeCondition)), node.typeCondition));\n }\n }\n };\n}","import { GraphQLError } from '../../error/GraphQLError';\nimport { print } from '../../language/printer';\nimport { isInputType } from '../../type/definition';\nimport { typeFromAST } from '../../utilities/typeFromAST';\nexport function nonInputTypeOnVarMessage(variableName, typeName) {\n return \"Variable \\\"$\".concat(variableName, \"\\\" cannot be non-input type \\\"\").concat(typeName, \"\\\".\");\n}\n/**\n * Variables are input types\n *\n * A GraphQL operation is only valid if all the variables it defines are of\n * input types (scalar, enum, or input object).\n */\n\nexport function VariablesAreInputTypes(context) {\n return {\n VariableDefinition: function VariableDefinition(node) {\n var type = typeFromAST(context.getSchema(), node.type); // If the variable type is not an input type, return an error.\n\n if (type && !isInputType(type)) {\n var variableName = node.variable.name.value;\n context.reportError(new GraphQLError(nonInputTypeOnVarMessage(variableName, print(node.type)), node.type));\n }\n }\n };\n}","import inspect from '../../jsutils/inspect';\nimport { GraphQLError } from '../../error/GraphQLError';\nimport { getNamedType, isLeafType } from '../../type/definition';\nexport function noSubselectionAllowedMessage(fieldName, type) {\n return \"Field \\\"\".concat(fieldName, \"\\\" must not have a selection since type \\\"\").concat(type, \"\\\" has no subfields.\");\n}\nexport function requiredSubselectionMessage(fieldName, type) {\n return \"Field \\\"\".concat(fieldName, \"\\\" of type \\\"\").concat(type, \"\\\" must have a selection of subfields. Did you mean \\\"\").concat(fieldName, \" { ... }\\\"?\");\n}\n/**\n * Scalar leafs\n *\n * A GraphQL document is valid only if all leaf fields (fields without\n * sub selections) are of scalar or enum types.\n */\n\nexport function ScalarLeafs(context) {\n return {\n Field: function Field(node) {\n var type = context.getType();\n var selectionSet = node.selectionSet;\n\n if (type) {\n if (isLeafType(getNamedType(type))) {\n if (selectionSet) {\n context.reportError(new GraphQLError(noSubselectionAllowedMessage(node.name.value, inspect(type)), selectionSet));\n }\n } else if (!selectionSet) {\n context.reportError(new GraphQLError(requiredSubselectionMessage(node.name.value, inspect(type)), node));\n }\n }\n }\n };\n}","import didYouMean from '../../jsutils/didYouMean';\nimport suggestionList from '../../jsutils/suggestionList';\nimport { GraphQLError } from '../../error/GraphQLError';\nimport { isObjectType, isInterfaceType, isAbstractType } from '../../type/definition';\nexport function undefinedFieldMessage(fieldName, type, suggestedTypeNames, suggestedFieldNames) {\n var quotedTypeNames = suggestedTypeNames.map(function (x) {\n return \"\\\"\".concat(x, \"\\\"\");\n });\n var quotedFieldNames = suggestedFieldNames.map(function (x) {\n return \"\\\"\".concat(x, \"\\\"\");\n });\n return \"Cannot query field \\\"\".concat(fieldName, \"\\\" on type \\\"\").concat(type, \"\\\".\") + (didYouMean('to use an inline fragment on', quotedTypeNames) || didYouMean(quotedFieldNames));\n}\n/**\n * Fields on correct type\n *\n * A GraphQL document is only valid if all fields selected are defined by the\n * parent type, or are an allowed meta field such as __typename.\n */\n\nexport function FieldsOnCorrectType(context) {\n return {\n Field: function Field(node) {\n var type = context.getParentType();\n\n if (type) {\n var fieldDef = context.getFieldDef();\n\n if (!fieldDef) {\n // This field doesn't exist, lets look for suggestions.\n var schema = context.getSchema();\n var fieldName = node.name.value; // First determine if there are any suggested types to condition on.\n\n var suggestedTypeNames = getSuggestedTypeNames(schema, type, fieldName); // If there are no suggested types, then perhaps this was a typo?\n\n var suggestedFieldNames = suggestedTypeNames.length !== 0 ? [] : getSuggestedFieldNames(schema, type, fieldName); // Report an error, including helpful suggestions.\n\n context.reportError(new GraphQLError(undefinedFieldMessage(fieldName, type.name, suggestedTypeNames, suggestedFieldNames), node));\n }\n }\n }\n };\n}\n/**\n * Go through all of the implementations of type, as well as the interfaces that\n * they implement. If any of those types include the provided field, suggest\n * them, sorted by how often the type is referenced, starting with Interfaces.\n */\n\nfunction getSuggestedTypeNames(schema, type, fieldName) {\n if (isAbstractType(type)) {\n var suggestedObjectTypes = [];\n var interfaceUsageCount = Object.create(null);\n\n for (var _i2 = 0, _schema$getPossibleTy2 = schema.getPossibleTypes(type); _i2 < _schema$getPossibleTy2.length; _i2++) {\n var possibleType = _schema$getPossibleTy2[_i2];\n\n if (!possibleType.getFields()[fieldName]) {\n continue;\n } // This object type defines this field.\n\n\n suggestedObjectTypes.push(possibleType.name);\n\n for (var _i4 = 0, _possibleType$getInte2 = possibleType.getInterfaces(); _i4 < _possibleType$getInte2.length; _i4++) {\n var possibleInterface = _possibleType$getInte2[_i4];\n\n if (!possibleInterface.getFields()[fieldName]) {\n continue;\n } // This interface type defines this field.\n\n\n interfaceUsageCount[possibleInterface.name] = (interfaceUsageCount[possibleInterface.name] || 0) + 1;\n }\n } // Suggest interface types based on how common they are.\n\n\n var suggestedInterfaceTypes = Object.keys(interfaceUsageCount).sort(function (a, b) {\n return interfaceUsageCount[b] - interfaceUsageCount[a];\n }); // Suggest both interface and object types.\n\n return suggestedInterfaceTypes.concat(suggestedObjectTypes);\n } // Otherwise, must be an Object type, which does not have possible fields.\n\n\n return [];\n}\n/**\n * For the field name provided, determine if there are any similar field names\n * that may be the result of a typo.\n */\n\n\nfunction getSuggestedFieldNames(schema, type, fieldName) {\n if (isObjectType(type) || isInterfaceType(type)) {\n var possibleFieldNames = Object.keys(type.getFields());\n return suggestionList(fieldName, possibleFieldNames);\n } // Otherwise, must be a Union type, which does not define fields.\n\n\n return [];\n}","import { GraphQLError } from '../../error/GraphQLError';\nexport function duplicateFragmentNameMessage(fragName) {\n return \"There can be only one fragment named \\\"\".concat(fragName, \"\\\".\");\n}\n/**\n * Unique fragment names\n *\n * A GraphQL document is only valid if all defined fragments have unique names.\n */\n\nexport function UniqueFragmentNames(context) {\n var knownFragmentNames = Object.create(null);\n return {\n OperationDefinition: function OperationDefinition() {\n return false;\n },\n FragmentDefinition: function FragmentDefinition(node) {\n var fragmentName = node.name.value;\n\n if (knownFragmentNames[fragmentName]) {\n context.reportError(new GraphQLError(duplicateFragmentNameMessage(fragmentName), [knownFragmentNames[fragmentName], node.name]));\n } else {\n knownFragmentNames[fragmentName] = node.name;\n }\n\n return false;\n }\n };\n}","import inspect from '../../jsutils/inspect';\nimport { GraphQLError } from '../../error/GraphQLError';\nimport { isCompositeType } from '../../type/definition';\nimport { typeFromAST } from '../../utilities/typeFromAST';\nimport { doTypesOverlap } from '../../utilities/typeComparators';\nexport function typeIncompatibleSpreadMessage(fragName, parentType, fragType) {\n return \"Fragment \\\"\".concat(fragName, \"\\\" cannot be spread here as objects of type \\\"\").concat(parentType, \"\\\" can never be of type \\\"\").concat(fragType, \"\\\".\");\n}\nexport function typeIncompatibleAnonSpreadMessage(parentType, fragType) {\n return \"Fragment cannot be spread here as objects of type \\\"\".concat(parentType, \"\\\" can never be of type \\\"\").concat(fragType, \"\\\".\");\n}\n/**\n * Possible fragment spread\n *\n * A fragment spread is only valid if the type condition could ever possibly\n * be true: if there is a non-empty intersection of the possible parent types,\n * and possible types which pass the type condition.\n */\n\nexport function PossibleFragmentSpreads(context) {\n return {\n InlineFragment: function InlineFragment(node) {\n var fragType = context.getType();\n var parentType = context.getParentType();\n\n if (isCompositeType(fragType) && isCompositeType(parentType) && !doTypesOverlap(context.getSchema(), fragType, parentType)) {\n context.reportError(new GraphQLError(typeIncompatibleAnonSpreadMessage(inspect(parentType), inspect(fragType)), node));\n }\n },\n FragmentSpread: function FragmentSpread(node) {\n var fragName = node.name.value;\n var fragType = getFragmentType(context, fragName);\n var parentType = context.getParentType();\n\n if (fragType && parentType && !doTypesOverlap(context.getSchema(), fragType, parentType)) {\n context.reportError(new GraphQLError(typeIncompatibleSpreadMessage(fragName, inspect(parentType), inspect(fragType)), node));\n }\n }\n };\n}\n\nfunction getFragmentType(context, name) {\n var frag = context.getFragment(name);\n\n if (frag) {\n var type = typeFromAST(context.getSchema(), frag.typeCondition);\n\n if (isCompositeType(type)) {\n return type;\n }\n }\n}","import { GraphQLError } from '../../error/GraphQLError';\nexport function cycleErrorMessage(fragName, spreadNames) {\n var via = spreadNames.length ? ' via ' + spreadNames.join(', ') : '';\n return \"Cannot spread fragment \\\"\".concat(fragName, \"\\\" within itself\").concat(via, \".\");\n}\nexport function NoFragmentCycles(context) {\n // Tracks already visited fragments to maintain O(N) and to ensure that cycles\n // are not redundantly reported.\n var visitedFrags = Object.create(null); // Array of AST nodes used to produce meaningful errors\n\n var spreadPath = []; // Position in the spread path\n\n var spreadPathIndexByName = Object.create(null);\n return {\n OperationDefinition: function OperationDefinition() {\n return false;\n },\n FragmentDefinition: function FragmentDefinition(node) {\n detectCycleRecursive(node);\n return false;\n }\n }; // This does a straight-forward DFS to find cycles.\n // It does not terminate when a cycle was found but continues to explore\n // the graph to find all possible cycles.\n\n function detectCycleRecursive(fragment) {\n if (visitedFrags[fragment.name.value]) {\n return;\n }\n\n var fragmentName = fragment.name.value;\n visitedFrags[fragmentName] = true;\n var spreadNodes = context.getFragmentSpreads(fragment.selectionSet);\n\n if (spreadNodes.length === 0) {\n return;\n }\n\n spreadPathIndexByName[fragmentName] = spreadPath.length;\n\n for (var _i2 = 0; _i2 < spreadNodes.length; _i2++) {\n var spreadNode = spreadNodes[_i2];\n var spreadName = spreadNode.name.value;\n var cycleIndex = spreadPathIndexByName[spreadName];\n spreadPath.push(spreadNode);\n\n if (cycleIndex === undefined) {\n var spreadFragment = context.getFragment(spreadName);\n\n if (spreadFragment) {\n detectCycleRecursive(spreadFragment);\n }\n } else {\n var cyclePath = spreadPath.slice(cycleIndex);\n var fragmentNames = cyclePath.slice(0, -1).map(function (s) {\n return s.name.value;\n });\n context.reportError(new GraphQLError(cycleErrorMessage(spreadName, fragmentNames), cyclePath));\n }\n\n spreadPath.pop();\n }\n\n spreadPathIndexByName[fragmentName] = undefined;\n }\n}","import { GraphQLError } from '../../error/GraphQLError';\nexport function duplicateVariableMessage(variableName) {\n return \"There can be only one variable named \\\"\".concat(variableName, \"\\\".\");\n}\n/**\n * Unique variable names\n *\n * A GraphQL operation is only valid if all its variables are uniquely named.\n */\n\nexport function UniqueVariableNames(context) {\n var knownVariableNames = Object.create(null);\n return {\n OperationDefinition: function OperationDefinition() {\n knownVariableNames = Object.create(null);\n },\n VariableDefinition: function VariableDefinition(node) {\n var variableName = node.variable.name.value;\n\n if (knownVariableNames[variableName]) {\n context.reportError(new GraphQLError(duplicateVariableMessage(variableName), [knownVariableNames[variableName], node.variable.name]));\n } else {\n knownVariableNames[variableName] = node.variable.name;\n }\n }\n };\n}","import { GraphQLError } from '../../error/GraphQLError';\nexport function undefinedVarMessage(varName, opName) {\n return opName ? \"Variable \\\"$\".concat(varName, \"\\\" is not defined by operation \\\"\").concat(opName, \"\\\".\") : \"Variable \\\"$\".concat(varName, \"\\\" is not defined.\");\n}\n/**\n * No undefined variables\n *\n * A GraphQL operation is only valid if all variables encountered, both directly\n * and via fragment spreads, are defined by that operation.\n */\n\nexport function NoUndefinedVariables(context) {\n var variableNameDefined = Object.create(null);\n return {\n OperationDefinition: {\n enter: function enter() {\n variableNameDefined = Object.create(null);\n },\n leave: function leave(operation) {\n var usages = context.getRecursiveVariableUsages(operation);\n\n for (var _i2 = 0; _i2 < usages.length; _i2++) {\n var _ref2 = usages[_i2];\n var node = _ref2.node;\n var varName = node.name.value;\n\n if (variableNameDefined[varName] !== true) {\n context.reportError(new GraphQLError(undefinedVarMessage(varName, operation.name && operation.name.value), [node, operation]));\n }\n }\n }\n },\n VariableDefinition: function VariableDefinition(node) {\n variableNameDefined[node.variable.name.value] = true;\n }\n };\n}","import { GraphQLError } from '../../error/GraphQLError';\nexport function unusedVariableMessage(varName, opName) {\n return opName ? \"Variable \\\"$\".concat(varName, \"\\\" is never used in operation \\\"\").concat(opName, \"\\\".\") : \"Variable \\\"$\".concat(varName, \"\\\" is never used.\");\n}\n/**\n * No unused variables\n *\n * A GraphQL operation is only valid if all variables defined by an operation\n * are used, either directly or within a spread fragment.\n */\n\nexport function NoUnusedVariables(context) {\n var variableDefs = [];\n return {\n OperationDefinition: {\n enter: function enter() {\n variableDefs = [];\n },\n leave: function leave(operation) {\n var variableNameUsed = Object.create(null);\n var usages = context.getRecursiveVariableUsages(operation);\n var opName = operation.name ? operation.name.value : null;\n\n for (var _i2 = 0; _i2 < usages.length; _i2++) {\n var _ref2 = usages[_i2];\n var node = _ref2.node;\n variableNameUsed[node.name.value] = true;\n }\n\n for (var _i4 = 0, _variableDefs2 = variableDefs; _i4 < _variableDefs2.length; _i4++) {\n var variableDef = _variableDefs2[_i4];\n var variableName = variableDef.variable.name.value;\n\n if (variableNameUsed[variableName] !== true) {\n context.reportError(new GraphQLError(unusedVariableMessage(variableName, opName), variableDef));\n }\n }\n }\n },\n VariableDefinition: function VariableDefinition(def) {\n variableDefs.push(def);\n }\n };\n}","import { GraphQLError } from '../../error/GraphQLError';\nimport { Kind } from '../../language/kinds';\nimport { DirectiveLocation } from '../../language/directiveLocation';\nimport { specifiedDirectives } from '../../type/directives';\nexport function unknownDirectiveMessage(directiveName) {\n return \"Unknown directive \\\"\".concat(directiveName, \"\\\".\");\n}\nexport function misplacedDirectiveMessage(directiveName, location) {\n return \"Directive \\\"\".concat(directiveName, \"\\\" may not be used on \").concat(location, \".\");\n}\n/**\n * Known directives\n *\n * A GraphQL document is only valid if all `@directives` are known by the\n * schema and legally positioned.\n */\n\nexport function KnownDirectives(context) {\n var locationsMap = Object.create(null);\n var schema = context.getSchema();\n var definedDirectives = schema ? schema.getDirectives() : specifiedDirectives;\n\n for (var _i2 = 0; _i2 < definedDirectives.length; _i2++) {\n var directive = definedDirectives[_i2];\n locationsMap[directive.name] = directive.locations;\n }\n\n var astDefinitions = context.getDocument().definitions;\n\n for (var _i4 = 0; _i4 < astDefinitions.length; _i4++) {\n var def = astDefinitions[_i4];\n\n if (def.kind === Kind.DIRECTIVE_DEFINITION) {\n locationsMap[def.name.value] = def.locations.map(function (name) {\n return name.value;\n });\n }\n }\n\n return {\n Directive: function Directive(node, key, parent, path, ancestors) {\n var name = node.name.value;\n var locations = locationsMap[name];\n\n if (!locations) {\n context.reportError(new GraphQLError(unknownDirectiveMessage(name), node));\n return;\n }\n\n var candidateLocation = getDirectiveLocationForASTPath(ancestors);\n\n if (candidateLocation && locations.indexOf(candidateLocation) === -1) {\n context.reportError(new GraphQLError(misplacedDirectiveMessage(name, candidateLocation), node));\n }\n }\n };\n}\n\nfunction getDirectiveLocationForASTPath(ancestors) {\n var appliedTo = ancestors[ancestors.length - 1];\n\n if (!Array.isArray(appliedTo)) {\n switch (appliedTo.kind) {\n case Kind.OPERATION_DEFINITION:\n switch (appliedTo.operation) {\n case 'query':\n return DirectiveLocation.QUERY;\n\n case 'mutation':\n return DirectiveLocation.MUTATION;\n\n case 'subscription':\n return DirectiveLocation.SUBSCRIPTION;\n }\n\n break;\n\n case Kind.FIELD:\n return DirectiveLocation.FIELD;\n\n case Kind.FRAGMENT_SPREAD:\n return DirectiveLocation.FRAGMENT_SPREAD;\n\n case Kind.INLINE_FRAGMENT:\n return DirectiveLocation.INLINE_FRAGMENT;\n\n case Kind.FRAGMENT_DEFINITION:\n return DirectiveLocation.FRAGMENT_DEFINITION;\n\n case Kind.VARIABLE_DEFINITION:\n return DirectiveLocation.VARIABLE_DEFINITION;\n\n case Kind.SCHEMA_DEFINITION:\n case Kind.SCHEMA_EXTENSION:\n return DirectiveLocation.SCHEMA;\n\n case Kind.SCALAR_TYPE_DEFINITION:\n case Kind.SCALAR_TYPE_EXTENSION:\n return DirectiveLocation.SCALAR;\n\n case Kind.OBJECT_TYPE_DEFINITION:\n case Kind.OBJECT_TYPE_EXTENSION:\n return DirectiveLocation.OBJECT;\n\n case Kind.FIELD_DEFINITION:\n return DirectiveLocation.FIELD_DEFINITION;\n\n case Kind.INTERFACE_TYPE_DEFINITION:\n case Kind.INTERFACE_TYPE_EXTENSION:\n return DirectiveLocation.INTERFACE;\n\n case Kind.UNION_TYPE_DEFINITION:\n case Kind.UNION_TYPE_EXTENSION:\n return DirectiveLocation.UNION;\n\n case Kind.ENUM_TYPE_DEFINITION:\n case Kind.ENUM_TYPE_EXTENSION:\n return DirectiveLocation.ENUM;\n\n case Kind.ENUM_VALUE_DEFINITION:\n return DirectiveLocation.ENUM_VALUE;\n\n case Kind.INPUT_OBJECT_TYPE_DEFINITION:\n case Kind.INPUT_OBJECT_TYPE_EXTENSION:\n return DirectiveLocation.INPUT_OBJECT;\n\n case Kind.INPUT_VALUE_DEFINITION:\n {\n var parentNode = ancestors[ancestors.length - 3];\n return parentNode.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION ? DirectiveLocation.INPUT_FIELD_DEFINITION : DirectiveLocation.ARGUMENT_DEFINITION;\n }\n }\n }\n}","import { GraphQLError } from '../../error/GraphQLError';\nimport { Kind } from '../../language/kinds';\nimport { specifiedDirectives } from '../../type/directives';\nexport function duplicateDirectiveMessage(directiveName) {\n return \"The directive \\\"\".concat(directiveName, \"\\\" can only be used once at this location.\");\n}\n/**\n * Unique directive names per location\n *\n * A GraphQL document is only valid if all non-repeatable directives at\n * a given location are uniquely named.\n */\n\nexport function UniqueDirectivesPerLocation(context) {\n var uniqueDirectiveMap = Object.create(null);\n var schema = context.getSchema();\n var definedDirectives = schema ? schema.getDirectives() : specifiedDirectives;\n\n for (var _i2 = 0; _i2 < definedDirectives.length; _i2++) {\n var directive = definedDirectives[_i2];\n uniqueDirectiveMap[directive.name] = !directive.isRepeatable;\n }\n\n var astDefinitions = context.getDocument().definitions;\n\n for (var _i4 = 0; _i4 < astDefinitions.length; _i4++) {\n var def = astDefinitions[_i4];\n\n if (def.kind === Kind.DIRECTIVE_DEFINITION) {\n uniqueDirectiveMap[def.name.value] = !def.repeatable;\n }\n }\n\n return {\n // Many different AST nodes may contain directives. Rather than listing\n // them all, just listen for entering any node, and check to see if it\n // defines any directives.\n enter: function enter(node) {\n // Flow can't refine that node.directives will only contain directives,\n // so we cast so the rest of the code is well typed.\n var directives = node.directives;\n\n if (directives) {\n var knownDirectives = Object.create(null);\n\n for (var _i6 = 0; _i6 < directives.length; _i6++) {\n var _directive = directives[_i6];\n var directiveName = _directive.name.value;\n\n if (uniqueDirectiveMap[directiveName]) {\n if (knownDirectives[directiveName]) {\n context.reportError(new GraphQLError(duplicateDirectiveMessage(directiveName), [knownDirectives[directiveName], _directive]));\n } else {\n knownDirectives[directiveName] = _directive;\n }\n }\n }\n }\n }\n };\n}","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nimport didYouMean from '../../jsutils/didYouMean';\nimport suggestionList from '../../jsutils/suggestionList';\nimport { GraphQLError } from '../../error/GraphQLError';\nimport { Kind } from '../../language/kinds';\nimport { specifiedDirectives } from '../../type/directives';\nexport function unknownArgMessage(argName, fieldName, typeName, suggestedArgs) {\n return \"Unknown argument \\\"\".concat(argName, \"\\\" on field \\\"\").concat(fieldName, \"\\\" of type \\\"\").concat(typeName, \"\\\".\") + didYouMean(suggestedArgs.map(function (x) {\n return \"\\\"\".concat(x, \"\\\"\");\n }));\n}\nexport function unknownDirectiveArgMessage(argName, directiveName, suggestedArgs) {\n return \"Unknown argument \\\"\".concat(argName, \"\\\" on directive \\\"@\").concat(directiveName, \"\\\".\") + didYouMean(suggestedArgs.map(function (x) {\n return \"\\\"\".concat(x, \"\\\"\");\n }));\n}\n/**\n * Known argument names\n *\n * A GraphQL field is only valid if all supplied arguments are defined by\n * that field.\n */\n\nexport function KnownArgumentNames(context) {\n return _objectSpread({}, KnownArgumentNamesOnDirectives(context), {\n Argument: function Argument(argNode) {\n var argDef = context.getArgument();\n var fieldDef = context.getFieldDef();\n var parentType = context.getParentType();\n\n if (!argDef && fieldDef && parentType) {\n var argName = argNode.name.value;\n var knownArgsNames = fieldDef.args.map(function (arg) {\n return arg.name;\n });\n context.reportError(new GraphQLError(unknownArgMessage(argName, fieldDef.name, parentType.name, suggestionList(argName, knownArgsNames)), argNode));\n }\n }\n });\n} // @internal\n\nexport function KnownArgumentNamesOnDirectives(context) {\n var directiveArgs = Object.create(null);\n var schema = context.getSchema();\n var definedDirectives = schema ? schema.getDirectives() : specifiedDirectives;\n\n for (var _i2 = 0; _i2 < definedDirectives.length; _i2++) {\n var directive = definedDirectives[_i2];\n directiveArgs[directive.name] = directive.args.map(function (arg) {\n return arg.name;\n });\n }\n\n var astDefinitions = context.getDocument().definitions;\n\n for (var _i4 = 0; _i4 < astDefinitions.length; _i4++) {\n var def = astDefinitions[_i4];\n\n if (def.kind === Kind.DIRECTIVE_DEFINITION) {\n directiveArgs[def.name.value] = def.arguments ? def.arguments.map(function (arg) {\n return arg.name.value;\n }) : [];\n }\n }\n\n return {\n Directive: function Directive(directiveNode) {\n var directiveName = directiveNode.name.value;\n var knownArgs = directiveArgs[directiveName];\n\n if (directiveNode.arguments && knownArgs) {\n for (var _i6 = 0, _directiveNode$argume2 = directiveNode.arguments; _i6 < _directiveNode$argume2.length; _i6++) {\n var argNode = _directiveNode$argume2[_i6];\n var argName = argNode.name.value;\n\n if (knownArgs.indexOf(argName) === -1) {\n var suggestions = suggestionList(argName, knownArgs);\n context.reportError(new GraphQLError(unknownDirectiveArgMessage(argName, directiveName, suggestions), argNode));\n }\n }\n }\n\n return false;\n }\n };\n}","import { GraphQLError } from '../../error/GraphQLError';\nexport function duplicateArgMessage(argName) {\n return \"There can be only one argument named \\\"\".concat(argName, \"\\\".\");\n}\n/**\n * Unique argument names\n *\n * A GraphQL field or directive is only valid if all supplied arguments are\n * uniquely named.\n */\n\nexport function UniqueArgumentNames(context) {\n var knownArgNames = Object.create(null);\n return {\n Field: function Field() {\n knownArgNames = Object.create(null);\n },\n Directive: function Directive() {\n knownArgNames = Object.create(null);\n },\n Argument: function Argument(node) {\n var argName = node.name.value;\n\n if (knownArgNames[argName]) {\n context.reportError(new GraphQLError(duplicateArgMessage(argName), [knownArgNames[argName], node.name]));\n } else {\n knownArgNames[argName] = node.name;\n }\n\n return false;\n }\n };\n}","import objectValues from '../../polyfills/objectValues';\nimport keyMap from '../../jsutils/keyMap';\nimport inspect from '../../jsutils/inspect';\nimport isInvalid from '../../jsutils/isInvalid';\nimport didYouMean from '../../jsutils/didYouMean';\nimport suggestionList from '../../jsutils/suggestionList';\nimport { GraphQLError } from '../../error/GraphQLError';\nimport { print } from '../../language/printer';\nimport { isScalarType, isEnumType, isInputObjectType, isListType, isNonNullType, isRequiredInputField, getNullableType, getNamedType } from '../../type/definition';\nexport function badValueMessage(typeName, valueName, message) {\n return \"Expected type \".concat(typeName, \", found \").concat(valueName) + (message ? \"; \".concat(message) : '.');\n}\nexport function badEnumValueMessage(typeName, valueName, suggestedValues) {\n return \"Expected type \".concat(typeName, \", found \").concat(valueName, \".\") + didYouMean('the enum value', suggestedValues);\n}\nexport function requiredFieldMessage(typeName, fieldName, fieldTypeName) {\n return \"Field \".concat(typeName, \".\").concat(fieldName, \" of required type \").concat(fieldTypeName, \" was not provided.\");\n}\nexport function unknownFieldMessage(typeName, fieldName, suggestedFields) {\n return \"Field \\\"\".concat(fieldName, \"\\\" is not defined by type \").concat(typeName, \".\") + didYouMean(suggestedFields);\n}\n/**\n * Value literals of correct type\n *\n * A GraphQL document is only valid if all value literals are of the type\n * expected at their position.\n */\n\nexport function ValuesOfCorrectType(context) {\n return {\n NullValue: function NullValue(node) {\n var type = context.getInputType();\n\n if (isNonNullType(type)) {\n context.reportError(new GraphQLError(badValueMessage(inspect(type), print(node)), node));\n }\n },\n ListValue: function ListValue(node) {\n // Note: TypeInfo will traverse into a list's item type, so look to the\n // parent input type to check if it is a list.\n var type = getNullableType(context.getParentInputType());\n\n if (!isListType(type)) {\n isValidScalar(context, node);\n return false; // Don't traverse further.\n }\n },\n ObjectValue: function ObjectValue(node) {\n var type = getNamedType(context.getInputType());\n\n if (!isInputObjectType(type)) {\n isValidScalar(context, node);\n return false; // Don't traverse further.\n } // Ensure every required field exists.\n\n\n var fieldNodeMap = keyMap(node.fields, function (field) {\n return field.name.value;\n });\n\n for (var _i2 = 0, _objectValues2 = objectValues(type.getFields()); _i2 < _objectValues2.length; _i2++) {\n var fieldDef = _objectValues2[_i2];\n var fieldNode = fieldNodeMap[fieldDef.name];\n\n if (!fieldNode && isRequiredInputField(fieldDef)) {\n var typeStr = inspect(fieldDef.type);\n context.reportError(new GraphQLError(requiredFieldMessage(type.name, fieldDef.name, typeStr), node));\n }\n }\n },\n ObjectField: function ObjectField(node) {\n var parentType = getNamedType(context.getParentInputType());\n var fieldType = context.getInputType();\n\n if (!fieldType && isInputObjectType(parentType)) {\n var suggestions = suggestionList(node.name.value, Object.keys(parentType.getFields()));\n context.reportError(new GraphQLError(unknownFieldMessage(parentType.name, node.name.value, suggestions), node));\n }\n },\n EnumValue: function EnumValue(node) {\n var type = getNamedType(context.getInputType());\n\n if (!isEnumType(type)) {\n isValidScalar(context, node);\n } else if (!type.getValue(node.value)) {\n context.reportError(new GraphQLError(badEnumValueMessage(type.name, print(node), enumTypeSuggestion(type, node)), node));\n }\n },\n IntValue: function IntValue(node) {\n return isValidScalar(context, node);\n },\n FloatValue: function FloatValue(node) {\n return isValidScalar(context, node);\n },\n StringValue: function StringValue(node) {\n return isValidScalar(context, node);\n },\n BooleanValue: function BooleanValue(node) {\n return isValidScalar(context, node);\n }\n };\n}\n/**\n * Any value literal may be a valid representation of a Scalar, depending on\n * that scalar type.\n */\n\nfunction isValidScalar(context, node) {\n // Report any error at the full type expected by the location.\n var locationType = context.getInputType();\n\n if (!locationType) {\n return;\n }\n\n var type = getNamedType(locationType);\n\n if (!isScalarType(type)) {\n var message = isEnumType(type) ? badEnumValueMessage(inspect(locationType), print(node), enumTypeSuggestion(type, node)) : badValueMessage(inspect(locationType), print(node));\n context.reportError(new GraphQLError(message, node));\n return;\n } // Scalars determine if a literal value is valid via parseLiteral() which\n // may throw or return an invalid value to indicate failure.\n\n\n try {\n var parseResult = type.parseLiteral(node, undefined\n /* variables */\n );\n\n if (isInvalid(parseResult)) {\n context.reportError(new GraphQLError(badValueMessage(inspect(locationType), print(node)), node));\n }\n } catch (error) {\n // Ensure a reference to the original error is maintained.\n context.reportError(new GraphQLError(badValueMessage(inspect(locationType), print(node), error.message), node, undefined, undefined, undefined, error));\n }\n}\n\nfunction enumTypeSuggestion(type, node) {\n var allNames = type.getValues().map(function (value) {\n return value.name;\n });\n return suggestionList(print(node), allNames);\n}","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nimport inspect from '../../jsutils/inspect';\nimport keyMap from '../../jsutils/keyMap';\nimport { GraphQLError } from '../../error/GraphQLError';\nimport { Kind } from '../../language/kinds';\nimport { print } from '../../language/printer';\nimport { specifiedDirectives } from '../../type/directives';\nimport { isType, isRequiredArgument } from '../../type/definition';\nexport function missingFieldArgMessage(fieldName, argName, type) {\n return \"Field \\\"\".concat(fieldName, \"\\\" argument \\\"\").concat(argName, \"\\\" of type \\\"\").concat(type, \"\\\" is required, but it was not provided.\");\n}\nexport function missingDirectiveArgMessage(directiveName, argName, type) {\n return \"Directive \\\"@\".concat(directiveName, \"\\\" argument \\\"\").concat(argName, \"\\\" of type \\\"\").concat(type, \"\\\" is required, but it was not provided.\");\n}\n/**\n * Provided required arguments\n *\n * A field or directive is only valid if all required (non-null without a\n * default value) field arguments have been provided.\n */\n\nexport function ProvidedRequiredArguments(context) {\n return _objectSpread({}, ProvidedRequiredArgumentsOnDirectives(context), {\n Field: {\n // Validate on leave to allow for deeper errors to appear first.\n leave: function leave(fieldNode) {\n var fieldDef = context.getFieldDef();\n\n if (!fieldDef) {\n return false;\n }\n\n var argNodes = fieldNode.arguments || [];\n var argNodeMap = keyMap(argNodes, function (arg) {\n return arg.name.value;\n });\n\n for (var _i2 = 0, _fieldDef$args2 = fieldDef.args; _i2 < _fieldDef$args2.length; _i2++) {\n var argDef = _fieldDef$args2[_i2];\n var argNode = argNodeMap[argDef.name];\n\n if (!argNode && isRequiredArgument(argDef)) {\n context.reportError(new GraphQLError(missingFieldArgMessage(fieldDef.name, argDef.name, inspect(argDef.type)), fieldNode));\n }\n }\n }\n }\n });\n} // @internal\n\nexport function ProvidedRequiredArgumentsOnDirectives(context) {\n var requiredArgsMap = Object.create(null);\n var schema = context.getSchema();\n var definedDirectives = schema ? schema.getDirectives() : specifiedDirectives;\n\n for (var _i4 = 0; _i4 < definedDirectives.length; _i4++) {\n var directive = definedDirectives[_i4];\n requiredArgsMap[directive.name] = keyMap(directive.args.filter(isRequiredArgument), function (arg) {\n return arg.name;\n });\n }\n\n var astDefinitions = context.getDocument().definitions;\n\n for (var _i6 = 0; _i6 < astDefinitions.length; _i6++) {\n var def = astDefinitions[_i6];\n\n if (def.kind === Kind.DIRECTIVE_DEFINITION) {\n requiredArgsMap[def.name.value] = keyMap(def.arguments ? def.arguments.filter(isRequiredArgumentNode) : [], function (arg) {\n return arg.name.value;\n });\n }\n }\n\n return {\n Directive: {\n // Validate on leave to allow for deeper errors to appear first.\n leave: function leave(directiveNode) {\n var directiveName = directiveNode.name.value;\n var requiredArgs = requiredArgsMap[directiveName];\n\n if (requiredArgs) {\n var argNodes = directiveNode.arguments || [];\n var argNodeMap = keyMap(argNodes, function (arg) {\n return arg.name.value;\n });\n\n for (var _i8 = 0, _Object$keys2 = Object.keys(requiredArgs); _i8 < _Object$keys2.length; _i8++) {\n var argName = _Object$keys2[_i8];\n\n if (!argNodeMap[argName]) {\n var argType = requiredArgs[argName].type;\n context.reportError(new GraphQLError(missingDirectiveArgMessage(directiveName, argName, isType(argType) ? inspect(argType) : print(argType)), directiveNode));\n }\n }\n }\n }\n }\n };\n}\n\nfunction isRequiredArgumentNode(arg) {\n return arg.type.kind === Kind.NON_NULL_TYPE && arg.defaultValue == null;\n}","import inspect from '../../jsutils/inspect';\nimport { GraphQLError } from '../../error/GraphQLError';\nimport { Kind } from '../../language/kinds';\nimport { isNonNullType } from '../../type/definition';\nimport { typeFromAST } from '../../utilities/typeFromAST';\nimport { isTypeSubTypeOf } from '../../utilities/typeComparators';\nexport function badVarPosMessage(varName, varType, expectedType) {\n return \"Variable \\\"$\".concat(varName, \"\\\" of type \\\"\").concat(varType, \"\\\" used in position expecting type \\\"\").concat(expectedType, \"\\\".\");\n}\n/**\n * Variables passed to field arguments conform to type\n */\n\nexport function VariablesInAllowedPosition(context) {\n var varDefMap = Object.create(null);\n return {\n OperationDefinition: {\n enter: function enter() {\n varDefMap = Object.create(null);\n },\n leave: function leave(operation) {\n var usages = context.getRecursiveVariableUsages(operation);\n\n for (var _i2 = 0; _i2 < usages.length; _i2++) {\n var _ref2 = usages[_i2];\n var node = _ref2.node;\n var type = _ref2.type;\n var defaultValue = _ref2.defaultValue;\n var varName = node.name.value;\n var varDef = varDefMap[varName];\n\n if (varDef && type) {\n // A var type is allowed if it is the same or more strict (e.g. is\n // a subtype of) than the expected type. It can be more strict if\n // the variable type is non-null when the expected type is nullable.\n // If both are list types, the variable item type can be more strict\n // than the expected item type (contravariant).\n var schema = context.getSchema();\n var varType = typeFromAST(schema, varDef.type);\n\n if (varType && !allowedVariableUsage(schema, varType, varDef.defaultValue, type, defaultValue)) {\n context.reportError(new GraphQLError(badVarPosMessage(varName, inspect(varType), inspect(type)), [varDef, node]));\n }\n }\n }\n }\n },\n VariableDefinition: function VariableDefinition(node) {\n varDefMap[node.variable.name.value] = node;\n }\n };\n}\n/**\n * Returns true if the variable is allowed in the location it was found,\n * which includes considering if default values exist for either the variable\n * or the location at which it is located.\n */\n\nfunction allowedVariableUsage(schema, varType, varDefaultValue, locationType, locationDefaultValue) {\n if (isNonNullType(locationType) && !isNonNullType(varType)) {\n var hasNonNullVariableDefaultValue = varDefaultValue != null && varDefaultValue.kind !== Kind.NULL;\n var hasLocationDefaultValue = locationDefaultValue !== undefined;\n\n if (!hasNonNullVariableDefaultValue && !hasLocationDefaultValue) {\n return false;\n }\n\n var nullableLocationType = locationType.ofType;\n return isTypeSubTypeOf(schema, varType, nullableLocationType);\n }\n\n return isTypeSubTypeOf(schema, varType, locationType);\n}","import find from '../../polyfills/find';\nimport objectEntries from '../../polyfills/objectEntries';\nimport inspect from '../../jsutils/inspect';\nimport { GraphQLError } from '../../error/GraphQLError';\nimport { Kind } from '../../language/kinds';\nimport { print } from '../../language/printer';\nimport { getNamedType, isNonNullType, isLeafType, isObjectType, isListType, isInterfaceType } from '../../type/definition';\nimport { typeFromAST } from '../../utilities/typeFromAST';\nexport function fieldsConflictMessage(responseName, reason) {\n return \"Fields \\\"\".concat(responseName, \"\\\" conflict because \").concat(reasonMessage(reason), \". \") + 'Use different aliases on the fields to fetch both if this was intentional.';\n}\n\nfunction reasonMessage(reason) {\n if (Array.isArray(reason)) {\n return reason.map(function (_ref) {\n var responseName = _ref[0],\n subreason = _ref[1];\n return \"subfields \\\"\".concat(responseName, \"\\\" conflict because \").concat(reasonMessage(subreason));\n }).join(' and ');\n }\n\n return reason;\n}\n/**\n * Overlapping fields can be merged\n *\n * A selection set is only valid if all fields (including spreading any\n * fragments) either correspond to distinct response names or can be merged\n * without ambiguity.\n */\n\n\nexport function OverlappingFieldsCanBeMerged(context) {\n // A memoization for when two fragments are compared \"between\" each other for\n // conflicts. Two fragments may be compared many times, so memoizing this can\n // dramatically improve the performance of this validator.\n var comparedFragmentPairs = new PairSet(); // A cache for the \"field map\" and list of fragment names found in any given\n // selection set. Selection sets may be asked for this information multiple\n // times, so this improves the performance of this validator.\n\n var cachedFieldsAndFragmentNames = new Map();\n return {\n SelectionSet: function SelectionSet(selectionSet) {\n var conflicts = findConflictsWithinSelectionSet(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, context.getParentType(), selectionSet);\n\n for (var _i2 = 0; _i2 < conflicts.length; _i2++) {\n var _ref3 = conflicts[_i2];\n var _ref2$ = _ref3[0];\n var responseName = _ref2$[0];\n var reason = _ref2$[1];\n var fields1 = _ref3[1];\n var fields2 = _ref3[2];\n context.reportError(new GraphQLError(fieldsConflictMessage(responseName, reason), fields1.concat(fields2)));\n }\n }\n };\n}\n/**\n * Algorithm:\n *\n * Conflicts occur when two fields exist in a query which will produce the same\n * response name, but represent differing values, thus creating a conflict.\n * The algorithm below finds all conflicts via making a series of comparisons\n * between fields. In order to compare as few fields as possible, this makes\n * a series of comparisons \"within\" sets of fields and \"between\" sets of fields.\n *\n * Given any selection set, a collection produces both a set of fields by\n * also including all inline fragments, as well as a list of fragments\n * referenced by fragment spreads.\n *\n * A) Each selection set represented in the document first compares \"within\" its\n * collected set of fields, finding any conflicts between every pair of\n * overlapping fields.\n * Note: This is the *only time* that a the fields \"within\" a set are compared\n * to each other. After this only fields \"between\" sets are compared.\n *\n * B) Also, if any fragment is referenced in a selection set, then a\n * comparison is made \"between\" the original set of fields and the\n * referenced fragment.\n *\n * C) Also, if multiple fragments are referenced, then comparisons\n * are made \"between\" each referenced fragment.\n *\n * D) When comparing \"between\" a set of fields and a referenced fragment, first\n * a comparison is made between each field in the original set of fields and\n * each field in the the referenced set of fields.\n *\n * E) Also, if any fragment is referenced in the referenced selection set,\n * then a comparison is made \"between\" the original set of fields and the\n * referenced fragment (recursively referring to step D).\n *\n * F) When comparing \"between\" two fragments, first a comparison is made between\n * each field in the first referenced set of fields and each field in the the\n * second referenced set of fields.\n *\n * G) Also, any fragments referenced by the first must be compared to the\n * second, and any fragments referenced by the second must be compared to the\n * first (recursively referring to step F).\n *\n * H) When comparing two fields, if both have selection sets, then a comparison\n * is made \"between\" both selection sets, first comparing the set of fields in\n * the first selection set with the set of fields in the second.\n *\n * I) Also, if any fragment is referenced in either selection set, then a\n * comparison is made \"between\" the other set of fields and the\n * referenced fragment.\n *\n * J) Also, if two fragments are referenced in both selection sets, then a\n * comparison is made \"between\" the two fragments.\n *\n */\n// Find all conflicts found \"within\" a selection set, including those found\n// via spreading in fragments. Called when visiting each SelectionSet in the\n// GraphQL Document.\n\nfunction findConflictsWithinSelectionSet(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, parentType, selectionSet) {\n var conflicts = [];\n\n var _getFieldsAndFragment = getFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, parentType, selectionSet),\n fieldMap = _getFieldsAndFragment[0],\n fragmentNames = _getFieldsAndFragment[1]; // (A) Find find all conflicts \"within\" the fields of this selection set.\n // Note: this is the *only place* `collectConflictsWithin` is called.\n\n\n collectConflictsWithin(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, fieldMap);\n\n if (fragmentNames.length !== 0) {\n // (B) Then collect conflicts between these fields and those represented by\n // each spread fragment name found.\n var comparedFragments = Object.create(null);\n\n for (var i = 0; i < fragmentNames.length; i++) {\n collectConflictsBetweenFieldsAndFragment(context, conflicts, cachedFieldsAndFragmentNames, comparedFragments, comparedFragmentPairs, false, fieldMap, fragmentNames[i]); // (C) Then compare this fragment with all other fragments found in this\n // selection set to collect conflicts between fragments spread together.\n // This compares each item in the list of fragment names to every other\n // item in that same list (except for itself).\n\n for (var j = i + 1; j < fragmentNames.length; j++) {\n collectConflictsBetweenFragments(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, false, fragmentNames[i], fragmentNames[j]);\n }\n }\n }\n\n return conflicts;\n} // Collect all conflicts found between a set of fields and a fragment reference\n// including via spreading in any nested fragments.\n\n\nfunction collectConflictsBetweenFieldsAndFragment(context, conflicts, cachedFieldsAndFragmentNames, comparedFragments, comparedFragmentPairs, areMutuallyExclusive, fieldMap, fragmentName) {\n // Memoize so a fragment is not compared for conflicts more than once.\n if (comparedFragments[fragmentName]) {\n return;\n }\n\n comparedFragments[fragmentName] = true;\n var fragment = context.getFragment(fragmentName);\n\n if (!fragment) {\n return;\n }\n\n var _getReferencedFieldsA = getReferencedFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, fragment),\n fieldMap2 = _getReferencedFieldsA[0],\n fragmentNames2 = _getReferencedFieldsA[1]; // Do not compare a fragment's fieldMap to itself.\n\n\n if (fieldMap === fieldMap2) {\n return;\n } // (D) First collect any conflicts between the provided collection of fields\n // and the collection of fields represented by the given fragment.\n\n\n collectConflictsBetween(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fieldMap, fieldMap2); // (E) Then collect any conflicts between the provided collection of fields\n // and any fragment names found in the given fragment.\n\n for (var i = 0; i < fragmentNames2.length; i++) {\n collectConflictsBetweenFieldsAndFragment(context, conflicts, cachedFieldsAndFragmentNames, comparedFragments, comparedFragmentPairs, areMutuallyExclusive, fieldMap, fragmentNames2[i]);\n }\n} // Collect all conflicts found between two fragments, including via spreading in\n// any nested fragments.\n\n\nfunction collectConflictsBetweenFragments(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fragmentName1, fragmentName2) {\n // No need to compare a fragment to itself.\n if (fragmentName1 === fragmentName2) {\n return;\n } // Memoize so two fragments are not compared for conflicts more than once.\n\n\n if (comparedFragmentPairs.has(fragmentName1, fragmentName2, areMutuallyExclusive)) {\n return;\n }\n\n comparedFragmentPairs.add(fragmentName1, fragmentName2, areMutuallyExclusive);\n var fragment1 = context.getFragment(fragmentName1);\n var fragment2 = context.getFragment(fragmentName2);\n\n if (!fragment1 || !fragment2) {\n return;\n }\n\n var _getReferencedFieldsA2 = getReferencedFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, fragment1),\n fieldMap1 = _getReferencedFieldsA2[0],\n fragmentNames1 = _getReferencedFieldsA2[1];\n\n var _getReferencedFieldsA3 = getReferencedFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, fragment2),\n fieldMap2 = _getReferencedFieldsA3[0],\n fragmentNames2 = _getReferencedFieldsA3[1]; // (F) First, collect all conflicts between these two collections of fields\n // (not including any nested fragments).\n\n\n collectConflictsBetween(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fieldMap1, fieldMap2); // (G) Then collect conflicts between the first fragment and any nested\n // fragments spread in the second fragment.\n\n for (var j = 0; j < fragmentNames2.length; j++) {\n collectConflictsBetweenFragments(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fragmentName1, fragmentNames2[j]);\n } // (G) Then collect conflicts between the second fragment and any nested\n // fragments spread in the first fragment.\n\n\n for (var i = 0; i < fragmentNames1.length; i++) {\n collectConflictsBetweenFragments(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fragmentNames1[i], fragmentName2);\n }\n} // Find all conflicts found between two selection sets, including those found\n// via spreading in fragments. Called when determining if conflicts exist\n// between the sub-fields of two overlapping fields.\n\n\nfunction findConflictsBetweenSubSelectionSets(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, parentType1, selectionSet1, parentType2, selectionSet2) {\n var conflicts = [];\n\n var _getFieldsAndFragment2 = getFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, parentType1, selectionSet1),\n fieldMap1 = _getFieldsAndFragment2[0],\n fragmentNames1 = _getFieldsAndFragment2[1];\n\n var _getFieldsAndFragment3 = getFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, parentType2, selectionSet2),\n fieldMap2 = _getFieldsAndFragment3[0],\n fragmentNames2 = _getFieldsAndFragment3[1]; // (H) First, collect all conflicts between these two collections of field.\n\n\n collectConflictsBetween(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fieldMap1, fieldMap2); // (I) Then collect conflicts between the first collection of fields and\n // those referenced by each fragment name associated with the second.\n\n if (fragmentNames2.length !== 0) {\n var comparedFragments = Object.create(null);\n\n for (var j = 0; j < fragmentNames2.length; j++) {\n collectConflictsBetweenFieldsAndFragment(context, conflicts, cachedFieldsAndFragmentNames, comparedFragments, comparedFragmentPairs, areMutuallyExclusive, fieldMap1, fragmentNames2[j]);\n }\n } // (I) Then collect conflicts between the second collection of fields and\n // those referenced by each fragment name associated with the first.\n\n\n if (fragmentNames1.length !== 0) {\n var _comparedFragments = Object.create(null);\n\n for (var i = 0; i < fragmentNames1.length; i++) {\n collectConflictsBetweenFieldsAndFragment(context, conflicts, cachedFieldsAndFragmentNames, _comparedFragments, comparedFragmentPairs, areMutuallyExclusive, fieldMap2, fragmentNames1[i]);\n }\n } // (J) Also collect conflicts between any fragment names by the first and\n // fragment names by the second. This compares each item in the first set of\n // names to each item in the second set of names.\n\n\n for (var _i3 = 0; _i3 < fragmentNames1.length; _i3++) {\n for (var _j = 0; _j < fragmentNames2.length; _j++) {\n collectConflictsBetweenFragments(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fragmentNames1[_i3], fragmentNames2[_j]);\n }\n }\n\n return conflicts;\n} // Collect all Conflicts \"within\" one collection of fields.\n\n\nfunction collectConflictsWithin(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, fieldMap) {\n // A field map is a keyed collection, where each key represents a response\n // name and the value at that key is a list of all fields which provide that\n // response name. For every response name, if there are multiple fields, they\n // must be compared to find a potential conflict.\n for (var _i5 = 0, _objectEntries2 = objectEntries(fieldMap); _i5 < _objectEntries2.length; _i5++) {\n var _ref5 = _objectEntries2[_i5];\n var responseName = _ref5[0];\n var fields = _ref5[1]; // This compares every field in the list to every other field in this list\n // (except to itself). If the list only has one item, nothing needs to\n // be compared.\n\n if (fields.length > 1) {\n for (var i = 0; i < fields.length; i++) {\n for (var j = i + 1; j < fields.length; j++) {\n var conflict = findConflict(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, false, // within one collection is never mutually exclusive\n responseName, fields[i], fields[j]);\n\n if (conflict) {\n conflicts.push(conflict);\n }\n }\n }\n }\n }\n} // Collect all Conflicts between two collections of fields. This is similar to,\n// but different from the `collectConflictsWithin` function above. This check\n// assumes that `collectConflictsWithin` has already been called on each\n// provided collection of fields. This is true because this validator traverses\n// each individual selection set.\n\n\nfunction collectConflictsBetween(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, parentFieldsAreMutuallyExclusive, fieldMap1, fieldMap2) {\n // A field map is a keyed collection, where each key represents a response\n // name and the value at that key is a list of all fields which provide that\n // response name. For any response name which appears in both provided field\n // maps, each field from the first field map must be compared to every field\n // in the second field map to find potential conflicts.\n for (var _i7 = 0, _Object$keys2 = Object.keys(fieldMap1); _i7 < _Object$keys2.length; _i7++) {\n var responseName = _Object$keys2[_i7];\n var fields2 = fieldMap2[responseName];\n\n if (fields2) {\n var fields1 = fieldMap1[responseName];\n\n for (var i = 0; i < fields1.length; i++) {\n for (var j = 0; j < fields2.length; j++) {\n var conflict = findConflict(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, parentFieldsAreMutuallyExclusive, responseName, fields1[i], fields2[j]);\n\n if (conflict) {\n conflicts.push(conflict);\n }\n }\n }\n }\n }\n} // Determines if there is a conflict between two particular fields, including\n// comparing their sub-fields.\n\n\nfunction findConflict(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, parentFieldsAreMutuallyExclusive, responseName, field1, field2) {\n var parentType1 = field1[0],\n node1 = field1[1],\n def1 = field1[2];\n var parentType2 = field2[0],\n node2 = field2[1],\n def2 = field2[2]; // If it is known that two fields could not possibly apply at the same\n // time, due to the parent types, then it is safe to permit them to diverge\n // in aliased field or arguments used as they will not present any ambiguity\n // by differing.\n // It is known that two parent types could never overlap if they are\n // different Object types. Interface or Union types might overlap - if not\n // in the current state of the schema, then perhaps in some future version,\n // thus may not safely diverge.\n\n var areMutuallyExclusive = parentFieldsAreMutuallyExclusive || parentType1 !== parentType2 && isObjectType(parentType1) && isObjectType(parentType2); // The return type for each field.\n\n var type1 = def1 && def1.type;\n var type2 = def2 && def2.type;\n\n if (!areMutuallyExclusive) {\n // Two aliases must refer to the same field.\n var name1 = node1.name.value;\n var name2 = node2.name.value;\n\n if (name1 !== name2) {\n return [[responseName, \"\".concat(name1, \" and \").concat(name2, \" are different fields\")], [node1], [node2]];\n } // Two field calls must have the same arguments.\n\n\n if (!sameArguments(node1.arguments || [], node2.arguments || [])) {\n return [[responseName, 'they have differing arguments'], [node1], [node2]];\n }\n }\n\n if (type1 && type2 && doTypesConflict(type1, type2)) {\n return [[responseName, \"they return conflicting types \".concat(inspect(type1), \" and \").concat(inspect(type2))], [node1], [node2]];\n } // Collect and compare sub-fields. Use the same \"visited fragment names\" list\n // for both collections so fields in a fragment reference are never\n // compared to themselves.\n\n\n var selectionSet1 = node1.selectionSet;\n var selectionSet2 = node2.selectionSet;\n\n if (selectionSet1 && selectionSet2) {\n var conflicts = findConflictsBetweenSubSelectionSets(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, getNamedType(type1), selectionSet1, getNamedType(type2), selectionSet2);\n return subfieldConflicts(conflicts, responseName, node1, node2);\n }\n}\n\nfunction sameArguments(arguments1, arguments2) {\n if (arguments1.length !== arguments2.length) {\n return false;\n }\n\n return arguments1.every(function (argument1) {\n var argument2 = find(arguments2, function (argument) {\n return argument.name.value === argument1.name.value;\n });\n\n if (!argument2) {\n return false;\n }\n\n return sameValue(argument1.value, argument2.value);\n });\n}\n\nfunction sameValue(value1, value2) {\n return !value1 && !value2 || print(value1) === print(value2);\n} // Two types conflict if both types could not apply to a value simultaneously.\n// Composite types are ignored as their individual field types will be compared\n// later recursively. However List and Non-Null types must match.\n\n\nfunction doTypesConflict(type1, type2) {\n if (isListType(type1)) {\n return isListType(type2) ? doTypesConflict(type1.ofType, type2.ofType) : true;\n }\n\n if (isListType(type2)) {\n return true;\n }\n\n if (isNonNullType(type1)) {\n return isNonNullType(type2) ? doTypesConflict(type1.ofType, type2.ofType) : true;\n }\n\n if (isNonNullType(type2)) {\n return true;\n }\n\n if (isLeafType(type1) || isLeafType(type2)) {\n return type1 !== type2;\n }\n\n return false;\n} // Given a selection set, return the collection of fields (a mapping of response\n// name to field nodes and definitions) as well as a list of fragment names\n// referenced via fragment spreads.\n\n\nfunction getFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, parentType, selectionSet) {\n var cached = cachedFieldsAndFragmentNames.get(selectionSet);\n\n if (!cached) {\n var nodeAndDefs = Object.create(null);\n var fragmentNames = Object.create(null);\n\n _collectFieldsAndFragmentNames(context, parentType, selectionSet, nodeAndDefs, fragmentNames);\n\n cached = [nodeAndDefs, Object.keys(fragmentNames)];\n cachedFieldsAndFragmentNames.set(selectionSet, cached);\n }\n\n return cached;\n} // Given a reference to a fragment, return the represented collection of fields\n// as well as a list of nested fragment names referenced via fragment spreads.\n\n\nfunction getReferencedFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, fragment) {\n // Short-circuit building a type from the node if possible.\n var cached = cachedFieldsAndFragmentNames.get(fragment.selectionSet);\n\n if (cached) {\n return cached;\n }\n\n var fragmentType = typeFromAST(context.getSchema(), fragment.typeCondition);\n return getFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, fragmentType, fragment.selectionSet);\n}\n\nfunction _collectFieldsAndFragmentNames(context, parentType, selectionSet, nodeAndDefs, fragmentNames) {\n for (var _i9 = 0, _selectionSet$selecti2 = selectionSet.selections; _i9 < _selectionSet$selecti2.length; _i9++) {\n var selection = _selectionSet$selecti2[_i9];\n\n switch (selection.kind) {\n case Kind.FIELD:\n {\n var fieldName = selection.name.value;\n var fieldDef = void 0;\n\n if (isObjectType(parentType) || isInterfaceType(parentType)) {\n fieldDef = parentType.getFields()[fieldName];\n }\n\n var responseName = selection.alias ? selection.alias.value : fieldName;\n\n if (!nodeAndDefs[responseName]) {\n nodeAndDefs[responseName] = [];\n }\n\n nodeAndDefs[responseName].push([parentType, selection, fieldDef]);\n break;\n }\n\n case Kind.FRAGMENT_SPREAD:\n fragmentNames[selection.name.value] = true;\n break;\n\n case Kind.INLINE_FRAGMENT:\n {\n var typeCondition = selection.typeCondition;\n var inlineFragmentType = typeCondition ? typeFromAST(context.getSchema(), typeCondition) : parentType;\n\n _collectFieldsAndFragmentNames(context, inlineFragmentType, selection.selectionSet, nodeAndDefs, fragmentNames);\n\n break;\n }\n }\n }\n} // Given a series of Conflicts which occurred between two sub-fields, generate\n// a single Conflict.\n\n\nfunction subfieldConflicts(conflicts, responseName, node1, node2) {\n if (conflicts.length > 0) {\n return [[responseName, conflicts.map(function (_ref6) {\n var reason = _ref6[0];\n return reason;\n })], conflicts.reduce(function (allFields, _ref7) {\n var fields1 = _ref7[1];\n return allFields.concat(fields1);\n }, [node1]), conflicts.reduce(function (allFields, _ref8) {\n var fields2 = _ref8[2];\n return allFields.concat(fields2);\n }, [node2])];\n }\n}\n/**\n * A way to keep track of pairs of things when the ordering of the pair does\n * not matter. We do this by maintaining a sort of double adjacency sets.\n */\n\n\nvar PairSet =\n/*#__PURE__*/\nfunction () {\n function PairSet() {\n this._data = Object.create(null);\n }\n\n var _proto = PairSet.prototype;\n\n _proto.has = function has(a, b, areMutuallyExclusive) {\n var first = this._data[a];\n var result = first && first[b];\n\n if (result === undefined) {\n return false;\n } // areMutuallyExclusive being false is a superset of being true,\n // hence if we want to know if this PairSet \"has\" these two with no\n // exclusivity, we have to ensure it was added as such.\n\n\n if (areMutuallyExclusive === false) {\n return result === false;\n }\n\n return true;\n };\n\n _proto.add = function add(a, b, areMutuallyExclusive) {\n _pairSetAdd(this._data, a, b, areMutuallyExclusive);\n\n _pairSetAdd(this._data, b, a, areMutuallyExclusive);\n };\n\n return PairSet;\n}();\n\nfunction _pairSetAdd(data, a, b, areMutuallyExclusive) {\n var map = data[a];\n\n if (!map) {\n map = Object.create(null);\n data[a] = map;\n }\n\n map[b] = areMutuallyExclusive;\n}","var _defKindToExtKind;\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nimport didYouMean from '../../jsutils/didYouMean';\nimport suggestionList from '../../jsutils/suggestionList';\nimport { GraphQLError } from '../../error/GraphQLError';\nimport { Kind } from '../../language/kinds';\nimport { isTypeDefinitionNode } from '../../language/predicates';\nimport { isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType } from '../../type/definition';\nexport function extendingUnknownTypeMessage(typeName, suggestedTypes) {\n return \"Cannot extend type \\\"\".concat(typeName, \"\\\" because it is not defined.\") + didYouMean(suggestedTypes.map(function (x) {\n return \"\\\"\".concat(x, \"\\\"\");\n }));\n}\nexport function extendingDifferentTypeKindMessage(typeName, kind) {\n return \"Cannot extend non-\".concat(kind, \" type \\\"\").concat(typeName, \"\\\".\");\n}\n/**\n * Possible type extension\n *\n * A type extension is only valid if the type is defined and has the same kind.\n */\n\nexport function PossibleTypeExtensions(context) {\n var schema = context.getSchema();\n var definedTypes = Object.create(null);\n\n for (var _i2 = 0, _context$getDocument$2 = context.getDocument().definitions; _i2 < _context$getDocument$2.length; _i2++) {\n var def = _context$getDocument$2[_i2];\n\n if (isTypeDefinitionNode(def)) {\n definedTypes[def.name.value] = def;\n }\n }\n\n return {\n ScalarTypeExtension: checkExtension,\n ObjectTypeExtension: checkExtension,\n InterfaceTypeExtension: checkExtension,\n UnionTypeExtension: checkExtension,\n EnumTypeExtension: checkExtension,\n InputObjectTypeExtension: checkExtension\n };\n\n function checkExtension(node) {\n var typeName = node.name.value;\n var defNode = definedTypes[typeName];\n var existingType = schema && schema.getType(typeName);\n\n if (defNode) {\n var expectedKind = defKindToExtKind[defNode.kind];\n\n if (expectedKind !== node.kind) {\n context.reportError(new GraphQLError(extendingDifferentTypeKindMessage(typeName, extensionKindToTypeName(expectedKind)), [defNode, node]));\n }\n } else if (existingType) {\n var _expectedKind = typeToExtKind(existingType);\n\n if (_expectedKind !== node.kind) {\n context.reportError(new GraphQLError(extendingDifferentTypeKindMessage(typeName, extensionKindToTypeName(_expectedKind)), node));\n }\n } else {\n var allTypeNames = Object.keys(definedTypes);\n\n if (schema) {\n allTypeNames = allTypeNames.concat(Object.keys(schema.getTypeMap()));\n }\n\n var suggestedTypes = suggestionList(typeName, allTypeNames);\n context.reportError(new GraphQLError(extendingUnknownTypeMessage(typeName, suggestedTypes), node.name));\n }\n }\n}\nvar defKindToExtKind = (_defKindToExtKind = {}, _defineProperty(_defKindToExtKind, Kind.SCALAR_TYPE_DEFINITION, Kind.SCALAR_TYPE_EXTENSION), _defineProperty(_defKindToExtKind, Kind.OBJECT_TYPE_DEFINITION, Kind.OBJECT_TYPE_EXTENSION), _defineProperty(_defKindToExtKind, Kind.INTERFACE_TYPE_DEFINITION, Kind.INTERFACE_TYPE_EXTENSION), _defineProperty(_defKindToExtKind, Kind.UNION_TYPE_DEFINITION, Kind.UNION_TYPE_EXTENSION), _defineProperty(_defKindToExtKind, Kind.ENUM_TYPE_DEFINITION, Kind.ENUM_TYPE_EXTENSION), _defineProperty(_defKindToExtKind, Kind.INPUT_OBJECT_TYPE_DEFINITION, Kind.INPUT_OBJECT_TYPE_EXTENSION), _defKindToExtKind);\n\nfunction typeToExtKind(type) {\n if (isScalarType(type)) {\n return Kind.SCALAR_TYPE_EXTENSION;\n } else if (isObjectType(type)) {\n return Kind.OBJECT_TYPE_EXTENSION;\n } else if (isInterfaceType(type)) {\n return Kind.INTERFACE_TYPE_EXTENSION;\n } else if (isUnionType(type)) {\n return Kind.UNION_TYPE_EXTENSION;\n } else if (isEnumType(type)) {\n return Kind.ENUM_TYPE_EXTENSION;\n } else if (isInputObjectType(type)) {\n return Kind.INPUT_OBJECT_TYPE_EXTENSION;\n }\n}\n\nfunction extensionKindToTypeName(kind) {\n switch (kind) {\n case Kind.SCALAR_TYPE_EXTENSION:\n return 'scalar';\n\n case Kind.OBJECT_TYPE_EXTENSION:\n return 'object';\n\n case Kind.INTERFACE_TYPE_EXTENSION:\n return 'interface';\n\n case Kind.UNION_TYPE_EXTENSION:\n return 'union';\n\n case Kind.ENUM_TYPE_EXTENSION:\n return 'enum';\n\n case Kind.INPUT_OBJECT_TYPE_EXTENSION:\n return 'input object';\n\n default:\n return 'unknown type';\n }\n}","import { GraphQLError } from '../../error/GraphQLError';\nexport function duplicateInputFieldMessage(fieldName) {\n return \"There can be only one input field named \\\"\".concat(fieldName, \"\\\".\");\n}\n/**\n * Unique input field names\n *\n * A GraphQL input object value is only valid if all supplied fields are\n * uniquely named.\n */\n\nexport function UniqueInputFieldNames(context) {\n var knownNameStack = [];\n var knownNames = Object.create(null);\n return {\n ObjectValue: {\n enter: function enter() {\n knownNameStack.push(knownNames);\n knownNames = Object.create(null);\n },\n leave: function leave() {\n knownNames = knownNameStack.pop();\n }\n },\n ObjectField: function ObjectField(node) {\n var fieldName = node.name.value;\n\n if (knownNames[fieldName]) {\n context.reportError(new GraphQLError(duplicateInputFieldMessage(fieldName), [knownNames[fieldName], node.name]));\n } else {\n knownNames[fieldName] = node.name;\n }\n }\n };\n}","import { GraphQLError } from '../../error/GraphQLError';\nexport function duplicateOperationTypeMessage(operation) {\n return \"There can be only one \".concat(operation, \" type in schema.\");\n}\nexport function existedOperationTypeMessage(operation) {\n return \"Type for \".concat(operation, \" already defined in the schema. It cannot be redefined.\");\n}\n/**\n * Unique operation types\n *\n * A GraphQL document is only valid if it has only one type per operation.\n */\n\nexport function UniqueOperationTypes(context) {\n var schema = context.getSchema();\n var definedOperationTypes = Object.create(null);\n var existingOperationTypes = schema ? {\n query: schema.getQueryType(),\n mutation: schema.getMutationType(),\n subscription: schema.getSubscriptionType()\n } : {};\n return {\n SchemaDefinition: checkOperationTypes,\n SchemaExtension: checkOperationTypes\n };\n\n function checkOperationTypes(node) {\n if (node.operationTypes) {\n for (var _i2 = 0, _ref2 = node.operationTypes || []; _i2 < _ref2.length; _i2++) {\n var operationType = _ref2[_i2];\n var operation = operationType.operation;\n var alreadyDefinedOperationType = definedOperationTypes[operation];\n\n if (existingOperationTypes[operation]) {\n context.reportError(new GraphQLError(existedOperationTypeMessage(operation), operationType));\n } else if (alreadyDefinedOperationType) {\n context.reportError(new GraphQLError(duplicateOperationTypeMessage(operation), [alreadyDefinedOperationType, operationType]));\n } else {\n definedOperationTypes[operation] = operationType;\n }\n }\n }\n\n return false;\n }\n}","import { GraphQLError } from '../../error/GraphQLError';\nimport { isEnumType } from '../../type/definition';\nexport function duplicateEnumValueNameMessage(typeName, valueName) {\n return \"Enum value \\\"\".concat(typeName, \".\").concat(valueName, \"\\\" can only be defined once.\");\n}\nexport function existedEnumValueNameMessage(typeName, valueName) {\n return \"Enum value \\\"\".concat(typeName, \".\").concat(valueName, \"\\\" already exists in the schema. It cannot also be defined in this type extension.\");\n}\n/**\n * Unique enum value names\n *\n * A GraphQL enum type is only valid if all its values are uniquely named.\n */\n\nexport function UniqueEnumValueNames(context) {\n var schema = context.getSchema();\n var existingTypeMap = schema ? schema.getTypeMap() : Object.create(null);\n var knownValueNames = Object.create(null);\n return {\n EnumTypeDefinition: checkValueUniqueness,\n EnumTypeExtension: checkValueUniqueness\n };\n\n function checkValueUniqueness(node) {\n var typeName = node.name.value;\n\n if (!knownValueNames[typeName]) {\n knownValueNames[typeName] = Object.create(null);\n }\n\n if (node.values) {\n var valueNames = knownValueNames[typeName];\n\n for (var _i2 = 0, _node$values2 = node.values; _i2 < _node$values2.length; _i2++) {\n var valueDef = _node$values2[_i2];\n var valueName = valueDef.name.value;\n var existingType = existingTypeMap[typeName];\n\n if (isEnumType(existingType) && existingType.getValue(valueName)) {\n context.reportError(new GraphQLError(existedEnumValueNameMessage(typeName, valueName), valueDef.name));\n } else if (valueNames[valueName]) {\n context.reportError(new GraphQLError(duplicateEnumValueNameMessage(typeName, valueName), [valueNames[valueName], valueDef.name]));\n } else {\n valueNames[valueName] = valueDef.name;\n }\n }\n }\n\n return false;\n }\n}","import { GraphQLError } from '../../error/GraphQLError';\nimport { isObjectType, isInterfaceType, isInputObjectType } from '../../type/definition';\nexport function duplicateFieldDefinitionNameMessage(typeName, fieldName) {\n return \"Field \\\"\".concat(typeName, \".\").concat(fieldName, \"\\\" can only be defined once.\");\n}\nexport function existedFieldDefinitionNameMessage(typeName, fieldName) {\n return \"Field \\\"\".concat(typeName, \".\").concat(fieldName, \"\\\" already exists in the schema. It cannot also be defined in this type extension.\");\n}\n/**\n * Unique field definition names\n *\n * A GraphQL complex type is only valid if all its fields are uniquely named.\n */\n\nexport function UniqueFieldDefinitionNames(context) {\n var schema = context.getSchema();\n var existingTypeMap = schema ? schema.getTypeMap() : Object.create(null);\n var knownFieldNames = Object.create(null);\n return {\n InputObjectTypeDefinition: checkFieldUniqueness,\n InputObjectTypeExtension: checkFieldUniqueness,\n InterfaceTypeDefinition: checkFieldUniqueness,\n InterfaceTypeExtension: checkFieldUniqueness,\n ObjectTypeDefinition: checkFieldUniqueness,\n ObjectTypeExtension: checkFieldUniqueness\n };\n\n function checkFieldUniqueness(node) {\n var typeName = node.name.value;\n\n if (!knownFieldNames[typeName]) {\n knownFieldNames[typeName] = Object.create(null);\n }\n\n if (node.fields) {\n var fieldNames = knownFieldNames[typeName];\n\n for (var _i2 = 0, _node$fields2 = node.fields; _i2 < _node$fields2.length; _i2++) {\n var fieldDef = _node$fields2[_i2];\n var fieldName = fieldDef.name.value;\n\n if (hasField(existingTypeMap[typeName], fieldName)) {\n context.reportError(new GraphQLError(existedFieldDefinitionNameMessage(typeName, fieldName), fieldDef.name));\n } else if (fieldNames[fieldName]) {\n context.reportError(new GraphQLError(duplicateFieldDefinitionNameMessage(typeName, fieldName), [fieldNames[fieldName], fieldDef.name]));\n } else {\n fieldNames[fieldName] = fieldDef.name;\n }\n }\n }\n\n return false;\n }\n}\n\nfunction hasField(type, fieldName) {\n if (isObjectType(type) || isInterfaceType(type) || isInputObjectType(type)) {\n return type.getFields()[fieldName];\n }\n\n return false;\n}","// Spec Section: \"Executable Definitions\"\nimport { ExecutableDefinitions } from './rules/ExecutableDefinitions'; // Spec Section: \"Operation Name Uniqueness\"\n\nimport { UniqueOperationNames } from './rules/UniqueOperationNames'; // Spec Section: \"Lone Anonymous Operation\"\n\nimport { LoneAnonymousOperation } from './rules/LoneAnonymousOperation'; // Spec Section: \"Subscriptions with Single Root Field\"\n\nimport { SingleFieldSubscriptions } from './rules/SingleFieldSubscriptions'; // Spec Section: \"Fragment Spread Type Existence\"\n\nimport { KnownTypeNames } from './rules/KnownTypeNames'; // Spec Section: \"Fragments on Composite Types\"\n\nimport { FragmentsOnCompositeTypes } from './rules/FragmentsOnCompositeTypes'; // Spec Section: \"Variables are Input Types\"\n\nimport { VariablesAreInputTypes } from './rules/VariablesAreInputTypes'; // Spec Section: \"Leaf Field Selections\"\n\nimport { ScalarLeafs } from './rules/ScalarLeafs'; // Spec Section: \"Field Selections on Objects, Interfaces, and Unions Types\"\n\nimport { FieldsOnCorrectType } from './rules/FieldsOnCorrectType'; // Spec Section: \"Fragment Name Uniqueness\"\n\nimport { UniqueFragmentNames } from './rules/UniqueFragmentNames'; // Spec Section: \"Fragment spread target defined\"\n\nimport { KnownFragmentNames } from './rules/KnownFragmentNames'; // Spec Section: \"Fragments must be used\"\n\nimport { NoUnusedFragments } from './rules/NoUnusedFragments'; // Spec Section: \"Fragment spread is possible\"\n\nimport { PossibleFragmentSpreads } from './rules/PossibleFragmentSpreads'; // Spec Section: \"Fragments must not form cycles\"\n\nimport { NoFragmentCycles } from './rules/NoFragmentCycles'; // Spec Section: \"Variable Uniqueness\"\n\nimport { UniqueVariableNames } from './rules/UniqueVariableNames'; // Spec Section: \"All Variable Used Defined\"\n\nimport { NoUndefinedVariables } from './rules/NoUndefinedVariables'; // Spec Section: \"All Variables Used\"\n\nimport { NoUnusedVariables } from './rules/NoUnusedVariables'; // Spec Section: \"Directives Are Defined\"\n\nimport { KnownDirectives } from './rules/KnownDirectives'; // Spec Section: \"Directives Are Unique Per Location\"\n\nimport { UniqueDirectivesPerLocation } from './rules/UniqueDirectivesPerLocation'; // Spec Section: \"Argument Names\"\n\nimport { KnownArgumentNames, KnownArgumentNamesOnDirectives // @internal\n} from './rules/KnownArgumentNames'; // Spec Section: \"Argument Uniqueness\"\n\nimport { UniqueArgumentNames } from './rules/UniqueArgumentNames'; // Spec Section: \"Value Type Correctness\"\n\nimport { ValuesOfCorrectType } from './rules/ValuesOfCorrectType'; // Spec Section: \"Argument Optionality\"\n\nimport { ProvidedRequiredArguments, ProvidedRequiredArgumentsOnDirectives // @internal\n} from './rules/ProvidedRequiredArguments'; // Spec Section: \"All Variable Usages Are Allowed\"\n\nimport { VariablesInAllowedPosition } from './rules/VariablesInAllowedPosition'; // Spec Section: \"Field Selection Merging\"\n\nimport { OverlappingFieldsCanBeMerged } from './rules/OverlappingFieldsCanBeMerged'; // Spec Section: \"Input Object Field Uniqueness\"\n\nimport { UniqueInputFieldNames } from './rules/UniqueInputFieldNames';\n/**\n * This set includes all validation rules defined by the GraphQL spec.\n *\n * The order of the rules in this list has been adjusted to lead to the\n * most clear output when encountering multiple validation errors.\n */\n\nexport var specifiedRules = Object.freeze([ExecutableDefinitions, UniqueOperationNames, LoneAnonymousOperation, SingleFieldSubscriptions, KnownTypeNames, FragmentsOnCompositeTypes, VariablesAreInputTypes, ScalarLeafs, FieldsOnCorrectType, UniqueFragmentNames, KnownFragmentNames, NoUnusedFragments, PossibleFragmentSpreads, NoFragmentCycles, UniqueVariableNames, NoUndefinedVariables, NoUnusedVariables, KnownDirectives, UniqueDirectivesPerLocation, KnownArgumentNames, UniqueArgumentNames, ValuesOfCorrectType, ProvidedRequiredArguments, VariablesInAllowedPosition, OverlappingFieldsCanBeMerged, UniqueInputFieldNames]);\nimport { LoneSchemaDefinition } from './rules/LoneSchemaDefinition';\nimport { UniqueOperationTypes } from './rules/UniqueOperationTypes';\nimport { UniqueTypeNames } from './rules/UniqueTypeNames';\nimport { UniqueEnumValueNames } from './rules/UniqueEnumValueNames';\nimport { UniqueFieldDefinitionNames } from './rules/UniqueFieldDefinitionNames';\nimport { UniqueDirectiveNames } from './rules/UniqueDirectiveNames';\nimport { PossibleTypeExtensions } from './rules/PossibleTypeExtensions'; // @internal\n\nexport var specifiedSDLRules = Object.freeze([LoneSchemaDefinition, UniqueOperationTypes, UniqueTypeNames, UniqueEnumValueNames, UniqueFieldDefinitionNames, UniqueDirectiveNames, KnownTypeNames, KnownDirectives, UniqueDirectivesPerLocation, PossibleTypeExtensions, KnownArgumentNamesOnDirectives, UniqueArgumentNames, UniqueInputFieldNames, ProvidedRequiredArgumentsOnDirectives]);","import { GraphQLError } from '../../error/GraphQLError';\nexport function schemaDefinitionNotAloneMessage() {\n return 'Must provide only one schema definition.';\n}\nexport function canNotDefineSchemaWithinExtensionMessage() {\n return 'Cannot define a new schema within a schema extension.';\n}\n/**\n * Lone Schema definition\n *\n * A GraphQL document is only valid if it contains only one schema definition.\n */\n\nexport function LoneSchemaDefinition(context) {\n var oldSchema = context.getSchema();\n var alreadyDefined = oldSchema && (oldSchema.astNode || oldSchema.getQueryType() || oldSchema.getMutationType() || oldSchema.getSubscriptionType());\n var schemaDefinitionsCount = 0;\n return {\n SchemaDefinition: function SchemaDefinition(node) {\n if (alreadyDefined) {\n context.reportError(new GraphQLError(canNotDefineSchemaWithinExtensionMessage(), node));\n return;\n }\n\n if (schemaDefinitionsCount > 0) {\n context.reportError(new GraphQLError(schemaDefinitionNotAloneMessage(), node));\n }\n\n ++schemaDefinitionsCount;\n }\n };\n}","import { GraphQLError } from '../../error/GraphQLError';\nexport function duplicateTypeNameMessage(typeName) {\n return \"There can be only one type named \\\"\".concat(typeName, \"\\\".\");\n}\nexport function existedTypeNameMessage(typeName) {\n return \"Type \\\"\".concat(typeName, \"\\\" already exists in the schema. It cannot also be defined in this type definition.\");\n}\n/**\n * Unique type names\n *\n * A GraphQL document is only valid if all defined types have unique names.\n */\n\nexport function UniqueTypeNames(context) {\n var knownTypeNames = Object.create(null);\n var schema = context.getSchema();\n return {\n ScalarTypeDefinition: checkTypeName,\n ObjectTypeDefinition: checkTypeName,\n InterfaceTypeDefinition: checkTypeName,\n UnionTypeDefinition: checkTypeName,\n EnumTypeDefinition: checkTypeName,\n InputObjectTypeDefinition: checkTypeName\n };\n\n function checkTypeName(node) {\n var typeName = node.name.value;\n\n if (schema && schema.getType(typeName)) {\n context.reportError(new GraphQLError(existedTypeNameMessage(typeName), node.name));\n return;\n }\n\n if (knownTypeNames[typeName]) {\n context.reportError(new GraphQLError(duplicateTypeNameMessage(typeName), [knownTypeNames[typeName], node.name]));\n } else {\n knownTypeNames[typeName] = node.name;\n }\n\n return false;\n }\n}","import { GraphQLError } from '../../error/GraphQLError';\nexport function duplicateDirectiveNameMessage(directiveName) {\n return \"There can be only one directive named \\\"\".concat(directiveName, \"\\\".\");\n}\nexport function existedDirectiveNameMessage(directiveName) {\n return \"Directive \\\"\".concat(directiveName, \"\\\" already exists in the schema. It cannot be redefined.\");\n}\n/**\n * Unique directive names\n *\n * A GraphQL document is only valid if all defined directives have unique names.\n */\n\nexport function UniqueDirectiveNames(context) {\n var knownDirectiveNames = Object.create(null);\n var schema = context.getSchema();\n return {\n DirectiveDefinition: function DirectiveDefinition(node) {\n var directiveName = node.name.value;\n\n if (schema && schema.getDirective(directiveName)) {\n context.reportError(new GraphQLError(existedDirectiveNameMessage(directiveName), node.name));\n return;\n }\n\n if (knownDirectiveNames[directiveName]) {\n context.reportError(new GraphQLError(duplicateDirectiveNameMessage(directiveName), [knownDirectiveNames[directiveName], node.name]));\n } else {\n knownDirectiveNames[directiveName] = node.name;\n }\n\n return false;\n }\n };\n}","function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nimport { Kind } from '../language/kinds';\nimport { visit, visitWithTypeInfo } from '../language/visitor';\nimport { TypeInfo } from '../utilities/TypeInfo';\n/**\n * An instance of this class is passed as the \"this\" context to all validators,\n * allowing access to commonly useful contextual information from within a\n * validation rule.\n */\n\nexport var ASTValidationContext =\n/*#__PURE__*/\nfunction () {\n function ASTValidationContext(ast, onError) {\n this._ast = ast;\n this._errors = [];\n this._fragments = undefined;\n this._fragmentSpreads = new Map();\n this._recursivelyReferencedFragments = new Map();\n this._onError = onError;\n }\n\n var _proto = ASTValidationContext.prototype;\n\n _proto.reportError = function reportError(error) {\n this._errors.push(error);\n\n if (this._onError) {\n this._onError(error);\n }\n } // @deprecated: use onError callback instead - will be removed in v15.\n ;\n\n _proto.getErrors = function getErrors() {\n return this._errors;\n };\n\n _proto.getDocument = function getDocument() {\n return this._ast;\n };\n\n _proto.getFragment = function getFragment(name) {\n var fragments = this._fragments;\n\n if (!fragments) {\n this._fragments = fragments = this.getDocument().definitions.reduce(function (frags, statement) {\n if (statement.kind === Kind.FRAGMENT_DEFINITION) {\n frags[statement.name.value] = statement;\n }\n\n return frags;\n }, Object.create(null));\n }\n\n return fragments[name];\n };\n\n _proto.getFragmentSpreads = function getFragmentSpreads(node) {\n var spreads = this._fragmentSpreads.get(node);\n\n if (!spreads) {\n spreads = [];\n var setsToVisit = [node];\n\n while (setsToVisit.length !== 0) {\n var set = setsToVisit.pop();\n\n for (var _i2 = 0, _set$selections2 = set.selections; _i2 < _set$selections2.length; _i2++) {\n var selection = _set$selections2[_i2];\n\n if (selection.kind === Kind.FRAGMENT_SPREAD) {\n spreads.push(selection);\n } else if (selection.selectionSet) {\n setsToVisit.push(selection.selectionSet);\n }\n }\n }\n\n this._fragmentSpreads.set(node, spreads);\n }\n\n return spreads;\n };\n\n _proto.getRecursivelyReferencedFragments = function getRecursivelyReferencedFragments(operation) {\n var fragments = this._recursivelyReferencedFragments.get(operation);\n\n if (!fragments) {\n fragments = [];\n var collectedNames = Object.create(null);\n var nodesToVisit = [operation.selectionSet];\n\n while (nodesToVisit.length !== 0) {\n var node = nodesToVisit.pop();\n\n for (var _i4 = 0, _this$getFragmentSpre2 = this.getFragmentSpreads(node); _i4 < _this$getFragmentSpre2.length; _i4++) {\n var spread = _this$getFragmentSpre2[_i4];\n var fragName = spread.name.value;\n\n if (collectedNames[fragName] !== true) {\n collectedNames[fragName] = true;\n var fragment = this.getFragment(fragName);\n\n if (fragment) {\n fragments.push(fragment);\n nodesToVisit.push(fragment.selectionSet);\n }\n }\n }\n }\n\n this._recursivelyReferencedFragments.set(operation, fragments);\n }\n\n return fragments;\n };\n\n return ASTValidationContext;\n}();\nexport var SDLValidationContext =\n/*#__PURE__*/\nfunction (_ASTValidationContext) {\n _inheritsLoose(SDLValidationContext, _ASTValidationContext);\n\n function SDLValidationContext(ast, schema, onError) {\n var _this;\n\n _this = _ASTValidationContext.call(this, ast, onError) || this;\n _this._schema = schema;\n return _this;\n }\n\n var _proto2 = SDLValidationContext.prototype;\n\n _proto2.getSchema = function getSchema() {\n return this._schema;\n };\n\n return SDLValidationContext;\n}(ASTValidationContext);\nexport var ValidationContext =\n/*#__PURE__*/\nfunction (_ASTValidationContext2) {\n _inheritsLoose(ValidationContext, _ASTValidationContext2);\n\n function ValidationContext(schema, ast, typeInfo, onError) {\n var _this2;\n\n _this2 = _ASTValidationContext2.call(this, ast, onError) || this;\n _this2._schema = schema;\n _this2._typeInfo = typeInfo;\n _this2._variableUsages = new Map();\n _this2._recursiveVariableUsages = new Map();\n return _this2;\n }\n\n var _proto3 = ValidationContext.prototype;\n\n _proto3.getSchema = function getSchema() {\n return this._schema;\n };\n\n _proto3.getVariableUsages = function getVariableUsages(node) {\n var usages = this._variableUsages.get(node);\n\n if (!usages) {\n var newUsages = [];\n var typeInfo = new TypeInfo(this._schema);\n visit(node, visitWithTypeInfo(typeInfo, {\n VariableDefinition: function VariableDefinition() {\n return false;\n },\n Variable: function Variable(variable) {\n newUsages.push({\n node: variable,\n type: typeInfo.getInputType(),\n defaultValue: typeInfo.getDefaultValue()\n });\n }\n }));\n usages = newUsages;\n\n this._variableUsages.set(node, usages);\n }\n\n return usages;\n };\n\n _proto3.getRecursiveVariableUsages = function getRecursiveVariableUsages(operation) {\n var usages = this._recursiveVariableUsages.get(operation);\n\n if (!usages) {\n usages = this.getVariableUsages(operation);\n\n for (var _i6 = 0, _this$getRecursivelyR2 = this.getRecursivelyReferencedFragments(operation); _i6 < _this$getRecursivelyR2.length; _i6++) {\n var frag = _this$getRecursivelyR2[_i6];\n usages = usages.concat(this.getVariableUsages(frag));\n }\n\n this._recursiveVariableUsages.set(operation, usages);\n }\n\n return usages;\n };\n\n _proto3.getType = function getType() {\n return this._typeInfo.getType();\n };\n\n _proto3.getParentType = function getParentType() {\n return this._typeInfo.getParentType();\n };\n\n _proto3.getInputType = function getInputType() {\n return this._typeInfo.getInputType();\n };\n\n _proto3.getParentInputType = function getParentInputType() {\n return this._typeInfo.getParentInputType();\n };\n\n _proto3.getFieldDef = function getFieldDef() {\n return this._typeInfo.getFieldDef();\n };\n\n _proto3.getDirective = function getDirective() {\n return this._typeInfo.getDirective();\n };\n\n _proto3.getArgument = function getArgument() {\n return this._typeInfo.getArgument();\n };\n\n return ValidationContext;\n}(ASTValidationContext);","import devAssert from '../jsutils/devAssert';\nimport { GraphQLError } from '../error/GraphQLError';\nimport { visit, visitInParallel, visitWithTypeInfo } from '../language/visitor';\nimport { assertValidSchema } from '../type/validate';\nimport { TypeInfo } from '../utilities/TypeInfo';\nimport { specifiedRules, specifiedSDLRules } from './specifiedRules';\nimport { SDLValidationContext, ValidationContext } from './ValidationContext';\nexport var ABORT_VALIDATION = Object.freeze({});\n/**\n * Implements the \"Validation\" section of the spec.\n *\n * Validation runs synchronously, returning an array of encountered errors, or\n * an empty array if no errors were encountered and the document is valid.\n *\n * A list of specific validation rules may be provided. If not provided, the\n * default list of rules defined by the GraphQL specification will be used.\n *\n * Each validation rules is a function which returns a visitor\n * (see the language/visitor API). Visitor methods are expected to return\n * GraphQLErrors, or Arrays of GraphQLErrors when invalid.\n *\n * Optionally a custom TypeInfo instance may be provided. If not provided, one\n * will be created from the provided schema.\n */\n\nexport function validate(schema, documentAST) {\n var rules = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : specifiedRules;\n var typeInfo = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : new TypeInfo(schema);\n var options = arguments.length > 4 ? arguments[4] : undefined;\n documentAST || devAssert(0, 'Must provide document'); // If the schema used for validation is invalid, throw an error.\n\n assertValidSchema(schema);\n var abortObj = Object.freeze({});\n var errors = [];\n var maxErrors = options && options.maxErrors;\n var context = new ValidationContext(schema, documentAST, typeInfo, function (error) {\n if (maxErrors != null && errors.length >= maxErrors) {\n errors.push(new GraphQLError('Too many validation errors, error limit reached. Validation aborted.'));\n throw abortObj;\n }\n\n errors.push(error);\n }); // This uses a specialized visitor which runs multiple visitors in parallel,\n // while maintaining the visitor skip and break API.\n\n var visitor = visitInParallel(rules.map(function (rule) {\n return rule(context);\n })); // Visit the whole document with each instance of all provided rules.\n\n try {\n visit(documentAST, visitWithTypeInfo(typeInfo, visitor));\n } catch (e) {\n if (e !== abortObj) {\n throw e;\n }\n }\n\n return errors;\n} // @internal\n\nexport function validateSDL(documentAST, schemaToExtend) {\n var rules = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : specifiedSDLRules;\n var errors = [];\n var context = new SDLValidationContext(documentAST, schemaToExtend, function (error) {\n errors.push(error);\n });\n var visitors = rules.map(function (rule) {\n return rule(context);\n });\n visit(documentAST, visitInParallel(visitors));\n return errors;\n}\n/**\n * Utility function which asserts a SDL document is valid by throwing an error\n * if it is invalid.\n *\n * @internal\n */\n\nexport function assertValidSDL(documentAST) {\n var errors = validateSDL(documentAST);\n\n if (errors.length !== 0) {\n throw new Error(errors.map(function (error) {\n return error.message;\n }).join('\\n\\n'));\n }\n}\n/**\n * Utility function which asserts a SDL document is valid by throwing an error\n * if it is invalid.\n *\n * @internal\n */\n\nexport function assertValidSDLExtension(documentAST, schema) {\n var errors = validateSDL(documentAST, schema);\n\n if (errors.length !== 0) {\n throw new Error(errors.map(function (error) {\n return error.message;\n }).join('\\n\\n'));\n }\n}","/**\n * Given a Path and a key, return a new Path containing the new key.\n */\nexport function addPath(prev, key) {\n return {\n prev: prev,\n key: key\n };\n}\n/**\n * Given a Path, return an Array of the path keys.\n */\n\nexport function pathToArray(path) {\n var flattened = [];\n var curr = path;\n\n while (curr) {\n flattened.push(curr.key);\n curr = curr.prev;\n }\n\n return flattened.reverse();\n}","import { GraphQLError } from './GraphQLError';\n/**\n * Given an arbitrary Error, presumably thrown while attempting to execute a\n * GraphQL operation, produce a new GraphQLError aware of the location in the\n * document responsible for the original Error.\n */\n\nexport function locatedError(originalError, nodes, path) {\n // Note: this uses a brand-check to support GraphQL errors originating from\n // other contexts.\n if (originalError && Array.isArray(originalError.path)) {\n return originalError;\n }\n\n return new GraphQLError(originalError && originalError.message, originalError && originalError.nodes || nodes, originalError && originalError.source, originalError && originalError.positions, path, originalError);\n}","import { GraphQLError } from '../error/GraphQLError';\n/**\n * Extracts the root type of the operation from the schema.\n */\n\nexport function getOperationRootType(schema, operation) {\n if (operation.operation === 'query') {\n var queryType = schema.getQueryType();\n\n if (!queryType) {\n throw new GraphQLError('Schema does not define the required query root type.', operation);\n }\n\n return queryType;\n }\n\n if (operation.operation === 'mutation') {\n var mutationType = schema.getMutationType();\n\n if (!mutationType) {\n throw new GraphQLError('Schema is not configured for mutations.', operation);\n }\n\n return mutationType;\n }\n\n if (operation.operation === 'subscription') {\n var subscriptionType = schema.getSubscriptionType();\n\n if (!subscriptionType) {\n throw new GraphQLError('Schema is not configured for subscriptions.', operation);\n }\n\n return subscriptionType;\n }\n\n throw new GraphQLError('Can only have query, mutation and subscription operations.', operation);\n}","/**\n * Build a string describing the path.\n */\nexport default function printPathArray(path) {\n return path.map(function (key) {\n return typeof key === 'number' ? '[' + key.toString() + ']' : '.' + key;\n }).join('');\n}","import objectValues from '../polyfills/objectValues';\nimport keyMap from '../jsutils/keyMap';\nimport inspect from '../jsutils/inspect';\nimport invariant from '../jsutils/invariant';\nimport isInvalid from '../jsutils/isInvalid';\nimport { Kind } from '../language/kinds';\nimport { isScalarType, isEnumType, isInputObjectType, isListType, isNonNullType } from '../type/definition';\n/**\n * Produces a JavaScript value given a GraphQL Value AST.\n *\n * A GraphQL type must be provided, which will be used to interpret different\n * GraphQL Value literals.\n *\n * Returns `undefined` when the value could not be validly coerced according to\n * the provided type.\n *\n * | GraphQL Value | JSON Value |\n * | -------------------- | ------------- |\n * | Input Object | Object |\n * | List | Array |\n * | Boolean | Boolean |\n * | String | String |\n * | Int / Float | Number |\n * | Enum Value | Mixed |\n * | NullValue | null |\n *\n */\n\nexport function valueFromAST(valueNode, type, variables) {\n if (!valueNode) {\n // When there is no node, then there is also no value.\n // Importantly, this is different from returning the value null.\n return;\n }\n\n if (isNonNullType(type)) {\n if (valueNode.kind === Kind.NULL) {\n return; // Invalid: intentionally return no value.\n }\n\n return valueFromAST(valueNode, type.ofType, variables);\n }\n\n if (valueNode.kind === Kind.NULL) {\n // This is explicitly returning the value null.\n return null;\n }\n\n if (valueNode.kind === Kind.VARIABLE) {\n var variableName = valueNode.name.value;\n\n if (!variables || isInvalid(variables[variableName])) {\n // No valid return value.\n return;\n }\n\n var variableValue = variables[variableName];\n\n if (variableValue === null && isNonNullType(type)) {\n return; // Invalid: intentionally return no value.\n } // Note: This does no further checking that this variable is correct.\n // This assumes that this query has been validated and the variable\n // usage here is of the correct type.\n\n\n return variableValue;\n }\n\n if (isListType(type)) {\n var itemType = type.ofType;\n\n if (valueNode.kind === Kind.LIST) {\n var coercedValues = [];\n\n for (var _i2 = 0, _valueNode$values2 = valueNode.values; _i2 < _valueNode$values2.length; _i2++) {\n var itemNode = _valueNode$values2[_i2];\n\n if (isMissingVariable(itemNode, variables)) {\n // If an array contains a missing variable, it is either coerced to\n // null or if the item type is non-null, it considered invalid.\n if (isNonNullType(itemType)) {\n return; // Invalid: intentionally return no value.\n }\n\n coercedValues.push(null);\n } else {\n var itemValue = valueFromAST(itemNode, itemType, variables);\n\n if (isInvalid(itemValue)) {\n return; // Invalid: intentionally return no value.\n }\n\n coercedValues.push(itemValue);\n }\n }\n\n return coercedValues;\n }\n\n var coercedValue = valueFromAST(valueNode, itemType, variables);\n\n if (isInvalid(coercedValue)) {\n return; // Invalid: intentionally return no value.\n }\n\n return [coercedValue];\n }\n\n if (isInputObjectType(type)) {\n if (valueNode.kind !== Kind.OBJECT) {\n return; // Invalid: intentionally return no value.\n }\n\n var coercedObj = Object.create(null);\n var fieldNodes = keyMap(valueNode.fields, function (field) {\n return field.name.value;\n });\n\n for (var _i4 = 0, _objectValues2 = objectValues(type.getFields()); _i4 < _objectValues2.length; _i4++) {\n var field = _objectValues2[_i4];\n var fieldNode = fieldNodes[field.name];\n\n if (!fieldNode || isMissingVariable(fieldNode.value, variables)) {\n if (field.defaultValue !== undefined) {\n coercedObj[field.name] = field.defaultValue;\n } else if (isNonNullType(field.type)) {\n return; // Invalid: intentionally return no value.\n }\n\n continue;\n }\n\n var fieldValue = valueFromAST(fieldNode.value, field.type, variables);\n\n if (isInvalid(fieldValue)) {\n return; // Invalid: intentionally return no value.\n }\n\n coercedObj[field.name] = fieldValue;\n }\n\n return coercedObj;\n }\n\n if (isEnumType(type)) {\n if (valueNode.kind !== Kind.ENUM) {\n return; // Invalid: intentionally return no value.\n }\n\n var enumValue = type.getValue(valueNode.value);\n\n if (!enumValue) {\n return; // Invalid: intentionally return no value.\n }\n\n return enumValue.value;\n }\n /* istanbul ignore else */\n\n\n if (isScalarType(type)) {\n // Scalars fulfill parsing a literal value via parseLiteral().\n // Invalid values represent a failure to parse correctly, in which case\n // no value is returned.\n var result;\n\n try {\n result = type.parseLiteral(valueNode, variables);\n } catch (_error) {\n return; // Invalid: intentionally return no value.\n }\n\n if (isInvalid(result)) {\n return; // Invalid: intentionally return no value.\n }\n\n return result;\n } // Not reachable. All possible input types have been considered.\n\n /* istanbul ignore next */\n\n\n invariant(false, 'Unexpected input type: ' + inspect(type));\n} // Returns true if the provided valueNode is a variable which is not defined\n// in the set of variables.\n\nfunction isMissingVariable(valueNode, variables) {\n return valueNode.kind === Kind.VARIABLE && (!variables || isInvalid(variables[valueNode.name.value]));\n}","import { forEach, isCollection } from 'iterall';\nimport objectValues from '../polyfills/objectValues';\nimport inspect from '../jsutils/inspect';\nimport invariant from '../jsutils/invariant';\nimport didYouMean from '../jsutils/didYouMean';\nimport isObjectLike from '../jsutils/isObjectLike';\nimport suggestionList from '../jsutils/suggestionList';\nimport printPathArray from '../jsutils/printPathArray';\nimport { addPath, pathToArray } from '../jsutils/Path';\nimport { GraphQLError } from '../error/GraphQLError';\nimport { isScalarType, isEnumType, isInputObjectType, isListType, isNonNullType } from '../type/definition';\n/**\n * Coerces a JavaScript value given a GraphQL Input Type.\n */\n\nexport function coerceInputValue(inputValue, type) {\n var onError = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultOnError;\n return coerceInputValueImpl(inputValue, type, onError);\n}\n\nfunction defaultOnError(path, invalidValue, error) {\n var errorPrefix = 'Invalid value ' + inspect(invalidValue);\n\n if (path.length > 0) {\n errorPrefix += \" at \\\"value\".concat(printPathArray(path), \"\\\": \");\n }\n\n error.message = errorPrefix + ': ' + error.message;\n throw error;\n}\n\nfunction coerceInputValueImpl(inputValue, type, onError, path) {\n if (isNonNullType(type)) {\n if (inputValue != null) {\n return coerceInputValueImpl(inputValue, type.ofType, onError, path);\n }\n\n onError(pathToArray(path), inputValue, new GraphQLError(\"Expected non-nullable type \".concat(inspect(type), \" not to be null.\")));\n return;\n }\n\n if (inputValue == null) {\n // Explicitly return the value null.\n return null;\n }\n\n if (isListType(type)) {\n var itemType = type.ofType;\n\n if (isCollection(inputValue)) {\n var coercedValue = [];\n forEach(inputValue, function (itemValue, index) {\n coercedValue.push(coerceInputValueImpl(itemValue, itemType, onError, addPath(path, index)));\n });\n return coercedValue;\n } // Lists accept a non-list value as a list of one.\n\n\n return [coerceInputValueImpl(inputValue, itemType, onError, path)];\n }\n\n if (isInputObjectType(type)) {\n if (!isObjectLike(inputValue)) {\n onError(pathToArray(path), inputValue, new GraphQLError(\"Expected type \".concat(type.name, \" to be an object.\")));\n return;\n }\n\n var _coercedValue = {};\n var fieldDefs = type.getFields();\n\n for (var _i2 = 0, _objectValues2 = objectValues(fieldDefs); _i2 < _objectValues2.length; _i2++) {\n var field = _objectValues2[_i2];\n var fieldValue = inputValue[field.name];\n\n if (fieldValue === undefined) {\n if (field.defaultValue !== undefined) {\n _coercedValue[field.name] = field.defaultValue;\n } else if (isNonNullType(field.type)) {\n var typeStr = inspect(field.type);\n onError(pathToArray(path), inputValue, new GraphQLError(\"Field \".concat(field.name, \" of required type \").concat(typeStr, \" was not provided.\")));\n }\n\n continue;\n }\n\n _coercedValue[field.name] = coerceInputValueImpl(fieldValue, field.type, onError, addPath(path, field.name));\n } // Ensure every provided field is defined.\n\n\n for (var _i4 = 0, _Object$keys2 = Object.keys(inputValue); _i4 < _Object$keys2.length; _i4++) {\n var fieldName = _Object$keys2[_i4];\n\n if (!fieldDefs[fieldName]) {\n var suggestions = suggestionList(fieldName, Object.keys(type.getFields()));\n onError(pathToArray(path), inputValue, new GraphQLError(\"Field \\\"\".concat(fieldName, \"\\\" is not defined by type \").concat(type.name, \".\") + didYouMean(suggestions)));\n }\n }\n\n return _coercedValue;\n }\n\n if (isScalarType(type)) {\n var parseResult; // Scalars determine if a input value is valid via parseValue(), which can\n // throw to indicate failure. If it throws, maintain a reference to\n // the original error.\n\n try {\n parseResult = type.parseValue(inputValue);\n } catch (error) {\n onError(pathToArray(path), inputValue, new GraphQLError(\"Expected type \".concat(type.name, \". \") + error.message, undefined, undefined, undefined, undefined, error));\n return;\n }\n\n if (parseResult === undefined) {\n onError(pathToArray(path), inputValue, new GraphQLError(\"Expected type \".concat(type.name, \".\")));\n }\n\n return parseResult;\n }\n /* istanbul ignore else */\n\n\n if (isEnumType(type)) {\n if (typeof inputValue === 'string') {\n var enumValue = type.getValue(inputValue);\n\n if (enumValue) {\n return enumValue.value;\n }\n }\n\n var _suggestions = suggestionList(String(inputValue), type.getValues().map(function (enumValue) {\n return enumValue.name;\n }));\n\n onError(pathToArray(path), inputValue, new GraphQLError(\"Expected type \".concat(type.name, \".\") + didYouMean(_suggestions)));\n return;\n } // Not reachable. All possible input types have been considered.\n\n /* istanbul ignore next */\n\n\n invariant(false, 'Unexpected input type: ' + inspect(type));\n}","import find from '../polyfills/find';\nimport keyMap from '../jsutils/keyMap';\nimport inspect from '../jsutils/inspect';\nimport printPathArray from '../jsutils/printPathArray';\nimport { GraphQLError } from '../error/GraphQLError';\nimport { Kind } from '../language/kinds';\nimport { print } from '../language/printer';\nimport { isInputType, isNonNullType } from '../type/definition';\nimport { typeFromAST } from '../utilities/typeFromAST';\nimport { valueFromAST } from '../utilities/valueFromAST';\nimport { coerceInputValue } from '../utilities/coerceInputValue';\n/**\n * Prepares an object map of variableValues of the correct type based on the\n * provided variable definitions and arbitrary input. If the input cannot be\n * parsed to match the variable definitions, a GraphQLError will be thrown.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\n\nexport function getVariableValues(schema, varDefNodes, inputs, options) {\n var maxErrors = options && options.maxErrors;\n var errors = [];\n\n try {\n var coerced = coerceVariableValues(schema, varDefNodes, inputs, function (error) {\n if (maxErrors != null && errors.length >= maxErrors) {\n throw new GraphQLError('Too many errors processing variables, error limit reached. Execution aborted.');\n }\n\n errors.push(error);\n });\n\n if (errors.length === 0) {\n return {\n coerced: coerced\n };\n }\n } catch (error) {\n errors.push(error);\n }\n\n return {\n errors: errors\n };\n}\n\nfunction coerceVariableValues(schema, varDefNodes, inputs, onError) {\n var coercedValues = {};\n\n var _loop = function _loop(_i2) {\n var varDefNode = varDefNodes[_i2];\n var varName = varDefNode.variable.name.value;\n var varType = typeFromAST(schema, varDefNode.type);\n\n if (!isInputType(varType)) {\n // Must use input types for variables. This should be caught during\n // validation, however is checked again here for safety.\n var varTypeStr = print(varDefNode.type);\n onError(new GraphQLError(\"Variable \\\"$\".concat(varName, \"\\\" expected value of type \\\"\").concat(varTypeStr, \"\\\" which cannot be used as an input type.\"), varDefNode.type));\n return \"continue\";\n }\n\n if (!hasOwnProperty(inputs, varName)) {\n if (varDefNode.defaultValue) {\n coercedValues[varName] = valueFromAST(varDefNode.defaultValue, varType);\n } else if (isNonNullType(varType)) {\n var _varTypeStr = inspect(varType);\n\n onError(new GraphQLError(\"Variable \\\"$\".concat(varName, \"\\\" of required type \\\"\").concat(_varTypeStr, \"\\\" was not provided.\"), varDefNode));\n }\n\n return \"continue\";\n }\n\n var value = inputs[varName];\n\n if (value === null && isNonNullType(varType)) {\n var _varTypeStr2 = inspect(varType);\n\n onError(new GraphQLError(\"Variable \\\"$\".concat(varName, \"\\\" of non-null type \\\"\").concat(_varTypeStr2, \"\\\" must not be null.\"), varDefNode));\n return \"continue\";\n }\n\n coercedValues[varName] = coerceInputValue(value, varType, function (path, invalidValue, error) {\n var prefix = \"Variable \\\"$\".concat(varName, \"\\\" got invalid value \") + inspect(invalidValue);\n\n if (path.length > 0) {\n prefix += \" at \\\"\".concat(varName).concat(printPathArray(path), \"\\\"\");\n }\n\n onError(new GraphQLError(prefix + '; ' + error.message, varDefNode, undefined, undefined, undefined, error.originalError));\n });\n };\n\n for (var _i2 = 0; _i2 < varDefNodes.length; _i2++) {\n var _ret = _loop(_i2);\n\n if (_ret === \"continue\") continue;\n }\n\n return coercedValues;\n}\n/**\n * Prepares an object map of argument values given a list of argument\n * definitions and list of argument AST nodes.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\n\n\nexport function getArgumentValues(def, node, variableValues) {\n var coercedValues = {};\n var argNodeMap = keyMap(node.arguments || [], function (arg) {\n return arg.name.value;\n });\n\n for (var _i4 = 0, _def$args2 = def.args; _i4 < _def$args2.length; _i4++) {\n var argDef = _def$args2[_i4];\n var name = argDef.name;\n var argType = argDef.type;\n var argumentNode = argNodeMap[name];\n\n if (!argumentNode) {\n if (argDef.defaultValue !== undefined) {\n coercedValues[name] = argDef.defaultValue;\n } else if (isNonNullType(argType)) {\n throw new GraphQLError(\"Argument \\\"\".concat(name, \"\\\" of required type \\\"\").concat(inspect(argType), \"\\\" \") + 'was not provided.', node);\n }\n\n continue;\n }\n\n var valueNode = argumentNode.value;\n var isNull = valueNode.kind === Kind.NULL;\n\n if (valueNode.kind === Kind.VARIABLE) {\n var variableName = valueNode.name.value;\n\n if (variableValues == null || !hasOwnProperty(variableValues, variableName)) {\n if (argDef.defaultValue !== undefined) {\n coercedValues[name] = argDef.defaultValue;\n } else if (isNonNullType(argType)) {\n throw new GraphQLError(\"Argument \\\"\".concat(name, \"\\\" of required type \\\"\").concat(inspect(argType), \"\\\" \") + \"was provided the variable \\\"$\".concat(variableName, \"\\\" which was not provided a runtime value.\"), valueNode);\n }\n\n continue;\n }\n\n isNull = variableValues[variableName] == null;\n }\n\n if (isNull && isNonNullType(argType)) {\n throw new GraphQLError(\"Argument \\\"\".concat(name, \"\\\" of non-null type \\\"\").concat(inspect(argType), \"\\\" \") + 'must not be null.', valueNode);\n }\n\n var coercedValue = valueFromAST(valueNode, argType, variableValues);\n\n if (coercedValue === undefined) {\n // Note: ValuesOfCorrectType validation should catch this before\n // execution. This is a runtime check to ensure execution does not\n // continue with an invalid argument value.\n throw new GraphQLError(\"Argument \\\"\".concat(name, \"\\\" has invalid value \").concat(print(valueNode), \".\"), valueNode);\n }\n\n coercedValues[name] = coercedValue;\n }\n\n return coercedValues;\n}\n/**\n * Prepares an object map of argument values given a directive definition\n * and a AST node which may contain directives. Optionally also accepts a map\n * of variable values.\n *\n * If the directive does not exist on the node, returns undefined.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\n\nexport function getDirectiveValues(directiveDef, node, variableValues) {\n var directiveNode = node.directives && find(node.directives, function (directive) {\n return directive.name.value === directiveDef.name;\n });\n\n if (directiveNode) {\n return getArgumentValues(directiveDef, directiveNode, variableValues);\n }\n}\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}","import { forEach, isCollection } from 'iterall';\nimport inspect from '../jsutils/inspect';\nimport memoize3 from '../jsutils/memoize3';\nimport invariant from '../jsutils/invariant';\nimport devAssert from '../jsutils/devAssert';\nimport isInvalid from '../jsutils/isInvalid';\nimport isNullish from '../jsutils/isNullish';\nimport isPromise from '../jsutils/isPromise';\nimport isObjectLike from '../jsutils/isObjectLike';\nimport promiseReduce from '../jsutils/promiseReduce';\nimport promiseForObject from '../jsutils/promiseForObject';\nimport { addPath, pathToArray } from '../jsutils/Path';\nimport { GraphQLError } from '../error/GraphQLError';\nimport { locatedError } from '../error/locatedError';\nimport { Kind } from '../language/kinds';\nimport { assertValidSchema } from '../type/validate';\nimport { SchemaMetaFieldDef, TypeMetaFieldDef, TypeNameMetaFieldDef } from '../type/introspection';\nimport { GraphQLIncludeDirective, GraphQLSkipDirective } from '../type/directives';\nimport { isObjectType, isAbstractType, isLeafType, isListType, isNonNullType } from '../type/definition';\nimport { typeFromAST } from '../utilities/typeFromAST';\nimport { getOperationRootType } from '../utilities/getOperationRootType';\nimport { getVariableValues, getArgumentValues, getDirectiveValues } from './values';\n/**\n * Terminology\n *\n * \"Definitions\" are the generic name for top-level statements in the document.\n * Examples of this include:\n * 1) Operations (such as a query)\n * 2) Fragments\n *\n * \"Operations\" are a generic name for requests in the document.\n * Examples of this include:\n * 1) query,\n * 2) mutation\n *\n * \"Selections\" are the definitions that can appear legally and at\n * single level of the query. These include:\n * 1) field references e.g \"a\"\n * 2) fragment \"spreads\" e.g. \"...c\"\n * 3) inline fragment \"spreads\" e.g. \"...on Type { a }\"\n */\n\n/**\n * Data that must be available at all points during query execution.\n *\n * Namely, schema of the type system that is currently executing,\n * and the fragments defined in the query document\n */\n\nexport function execute(argsOrSchema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, typeResolver) {\n /* eslint-enable no-redeclare */\n // Extract arguments from object args if provided.\n return arguments.length === 1 ? executeImpl(argsOrSchema) : executeImpl({\n schema: argsOrSchema,\n document: document,\n rootValue: rootValue,\n contextValue: contextValue,\n variableValues: variableValues,\n operationName: operationName,\n fieldResolver: fieldResolver,\n typeResolver: typeResolver\n });\n}\n\nfunction executeImpl(args) {\n var schema = args.schema,\n document = args.document,\n rootValue = args.rootValue,\n contextValue = args.contextValue,\n variableValues = args.variableValues,\n operationName = args.operationName,\n fieldResolver = args.fieldResolver,\n typeResolver = args.typeResolver; // If arguments are missing or incorrect, throw an error.\n\n assertValidExecutionArguments(schema, document, variableValues); // If a valid execution context cannot be created due to incorrect arguments,\n // a \"Response\" with only errors is returned.\n\n var exeContext = buildExecutionContext(schema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, typeResolver); // Return early errors if execution context failed.\n\n if (Array.isArray(exeContext)) {\n return {\n errors: exeContext\n };\n } // Return a Promise that will eventually resolve to the data described by\n // The \"Response\" section of the GraphQL specification.\n //\n // If errors are encountered while executing a GraphQL field, only that\n // field and its descendants will be omitted, and sibling fields will still\n // be executed. An execution which encounters errors will still result in a\n // resolved Promise.\n\n\n var data = executeOperation(exeContext, exeContext.operation, rootValue);\n return buildResponse(exeContext, data);\n}\n/**\n * Given a completed execution context and data, build the { errors, data }\n * response defined by the \"Response\" section of the GraphQL specification.\n */\n\n\nfunction buildResponse(exeContext, data) {\n if (isPromise(data)) {\n return data.then(function (resolved) {\n return buildResponse(exeContext, resolved);\n });\n }\n\n return exeContext.errors.length === 0 ? {\n data: data\n } : {\n errors: exeContext.errors,\n data: data\n };\n}\n/**\n * Essential assertions before executing to provide developer feedback for\n * improper use of the GraphQL library.\n */\n\n\nexport function assertValidExecutionArguments(schema, document, rawVariableValues) {\n document || devAssert(0, 'Must provide document'); // If the schema used for execution is invalid, throw an error.\n\n assertValidSchema(schema); // Variables, if provided, must be an object.\n\n rawVariableValues == null || isObjectLike(rawVariableValues) || devAssert(0, 'Variables must be provided as an Object where each property is a variable value. Perhaps look to see if an unparsed JSON string was provided.');\n}\n/**\n * Constructs a ExecutionContext object from the arguments passed to\n * execute, which we will pass throughout the other execution methods.\n *\n * Throws a GraphQLError if a valid execution context cannot be created.\n */\n\nexport function buildExecutionContext(schema, document, rootValue, contextValue, rawVariableValues, operationName, fieldResolver, typeResolver) {\n var operation;\n var hasMultipleAssumedOperations = false;\n var fragments = Object.create(null);\n\n for (var _i2 = 0, _document$definitions2 = document.definitions; _i2 < _document$definitions2.length; _i2++) {\n var definition = _document$definitions2[_i2];\n\n switch (definition.kind) {\n case Kind.OPERATION_DEFINITION:\n if (!operationName && operation) {\n hasMultipleAssumedOperations = true;\n } else if (!operationName || definition.name && definition.name.value === operationName) {\n operation = definition;\n }\n\n break;\n\n case Kind.FRAGMENT_DEFINITION:\n fragments[definition.name.value] = definition;\n break;\n }\n }\n\n if (!operation) {\n if (operationName) {\n return [new GraphQLError(\"Unknown operation named \\\"\".concat(operationName, \"\\\".\"))];\n }\n\n return [new GraphQLError('Must provide an operation.')];\n }\n\n if (hasMultipleAssumedOperations) {\n return [new GraphQLError('Must provide operation name if query contains multiple operations.')];\n }\n\n var coercedVariableValues = getVariableValues(schema, operation.variableDefinitions || [], rawVariableValues || {}, {\n maxErrors: 50\n });\n\n if (coercedVariableValues.errors) {\n return coercedVariableValues.errors;\n }\n\n return {\n schema: schema,\n fragments: fragments,\n rootValue: rootValue,\n contextValue: contextValue,\n operation: operation,\n variableValues: coercedVariableValues.coerced,\n fieldResolver: fieldResolver || defaultFieldResolver,\n typeResolver: typeResolver || defaultTypeResolver,\n errors: []\n };\n}\n/**\n * Implements the \"Evaluating operations\" section of the spec.\n */\n\nfunction executeOperation(exeContext, operation, rootValue) {\n var type = getOperationRootType(exeContext.schema, operation);\n var fields = collectFields(exeContext, type, operation.selectionSet, Object.create(null), Object.create(null));\n var path = undefined; // Errors from sub-fields of a NonNull type may propagate to the top level,\n // at which point we still log the error and null the parent field, which\n // in this case is the entire response.\n //\n // Similar to completeValueCatchingError.\n\n try {\n var result = operation.operation === 'mutation' ? executeFieldsSerially(exeContext, type, rootValue, path, fields) : executeFields(exeContext, type, rootValue, path, fields);\n\n if (isPromise(result)) {\n return result.then(undefined, function (error) {\n exeContext.errors.push(error);\n return Promise.resolve(null);\n });\n }\n\n return result;\n } catch (error) {\n exeContext.errors.push(error);\n return null;\n }\n}\n/**\n * Implements the \"Evaluating selection sets\" section of the spec\n * for \"write\" mode.\n */\n\n\nfunction executeFieldsSerially(exeContext, parentType, sourceValue, path, fields) {\n return promiseReduce(Object.keys(fields), function (results, responseName) {\n var fieldNodes = fields[responseName];\n var fieldPath = addPath(path, responseName);\n var result = resolveField(exeContext, parentType, sourceValue, fieldNodes, fieldPath);\n\n if (result === undefined) {\n return results;\n }\n\n if (isPromise(result)) {\n return result.then(function (resolvedResult) {\n results[responseName] = resolvedResult;\n return results;\n });\n }\n\n results[responseName] = result;\n return results;\n }, Object.create(null));\n}\n/**\n * Implements the \"Evaluating selection sets\" section of the spec\n * for \"read\" mode.\n */\n\n\nfunction executeFields(exeContext, parentType, sourceValue, path, fields) {\n var results = Object.create(null);\n var containsPromise = false;\n\n for (var _i4 = 0, _Object$keys2 = Object.keys(fields); _i4 < _Object$keys2.length; _i4++) {\n var responseName = _Object$keys2[_i4];\n var fieldNodes = fields[responseName];\n var fieldPath = addPath(path, responseName);\n var result = resolveField(exeContext, parentType, sourceValue, fieldNodes, fieldPath);\n\n if (result !== undefined) {\n results[responseName] = result;\n\n if (!containsPromise && isPromise(result)) {\n containsPromise = true;\n }\n }\n } // If there are no promises, we can just return the object\n\n\n if (!containsPromise) {\n return results;\n } // Otherwise, results is a map from field name to the result of resolving that\n // field, which is possibly a promise. Return a promise that will return this\n // same map, but with any promises replaced with the values they resolved to.\n\n\n return promiseForObject(results);\n}\n/**\n * Given a selectionSet, adds all of the fields in that selection to\n * the passed in map of fields, and returns it at the end.\n *\n * CollectFields requires the \"runtime type\" of an object. For a field which\n * returns an Interface or Union type, the \"runtime type\" will be the actual\n * Object type returned by that field.\n */\n\n\nexport function collectFields(exeContext, runtimeType, selectionSet, fields, visitedFragmentNames) {\n for (var _i6 = 0, _selectionSet$selecti2 = selectionSet.selections; _i6 < _selectionSet$selecti2.length; _i6++) {\n var selection = _selectionSet$selecti2[_i6];\n\n switch (selection.kind) {\n case Kind.FIELD:\n {\n if (!shouldIncludeNode(exeContext, selection)) {\n continue;\n }\n\n var name = getFieldEntryKey(selection);\n\n if (!fields[name]) {\n fields[name] = [];\n }\n\n fields[name].push(selection);\n break;\n }\n\n case Kind.INLINE_FRAGMENT:\n {\n if (!shouldIncludeNode(exeContext, selection) || !doesFragmentConditionMatch(exeContext, selection, runtimeType)) {\n continue;\n }\n\n collectFields(exeContext, runtimeType, selection.selectionSet, fields, visitedFragmentNames);\n break;\n }\n\n case Kind.FRAGMENT_SPREAD:\n {\n var fragName = selection.name.value;\n\n if (visitedFragmentNames[fragName] || !shouldIncludeNode(exeContext, selection)) {\n continue;\n }\n\n visitedFragmentNames[fragName] = true;\n var fragment = exeContext.fragments[fragName];\n\n if (!fragment || !doesFragmentConditionMatch(exeContext, fragment, runtimeType)) {\n continue;\n }\n\n collectFields(exeContext, runtimeType, fragment.selectionSet, fields, visitedFragmentNames);\n break;\n }\n }\n }\n\n return fields;\n}\n/**\n * Determines if a field should be included based on the @include and @skip\n * directives, where @skip has higher precedence than @include.\n */\n\nfunction shouldIncludeNode(exeContext, node) {\n var skip = getDirectiveValues(GraphQLSkipDirective, node, exeContext.variableValues);\n\n if (skip && skip.if === true) {\n return false;\n }\n\n var include = getDirectiveValues(GraphQLIncludeDirective, node, exeContext.variableValues);\n\n if (include && include.if === false) {\n return false;\n }\n\n return true;\n}\n/**\n * Determines if a fragment is applicable to the given type.\n */\n\n\nfunction doesFragmentConditionMatch(exeContext, fragment, type) {\n var typeConditionNode = fragment.typeCondition;\n\n if (!typeConditionNode) {\n return true;\n }\n\n var conditionalType = typeFromAST(exeContext.schema, typeConditionNode);\n\n if (conditionalType === type) {\n return true;\n }\n\n if (isAbstractType(conditionalType)) {\n return exeContext.schema.isPossibleType(conditionalType, type);\n }\n\n return false;\n}\n/**\n * Implements the logic to compute the key of a given field's entry\n */\n\n\nfunction getFieldEntryKey(node) {\n return node.alias ? node.alias.value : node.name.value;\n}\n/**\n * Resolves the field on the given source object. In particular, this\n * figures out the value that the field returns by calling its resolve function,\n * then calls completeValue to complete promises, serialize scalars, or execute\n * the sub-selection-set for objects.\n */\n\n\nfunction resolveField(exeContext, parentType, source, fieldNodes, path) {\n var fieldNode = fieldNodes[0];\n var fieldName = fieldNode.name.value;\n var fieldDef = getFieldDef(exeContext.schema, parentType, fieldName);\n\n if (!fieldDef) {\n return;\n }\n\n var resolveFn = fieldDef.resolve || exeContext.fieldResolver;\n var info = buildResolveInfo(exeContext, fieldDef, fieldNodes, parentType, path); // Get the resolve function, regardless of if its result is normal\n // or abrupt (error).\n\n var result = resolveFieldValueOrError(exeContext, fieldDef, fieldNodes, resolveFn, source, info);\n return completeValueCatchingError(exeContext, fieldDef.type, fieldNodes, info, path, result);\n}\n\nexport function buildResolveInfo(exeContext, fieldDef, fieldNodes, parentType, path) {\n // The resolve function's optional fourth argument is a collection of\n // information about the current execution state.\n return {\n fieldName: fieldDef.name,\n fieldNodes: fieldNodes,\n returnType: fieldDef.type,\n parentType: parentType,\n path: path,\n schema: exeContext.schema,\n fragments: exeContext.fragments,\n rootValue: exeContext.rootValue,\n operation: exeContext.operation,\n variableValues: exeContext.variableValues\n };\n} // Isolates the \"ReturnOrAbrupt\" behavior to not de-opt the `resolveField`\n// function. Returns the result of resolveFn or the abrupt-return Error object.\n\nexport function resolveFieldValueOrError(exeContext, fieldDef, fieldNodes, resolveFn, source, info) {\n try {\n // Build a JS object of arguments from the field.arguments AST, using the\n // variables scope to fulfill any variable references.\n // TODO: find a way to memoize, in case this field is within a List type.\n var args = getArgumentValues(fieldDef, fieldNodes[0], exeContext.variableValues); // The resolve function's optional third argument is a context value that\n // is provided to every resolve function within an execution. It is commonly\n // used to represent an authenticated user, or request-specific caches.\n\n var _contextValue = exeContext.contextValue;\n var result = resolveFn(source, args, _contextValue, info);\n return isPromise(result) ? result.then(undefined, asErrorInstance) : result;\n } catch (error) {\n return asErrorInstance(error);\n }\n} // Sometimes a non-error is thrown, wrap it as an Error instance to ensure a\n// consistent Error interface.\n\nfunction asErrorInstance(error) {\n if (error instanceof Error) {\n return error;\n }\n\n return new Error('Unexpected error value: ' + inspect(error));\n} // This is a small wrapper around completeValue which detects and logs errors\n// in the execution context.\n\n\nfunction completeValueCatchingError(exeContext, returnType, fieldNodes, info, path, result) {\n try {\n var completed;\n\n if (isPromise(result)) {\n completed = result.then(function (resolved) {\n return completeValue(exeContext, returnType, fieldNodes, info, path, resolved);\n });\n } else {\n completed = completeValue(exeContext, returnType, fieldNodes, info, path, result);\n }\n\n if (isPromise(completed)) {\n // Note: we don't rely on a `catch` method, but we do expect \"thenable\"\n // to take a second callback for the error case.\n return completed.then(undefined, function (error) {\n return handleFieldError(error, fieldNodes, path, returnType, exeContext);\n });\n }\n\n return completed;\n } catch (error) {\n return handleFieldError(error, fieldNodes, path, returnType, exeContext);\n }\n}\n\nfunction handleFieldError(rawError, fieldNodes, path, returnType, exeContext) {\n var error = locatedError(asErrorInstance(rawError), fieldNodes, pathToArray(path)); // If the field type is non-nullable, then it is resolved without any\n // protection from errors, however it still properly locates the error.\n\n if (isNonNullType(returnType)) {\n throw error;\n } // Otherwise, error protection is applied, logging the error and resolving\n // a null value for this field if one is encountered.\n\n\n exeContext.errors.push(error);\n return null;\n}\n/**\n * Implements the instructions for completeValue as defined in the\n * \"Field entries\" section of the spec.\n *\n * If the field type is Non-Null, then this recursively completes the value\n * for the inner type. It throws a field error if that completion returns null,\n * as per the \"Nullability\" section of the spec.\n *\n * If the field type is a List, then this recursively completes the value\n * for the inner type on each item in the list.\n *\n * If the field type is a Scalar or Enum, ensures the completed value is a legal\n * value of the type by calling the `serialize` method of GraphQL type\n * definition.\n *\n * If the field is an abstract type, determine the runtime type of the value\n * and then complete based on that type\n *\n * Otherwise, the field type expects a sub-selection set, and will complete the\n * value by evaluating all sub-selections.\n */\n\n\nfunction completeValue(exeContext, returnType, fieldNodes, info, path, result) {\n // If result is an Error, throw a located error.\n if (result instanceof Error) {\n throw result;\n } // If field type is NonNull, complete for inner type, and throw field error\n // if result is null.\n\n\n if (isNonNullType(returnType)) {\n var completed = completeValue(exeContext, returnType.ofType, fieldNodes, info, path, result);\n\n if (completed === null) {\n throw new Error(\"Cannot return null for non-nullable field \".concat(info.parentType.name, \".\").concat(info.fieldName, \".\"));\n }\n\n return completed;\n } // If result value is null-ish (null, undefined, or NaN) then return null.\n\n\n if (isNullish(result)) {\n return null;\n } // If field type is List, complete each item in the list with the inner type\n\n\n if (isListType(returnType)) {\n return completeListValue(exeContext, returnType, fieldNodes, info, path, result);\n } // If field type is a leaf type, Scalar or Enum, serialize to a valid value,\n // returning null if serialization is not possible.\n\n\n if (isLeafType(returnType)) {\n return completeLeafValue(returnType, result);\n } // If field type is an abstract type, Interface or Union, determine the\n // runtime Object type and complete for that type.\n\n\n if (isAbstractType(returnType)) {\n return completeAbstractValue(exeContext, returnType, fieldNodes, info, path, result);\n } // If field type is Object, execute and complete all sub-selections.\n\n /* istanbul ignore else */\n\n\n if (isObjectType(returnType)) {\n return completeObjectValue(exeContext, returnType, fieldNodes, info, path, result);\n } // Not reachable. All possible output types have been considered.\n\n /* istanbul ignore next */\n\n\n invariant(false, 'Cannot complete value of unexpected output type: ' + inspect(returnType));\n}\n/**\n * Complete a list value by completing each item in the list with the\n * inner type\n */\n\n\nfunction completeListValue(exeContext, returnType, fieldNodes, info, path, result) {\n if (!isCollection(result)) {\n throw new GraphQLError(\"Expected Iterable, but did not find one for field \".concat(info.parentType.name, \".\").concat(info.fieldName, \".\"));\n } // This is specified as a simple map, however we're optimizing the path\n // where the list contains no Promises by avoiding creating another Promise.\n\n\n var itemType = returnType.ofType;\n var containsPromise = false;\n var completedResults = [];\n forEach(result, function (item, index) {\n // No need to modify the info object containing the path,\n // since from here on it is not ever accessed by resolver functions.\n var fieldPath = addPath(path, index);\n var completedItem = completeValueCatchingError(exeContext, itemType, fieldNodes, info, fieldPath, item);\n\n if (!containsPromise && isPromise(completedItem)) {\n containsPromise = true;\n }\n\n completedResults.push(completedItem);\n });\n return containsPromise ? Promise.all(completedResults) : completedResults;\n}\n/**\n * Complete a Scalar or Enum by serializing to a valid value, returning\n * null if serialization is not possible.\n */\n\n\nfunction completeLeafValue(returnType, result) {\n var serializedResult = returnType.serialize(result);\n\n if (isInvalid(serializedResult)) {\n throw new Error(\"Expected a value of type \\\"\".concat(inspect(returnType), \"\\\" but \") + \"received: \".concat(inspect(result)));\n }\n\n return serializedResult;\n}\n/**\n * Complete a value of an abstract type by determining the runtime object type\n * of that value, then complete the value for that type.\n */\n\n\nfunction completeAbstractValue(exeContext, returnType, fieldNodes, info, path, result) {\n var resolveTypeFn = returnType.resolveType || exeContext.typeResolver;\n var contextValue = exeContext.contextValue;\n var runtimeType = resolveTypeFn(result, contextValue, info, returnType);\n\n if (isPromise(runtimeType)) {\n return runtimeType.then(function (resolvedRuntimeType) {\n return completeObjectValue(exeContext, ensureValidRuntimeType(resolvedRuntimeType, exeContext, returnType, fieldNodes, info, result), fieldNodes, info, path, result);\n });\n }\n\n return completeObjectValue(exeContext, ensureValidRuntimeType(runtimeType, exeContext, returnType, fieldNodes, info, result), fieldNodes, info, path, result);\n}\n\nfunction ensureValidRuntimeType(runtimeTypeOrName, exeContext, returnType, fieldNodes, info, result) {\n var runtimeType = typeof runtimeTypeOrName === 'string' ? exeContext.schema.getType(runtimeTypeOrName) : runtimeTypeOrName;\n\n if (!isObjectType(runtimeType)) {\n throw new GraphQLError(\"Abstract type \".concat(returnType.name, \" must resolve to an Object type at runtime for field \").concat(info.parentType.name, \".\").concat(info.fieldName, \" with \") + \"value \".concat(inspect(result), \", received \\\"\").concat(inspect(runtimeType), \"\\\". \") + \"Either the \".concat(returnType.name, \" type should provide a \\\"resolveType\\\" function or each possible type should provide an \\\"isTypeOf\\\" function.\"), fieldNodes);\n }\n\n if (!exeContext.schema.isPossibleType(returnType, runtimeType)) {\n throw new GraphQLError(\"Runtime Object type \\\"\".concat(runtimeType.name, \"\\\" is not a possible type for \\\"\").concat(returnType.name, \"\\\".\"), fieldNodes);\n }\n\n return runtimeType;\n}\n/**\n * Complete an Object value by executing all sub-selections.\n */\n\n\nfunction completeObjectValue(exeContext, returnType, fieldNodes, info, path, result) {\n // If there is an isTypeOf predicate function, call it with the\n // current result. If isTypeOf returns false, then raise an error rather\n // than continuing execution.\n if (returnType.isTypeOf) {\n var isTypeOf = returnType.isTypeOf(result, exeContext.contextValue, info);\n\n if (isPromise(isTypeOf)) {\n return isTypeOf.then(function (resolvedIsTypeOf) {\n if (!resolvedIsTypeOf) {\n throw invalidReturnTypeError(returnType, result, fieldNodes);\n }\n\n return collectAndExecuteSubfields(exeContext, returnType, fieldNodes, path, result);\n });\n }\n\n if (!isTypeOf) {\n throw invalidReturnTypeError(returnType, result, fieldNodes);\n }\n }\n\n return collectAndExecuteSubfields(exeContext, returnType, fieldNodes, path, result);\n}\n\nfunction invalidReturnTypeError(returnType, result, fieldNodes) {\n return new GraphQLError(\"Expected value of type \\\"\".concat(returnType.name, \"\\\" but got: \").concat(inspect(result), \".\"), fieldNodes);\n}\n\nfunction collectAndExecuteSubfields(exeContext, returnType, fieldNodes, path, result) {\n // Collect sub-fields to execute to complete this value.\n var subFieldNodes = collectSubfields(exeContext, returnType, fieldNodes);\n return executeFields(exeContext, returnType, result, path, subFieldNodes);\n}\n/**\n * A memoized collection of relevant subfields with regard to the return\n * type. Memoizing ensures the subfields are not repeatedly calculated, which\n * saves overhead when resolving lists of values.\n */\n\n\nvar collectSubfields = memoize3(_collectSubfields);\n\nfunction _collectSubfields(exeContext, returnType, fieldNodes) {\n var subFieldNodes = Object.create(null);\n var visitedFragmentNames = Object.create(null);\n\n for (var _i8 = 0; _i8 < fieldNodes.length; _i8++) {\n var node = fieldNodes[_i8];\n\n if (node.selectionSet) {\n subFieldNodes = collectFields(exeContext, returnType, node.selectionSet, subFieldNodes, visitedFragmentNames);\n }\n }\n\n return subFieldNodes;\n}\n/**\n * If a resolveType function is not given, then a default resolve behavior is\n * used which attempts two strategies:\n *\n * First, See if the provided value has a `__typename` field defined, if so, use\n * that value as name of the resolved type.\n *\n * Otherwise, test each possible type for the abstract type by calling\n * isTypeOf for the object being coerced, returning the first type that matches.\n */\n\n\nexport var defaultTypeResolver = function defaultTypeResolver(value, contextValue, info, abstractType) {\n // First, look for `__typename`.\n if (isObjectLike(value) && typeof value.__typename === 'string') {\n return value.__typename;\n } // Otherwise, test each possible type.\n\n\n var possibleTypes = info.schema.getPossibleTypes(abstractType);\n var promisedIsTypeOfResults = [];\n\n for (var i = 0; i < possibleTypes.length; i++) {\n var type = possibleTypes[i];\n\n if (type.isTypeOf) {\n var isTypeOfResult = type.isTypeOf(value, contextValue, info);\n\n if (isPromise(isTypeOfResult)) {\n promisedIsTypeOfResults[i] = isTypeOfResult;\n } else if (isTypeOfResult) {\n return type;\n }\n }\n }\n\n if (promisedIsTypeOfResults.length) {\n return Promise.all(promisedIsTypeOfResults).then(function (isTypeOfResults) {\n for (var _i9 = 0; _i9 < isTypeOfResults.length; _i9++) {\n if (isTypeOfResults[_i9]) {\n return possibleTypes[_i9];\n }\n }\n });\n }\n};\n/**\n * If a resolve function is not given, then a default resolve behavior is used\n * which takes the property of the source object of the same name as the field\n * and returns it as the result, or if it's a function, returns the result\n * of calling that function while passing along args and context value.\n */\n\nexport var defaultFieldResolver = function defaultFieldResolver(source, args, contextValue, info) {\n // ensure source is a value for which property access is acceptable.\n if (isObjectLike(source) || typeof source === 'function') {\n var property = source[info.fieldName];\n\n if (typeof property === 'function') {\n return source[info.fieldName](args, contextValue, info);\n }\n\n return property;\n }\n};\n/**\n * This method looks up the field on the given type definition.\n * It has special casing for the two introspection fields, __schema\n * and __typename. __typename is special because it can always be\n * queried as a field, even in situations where no other fields\n * are allowed, like on a Union. __schema could get automatically\n * added to the query type, but that would require mutating type\n * definitions, which would cause issues.\n */\n\nexport function getFieldDef(schema, parentType, fieldName) {\n if (fieldName === SchemaMetaFieldDef.name && schema.getQueryType() === parentType) {\n return SchemaMetaFieldDef;\n } else if (fieldName === TypeMetaFieldDef.name && schema.getQueryType() === parentType) {\n return TypeMetaFieldDef;\n } else if (fieldName === TypeNameMetaFieldDef.name) {\n return TypeNameMetaFieldDef;\n }\n\n return parentType.getFields()[fieldName];\n}","import isPromise from './isPromise';\n/**\n * Similar to Array.prototype.reduce(), however the reducing callback may return\n * a Promise, in which case reduction will continue after each promise resolves.\n *\n * If the callback does not return a Promise, then this function will also not\n * return a Promise.\n */\n\nexport default function promiseReduce(values, callback, initialValue) {\n return values.reduce(function (previous, value) {\n return isPromise(previous) ? previous.then(function (resolved) {\n return callback(resolved, value);\n }) : callback(previous, value);\n }, initialValue);\n}","/**\n * This function transforms a JS object `ObjMap>` into\n * a `Promise>`\n *\n * This is akin to bluebird's `Promise.props`, but implemented only using\n * `Promise.all` so it will work with any implementation of ES6 promises.\n */\nexport default function promiseForObject(object) {\n var keys = Object.keys(object);\n var valuesAndPromises = keys.map(function (name) {\n return object[name];\n });\n return Promise.all(valuesAndPromises).then(function (values) {\n return values.reduce(function (resolvedObject, value, i) {\n resolvedObject[keys[i]] = value;\n return resolvedObject;\n }, Object.create(null));\n });\n}","/**\n * Memoizes the provided three-argument function.\n */\nexport default function memoize3(fn) {\n var cache0;\n\n function memoized(a1, a2, a3) {\n if (!cache0) {\n cache0 = new WeakMap();\n }\n\n var cache1 = cache0.get(a1);\n var cache2;\n\n if (cache1) {\n cache2 = cache1.get(a2);\n\n if (cache2) {\n var cachedValue = cache2.get(a3);\n\n if (cachedValue !== undefined) {\n return cachedValue;\n }\n }\n } else {\n cache1 = new WeakMap();\n cache0.set(a1, cache1);\n }\n\n if (!cache2) {\n cache2 = new WeakMap();\n cache1.set(a2, cache2);\n }\n\n var newValue = fn(a1, a2, a3);\n cache2.set(a3, newValue);\n return newValue;\n }\n\n return memoized;\n}","import isPromise from './jsutils/isPromise';\nimport { parse } from './language/parser';\nimport { validate } from './validation/validate';\nimport { validateSchema } from './type/validate';\nimport { execute } from './execution/execute';\n/**\n * This is the primary entry point function for fulfilling GraphQL operations\n * by parsing, validating, and executing a GraphQL document along side a\n * GraphQL schema.\n *\n * More sophisticated GraphQL servers, such as those which persist queries,\n * may wish to separate the validation and execution phases to a static time\n * tooling step, and a server runtime step.\n *\n * Accepts either an object with named arguments, or individual arguments:\n *\n * schema:\n * The GraphQL type system to use when validating and executing a query.\n * source:\n * A GraphQL language formatted string representing the requested operation.\n * rootValue:\n * The value provided as the first argument to resolver functions on the top\n * level type (e.g. the query object type).\n * contextValue:\n * The context value is provided as an argument to resolver functions after\n * field arguments. It is used to pass shared information useful at any point\n * during executing this query, for example the currently logged in user and\n * connections to databases or other services.\n * variableValues:\n * A mapping of variable name to runtime value to use for all variables\n * defined in the requestString.\n * operationName:\n * The name of the operation to use if requestString contains multiple\n * possible operations. Can be omitted if requestString contains only\n * one operation.\n * fieldResolver:\n * A resolver function to use when one is not provided by the schema.\n * If not provided, the default field resolver is used (which looks for a\n * value or method on the source value with the field's name).\n * typeResolver:\n * A type resolver function to use when none is provided by the schema.\n * If not provided, the default type resolver is used (which looks for a\n * `__typename` field or alternatively calls the `isTypeOf` method).\n */\n\nexport function graphql(argsOrSchema, source, rootValue, contextValue, variableValues, operationName, fieldResolver, typeResolver) {\n var _arguments = arguments;\n /* eslint-enable no-redeclare */\n // Always return a Promise for a consistent API.\n\n return new Promise(function (resolve) {\n return resolve( // Extract arguments from object args if provided.\n _arguments.length === 1 ? graphqlImpl(argsOrSchema) : graphqlImpl({\n schema: argsOrSchema,\n source: source,\n rootValue: rootValue,\n contextValue: contextValue,\n variableValues: variableValues,\n operationName: operationName,\n fieldResolver: fieldResolver,\n typeResolver: typeResolver\n }));\n });\n}\n/**\n * The graphqlSync function also fulfills GraphQL operations by parsing,\n * validating, and executing a GraphQL document along side a GraphQL schema.\n * However, it guarantees to complete synchronously (or throw an error) assuming\n * that all field resolvers are also synchronous.\n */\n\nexport function graphqlSync(argsOrSchema, source, rootValue, contextValue, variableValues, operationName, fieldResolver, typeResolver) {\n /* eslint-enable no-redeclare */\n // Extract arguments from object args if provided.\n var result = arguments.length === 1 ? graphqlImpl(argsOrSchema) : graphqlImpl({\n schema: argsOrSchema,\n source: source,\n rootValue: rootValue,\n contextValue: contextValue,\n variableValues: variableValues,\n operationName: operationName,\n fieldResolver: fieldResolver,\n typeResolver: typeResolver\n }); // Assert that the execution was synchronous.\n\n if (isPromise(result)) {\n throw new Error('GraphQL execution failed to complete synchronously.');\n }\n\n return result;\n}\n\nfunction graphqlImpl(args) {\n var schema = args.schema,\n source = args.source,\n rootValue = args.rootValue,\n contextValue = args.contextValue,\n variableValues = args.variableValues,\n operationName = args.operationName,\n fieldResolver = args.fieldResolver,\n typeResolver = args.typeResolver; // Validate Schema\n\n var schemaValidationErrors = validateSchema(schema);\n\n if (schemaValidationErrors.length > 0) {\n return {\n errors: schemaValidationErrors\n };\n } // Parse\n\n\n var document;\n\n try {\n document = parse(source);\n } catch (syntaxError) {\n return {\n errors: [syntaxError]\n };\n } // Validate\n\n\n var validationErrors = validate(schema, document);\n\n if (validationErrors.length > 0) {\n return {\n errors: validationErrors\n };\n } // Execute\n\n\n return execute({\n schema: schema,\n document: document,\n rootValue: rootValue,\n contextValue: contextValue,\n variableValues: variableValues,\n operationName: operationName,\n fieldResolver: fieldResolver,\n typeResolver: typeResolver\n });\n}","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nimport { $$asyncIterator, getAsyncIterator } from 'iterall';\n/**\n * Given an AsyncIterable and a callback function, return an AsyncIterator\n * which produces values mapped via calling the callback function.\n */\n\nexport default function mapAsyncIterator(iterable, callback, rejectCallback) {\n var iterator = getAsyncIterator(iterable);\n var $return;\n var abruptClose; // $FlowFixMe(>=0.68.0)\n\n if (typeof iterator.return === 'function') {\n $return = iterator.return;\n\n abruptClose = function abruptClose(error) {\n var rethrow = function rethrow() {\n return Promise.reject(error);\n };\n\n return $return.call(iterator).then(rethrow, rethrow);\n };\n }\n\n function mapResult(result) {\n return result.done ? result : asyncMapValue(result.value, callback).then(iteratorResult, abruptClose);\n }\n\n var mapReject;\n\n if (rejectCallback) {\n // Capture rejectCallback to ensure it cannot be null.\n var reject = rejectCallback;\n\n mapReject = function mapReject(error) {\n return asyncMapValue(error, reject).then(iteratorResult, abruptClose);\n };\n }\n /* TODO: Flow doesn't support symbols as keys:\n https://github.com/facebook/flow/issues/3258 */\n\n\n return _defineProperty({\n next: function next() {\n return iterator.next().then(mapResult, mapReject);\n },\n return: function _return() {\n return $return ? $return.call(iterator).then(mapResult, mapReject) : Promise.resolve({\n value: undefined,\n done: true\n });\n },\n throw: function _throw(error) {\n // $FlowFixMe(>=0.68.0)\n if (typeof iterator.throw === 'function') {\n return iterator.throw(error).then(mapResult, mapReject);\n }\n\n return Promise.reject(error).catch(abruptClose);\n }\n }, $$asyncIterator, function () {\n return this;\n });\n}\n\nfunction asyncMapValue(value, callback) {\n return new Promise(function (resolve) {\n return resolve(callback(value));\n });\n}\n\nfunction iteratorResult(value) {\n return {\n value: value,\n done: false\n };\n}","import { isAsyncIterable } from 'iterall';\nimport inspect from '../jsutils/inspect';\nimport { addPath, pathToArray } from '../jsutils/Path';\nimport { GraphQLError } from '../error/GraphQLError';\nimport { locatedError } from '../error/locatedError';\nimport { assertValidExecutionArguments, buildExecutionContext, buildResolveInfo, collectFields, execute, getFieldDef, resolveFieldValueOrError } from '../execution/execute';\nimport { getOperationRootType } from '../utilities/getOperationRootType';\nimport mapAsyncIterator from './mapAsyncIterator';\nexport function subscribe(argsOrSchema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, subscribeFieldResolver) {\n /* eslint-enable no-redeclare */\n // Extract arguments from object args if provided.\n return arguments.length === 1 ? subscribeImpl(argsOrSchema) : subscribeImpl({\n schema: argsOrSchema,\n document: document,\n rootValue: rootValue,\n contextValue: contextValue,\n variableValues: variableValues,\n operationName: operationName,\n fieldResolver: fieldResolver,\n subscribeFieldResolver: subscribeFieldResolver\n });\n}\n/**\n * This function checks if the error is a GraphQLError. If it is, report it as\n * an ExecutionResult, containing only errors and no data. Otherwise treat the\n * error as a system-class error and re-throw it.\n */\n\nfunction reportGraphQLError(error) {\n if (error instanceof GraphQLError) {\n return {\n errors: [error]\n };\n }\n\n throw error;\n}\n\nfunction subscribeImpl(args) {\n var schema = args.schema,\n document = args.document,\n rootValue = args.rootValue,\n contextValue = args.contextValue,\n variableValues = args.variableValues,\n operationName = args.operationName,\n fieldResolver = args.fieldResolver,\n subscribeFieldResolver = args.subscribeFieldResolver;\n var sourcePromise = createSourceEventStream(schema, document, rootValue, contextValue, variableValues, operationName, subscribeFieldResolver); // For each payload yielded from a subscription, map it over the normal\n // GraphQL `execute` function, with `payload` as the rootValue.\n // This implements the \"MapSourceToResponseEvent\" algorithm described in\n // the GraphQL specification. The `execute` function provides the\n // \"ExecuteSubscriptionEvent\" algorithm, as it is nearly identical to the\n // \"ExecuteQuery\" algorithm, for which `execute` is also used.\n\n var mapSourceToResponse = function mapSourceToResponse(payload) {\n return execute(schema, document, payload, contextValue, variableValues, operationName, fieldResolver);\n }; // Resolve the Source Stream, then map every source value to a\n // ExecutionResult value as described above.\n\n\n return sourcePromise.then(function (resultOrStream) {\n return (// Note: Flow can't refine isAsyncIterable, so explicit casts are used.\n isAsyncIterable(resultOrStream) ? mapAsyncIterator(resultOrStream, mapSourceToResponse, reportGraphQLError) : resultOrStream\n );\n });\n}\n/**\n * Implements the \"CreateSourceEventStream\" algorithm described in the\n * GraphQL specification, resolving the subscription source event stream.\n *\n * Returns a Promise which resolves to either an AsyncIterable (if successful)\n * or an ExecutionResult (error). The promise will be rejected if the schema or\n * other arguments to this function are invalid, or if the resolved event stream\n * is not an async iterable.\n *\n * If the client-provided arguments to this function do not result in a\n * compliant subscription, a GraphQL Response (ExecutionResult) with\n * descriptive errors and no data will be returned.\n *\n * If the the source stream could not be created due to faulty subscription\n * resolver logic or underlying systems, the promise will resolve to a single\n * ExecutionResult containing `errors` and no `data`.\n *\n * If the operation succeeded, the promise resolves to the AsyncIterable for the\n * event stream returned by the resolver.\n *\n * A Source Event Stream represents a sequence of events, each of which triggers\n * a GraphQL execution for that event.\n *\n * This may be useful when hosting the stateful subscription service in a\n * different process or machine than the stateless GraphQL execution engine,\n * or otherwise separating these two steps. For more on this, see the\n * \"Supporting Subscriptions at Scale\" information in the GraphQL specification.\n */\n\n\nexport function createSourceEventStream(schema, document, rootValue, contextValue, variableValues, operationName, fieldResolver) {\n // If arguments are missing or incorrectly typed, this is an internal\n // developer mistake which should throw an early error.\n assertValidExecutionArguments(schema, document, variableValues);\n\n try {\n // If a valid context cannot be created due to incorrect arguments,\n // this will throw an error.\n var exeContext = buildExecutionContext(schema, document, rootValue, contextValue, variableValues, operationName, fieldResolver); // Return early errors if execution context failed.\n\n if (Array.isArray(exeContext)) {\n return Promise.resolve({\n errors: exeContext\n });\n }\n\n var type = getOperationRootType(schema, exeContext.operation);\n var fields = collectFields(exeContext, type, exeContext.operation.selectionSet, Object.create(null), Object.create(null));\n var responseNames = Object.keys(fields);\n var responseName = responseNames[0];\n var fieldNodes = fields[responseName];\n var fieldNode = fieldNodes[0];\n var fieldName = fieldNode.name.value;\n var fieldDef = getFieldDef(schema, type, fieldName);\n\n if (!fieldDef) {\n throw new GraphQLError(\"The subscription field \\\"\".concat(fieldName, \"\\\" is not defined.\"), fieldNodes);\n } // Call the `subscribe()` resolver or the default resolver to produce an\n // AsyncIterable yielding raw payloads.\n\n\n var resolveFn = fieldDef.subscribe || exeContext.fieldResolver;\n var path = addPath(undefined, responseName);\n var info = buildResolveInfo(exeContext, fieldDef, fieldNodes, type, path); // resolveFieldValueOrError implements the \"ResolveFieldEventStream\"\n // algorithm from GraphQL specification. It differs from\n // \"ResolveFieldValue\" due to providing a different `resolveFn`.\n\n var result = resolveFieldValueOrError(exeContext, fieldDef, fieldNodes, resolveFn, rootValue, info); // Coerce to Promise for easier error handling and consistent return type.\n\n return Promise.resolve(result).then(function (eventStream) {\n // If eventStream is an Error, rethrow a located error.\n if (eventStream instanceof Error) {\n return {\n errors: [locatedError(eventStream, fieldNodes, pathToArray(path))]\n };\n } // Assert field returned an event stream, otherwise yield an error.\n\n\n if (isAsyncIterable(eventStream)) {\n // Note: isAsyncIterable above ensures this will be correct.\n return eventStream;\n }\n\n throw new Error('Subscription field must return Async Iterable. Received: ' + inspect(eventStream));\n });\n } catch (error) {\n // As with reportGraphQLError above, if the error is a GraphQLError, report\n // it as an ExecutionResult; otherwise treat it as a system-class error and\n // re-throw it.\n return error instanceof GraphQLError ? Promise.resolve({\n errors: [error]\n }) : Promise.reject(error);\n }\n}","import devAssert from '../jsutils/devAssert';\n/**\n * Given a GraphQLError, format it according to the rules described by the\n * Response Format, Errors section of the GraphQL Specification.\n */\n\nexport function formatError(error) {\n error || devAssert(0, 'Received null or undefined error.');\n var message = error.message || 'An unknown error occurred.';\n var locations = error.locations;\n var path = error.path;\n var extensions = error.extensions;\n return extensions ? {\n message: message,\n locations: locations,\n path: path,\n extensions: extensions\n } : {\n message: message,\n locations: locations,\n path: path\n };\n}\n/**\n * @see https://github.com/graphql/graphql-spec/blob/master/spec/Section%207%20--%20Response.md#errors\n */","export function getIntrospectionQuery(options) {\n var descriptions = !(options && options.descriptions === false);\n return \"\\n query IntrospectionQuery {\\n __schema {\\n queryType { name }\\n mutationType { name }\\n subscriptionType { name }\\n types {\\n ...FullType\\n }\\n directives {\\n name\\n \".concat(descriptions ? 'description' : '', \"\\n locations\\n args {\\n ...InputValue\\n }\\n }\\n }\\n }\\n\\n fragment FullType on __Type {\\n kind\\n name\\n \").concat(descriptions ? 'description' : '', \"\\n fields(includeDeprecated: true) {\\n name\\n \").concat(descriptions ? 'description' : '', \"\\n args {\\n ...InputValue\\n }\\n type {\\n ...TypeRef\\n }\\n isDeprecated\\n deprecationReason\\n }\\n inputFields {\\n ...InputValue\\n }\\n interfaces {\\n ...TypeRef\\n }\\n enumValues(includeDeprecated: true) {\\n name\\n \").concat(descriptions ? 'description' : '', \"\\n isDeprecated\\n deprecationReason\\n }\\n possibleTypes {\\n ...TypeRef\\n }\\n }\\n\\n fragment InputValue on __InputValue {\\n name\\n \").concat(descriptions ? 'description' : '', \"\\n type { ...TypeRef }\\n defaultValue\\n }\\n\\n fragment TypeRef on __Type {\\n kind\\n name\\n ofType {\\n kind\\n name\\n ofType {\\n kind\\n name\\n ofType {\\n kind\\n name\\n ofType {\\n kind\\n name\\n ofType {\\n kind\\n name\\n ofType {\\n kind\\n name\\n ofType {\\n kind\\n name\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n \");\n}\n/**\n * Deprecated, call getIntrospectionQuery directly.\n *\n * This function will be removed in v15\n */\n\nexport var introspectionQuery = getIntrospectionQuery();","import invariant from '../jsutils/invariant';\nimport isPromise from '../jsutils/isPromise';\nimport { parse } from '../language/parser';\nimport { execute } from '../execution/execute';\nimport { getIntrospectionQuery } from './introspectionQuery';\n/**\n * Build an IntrospectionQuery from a GraphQLSchema\n *\n * IntrospectionQuery is useful for utilities that care about type and field\n * relationships, but do not need to traverse through those relationships.\n *\n * This is the inverse of buildClientSchema. The primary use case is outside\n * of the server context, for instance when doing schema comparisons.\n */\n\nexport function introspectionFromSchema(schema, options) {\n var queryAST = parse(getIntrospectionQuery(options));\n var result = execute(schema, queryAST);\n /* istanbul ignore next */\n\n !isPromise(result) && !result.errors && result.data || invariant(0);\n return result.data;\n}","import objectValues from '../polyfills/objectValues';\nimport inspect from '../jsutils/inspect';\nimport devAssert from '../jsutils/devAssert';\nimport keyValMap from '../jsutils/keyValMap';\nimport isObjectLike from '../jsutils/isObjectLike';\nimport { parseValue } from '../language/parser';\nimport { GraphQLDirective } from '../type/directives';\nimport { specifiedScalarTypes } from '../type/scalars';\nimport { introspectionTypes, TypeKind } from '../type/introspection';\nimport { GraphQLSchema } from '../type/schema';\nimport { isInputType, isOutputType, GraphQLScalarType, GraphQLObjectType, GraphQLInterfaceType, GraphQLUnionType, GraphQLEnumType, GraphQLInputObjectType, GraphQLList, GraphQLNonNull, assertNullableType, assertObjectType, assertInterfaceType } from '../type/definition';\nimport { valueFromAST } from './valueFromAST';\n/**\n * Build a GraphQLSchema for use by client tools.\n *\n * Given the result of a client running the introspection query, creates and\n * returns a GraphQLSchema instance which can be then used with all graphql-js\n * tools, but cannot be used to execute a query, as introspection does not\n * represent the \"resolver\", \"parse\" or \"serialize\" functions or any other\n * server-internal mechanisms.\n *\n * This function expects a complete introspection result. Don't forget to check\n * the \"errors\" field of a server response before calling this function.\n */\n\nexport function buildClientSchema(introspection, options) {\n isObjectLike(introspection) && isObjectLike(introspection.__schema) || devAssert(0, 'Invalid or incomplete introspection result. Ensure that you are passing \"data\" property of introspection response and no \"errors\" was returned alongside: ' + inspect(introspection)); // Get the schema from the introspection result.\n\n var schemaIntrospection = introspection.__schema; // Iterate through all types, getting the type definition for each.\n\n var typeMap = keyValMap(schemaIntrospection.types, function (typeIntrospection) {\n return typeIntrospection.name;\n }, function (typeIntrospection) {\n return buildType(typeIntrospection);\n });\n\n for (var _i2 = 0, _ref2 = [].concat(specifiedScalarTypes, introspectionTypes); _i2 < _ref2.length; _i2++) {\n var stdType = _ref2[_i2];\n\n if (typeMap[stdType.name]) {\n typeMap[stdType.name] = stdType;\n }\n } // Get the root Query, Mutation, and Subscription types.\n\n\n var queryType = schemaIntrospection.queryType ? getObjectType(schemaIntrospection.queryType) : null;\n var mutationType = schemaIntrospection.mutationType ? getObjectType(schemaIntrospection.mutationType) : null;\n var subscriptionType = schemaIntrospection.subscriptionType ? getObjectType(schemaIntrospection.subscriptionType) : null; // Get the directives supported by Introspection, assuming empty-set if\n // directives were not queried for.\n\n var directives = schemaIntrospection.directives ? schemaIntrospection.directives.map(buildDirective) : []; // Then produce and return a Schema with these types.\n\n return new GraphQLSchema({\n query: queryType,\n mutation: mutationType,\n subscription: subscriptionType,\n types: objectValues(typeMap),\n directives: directives,\n assumeValid: options && options.assumeValid,\n allowedLegacyNames: options && options.allowedLegacyNames\n }); // Given a type reference in introspection, return the GraphQLType instance.\n // preferring cached instances before building new instances.\n\n function getType(typeRef) {\n if (typeRef.kind === TypeKind.LIST) {\n var itemRef = typeRef.ofType;\n\n if (!itemRef) {\n throw new Error('Decorated type deeper than introspection query.');\n }\n\n return GraphQLList(getType(itemRef));\n }\n\n if (typeRef.kind === TypeKind.NON_NULL) {\n var nullableRef = typeRef.ofType;\n\n if (!nullableRef) {\n throw new Error('Decorated type deeper than introspection query.');\n }\n\n var nullableType = getType(nullableRef);\n return GraphQLNonNull(assertNullableType(nullableType));\n }\n\n if (!typeRef.name) {\n throw new Error('Unknown type reference: ' + inspect(typeRef));\n }\n\n return getNamedType(typeRef.name);\n }\n\n function getNamedType(typeName) {\n var type = typeMap[typeName];\n\n if (!type) {\n throw new Error(\"Invalid or incomplete schema, unknown type: \".concat(typeName, \". Ensure that a full introspection query is used in order to build a client schema.\"));\n }\n\n return type;\n }\n\n function getInputType(typeRef) {\n var type = getType(typeRef);\n\n if (isInputType(type)) {\n return type;\n }\n\n throw new Error('Introspection must provide input type for arguments, but received: ' + inspect(type) + '.');\n }\n\n function getOutputType(typeRef) {\n var type = getType(typeRef);\n\n if (isOutputType(type)) {\n return type;\n }\n\n throw new Error('Introspection must provide output type for fields, but received: ' + inspect(type) + '.');\n }\n\n function getObjectType(typeRef) {\n var type = getType(typeRef);\n return assertObjectType(type);\n }\n\n function getInterfaceType(typeRef) {\n var type = getType(typeRef);\n return assertInterfaceType(type);\n } // Given a type's introspection result, construct the correct\n // GraphQLType instance.\n\n\n function buildType(type) {\n if (type && type.name && type.kind) {\n switch (type.kind) {\n case TypeKind.SCALAR:\n return buildScalarDef(type);\n\n case TypeKind.OBJECT:\n return buildObjectDef(type);\n\n case TypeKind.INTERFACE:\n return buildInterfaceDef(type);\n\n case TypeKind.UNION:\n return buildUnionDef(type);\n\n case TypeKind.ENUM:\n return buildEnumDef(type);\n\n case TypeKind.INPUT_OBJECT:\n return buildInputObjectDef(type);\n }\n }\n\n throw new Error('Invalid or incomplete introspection result. Ensure that a full introspection query is used in order to build a client schema:' + inspect(type));\n }\n\n function buildScalarDef(scalarIntrospection) {\n return new GraphQLScalarType({\n name: scalarIntrospection.name,\n description: scalarIntrospection.description\n });\n }\n\n function buildObjectDef(objectIntrospection) {\n if (!objectIntrospection.interfaces) {\n throw new Error('Introspection result missing interfaces: ' + inspect(objectIntrospection));\n }\n\n return new GraphQLObjectType({\n name: objectIntrospection.name,\n description: objectIntrospection.description,\n interfaces: function interfaces() {\n return objectIntrospection.interfaces.map(getInterfaceType);\n },\n fields: function fields() {\n return buildFieldDefMap(objectIntrospection);\n }\n });\n }\n\n function buildInterfaceDef(interfaceIntrospection) {\n return new GraphQLInterfaceType({\n name: interfaceIntrospection.name,\n description: interfaceIntrospection.description,\n fields: function fields() {\n return buildFieldDefMap(interfaceIntrospection);\n }\n });\n }\n\n function buildUnionDef(unionIntrospection) {\n if (!unionIntrospection.possibleTypes) {\n throw new Error('Introspection result missing possibleTypes: ' + inspect(unionIntrospection));\n }\n\n return new GraphQLUnionType({\n name: unionIntrospection.name,\n description: unionIntrospection.description,\n types: function types() {\n return unionIntrospection.possibleTypes.map(getObjectType);\n }\n });\n }\n\n function buildEnumDef(enumIntrospection) {\n if (!enumIntrospection.enumValues) {\n throw new Error('Introspection result missing enumValues: ' + inspect(enumIntrospection));\n }\n\n return new GraphQLEnumType({\n name: enumIntrospection.name,\n description: enumIntrospection.description,\n values: keyValMap(enumIntrospection.enumValues, function (valueIntrospection) {\n return valueIntrospection.name;\n }, function (valueIntrospection) {\n return {\n description: valueIntrospection.description,\n deprecationReason: valueIntrospection.deprecationReason\n };\n })\n });\n }\n\n function buildInputObjectDef(inputObjectIntrospection) {\n if (!inputObjectIntrospection.inputFields) {\n throw new Error('Introspection result missing inputFields: ' + inspect(inputObjectIntrospection));\n }\n\n return new GraphQLInputObjectType({\n name: inputObjectIntrospection.name,\n description: inputObjectIntrospection.description,\n fields: function fields() {\n return buildInputValueDefMap(inputObjectIntrospection.inputFields);\n }\n });\n }\n\n function buildFieldDefMap(typeIntrospection) {\n if (!typeIntrospection.fields) {\n throw new Error('Introspection result missing fields: ' + inspect(typeIntrospection));\n }\n\n return keyValMap(typeIntrospection.fields, function (fieldIntrospection) {\n return fieldIntrospection.name;\n }, function (fieldIntrospection) {\n if (!fieldIntrospection.args) {\n throw new Error('Introspection result missing field args: ' + inspect(fieldIntrospection));\n }\n\n return {\n description: fieldIntrospection.description,\n deprecationReason: fieldIntrospection.deprecationReason,\n type: getOutputType(fieldIntrospection.type),\n args: buildInputValueDefMap(fieldIntrospection.args)\n };\n });\n }\n\n function buildInputValueDefMap(inputValueIntrospections) {\n return keyValMap(inputValueIntrospections, function (inputValue) {\n return inputValue.name;\n }, buildInputValue);\n }\n\n function buildInputValue(inputValueIntrospection) {\n var type = getInputType(inputValueIntrospection.type);\n var defaultValue = inputValueIntrospection.defaultValue ? valueFromAST(parseValue(inputValueIntrospection.defaultValue), type) : undefined;\n return {\n description: inputValueIntrospection.description,\n type: type,\n defaultValue: defaultValue\n };\n }\n\n function buildDirective(directiveIntrospection) {\n if (!directiveIntrospection.args) {\n throw new Error('Introspection result missing directive args: ' + inspect(directiveIntrospection));\n }\n\n if (!directiveIntrospection.locations) {\n throw new Error('Introspection result missing directive locations: ' + inspect(directiveIntrospection));\n }\n\n return new GraphQLDirective({\n name: directiveIntrospection.name,\n description: directiveIntrospection.description,\n locations: directiveIntrospection.locations.slice(),\n args: buildInputValueDefMap(directiveIntrospection.args)\n });\n }\n}","import objectValues from '../polyfills/objectValues';\nimport keyMap from '../jsutils/keyMap';\nimport inspect from '../jsutils/inspect';\nimport invariant from '../jsutils/invariant';\nimport devAssert from '../jsutils/devAssert';\nimport keyValMap from '../jsutils/keyValMap';\nimport { Kind } from '../language/kinds';\nimport { TokenKind } from '../language/tokenKind';\nimport { parse } from '../language/parser';\nimport { isTypeDefinitionNode } from '../language/predicates';\nimport { dedentBlockStringValue } from '../language/blockString';\nimport { assertValidSDL } from '../validation/validate';\nimport { getDirectiveValues } from '../execution/values';\nimport { specifiedScalarTypes } from '../type/scalars';\nimport { introspectionTypes } from '../type/introspection';\nimport { GraphQLSchema } from '../type/schema';\nimport { GraphQLDirective, GraphQLSkipDirective, GraphQLIncludeDirective, GraphQLDeprecatedDirective } from '../type/directives';\nimport { GraphQLScalarType, GraphQLObjectType, GraphQLInterfaceType, GraphQLUnionType, GraphQLEnumType, GraphQLInputObjectType, GraphQLList, GraphQLNonNull } from '../type/definition';\nimport { valueFromAST } from './valueFromAST';\n/**\n * This takes the ast of a schema document produced by the parse function in\n * src/language/parser.js.\n *\n * If no schema definition is provided, then it will look for types named Query\n * and Mutation.\n *\n * Given that AST it constructs a GraphQLSchema. The resulting schema\n * has no resolve methods, so execution will use default resolvers.\n *\n * Accepts options as a second argument:\n *\n * - commentDescriptions:\n * Provide true to use preceding comments as the description.\n *\n */\n\nexport function buildASTSchema(documentAST, options) {\n documentAST && documentAST.kind === Kind.DOCUMENT || devAssert(0, 'Must provide valid Document AST');\n\n if (!options || !(options.assumeValid || options.assumeValidSDL)) {\n assertValidSDL(documentAST);\n }\n\n var schemaDef;\n var typeDefs = [];\n var directiveDefs = [];\n\n for (var _i2 = 0, _documentAST$definiti2 = documentAST.definitions; _i2 < _documentAST$definiti2.length; _i2++) {\n var def = _documentAST$definiti2[_i2];\n\n if (def.kind === Kind.SCHEMA_DEFINITION) {\n schemaDef = def;\n } else if (isTypeDefinitionNode(def)) {\n typeDefs.push(def);\n } else if (def.kind === Kind.DIRECTIVE_DEFINITION) {\n directiveDefs.push(def);\n }\n }\n\n var astBuilder = new ASTDefinitionBuilder(options, function (typeName) {\n var type = typeMap[typeName];\n\n if (type === undefined) {\n throw new Error(\"Type \\\"\".concat(typeName, \"\\\" not found in document.\"));\n }\n\n return type;\n });\n var typeMap = keyByNameNode(typeDefs, function (node) {\n return astBuilder.buildType(node);\n });\n var operationTypes = schemaDef ? getOperationTypes(schemaDef) : {\n query: 'Query',\n mutation: 'Mutation',\n subscription: 'Subscription'\n };\n var directives = directiveDefs.map(function (def) {\n return astBuilder.buildDirective(def);\n }); // If specified directives were not explicitly declared, add them.\n\n if (!directives.some(function (directive) {\n return directive.name === 'skip';\n })) {\n directives.push(GraphQLSkipDirective);\n }\n\n if (!directives.some(function (directive) {\n return directive.name === 'include';\n })) {\n directives.push(GraphQLIncludeDirective);\n }\n\n if (!directives.some(function (directive) {\n return directive.name === 'deprecated';\n })) {\n directives.push(GraphQLDeprecatedDirective);\n }\n\n return new GraphQLSchema({\n // Note: While this could make early assertions to get the correctly\n // typed values below, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n query: operationTypes.query ? typeMap[operationTypes.query] : null,\n mutation: operationTypes.mutation ? typeMap[operationTypes.mutation] : null,\n subscription: operationTypes.subscription ? typeMap[operationTypes.subscription] : null,\n types: objectValues(typeMap),\n directives: directives,\n astNode: schemaDef,\n assumeValid: options && options.assumeValid,\n allowedLegacyNames: options && options.allowedLegacyNames\n });\n\n function getOperationTypes(schema) {\n var opTypes = {};\n\n for (var _i4 = 0, _schema$operationType2 = schema.operationTypes; _i4 < _schema$operationType2.length; _i4++) {\n var operationType = _schema$operationType2[_i4];\n opTypes[operationType.operation] = operationType.type.name.value;\n }\n\n return opTypes;\n }\n}\nvar stdTypeMap = keyMap(specifiedScalarTypes.concat(introspectionTypes), function (type) {\n return type.name;\n});\nexport var ASTDefinitionBuilder =\n/*#__PURE__*/\nfunction () {\n function ASTDefinitionBuilder(options, resolveType) {\n this._options = options;\n this._resolveType = resolveType;\n }\n\n var _proto = ASTDefinitionBuilder.prototype;\n\n _proto.getNamedType = function getNamedType(node) {\n var name = node.name.value;\n return stdTypeMap[name] || this._resolveType(name);\n };\n\n _proto.getWrappedType = function getWrappedType(node) {\n if (node.kind === Kind.LIST_TYPE) {\n return new GraphQLList(this.getWrappedType(node.type));\n }\n\n if (node.kind === Kind.NON_NULL_TYPE) {\n return new GraphQLNonNull(this.getWrappedType(node.type));\n }\n\n return this.getNamedType(node);\n };\n\n _proto.buildDirective = function buildDirective(directive) {\n var _this = this;\n\n var locations = directive.locations.map(function (_ref) {\n var value = _ref.value;\n return value;\n });\n return new GraphQLDirective({\n name: directive.name.value,\n description: getDescription(directive, this._options),\n locations: locations,\n isRepeatable: directive.repeatable,\n args: keyByNameNode(directive.arguments || [], function (arg) {\n return _this.buildArg(arg);\n }),\n astNode: directive\n });\n };\n\n _proto.buildField = function buildField(field) {\n var _this2 = this;\n\n return {\n // Note: While this could make assertions to get the correctly typed\n // value, that would throw immediately while type system validation\n // with validateSchema() will produce more actionable results.\n type: this.getWrappedType(field.type),\n description: getDescription(field, this._options),\n args: keyByNameNode(field.arguments || [], function (arg) {\n return _this2.buildArg(arg);\n }),\n deprecationReason: getDeprecationReason(field),\n astNode: field\n };\n };\n\n _proto.buildArg = function buildArg(value) {\n // Note: While this could make assertions to get the correctly typed\n // value, that would throw immediately while type system validation\n // with validateSchema() will produce more actionable results.\n var type = this.getWrappedType(value.type);\n return {\n type: type,\n description: getDescription(value, this._options),\n defaultValue: valueFromAST(value.defaultValue, type),\n astNode: value\n };\n };\n\n _proto.buildInputField = function buildInputField(value) {\n // Note: While this could make assertions to get the correctly typed\n // value, that would throw immediately while type system validation\n // with validateSchema() will produce more actionable results.\n var type = this.getWrappedType(value.type);\n return {\n type: type,\n description: getDescription(value, this._options),\n defaultValue: valueFromAST(value.defaultValue, type),\n astNode: value\n };\n };\n\n _proto.buildEnumValue = function buildEnumValue(value) {\n return {\n description: getDescription(value, this._options),\n deprecationReason: getDeprecationReason(value),\n astNode: value\n };\n };\n\n _proto.buildType = function buildType(astNode) {\n var name = astNode.name.value;\n\n if (stdTypeMap[name]) {\n return stdTypeMap[name];\n }\n\n switch (astNode.kind) {\n case Kind.OBJECT_TYPE_DEFINITION:\n return this._makeTypeDef(astNode);\n\n case Kind.INTERFACE_TYPE_DEFINITION:\n return this._makeInterfaceDef(astNode);\n\n case Kind.ENUM_TYPE_DEFINITION:\n return this._makeEnumDef(astNode);\n\n case Kind.UNION_TYPE_DEFINITION:\n return this._makeUnionDef(astNode);\n\n case Kind.SCALAR_TYPE_DEFINITION:\n return this._makeScalarDef(astNode);\n\n case Kind.INPUT_OBJECT_TYPE_DEFINITION:\n return this._makeInputObjectDef(astNode);\n } // Not reachable. All possible type definition nodes have been considered.\n\n /* istanbul ignore next */\n\n\n invariant(false, 'Unexpected type definition node: ' + inspect(astNode));\n };\n\n _proto._makeTypeDef = function _makeTypeDef(astNode) {\n var _this3 = this;\n\n var interfaceNodes = astNode.interfaces;\n var fieldNodes = astNode.fields; // Note: While this could make assertions to get the correctly typed\n // values below, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n\n var interfaces = interfaceNodes && interfaceNodes.length > 0 ? function () {\n return interfaceNodes.map(function (ref) {\n return _this3.getNamedType(ref);\n });\n } : [];\n var fields = fieldNodes && fieldNodes.length > 0 ? function () {\n return keyByNameNode(fieldNodes, function (field) {\n return _this3.buildField(field);\n });\n } : Object.create(null);\n return new GraphQLObjectType({\n name: astNode.name.value,\n description: getDescription(astNode, this._options),\n interfaces: interfaces,\n fields: fields,\n astNode: astNode\n });\n };\n\n _proto._makeInterfaceDef = function _makeInterfaceDef(astNode) {\n var _this4 = this;\n\n var fieldNodes = astNode.fields;\n var fields = fieldNodes && fieldNodes.length > 0 ? function () {\n return keyByNameNode(fieldNodes, function (field) {\n return _this4.buildField(field);\n });\n } : Object.create(null);\n return new GraphQLInterfaceType({\n name: astNode.name.value,\n description: getDescription(astNode, this._options),\n fields: fields,\n astNode: astNode\n });\n };\n\n _proto._makeEnumDef = function _makeEnumDef(astNode) {\n var _this5 = this;\n\n var valueNodes = astNode.values || [];\n return new GraphQLEnumType({\n name: astNode.name.value,\n description: getDescription(astNode, this._options),\n values: keyByNameNode(valueNodes, function (value) {\n return _this5.buildEnumValue(value);\n }),\n astNode: astNode\n });\n };\n\n _proto._makeUnionDef = function _makeUnionDef(astNode) {\n var _this6 = this;\n\n var typeNodes = astNode.types; // Note: While this could make assertions to get the correctly typed\n // values below, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n\n var types = typeNodes && typeNodes.length > 0 ? function () {\n return typeNodes.map(function (ref) {\n return _this6.getNamedType(ref);\n });\n } : [];\n return new GraphQLUnionType({\n name: astNode.name.value,\n description: getDescription(astNode, this._options),\n types: types,\n astNode: astNode\n });\n };\n\n _proto._makeScalarDef = function _makeScalarDef(astNode) {\n return new GraphQLScalarType({\n name: astNode.name.value,\n description: getDescription(astNode, this._options),\n astNode: astNode\n });\n };\n\n _proto._makeInputObjectDef = function _makeInputObjectDef(def) {\n var _this7 = this;\n\n var fields = def.fields;\n return new GraphQLInputObjectType({\n name: def.name.value,\n description: getDescription(def, this._options),\n fields: fields ? function () {\n return keyByNameNode(fields, function (field) {\n return _this7.buildInputField(field);\n });\n } : Object.create(null),\n astNode: def\n });\n };\n\n return ASTDefinitionBuilder;\n}();\n\nfunction keyByNameNode(list, valFn) {\n return keyValMap(list, function (_ref2) {\n var name = _ref2.name;\n return name.value;\n }, valFn);\n}\n/**\n * Given a field or enum value node, returns the string value for the\n * deprecation reason.\n */\n\n\nfunction getDeprecationReason(node) {\n var deprecated = getDirectiveValues(GraphQLDeprecatedDirective, node);\n return deprecated && deprecated.reason;\n}\n/**\n * Given an ast node, returns its string description.\n * @deprecated: provided to ease adoption and will be removed in v16.\n *\n * Accepts options as a second argument:\n *\n * - commentDescriptions:\n * Provide true to use preceding comments as the description.\n *\n */\n\n\nexport function getDescription(node, options) {\n if (node.description) {\n return node.description.value;\n }\n\n if (options && options.commentDescriptions) {\n var rawValue = getLeadingCommentBlock(node);\n\n if (rawValue !== undefined) {\n return dedentBlockStringValue('\\n' + rawValue);\n }\n }\n}\n\nfunction getLeadingCommentBlock(node) {\n var loc = node.loc;\n\n if (!loc) {\n return;\n }\n\n var comments = [];\n var token = loc.startToken.prev;\n\n while (token && token.kind === TokenKind.COMMENT && token.next && token.prev && token.line + 1 === token.next.line && token.line !== token.prev.line) {\n var value = String(token.value);\n comments.push(value);\n token = token.prev;\n }\n\n return comments.reverse().join('\\n');\n}\n/**\n * A helper function to build a GraphQLSchema directly from a source\n * document.\n */\n\n\nexport function buildSchema(source, options) {\n return buildASTSchema(parse(source, options), options);\n}","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nimport flatMap from '../polyfills/flatMap';\nimport objectValues from '../polyfills/objectValues';\nimport inspect from '../jsutils/inspect';\nimport mapValue from '../jsutils/mapValue';\nimport invariant from '../jsutils/invariant';\nimport devAssert from '../jsutils/devAssert';\nimport keyValMap from '../jsutils/keyValMap';\nimport { Kind } from '../language/kinds';\nimport { isTypeDefinitionNode, isTypeExtensionNode } from '../language/predicates';\nimport { assertValidSDLExtension } from '../validation/validate';\nimport { GraphQLDirective } from '../type/directives';\nimport { isSpecifiedScalarType } from '../type/scalars';\nimport { isIntrospectionType } from '../type/introspection';\nimport { assertSchema, GraphQLSchema } from '../type/schema';\nimport { isScalarType, isObjectType, isInterfaceType, isUnionType, isListType, isNonNullType, isEnumType, isInputObjectType, GraphQLList, GraphQLNonNull, GraphQLScalarType, GraphQLObjectType, GraphQLInterfaceType, GraphQLUnionType, GraphQLEnumType, GraphQLInputObjectType } from '../type/definition';\nimport { ASTDefinitionBuilder } from './buildASTSchema';\n/**\n * Produces a new schema given an existing schema and a document which may\n * contain GraphQL type extensions and definitions. The original schema will\n * remain unaltered.\n *\n * Because a schema represents a graph of references, a schema cannot be\n * extended without effectively making an entire copy. We do not know until it's\n * too late if subgraphs remain unchanged.\n *\n * This algorithm copies the provided schema, applying extensions while\n * producing the copy. The original schema remains unaltered.\n *\n * Accepts options as a third argument:\n *\n * - commentDescriptions:\n * Provide true to use preceding comments as the description.\n *\n */\n\nexport function extendSchema(schema, documentAST, options) {\n assertSchema(schema);\n documentAST && documentAST.kind === Kind.DOCUMENT || devAssert(0, 'Must provide valid Document AST');\n\n if (!options || !(options.assumeValid || options.assumeValidSDL)) {\n assertValidSDLExtension(documentAST, schema);\n } // Collect the type definitions and extensions found in the document.\n\n\n var typeDefs = [];\n var typeExtsMap = Object.create(null); // New directives and types are separate because a directives and types can\n // have the same name. For example, a type named \"skip\".\n\n var directiveDefs = [];\n var schemaDef; // Schema extensions are collected which may add additional operation types.\n\n var schemaExts = [];\n\n for (var _i2 = 0, _documentAST$definiti2 = documentAST.definitions; _i2 < _documentAST$definiti2.length; _i2++) {\n var def = _documentAST$definiti2[_i2];\n\n if (def.kind === Kind.SCHEMA_DEFINITION) {\n schemaDef = def;\n } else if (def.kind === Kind.SCHEMA_EXTENSION) {\n schemaExts.push(def);\n } else if (isTypeDefinitionNode(def)) {\n typeDefs.push(def);\n } else if (isTypeExtensionNode(def)) {\n var extendedTypeName = def.name.value;\n var existingTypeExts = typeExtsMap[extendedTypeName];\n typeExtsMap[extendedTypeName] = existingTypeExts ? existingTypeExts.concat([def]) : [def];\n } else if (def.kind === Kind.DIRECTIVE_DEFINITION) {\n directiveDefs.push(def);\n }\n } // If this document contains no new types, extensions, or directives then\n // return the same unmodified GraphQLSchema instance.\n\n\n if (Object.keys(typeExtsMap).length === 0 && typeDefs.length === 0 && directiveDefs.length === 0 && schemaExts.length === 0 && !schemaDef) {\n return schema;\n }\n\n var schemaConfig = schema.toConfig();\n var astBuilder = new ASTDefinitionBuilder(options, function (typeName) {\n var type = typeMap[typeName];\n\n if (type === undefined) {\n throw new Error(\"Unknown type: \\\"\".concat(typeName, \"\\\".\"));\n }\n\n return type;\n });\n var typeMap = keyValMap(typeDefs, function (node) {\n return node.name.value;\n }, function (node) {\n return astBuilder.buildType(node);\n });\n\n for (var _i4 = 0, _schemaConfig$types2 = schemaConfig.types; _i4 < _schemaConfig$types2.length; _i4++) {\n var existingType = _schemaConfig$types2[_i4];\n typeMap[existingType.name] = extendNamedType(existingType);\n } // Get the extended root operation types.\n\n\n var operationTypes = {\n query: schemaConfig.query && schemaConfig.query.name,\n mutation: schemaConfig.mutation && schemaConfig.mutation.name,\n subscription: schemaConfig.subscription && schemaConfig.subscription.name\n };\n\n if (schemaDef) {\n for (var _i6 = 0, _schemaDef$operationT2 = schemaDef.operationTypes; _i6 < _schemaDef$operationT2.length; _i6++) {\n var _ref2 = _schemaDef$operationT2[_i6];\n var operation = _ref2.operation;\n var type = _ref2.type;\n operationTypes[operation] = type.name.value;\n }\n } // Then, incorporate schema definition and all schema extensions.\n\n\n for (var _i8 = 0; _i8 < schemaExts.length; _i8++) {\n var schemaExt = schemaExts[_i8];\n\n if (schemaExt.operationTypes) {\n for (var _i10 = 0, _schemaExt$operationT2 = schemaExt.operationTypes; _i10 < _schemaExt$operationT2.length; _i10++) {\n var _ref4 = _schemaExt$operationT2[_i10];\n var _operation = _ref4.operation;\n var _type = _ref4.type;\n operationTypes[_operation] = _type.name.value;\n }\n }\n } // Support both original legacy names and extended legacy names.\n\n\n var allowedLegacyNames = schemaConfig.allowedLegacyNames.concat(options && options.allowedLegacyNames || []); // Then produce and return a Schema with these types.\n\n return new GraphQLSchema({\n // Note: While this could make early assertions to get the correctly\n // typed values, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n query: getMaybeTypeByName(operationTypes.query),\n mutation: getMaybeTypeByName(operationTypes.mutation),\n subscription: getMaybeTypeByName(operationTypes.subscription),\n types: objectValues(typeMap),\n directives: getMergedDirectives(),\n astNode: schemaDef || schemaConfig.astNode,\n extensionASTNodes: schemaConfig.extensionASTNodes.concat(schemaExts),\n allowedLegacyNames: allowedLegacyNames\n }); // Below are functions used for producing this schema that have closed over\n // this scope and have access to the schema, cache, and newly defined types.\n\n function replaceType(type) {\n if (isListType(type)) {\n return new GraphQLList(replaceType(type.ofType));\n } else if (isNonNullType(type)) {\n return new GraphQLNonNull(replaceType(type.ofType));\n }\n\n return replaceNamedType(type);\n }\n\n function replaceNamedType(type) {\n return typeMap[type.name];\n }\n\n function getMaybeTypeByName(typeName) {\n return typeName ? typeMap[typeName] : null;\n }\n\n function getMergedDirectives() {\n var existingDirectives = schema.getDirectives().map(extendDirective);\n existingDirectives || devAssert(0, 'schema must have default directives');\n return existingDirectives.concat(directiveDefs.map(function (node) {\n return astBuilder.buildDirective(node);\n }));\n }\n\n function extendNamedType(type) {\n if (isIntrospectionType(type) || isSpecifiedScalarType(type)) {\n // Builtin types are not extended.\n return type;\n } else if (isScalarType(type)) {\n return extendScalarType(type);\n } else if (isObjectType(type)) {\n return extendObjectType(type);\n } else if (isInterfaceType(type)) {\n return extendInterfaceType(type);\n } else if (isUnionType(type)) {\n return extendUnionType(type);\n } else if (isEnumType(type)) {\n return extendEnumType(type);\n } else if (isInputObjectType(type)) {\n return extendInputObjectType(type);\n } // Not reachable. All possible types have been considered.\n\n /* istanbul ignore next */\n\n\n invariant(false, 'Unexpected type: ' + inspect(type));\n }\n\n function extendDirective(directive) {\n var config = directive.toConfig();\n return new GraphQLDirective(_objectSpread({}, config, {\n args: mapValue(config.args, extendArg)\n }));\n }\n\n function extendInputObjectType(type) {\n var config = type.toConfig();\n var extensions = typeExtsMap[config.name] || [];\n var fieldNodes = flatMap(extensions, function (node) {\n return node.fields || [];\n });\n return new GraphQLInputObjectType(_objectSpread({}, config, {\n fields: function fields() {\n return _objectSpread({}, mapValue(config.fields, function (field) {\n return _objectSpread({}, field, {\n type: replaceType(field.type)\n });\n }), {}, keyValMap(fieldNodes, function (field) {\n return field.name.value;\n }, function (field) {\n return astBuilder.buildInputField(field);\n }));\n },\n extensionASTNodes: config.extensionASTNodes.concat(extensions)\n }));\n }\n\n function extendEnumType(type) {\n var config = type.toConfig();\n var extensions = typeExtsMap[type.name] || [];\n var valueNodes = flatMap(extensions, function (node) {\n return node.values || [];\n });\n return new GraphQLEnumType(_objectSpread({}, config, {\n values: _objectSpread({}, config.values, {}, keyValMap(valueNodes, function (value) {\n return value.name.value;\n }, function (value) {\n return astBuilder.buildEnumValue(value);\n })),\n extensionASTNodes: config.extensionASTNodes.concat(extensions)\n }));\n }\n\n function extendScalarType(type) {\n var config = type.toConfig();\n var extensions = typeExtsMap[config.name] || [];\n return new GraphQLScalarType(_objectSpread({}, config, {\n extensionASTNodes: config.extensionASTNodes.concat(extensions)\n }));\n }\n\n function extendObjectType(type) {\n var config = type.toConfig();\n var extensions = typeExtsMap[config.name] || [];\n var interfaceNodes = flatMap(extensions, function (node) {\n return node.interfaces || [];\n });\n var fieldNodes = flatMap(extensions, function (node) {\n return node.fields || [];\n });\n return new GraphQLObjectType(_objectSpread({}, config, {\n interfaces: function interfaces() {\n return [].concat(type.getInterfaces().map(replaceNamedType), interfaceNodes.map(function (node) {\n return astBuilder.getNamedType(node);\n }));\n },\n fields: function fields() {\n return _objectSpread({}, mapValue(config.fields, extendField), {}, keyValMap(fieldNodes, function (node) {\n return node.name.value;\n }, function (node) {\n return astBuilder.buildField(node);\n }));\n },\n extensionASTNodes: config.extensionASTNodes.concat(extensions)\n }));\n }\n\n function extendInterfaceType(type) {\n var config = type.toConfig();\n var extensions = typeExtsMap[config.name] || [];\n var fieldNodes = flatMap(extensions, function (node) {\n return node.fields || [];\n });\n return new GraphQLInterfaceType(_objectSpread({}, config, {\n fields: function fields() {\n return _objectSpread({}, mapValue(config.fields, extendField), {}, keyValMap(fieldNodes, function (node) {\n return node.name.value;\n }, function (node) {\n return astBuilder.buildField(node);\n }));\n },\n extensionASTNodes: config.extensionASTNodes.concat(extensions)\n }));\n }\n\n function extendUnionType(type) {\n var config = type.toConfig();\n var extensions = typeExtsMap[config.name] || [];\n var typeNodes = flatMap(extensions, function (node) {\n return node.types || [];\n });\n return new GraphQLUnionType(_objectSpread({}, config, {\n types: function types() {\n return [].concat(type.getTypes().map(replaceNamedType), typeNodes.map(function (node) {\n return astBuilder.getNamedType(node);\n }));\n },\n extensionASTNodes: config.extensionASTNodes.concat(extensions)\n }));\n }\n\n function extendField(field) {\n return _objectSpread({}, field, {\n type: replaceType(field.type),\n args: mapValue(field.args, extendArg)\n });\n }\n\n function extendArg(arg) {\n return _objectSpread({}, arg, {\n type: replaceType(arg.type)\n });\n }\n}","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nimport objectValues from '../polyfills/objectValues';\nimport inspect from '../jsutils/inspect';\nimport invariant from '../jsutils/invariant';\nimport keyValMap from '../jsutils/keyValMap';\nimport { GraphQLSchema } from '../type/schema';\nimport { GraphQLDirective } from '../type/directives';\nimport { isIntrospectionType } from '../type/introspection';\nimport { GraphQLObjectType, GraphQLInterfaceType, GraphQLUnionType, GraphQLEnumType, GraphQLInputObjectType, GraphQLList, GraphQLNonNull, isListType, isNonNullType, isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType } from '../type/definition';\n/**\n * Sort GraphQLSchema.\n */\n\nexport function lexicographicSortSchema(schema) {\n var schemaConfig = schema.toConfig();\n var typeMap = keyValMap(sortByName(schemaConfig.types), function (type) {\n return type.name;\n }, sortNamedType);\n return new GraphQLSchema(_objectSpread({}, schemaConfig, {\n types: objectValues(typeMap),\n directives: sortByName(schemaConfig.directives).map(sortDirective),\n query: replaceMaybeType(schemaConfig.query),\n mutation: replaceMaybeType(schemaConfig.mutation),\n subscription: replaceMaybeType(schemaConfig.subscription)\n }));\n\n function replaceType(type) {\n if (isListType(type)) {\n return new GraphQLList(replaceType(type.ofType));\n } else if (isNonNullType(type)) {\n return new GraphQLNonNull(replaceType(type.ofType));\n }\n\n return replaceNamedType(type);\n }\n\n function replaceNamedType(type) {\n return typeMap[type.name];\n }\n\n function replaceMaybeType(maybeType) {\n return maybeType && replaceNamedType(maybeType);\n }\n\n function sortDirective(directive) {\n var config = directive.toConfig();\n return new GraphQLDirective(_objectSpread({}, config, {\n locations: sortBy(config.locations, function (x) {\n return x;\n }),\n args: sortArgs(config.args)\n }));\n }\n\n function sortArgs(args) {\n return sortObjMap(args, function (arg) {\n return _objectSpread({}, arg, {\n type: replaceType(arg.type)\n });\n });\n }\n\n function sortFields(fieldsMap) {\n return sortObjMap(fieldsMap, function (field) {\n return _objectSpread({}, field, {\n type: replaceType(field.type),\n args: sortArgs(field.args)\n });\n });\n }\n\n function sortInputFields(fieldsMap) {\n return sortObjMap(fieldsMap, function (field) {\n return _objectSpread({}, field, {\n type: replaceType(field.type)\n });\n });\n }\n\n function sortTypes(arr) {\n return sortByName(arr).map(replaceNamedType);\n }\n\n function sortNamedType(type) {\n if (isScalarType(type) || isIntrospectionType(type)) {\n return type;\n } else if (isObjectType(type)) {\n var config = type.toConfig();\n return new GraphQLObjectType(_objectSpread({}, config, {\n interfaces: function interfaces() {\n return sortTypes(config.interfaces);\n },\n fields: function fields() {\n return sortFields(config.fields);\n }\n }));\n } else if (isInterfaceType(type)) {\n var _config = type.toConfig();\n\n return new GraphQLInterfaceType(_objectSpread({}, _config, {\n fields: function fields() {\n return sortFields(_config.fields);\n }\n }));\n } else if (isUnionType(type)) {\n var _config2 = type.toConfig();\n\n return new GraphQLUnionType(_objectSpread({}, _config2, {\n types: function types() {\n return sortTypes(_config2.types);\n }\n }));\n } else if (isEnumType(type)) {\n var _config3 = type.toConfig();\n\n return new GraphQLEnumType(_objectSpread({}, _config3, {\n values: sortObjMap(_config3.values)\n }));\n } else if (isInputObjectType(type)) {\n var _config4 = type.toConfig();\n\n return new GraphQLInputObjectType(_objectSpread({}, _config4, {\n fields: function fields() {\n return sortInputFields(_config4.fields);\n }\n }));\n } // Not reachable. All possible types have been considered.\n\n /* istanbul ignore next */\n\n\n invariant(false, 'Unexpected type: ' + inspect(type));\n }\n}\n\nfunction sortObjMap(map, sortValueFn) {\n var sortedMap = Object.create(null);\n var sortedKeys = sortBy(Object.keys(map), function (x) {\n return x;\n });\n\n for (var _i2 = 0; _i2 < sortedKeys.length; _i2++) {\n var key = sortedKeys[_i2];\n var value = map[key];\n sortedMap[key] = sortValueFn ? sortValueFn(value) : value;\n }\n\n return sortedMap;\n}\n\nfunction sortByName(array) {\n return sortBy(array, function (obj) {\n return obj.name;\n });\n}\n\nfunction sortBy(array, mapToKey) {\n return array.slice().sort(function (obj1, obj2) {\n var key1 = mapToKey(obj1);\n var key2 = mapToKey(obj2);\n return key1.localeCompare(key2);\n });\n}","import flatMap from '../polyfills/flatMap';\nimport objectValues from '../polyfills/objectValues';\nimport inspect from '../jsutils/inspect';\nimport invariant from '../jsutils/invariant';\nimport { print } from '../language/printer';\nimport { printBlockString } from '../language/blockString';\nimport { isIntrospectionType } from '../type/introspection';\nimport { GraphQLString, isSpecifiedScalarType } from '../type/scalars';\nimport { GraphQLDirective, DEFAULT_DEPRECATION_REASON, isSpecifiedDirective } from '../type/directives';\nimport { isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType } from '../type/definition';\nimport { astFromValue } from '../utilities/astFromValue';\n/**\n * Accepts options as a second argument:\n *\n * - commentDescriptions:\n * Provide true to use preceding comments as the description.\n *\n */\n\nexport function printSchema(schema, options) {\n return printFilteredSchema(schema, function (n) {\n return !isSpecifiedDirective(n);\n }, isDefinedType, options);\n}\nexport function printIntrospectionSchema(schema, options) {\n return printFilteredSchema(schema, isSpecifiedDirective, isIntrospectionType, options);\n}\n\nfunction isDefinedType(type) {\n return !isSpecifiedScalarType(type) && !isIntrospectionType(type);\n}\n\nfunction printFilteredSchema(schema, directiveFilter, typeFilter, options) {\n var directives = schema.getDirectives().filter(directiveFilter);\n var typeMap = schema.getTypeMap();\n var types = objectValues(typeMap).sort(function (type1, type2) {\n return type1.name.localeCompare(type2.name);\n }).filter(typeFilter);\n return [printSchemaDefinition(schema)].concat(directives.map(function (directive) {\n return printDirective(directive, options);\n }), types.map(function (type) {\n return printType(type, options);\n })).filter(Boolean).join('\\n\\n') + '\\n';\n}\n\nfunction printSchemaDefinition(schema) {\n if (isSchemaOfCommonNames(schema)) {\n return;\n }\n\n var operationTypes = [];\n var queryType = schema.getQueryType();\n\n if (queryType) {\n operationTypes.push(\" query: \".concat(queryType.name));\n }\n\n var mutationType = schema.getMutationType();\n\n if (mutationType) {\n operationTypes.push(\" mutation: \".concat(mutationType.name));\n }\n\n var subscriptionType = schema.getSubscriptionType();\n\n if (subscriptionType) {\n operationTypes.push(\" subscription: \".concat(subscriptionType.name));\n }\n\n return \"schema {\\n\".concat(operationTypes.join('\\n'), \"\\n}\");\n}\n/**\n * GraphQL schema define root types for each type of operation. These types are\n * the same as any other type and can be named in any manner, however there is\n * a common naming convention:\n *\n * schema {\n * query: Query\n * mutation: Mutation\n * }\n *\n * When using this naming convention, the schema description can be omitted.\n */\n\n\nfunction isSchemaOfCommonNames(schema) {\n var queryType = schema.getQueryType();\n\n if (queryType && queryType.name !== 'Query') {\n return false;\n }\n\n var mutationType = schema.getMutationType();\n\n if (mutationType && mutationType.name !== 'Mutation') {\n return false;\n }\n\n var subscriptionType = schema.getSubscriptionType();\n\n if (subscriptionType && subscriptionType.name !== 'Subscription') {\n return false;\n }\n\n return true;\n}\n\nexport function printType(type, options) {\n if (isScalarType(type)) {\n return printScalar(type, options);\n } else if (isObjectType(type)) {\n return printObject(type, options);\n } else if (isInterfaceType(type)) {\n return printInterface(type, options);\n } else if (isUnionType(type)) {\n return printUnion(type, options);\n } else if (isEnumType(type)) {\n return printEnum(type, options);\n } else if (isInputObjectType(type)) {\n return printInputObject(type, options);\n } // Not reachable. All possible types have been considered.\n\n /* istanbul ignore next */\n\n\n invariant(false, 'Unexpected type: ' + inspect(type));\n}\n\nfunction printScalar(type, options) {\n return printDescription(options, type) + \"scalar \".concat(type.name);\n}\n\nfunction printObject(type, options) {\n var interfaces = type.getInterfaces();\n var implementedInterfaces = interfaces.length ? ' implements ' + interfaces.map(function (i) {\n return i.name;\n }).join(' & ') : '';\n return printDescription(options, type) + \"type \".concat(type.name).concat(implementedInterfaces) + printFields(options, type);\n}\n\nfunction printInterface(type, options) {\n return printDescription(options, type) + \"interface \".concat(type.name) + printFields(options, type);\n}\n\nfunction printUnion(type, options) {\n var types = type.getTypes();\n var possibleTypes = types.length ? ' = ' + types.join(' | ') : '';\n return printDescription(options, type) + 'union ' + type.name + possibleTypes;\n}\n\nfunction printEnum(type, options) {\n var values = type.getValues().map(function (value, i) {\n return printDescription(options, value, ' ', !i) + ' ' + value.name + printDeprecated(value);\n });\n return printDescription(options, type) + \"enum \".concat(type.name) + printBlock(values);\n}\n\nfunction printInputObject(type, options) {\n var fields = objectValues(type.getFields()).map(function (f, i) {\n return printDescription(options, f, ' ', !i) + ' ' + printInputValue(f);\n });\n return printDescription(options, type) + \"input \".concat(type.name) + printBlock(fields);\n}\n\nfunction printFields(options, type) {\n var fields = objectValues(type.getFields()).map(function (f, i) {\n return printDescription(options, f, ' ', !i) + ' ' + f.name + printArgs(options, f.args, ' ') + ': ' + String(f.type) + printDeprecated(f);\n });\n return printBlock(fields);\n}\n\nfunction printBlock(items) {\n return items.length !== 0 ? ' {\\n' + items.join('\\n') + '\\n}' : '';\n}\n\nfunction printArgs(options, args) {\n var indentation = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\n if (args.length === 0) {\n return '';\n } // If every arg does not have a description, print them on one line.\n\n\n if (args.every(function (arg) {\n return !arg.description;\n })) {\n return '(' + args.map(printInputValue).join(', ') + ')';\n }\n\n return '(\\n' + args.map(function (arg, i) {\n return printDescription(options, arg, ' ' + indentation, !i) + ' ' + indentation + printInputValue(arg);\n }).join('\\n') + '\\n' + indentation + ')';\n}\n\nfunction printInputValue(arg) {\n var defaultAST = astFromValue(arg.defaultValue, arg.type);\n var argDecl = arg.name + ': ' + String(arg.type);\n\n if (defaultAST) {\n argDecl += \" = \".concat(print(defaultAST));\n }\n\n return argDecl;\n}\n\nfunction printDirective(directive, options) {\n return printDescription(options, directive) + 'directive @' + directive.name + printArgs(options, directive.args) + (directive.isRepeatable ? ' repeatable' : '') + ' on ' + directive.locations.join(' | ');\n}\n\nfunction printDeprecated(fieldOrEnumVal) {\n if (!fieldOrEnumVal.isDeprecated) {\n return '';\n }\n\n var reason = fieldOrEnumVal.deprecationReason;\n var reasonAST = astFromValue(reason, GraphQLString);\n\n if (reasonAST && reason !== '' && reason !== DEFAULT_DEPRECATION_REASON) {\n return ' @deprecated(reason: ' + print(reasonAST) + ')';\n }\n\n return ' @deprecated';\n}\n\nfunction printDescription(options, def) {\n var indentation = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var firstInBlock = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\n if (!def.description) {\n return '';\n }\n\n var lines = descriptionLines(def.description, 120 - indentation.length);\n\n if (options && options.commentDescriptions) {\n return printDescriptionWithComments(lines, indentation, firstInBlock);\n }\n\n var text = lines.join('\\n');\n var preferMultipleLines = text.length > 70;\n var blockString = printBlockString(text, '', preferMultipleLines);\n var prefix = indentation && !firstInBlock ? '\\n' + indentation : indentation;\n return prefix + blockString.replace(/\\n/g, '\\n' + indentation) + '\\n';\n}\n\nfunction printDescriptionWithComments(lines, indentation, firstInBlock) {\n var description = indentation && !firstInBlock ? '\\n' : '';\n\n for (var _i2 = 0; _i2 < lines.length; _i2++) {\n var line = lines[_i2];\n\n if (line === '') {\n description += indentation + '#\\n';\n } else {\n description += indentation + '# ' + line + '\\n';\n }\n }\n\n return description;\n}\n\nfunction descriptionLines(description, maxLen) {\n var rawLines = description.split('\\n');\n return flatMap(rawLines, function (line) {\n if (line.length < maxLen + 5) {\n return line;\n } // For > 120 character long lines, cut at space boundaries into sublines\n // of ~80 chars.\n\n\n return breakLine(line, maxLen);\n });\n}\n\nfunction breakLine(line, maxLen) {\n var parts = line.split(new RegExp(\"((?: |^).{15,\".concat(maxLen - 40, \"}(?= |$))\")));\n\n if (parts.length < 4) {\n return [line];\n }\n\n var sublines = [parts[0] + parts[1] + parts[2]];\n\n for (var i = 3; i < parts.length; i += 2) {\n sublines.push(parts[i].slice(1) + parts[i + 1]);\n }\n\n return sublines;\n}","/* istanbul ignore file */\nimport inspect from '../jsutils/inspect';\nimport printPathArray from '../jsutils/printPathArray';\nimport { pathToArray } from '../jsutils/Path';\nimport { GraphQLError } from '../error/GraphQLError';\nimport { coerceInputValue } from './coerceInputValue';\n/**\n * Deprecated. Use coerceInputValue() directly for richer information.\n *\n * This function will be removed in v15\n */\n\nexport function coerceValue(inputValue, type, blameNode, path) {\n var errors = [];\n var value = coerceInputValue(inputValue, type, function (errorPath, invalidValue, error) {\n var errorPrefix = 'Invalid value ' + inspect(invalidValue);\n var pathArray = [].concat(pathToArray(path), errorPath);\n\n if (pathArray.length > 0) {\n errorPrefix += \" at \\\"value\".concat(printPathArray(pathArray), \"\\\"\");\n }\n\n errors.push(new GraphQLError(errorPrefix + ': ' + error.message, blameNode, undefined, undefined, undefined, error.originalError));\n });\n return errors.length > 0 ? {\n errors: errors,\n value: undefined\n } : {\n errors: undefined,\n value: value\n };\n}","/* istanbul ignore file */\nimport { coerceValue } from './coerceValue';\n/**\n * Deprecated. Use coerceInputValue() directly for richer information.\n *\n * This function will be removed in v15\n */\n\nexport function isValidJSValue(value, type) {\n var errors = coerceValue(value, type).errors;\n return errors ? errors.map(function (error) {\n return error.message;\n }) : [];\n}","import { Kind } from '../language/kinds';\nimport { visit, visitWithTypeInfo } from '../language/visitor';\nimport { ValuesOfCorrectType } from '../validation/rules/ValuesOfCorrectType';\nimport { ValidationContext } from '../validation/ValidationContext';\nimport { GraphQLSchema } from '../type/schema';\nimport { TypeInfo } from './TypeInfo';\n/**\n * Utility which determines if a value literal node is valid for an input type.\n *\n * Deprecated. Rely on validation for documents containing literal values.\n *\n * This function will be removed in v15\n */\n\nexport function isValidLiteralValue(type, valueNode) {\n var emptySchema = new GraphQLSchema({});\n var emptyDoc = {\n kind: Kind.DOCUMENT,\n definitions: []\n };\n var typeInfo = new TypeInfo(emptySchema, undefined, type);\n var context = new ValidationContext(emptySchema, emptyDoc, typeInfo);\n var visitor = ValuesOfCorrectType(context);\n visit(valueNode, visitWithTypeInfo(typeInfo, visitor));\n return context.getErrors();\n}","import flatMap from '../polyfills/flatMap';\n/**\n * Provided a collection of ASTs, presumably each from different files,\n * concatenate the ASTs together into batched AST, useful for validating many\n * GraphQL source files which together represent one conceptual application.\n */\n\nexport function concatAST(asts) {\n return {\n kind: 'Document',\n definitions: flatMap(asts, function (ast) {\n return ast.definitions;\n })\n };\n}","import { visit } from '../language/visitor';\n/**\n * separateOperations accepts a single AST document which may contain many\n * operations and fragments and returns a collection of AST documents each of\n * which contains a single operation as well the fragment definitions it\n * refers to.\n */\n\nexport function separateOperations(documentAST) {\n var operations = [];\n var fragments = Object.create(null);\n var positions = new Map();\n var depGraph = Object.create(null);\n var fromName;\n var idx = 0; // Populate metadata and build a dependency graph.\n\n visit(documentAST, {\n OperationDefinition: function OperationDefinition(node) {\n fromName = opName(node);\n operations.push(node);\n positions.set(node, idx++);\n },\n FragmentDefinition: function FragmentDefinition(node) {\n fromName = node.name.value;\n fragments[fromName] = node;\n positions.set(node, idx++);\n },\n FragmentSpread: function FragmentSpread(node) {\n var toName = node.name.value;\n (depGraph[fromName] || (depGraph[fromName] = Object.create(null)))[toName] = true;\n }\n }); // For each operation, produce a new synthesized AST which includes only what\n // is necessary for completing that operation.\n\n var separatedDocumentASTs = Object.create(null);\n\n for (var _i2 = 0; _i2 < operations.length; _i2++) {\n var operation = operations[_i2];\n var operationName = opName(operation);\n var dependencies = Object.create(null);\n collectTransitiveDependencies(dependencies, depGraph, operationName); // The list of definition nodes to be included for this operation, sorted\n // to retain the same order as the original document.\n\n var definitions = [operation];\n\n for (var _i4 = 0, _Object$keys2 = Object.keys(dependencies); _i4 < _Object$keys2.length; _i4++) {\n var name = _Object$keys2[_i4];\n definitions.push(fragments[name]);\n }\n\n definitions.sort(function (n1, n2) {\n return (positions.get(n1) || 0) - (positions.get(n2) || 0);\n });\n separatedDocumentASTs[operationName] = {\n kind: 'Document',\n definitions: definitions\n };\n }\n\n return separatedDocumentASTs;\n} // Provides the empty string for anonymous operations.\n\nfunction opName(operation) {\n return operation.name ? operation.name.value : '';\n} // From a dependency graph, collects a list of transitive dependencies by\n// recursing through a dependency graph.\n\n\nfunction collectTransitiveDependencies(collected, depGraph, fromName) {\n var immediateDeps = depGraph[fromName];\n\n if (immediateDeps) {\n for (var _i6 = 0, _Object$keys4 = Object.keys(immediateDeps); _i6 < _Object$keys4.length; _i6++) {\n var toName = _Object$keys4[_i6];\n\n if (!collected[toName]) {\n collected[toName] = true;\n collectTransitiveDependencies(collected, depGraph, toName);\n }\n }\n }\n}","import inspect from '../jsutils/inspect';\nimport { Source } from '../language/source';\nimport { TokenKind } from '../language/tokenKind';\nimport { createLexer, isPunctuatorToken } from '../language/lexer';\nimport { dedentBlockStringValue, getBlockStringIndentation } from '../language/blockString';\n/**\n * Strips characters that are not significant to the validity or execution\n * of a GraphQL document:\n * - UnicodeBOM\n * - WhiteSpace\n * - LineTerminator\n * - Comment\n * - Comma\n * - BlockString indentation\n *\n * Note: It is required to have a delimiter character between neighboring\n * non-punctuator tokens and this function always uses single space as delimiter.\n *\n * It is guaranteed that both input and output documents if parsed would result\n * in the exact same AST except for nodes location.\n *\n * Warning: It is guaranteed that this function will always produce stable results.\n * However, it's not guaranteed that it will stay the same between different\n * releases due to bugfixes or changes in the GraphQL specification.\n *\n * Query example:\n *\n * query SomeQuery($foo: String!, $bar: String) {\n * someField(foo: $foo, bar: $bar) {\n * a\n * b {\n * c\n * d\n * }\n * }\n * }\n *\n * Becomes:\n *\n * query SomeQuery($foo:String!$bar:String){someField(foo:$foo bar:$bar){a b{c d}}}\n *\n * SDL example:\n *\n * \"\"\"\n * Type description\n * \"\"\"\n * type Foo {\n * \"\"\"\n * Field description\n * \"\"\"\n * bar: String\n * }\n *\n * Becomes:\n *\n * \"\"\"Type description\"\"\" type Foo{\"\"\"Field description\"\"\" bar:String}\n */\n\nexport function stripIgnoredCharacters(source) {\n var sourceObj = typeof source === 'string' ? new Source(source) : source;\n\n if (!(sourceObj instanceof Source)) {\n throw new TypeError(\"Must provide string or Source. Received: \".concat(inspect(sourceObj)));\n }\n\n var body = sourceObj.body;\n var lexer = createLexer(sourceObj);\n var strippedBody = '';\n var wasLastAddedTokenNonPunctuator = false;\n\n while (lexer.advance().kind !== TokenKind.EOF) {\n var currentToken = lexer.token;\n var tokenKind = currentToken.kind;\n /**\n * Every two non-punctuator tokens should have space between them.\n * Also prevent case of non-punctuator token following by spread resulting\n * in invalid token (e.g. `1...` is invalid Float token).\n */\n\n var isNonPunctuator = !isPunctuatorToken(currentToken);\n\n if (wasLastAddedTokenNonPunctuator) {\n if (isNonPunctuator || currentToken.kind === TokenKind.SPREAD) {\n strippedBody += ' ';\n }\n }\n\n var tokenBody = body.slice(currentToken.start, currentToken.end);\n\n if (tokenKind === TokenKind.BLOCK_STRING) {\n strippedBody += dedentBlockString(tokenBody);\n } else {\n strippedBody += tokenBody;\n }\n\n wasLastAddedTokenNonPunctuator = isNonPunctuator;\n }\n\n return strippedBody;\n}\n\nfunction dedentBlockString(blockStr) {\n // skip leading and trailing triple quotations\n var rawStr = blockStr.slice(3, -3);\n var body = dedentBlockStringValue(rawStr);\n var lines = body.split(/\\r\\n|[\\n\\r]/g);\n\n if (getBlockStringIndentation(lines) > 0) {\n body = '\\n' + body;\n }\n\n var lastChar = body[body.length - 1];\n var hasTrailingQuote = lastChar === '\"' && body.slice(-4) !== '\\\\\"\"\"';\n\n if (hasTrailingQuote || lastChar === '\\\\') {\n body += '\\n';\n }\n\n return '\"\"\"' + body + '\"\"\"';\n}","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nimport objectValues from '../polyfills/objectValues';\nimport keyMap from '../jsutils/keyMap';\nimport inspect from '../jsutils/inspect';\nimport invariant from '../jsutils/invariant';\nimport { print } from '../language/printer';\nimport { visit } from '../language/visitor';\nimport { isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType, isNonNullType, isListType, isNamedType, isRequiredArgument, isRequiredInputField } from '../type/definition';\nimport { astFromValue } from './astFromValue';\nexport var BreakingChangeType = Object.freeze({\n TYPE_REMOVED: 'TYPE_REMOVED',\n TYPE_CHANGED_KIND: 'TYPE_CHANGED_KIND',\n TYPE_REMOVED_FROM_UNION: 'TYPE_REMOVED_FROM_UNION',\n VALUE_REMOVED_FROM_ENUM: 'VALUE_REMOVED_FROM_ENUM',\n REQUIRED_INPUT_FIELD_ADDED: 'REQUIRED_INPUT_FIELD_ADDED',\n INTERFACE_REMOVED_FROM_OBJECT: 'INTERFACE_REMOVED_FROM_OBJECT',\n FIELD_REMOVED: 'FIELD_REMOVED',\n FIELD_CHANGED_KIND: 'FIELD_CHANGED_KIND',\n REQUIRED_ARG_ADDED: 'REQUIRED_ARG_ADDED',\n ARG_REMOVED: 'ARG_REMOVED',\n ARG_CHANGED_KIND: 'ARG_CHANGED_KIND',\n DIRECTIVE_REMOVED: 'DIRECTIVE_REMOVED',\n DIRECTIVE_ARG_REMOVED: 'DIRECTIVE_ARG_REMOVED',\n REQUIRED_DIRECTIVE_ARG_ADDED: 'REQUIRED_DIRECTIVE_ARG_ADDED',\n DIRECTIVE_LOCATION_REMOVED: 'DIRECTIVE_LOCATION_REMOVED'\n});\nexport var DangerousChangeType = Object.freeze({\n VALUE_ADDED_TO_ENUM: 'VALUE_ADDED_TO_ENUM',\n TYPE_ADDED_TO_UNION: 'TYPE_ADDED_TO_UNION',\n OPTIONAL_INPUT_FIELD_ADDED: 'OPTIONAL_INPUT_FIELD_ADDED',\n OPTIONAL_ARG_ADDED: 'OPTIONAL_ARG_ADDED',\n INTERFACE_ADDED_TO_OBJECT: 'INTERFACE_ADDED_TO_OBJECT',\n ARG_DEFAULT_VALUE_CHANGE: 'ARG_DEFAULT_VALUE_CHANGE'\n});\n/**\n * Given two schemas, returns an Array containing descriptions of all the types\n * of breaking changes covered by the other functions down below.\n */\n\nexport function findBreakingChanges(oldSchema, newSchema) {\n var breakingChanges = findSchemaChanges(oldSchema, newSchema).filter(function (change) {\n return change.type in BreakingChangeType;\n });\n return breakingChanges;\n}\n/**\n * Given two schemas, returns an Array containing descriptions of all the types\n * of potentially dangerous changes covered by the other functions down below.\n */\n\nexport function findDangerousChanges(oldSchema, newSchema) {\n var dangerousChanges = findSchemaChanges(oldSchema, newSchema).filter(function (change) {\n return change.type in DangerousChangeType;\n });\n return dangerousChanges;\n}\n\nfunction findSchemaChanges(oldSchema, newSchema) {\n return [].concat(findTypeChanges(oldSchema, newSchema), findDirectiveChanges(oldSchema, newSchema));\n}\n\nfunction findDirectiveChanges(oldSchema, newSchema) {\n var schemaChanges = [];\n var directivesDiff = diff(oldSchema.getDirectives(), newSchema.getDirectives());\n\n for (var _i2 = 0, _directivesDiff$remov2 = directivesDiff.removed; _i2 < _directivesDiff$remov2.length; _i2++) {\n var oldDirective = _directivesDiff$remov2[_i2];\n schemaChanges.push({\n type: BreakingChangeType.DIRECTIVE_REMOVED,\n description: \"\".concat(oldDirective.name, \" was removed.\")\n });\n }\n\n for (var _i4 = 0, _directivesDiff$persi2 = directivesDiff.persisted; _i4 < _directivesDiff$persi2.length; _i4++) {\n var _ref2 = _directivesDiff$persi2[_i4];\n var _oldDirective = _ref2[0];\n var newDirective = _ref2[1];\n var argsDiff = diff(_oldDirective.args, newDirective.args);\n\n for (var _i6 = 0, _argsDiff$added2 = argsDiff.added; _i6 < _argsDiff$added2.length; _i6++) {\n var newArg = _argsDiff$added2[_i6];\n\n if (isRequiredArgument(newArg)) {\n schemaChanges.push({\n type: BreakingChangeType.REQUIRED_DIRECTIVE_ARG_ADDED,\n description: \"A required arg \".concat(newArg.name, \" on directive \").concat(_oldDirective.name, \" was added.\")\n });\n }\n }\n\n for (var _i8 = 0, _argsDiff$removed2 = argsDiff.removed; _i8 < _argsDiff$removed2.length; _i8++) {\n var oldArg = _argsDiff$removed2[_i8];\n schemaChanges.push({\n type: BreakingChangeType.DIRECTIVE_ARG_REMOVED,\n description: \"\".concat(oldArg.name, \" was removed from \").concat(_oldDirective.name, \".\")\n });\n }\n\n for (var _i10 = 0, _oldDirective$locatio2 = _oldDirective.locations; _i10 < _oldDirective$locatio2.length; _i10++) {\n var location = _oldDirective$locatio2[_i10];\n\n if (newDirective.locations.indexOf(location) === -1) {\n schemaChanges.push({\n type: BreakingChangeType.DIRECTIVE_LOCATION_REMOVED,\n description: \"\".concat(location, \" was removed from \").concat(_oldDirective.name, \".\")\n });\n }\n }\n }\n\n return schemaChanges;\n}\n\nfunction findTypeChanges(oldSchema, newSchema) {\n var schemaChanges = [];\n var typesDiff = diff(objectValues(oldSchema.getTypeMap()), objectValues(newSchema.getTypeMap()));\n\n for (var _i12 = 0, _typesDiff$removed2 = typesDiff.removed; _i12 < _typesDiff$removed2.length; _i12++) {\n var oldType = _typesDiff$removed2[_i12];\n schemaChanges.push({\n type: BreakingChangeType.TYPE_REMOVED,\n description: \"\".concat(oldType.name, \" was removed.\")\n });\n }\n\n for (var _i14 = 0, _typesDiff$persisted2 = typesDiff.persisted; _i14 < _typesDiff$persisted2.length; _i14++) {\n var _ref4 = _typesDiff$persisted2[_i14];\n var _oldType = _ref4[0];\n var newType = _ref4[1];\n\n if (isEnumType(_oldType) && isEnumType(newType)) {\n schemaChanges.push.apply(schemaChanges, findEnumTypeChanges(_oldType, newType));\n } else if (isUnionType(_oldType) && isUnionType(newType)) {\n schemaChanges.push.apply(schemaChanges, findUnionTypeChanges(_oldType, newType));\n } else if (isInputObjectType(_oldType) && isInputObjectType(newType)) {\n schemaChanges.push.apply(schemaChanges, findInputObjectTypeChanges(_oldType, newType));\n } else if (isObjectType(_oldType) && isObjectType(newType)) {\n schemaChanges.push.apply(schemaChanges, findObjectTypeChanges(_oldType, newType));\n } else if (isInterfaceType(_oldType) && isInterfaceType(newType)) {\n schemaChanges.push.apply(schemaChanges, findFieldChanges(_oldType, newType));\n } else if (_oldType.constructor !== newType.constructor) {\n schemaChanges.push({\n type: BreakingChangeType.TYPE_CHANGED_KIND,\n description: \"\".concat(_oldType.name, \" changed from \") + \"\".concat(typeKindName(_oldType), \" to \").concat(typeKindName(newType), \".\")\n });\n }\n }\n\n return schemaChanges;\n}\n\nfunction findInputObjectTypeChanges(oldType, newType) {\n var schemaChanges = [];\n var fieldsDiff = diff(objectValues(oldType.getFields()), objectValues(newType.getFields()));\n\n for (var _i16 = 0, _fieldsDiff$added2 = fieldsDiff.added; _i16 < _fieldsDiff$added2.length; _i16++) {\n var newField = _fieldsDiff$added2[_i16];\n\n if (isRequiredInputField(newField)) {\n schemaChanges.push({\n type: BreakingChangeType.REQUIRED_INPUT_FIELD_ADDED,\n description: \"A required field \".concat(newField.name, \" on input type \").concat(oldType.name, \" was added.\")\n });\n } else {\n schemaChanges.push({\n type: DangerousChangeType.OPTIONAL_INPUT_FIELD_ADDED,\n description: \"An optional field \".concat(newField.name, \" on input type \").concat(oldType.name, \" was added.\")\n });\n }\n }\n\n for (var _i18 = 0, _fieldsDiff$removed2 = fieldsDiff.removed; _i18 < _fieldsDiff$removed2.length; _i18++) {\n var oldField = _fieldsDiff$removed2[_i18];\n schemaChanges.push({\n type: BreakingChangeType.FIELD_REMOVED,\n description: \"\".concat(oldType.name, \".\").concat(oldField.name, \" was removed.\")\n });\n }\n\n for (var _i20 = 0, _fieldsDiff$persisted2 = fieldsDiff.persisted; _i20 < _fieldsDiff$persisted2.length; _i20++) {\n var _ref6 = _fieldsDiff$persisted2[_i20];\n var _oldField = _ref6[0];\n var _newField = _ref6[1];\n var isSafe = isChangeSafeForInputObjectFieldOrFieldArg(_oldField.type, _newField.type);\n\n if (!isSafe) {\n schemaChanges.push({\n type: BreakingChangeType.FIELD_CHANGED_KIND,\n description: \"\".concat(oldType.name, \".\").concat(_oldField.name, \" changed type from \") + \"\".concat(String(_oldField.type), \" to \").concat(String(_newField.type), \".\")\n });\n }\n }\n\n return schemaChanges;\n}\n\nfunction findUnionTypeChanges(oldType, newType) {\n var schemaChanges = [];\n var possibleTypesDiff = diff(oldType.getTypes(), newType.getTypes());\n\n for (var _i22 = 0, _possibleTypesDiff$ad2 = possibleTypesDiff.added; _i22 < _possibleTypesDiff$ad2.length; _i22++) {\n var newPossibleType = _possibleTypesDiff$ad2[_i22];\n schemaChanges.push({\n type: DangerousChangeType.TYPE_ADDED_TO_UNION,\n description: \"\".concat(newPossibleType.name, \" was added to union type \").concat(oldType.name, \".\")\n });\n }\n\n for (var _i24 = 0, _possibleTypesDiff$re2 = possibleTypesDiff.removed; _i24 < _possibleTypesDiff$re2.length; _i24++) {\n var oldPossibleType = _possibleTypesDiff$re2[_i24];\n schemaChanges.push({\n type: BreakingChangeType.TYPE_REMOVED_FROM_UNION,\n description: \"\".concat(oldPossibleType.name, \" was removed from union type \").concat(oldType.name, \".\")\n });\n }\n\n return schemaChanges;\n}\n\nfunction findEnumTypeChanges(oldType, newType) {\n var schemaChanges = [];\n var valuesDiff = diff(oldType.getValues(), newType.getValues());\n\n for (var _i26 = 0, _valuesDiff$added2 = valuesDiff.added; _i26 < _valuesDiff$added2.length; _i26++) {\n var newValue = _valuesDiff$added2[_i26];\n schemaChanges.push({\n type: DangerousChangeType.VALUE_ADDED_TO_ENUM,\n description: \"\".concat(newValue.name, \" was added to enum type \").concat(oldType.name, \".\")\n });\n }\n\n for (var _i28 = 0, _valuesDiff$removed2 = valuesDiff.removed; _i28 < _valuesDiff$removed2.length; _i28++) {\n var oldValue = _valuesDiff$removed2[_i28];\n schemaChanges.push({\n type: BreakingChangeType.VALUE_REMOVED_FROM_ENUM,\n description: \"\".concat(oldValue.name, \" was removed from enum type \").concat(oldType.name, \".\")\n });\n }\n\n return schemaChanges;\n}\n\nfunction findObjectTypeChanges(oldType, newType) {\n var schemaChanges = findFieldChanges(oldType, newType);\n var interfacesDiff = diff(oldType.getInterfaces(), newType.getInterfaces());\n\n for (var _i30 = 0, _interfacesDiff$added2 = interfacesDiff.added; _i30 < _interfacesDiff$added2.length; _i30++) {\n var newInterface = _interfacesDiff$added2[_i30];\n schemaChanges.push({\n type: DangerousChangeType.INTERFACE_ADDED_TO_OBJECT,\n description: \"\".concat(newInterface.name, \" added to interfaces implemented by \").concat(oldType.name, \".\")\n });\n }\n\n for (var _i32 = 0, _interfacesDiff$remov2 = interfacesDiff.removed; _i32 < _interfacesDiff$remov2.length; _i32++) {\n var oldInterface = _interfacesDiff$remov2[_i32];\n schemaChanges.push({\n type: BreakingChangeType.INTERFACE_REMOVED_FROM_OBJECT,\n description: \"\".concat(oldType.name, \" no longer implements interface \").concat(oldInterface.name, \".\")\n });\n }\n\n return schemaChanges;\n}\n\nfunction findFieldChanges(oldType, newType) {\n var schemaChanges = [];\n var fieldsDiff = diff(objectValues(oldType.getFields()), objectValues(newType.getFields()));\n\n for (var _i34 = 0, _fieldsDiff$removed4 = fieldsDiff.removed; _i34 < _fieldsDiff$removed4.length; _i34++) {\n var oldField = _fieldsDiff$removed4[_i34];\n schemaChanges.push({\n type: BreakingChangeType.FIELD_REMOVED,\n description: \"\".concat(oldType.name, \".\").concat(oldField.name, \" was removed.\")\n });\n }\n\n for (var _i36 = 0, _fieldsDiff$persisted4 = fieldsDiff.persisted; _i36 < _fieldsDiff$persisted4.length; _i36++) {\n var _ref8 = _fieldsDiff$persisted4[_i36];\n var _oldField2 = _ref8[0];\n var newField = _ref8[1];\n schemaChanges.push.apply(schemaChanges, findArgChanges(oldType, _oldField2, newField));\n var isSafe = isChangeSafeForObjectOrInterfaceField(_oldField2.type, newField.type);\n\n if (!isSafe) {\n schemaChanges.push({\n type: BreakingChangeType.FIELD_CHANGED_KIND,\n description: \"\".concat(oldType.name, \".\").concat(_oldField2.name, \" changed type from \") + \"\".concat(String(_oldField2.type), \" to \").concat(String(newField.type), \".\")\n });\n }\n }\n\n return schemaChanges;\n}\n\nfunction findArgChanges(oldType, oldField, newField) {\n var schemaChanges = [];\n var argsDiff = diff(oldField.args, newField.args);\n\n for (var _i38 = 0, _argsDiff$removed4 = argsDiff.removed; _i38 < _argsDiff$removed4.length; _i38++) {\n var oldArg = _argsDiff$removed4[_i38];\n schemaChanges.push({\n type: BreakingChangeType.ARG_REMOVED,\n description: \"\".concat(oldType.name, \".\").concat(oldField.name, \" arg \").concat(oldArg.name, \" was removed.\")\n });\n }\n\n for (var _i40 = 0, _argsDiff$persisted2 = argsDiff.persisted; _i40 < _argsDiff$persisted2.length; _i40++) {\n var _ref10 = _argsDiff$persisted2[_i40];\n var _oldArg = _ref10[0];\n var newArg = _ref10[1];\n var isSafe = isChangeSafeForInputObjectFieldOrFieldArg(_oldArg.type, newArg.type);\n\n if (!isSafe) {\n schemaChanges.push({\n type: BreakingChangeType.ARG_CHANGED_KIND,\n description: \"\".concat(oldType.name, \".\").concat(oldField.name, \" arg \").concat(_oldArg.name, \" has changed type from \") + \"\".concat(String(_oldArg.type), \" to \").concat(String(newArg.type), \".\")\n });\n } else if (_oldArg.defaultValue !== undefined) {\n if (newArg.defaultValue === undefined) {\n schemaChanges.push({\n type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE,\n description: \"\".concat(oldType.name, \".\").concat(oldField.name, \" arg \").concat(_oldArg.name, \" defaultValue was removed.\")\n });\n } else {\n // Since we looking only for client's observable changes we should\n // compare default values in the same representation as they are\n // represented inside introspection.\n var oldValueStr = stringifyValue(_oldArg.defaultValue, _oldArg.type);\n var newValueStr = stringifyValue(newArg.defaultValue, newArg.type);\n\n if (oldValueStr !== newValueStr) {\n schemaChanges.push({\n type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE,\n description: \"\".concat(oldType.name, \".\").concat(oldField.name, \" arg \").concat(_oldArg.name, \" has changed defaultValue from \").concat(oldValueStr, \" to \").concat(newValueStr, \".\")\n });\n }\n }\n }\n }\n\n for (var _i42 = 0, _argsDiff$added4 = argsDiff.added; _i42 < _argsDiff$added4.length; _i42++) {\n var _newArg = _argsDiff$added4[_i42];\n\n if (isRequiredArgument(_newArg)) {\n schemaChanges.push({\n type: BreakingChangeType.REQUIRED_ARG_ADDED,\n description: \"A required arg \".concat(_newArg.name, \" on \").concat(oldType.name, \".\").concat(oldField.name, \" was added.\")\n });\n } else {\n schemaChanges.push({\n type: DangerousChangeType.OPTIONAL_ARG_ADDED,\n description: \"An optional arg \".concat(_newArg.name, \" on \").concat(oldType.name, \".\").concat(oldField.name, \" was added.\")\n });\n }\n }\n\n return schemaChanges;\n}\n\nfunction isChangeSafeForObjectOrInterfaceField(oldType, newType) {\n if (isListType(oldType)) {\n return (// if they're both lists, make sure the underlying types are compatible\n isListType(newType) && isChangeSafeForObjectOrInterfaceField(oldType.ofType, newType.ofType) || // moving from nullable to non-null of the same underlying type is safe\n isNonNullType(newType) && isChangeSafeForObjectOrInterfaceField(oldType, newType.ofType)\n );\n }\n\n if (isNonNullType(oldType)) {\n // if they're both non-null, make sure the underlying types are compatible\n return isNonNullType(newType) && isChangeSafeForObjectOrInterfaceField(oldType.ofType, newType.ofType);\n }\n\n return (// if they're both named types, see if their names are equivalent\n isNamedType(newType) && oldType.name === newType.name || // moving from nullable to non-null of the same underlying type is safe\n isNonNullType(newType) && isChangeSafeForObjectOrInterfaceField(oldType, newType.ofType)\n );\n}\n\nfunction isChangeSafeForInputObjectFieldOrFieldArg(oldType, newType) {\n if (isListType(oldType)) {\n // if they're both lists, make sure the underlying types are compatible\n return isListType(newType) && isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType.ofType);\n }\n\n if (isNonNullType(oldType)) {\n return (// if they're both non-null, make sure the underlying types are\n // compatible\n isNonNullType(newType) && isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType.ofType) || // moving from non-null to nullable of the same underlying type is safe\n !isNonNullType(newType) && isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType)\n );\n } // if they're both named types, see if their names are equivalent\n\n\n return isNamedType(newType) && oldType.name === newType.name;\n}\n\nfunction typeKindName(type) {\n if (isScalarType(type)) {\n return 'a Scalar type';\n }\n\n if (isObjectType(type)) {\n return 'an Object type';\n }\n\n if (isInterfaceType(type)) {\n return 'an Interface type';\n }\n\n if (isUnionType(type)) {\n return 'a Union type';\n }\n\n if (isEnumType(type)) {\n return 'an Enum type';\n }\n /* istanbul ignore else */\n\n\n if (isInputObjectType(type)) {\n return 'an Input type';\n } // Not reachable. All possible named types have been considered.\n\n /* istanbul ignore next */\n\n\n invariant(false, 'Unexpected type: ' + inspect(type));\n}\n\nfunction stringifyValue(value, type) {\n var ast = astFromValue(value, type);\n /* istanbul ignore next */\n\n ast != null || invariant(0);\n var sortedAST = visit(ast, {\n ObjectValue: function ObjectValue(objectNode) {\n var fields = [].concat(objectNode.fields).sort(function (fieldA, fieldB) {\n return fieldA.name.value.localeCompare(fieldB.name.value);\n });\n return _objectSpread({}, objectNode, {\n fields: fields\n });\n }\n });\n return print(sortedAST);\n}\n\nfunction diff(oldArray, newArray) {\n var added = [];\n var removed = [];\n var persisted = [];\n var oldMap = keyMap(oldArray, function (_ref11) {\n var name = _ref11.name;\n return name;\n });\n var newMap = keyMap(newArray, function (_ref12) {\n var name = _ref12.name;\n return name;\n });\n\n for (var _i44 = 0; _i44 < oldArray.length; _i44++) {\n var oldItem = oldArray[_i44];\n var newItem = newMap[oldItem.name];\n\n if (newItem === undefined) {\n removed.push(oldItem);\n } else {\n persisted.push([oldItem, newItem]);\n }\n }\n\n for (var _i46 = 0; _i46 < newArray.length; _i46++) {\n var _newItem = newArray[_i46];\n\n if (oldMap[_newItem.name] === undefined) {\n added.push(_newItem);\n }\n }\n\n return {\n added: added,\n persisted: persisted,\n removed: removed\n };\n}","import { GraphQLError } from '../error/GraphQLError';\nimport { visit, visitWithTypeInfo } from '../language/visitor';\nimport { getNamedType } from '../type/definition';\nimport { TypeInfo } from './TypeInfo';\n/**\n * A validation rule which reports deprecated usages.\n *\n * Returns a list of GraphQLError instances describing each deprecated use.\n */\n\nexport function findDeprecatedUsages(schema, ast) {\n var errors = [];\n var typeInfo = new TypeInfo(schema);\n visit(ast, visitWithTypeInfo(typeInfo, {\n Field: function Field(node) {\n var fieldDef = typeInfo.getFieldDef();\n\n if (fieldDef && fieldDef.isDeprecated) {\n var parentType = typeInfo.getParentType();\n\n if (parentType) {\n var reason = fieldDef.deprecationReason;\n errors.push(new GraphQLError(\"The field \".concat(parentType.name, \".\").concat(fieldDef.name, \" is deprecated.\") + (reason ? ' ' + reason : ''), node));\n }\n }\n },\n EnumValue: function EnumValue(node) {\n var enumVal = typeInfo.getEnumValue();\n\n if (enumVal && enumVal.isDeprecated) {\n var type = getNamedType(typeInfo.getInputType());\n\n if (type) {\n var reason = enumVal.deprecationReason;\n errors.push(new GraphQLError(\"The enum value \".concat(type.name, \".\").concat(enumVal.name, \" is deprecated.\") + (reason ? ' ' + reason : ''), node));\n }\n }\n }\n }));\n return errors;\n}","/**\n * GraphQL.js provides a reference implementation for the GraphQL specification\n * but is also a useful utility for operating on GraphQL files and building\n * sophisticated tools.\n *\n * This primary module exports a general purpose function for fulfilling all\n * steps of the GraphQL specification in a single operation, but also includes\n * utilities for every part of the GraphQL specification:\n *\n * - Parsing the GraphQL language.\n * - Building a GraphQL type schema.\n * - Validating a GraphQL request against a type schema.\n * - Executing a GraphQL request against a type schema.\n *\n * This also includes utility functions for operating on GraphQL types and\n * GraphQL documents to facilitate building tools.\n *\n * You may also import from each sub-directory directly. For example, the\n * following two import statements are equivalent:\n *\n * import { parse } from 'graphql';\n * import { parse } from 'graphql/language';\n */\n// The GraphQL.js version info.\nexport { version, versionInfo } from './version'; // The primary entry point into fulfilling a GraphQL request.\n\nexport { graphql, graphqlSync } from './graphql'; // Create and operate on GraphQL type definitions and schema.\n\nexport { // Definitions\nGraphQLSchema, GraphQLDirective, GraphQLScalarType, GraphQLObjectType, GraphQLInterfaceType, GraphQLUnionType, GraphQLEnumType, GraphQLInputObjectType, GraphQLList, GraphQLNonNull // Standard GraphQL Scalars\n, specifiedScalarTypes, GraphQLInt, GraphQLFloat, GraphQLString, GraphQLBoolean, GraphQLID // Built-in Directives defined by the Spec\n, specifiedDirectives, GraphQLIncludeDirective, GraphQLSkipDirective, GraphQLDeprecatedDirective // \"Enum\" of Type Kinds\n, TypeKind // Constant Deprecation Reason\n, DEFAULT_DEPRECATION_REASON // GraphQL Types for introspection.\n, introspectionTypes, __Schema, __Directive, __DirectiveLocation, __Type, __Field, __InputValue, __EnumValue, __TypeKind // Meta-field definitions.\n, SchemaMetaFieldDef, TypeMetaFieldDef, TypeNameMetaFieldDef // Predicates\n, isSchema, isDirective, isType, isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType, isListType, isNonNullType, isInputType, isOutputType, isLeafType, isCompositeType, isAbstractType, isWrappingType, isNullableType, isNamedType, isRequiredArgument, isRequiredInputField, isSpecifiedScalarType, isIntrospectionType, isSpecifiedDirective // Assertions\n, assertSchema, assertDirective, assertType, assertScalarType, assertObjectType, assertInterfaceType, assertUnionType, assertEnumType, assertInputObjectType, assertListType, assertNonNullType, assertInputType, assertOutputType, assertLeafType, assertCompositeType, assertAbstractType, assertWrappingType, assertNullableType, assertNamedType // Un-modifiers\n, getNullableType, getNamedType // Validate GraphQL schema.\n, validateSchema, assertValidSchema } from './type'; // Parse and operate on GraphQL language source files.\n\nexport { Source, getLocation // Print source location\n, printLocation, printSourceLocation // Lex\n, createLexer, TokenKind // Parse\n, parse, parseValue, parseType // Print\n, print // Visit\n, visit, visitInParallel, visitWithTypeInfo, getVisitFn, BREAK, Kind, DirectiveLocation // Predicates\n, isDefinitionNode, isExecutableDefinitionNode, isSelectionNode, isValueNode, isTypeNode, isTypeSystemDefinitionNode, isTypeDefinitionNode, isTypeSystemExtensionNode, isTypeExtensionNode } from './language'; // Execute GraphQL queries.\n\nexport { execute, defaultFieldResolver, defaultTypeResolver, responsePathAsArray, getDirectiveValues } from './execution';\nexport { subscribe, createSourceEventStream } from './subscription'; // Validate GraphQL documents.\n\nexport { validate, ValidationContext // All validation rules in the GraphQL Specification.\n, specifiedRules // Individual validation rules.\n, FieldsOnCorrectTypeRule, FragmentsOnCompositeTypesRule, KnownArgumentNamesRule, KnownDirectivesRule, KnownFragmentNamesRule, KnownTypeNamesRule, LoneAnonymousOperationRule, NoFragmentCyclesRule, NoUndefinedVariablesRule, NoUnusedFragmentsRule, NoUnusedVariablesRule, OverlappingFieldsCanBeMergedRule, PossibleFragmentSpreadsRule, ProvidedRequiredArgumentsRule, ScalarLeafsRule, SingleFieldSubscriptionsRule, UniqueArgumentNamesRule, UniqueDirectivesPerLocationRule, UniqueFragmentNamesRule, UniqueInputFieldNamesRule, UniqueOperationNamesRule, UniqueVariableNamesRule, ValuesOfCorrectTypeRule, VariablesAreInputTypesRule, VariablesInAllowedPositionRule } from './validation'; // Create, format, and print GraphQL errors.\n\nexport { GraphQLError, syntaxError, locatedError, printError, formatError } from './error'; // Utilities for operating on GraphQL type schema and parsed sources.\n\nexport { // Produce the GraphQL query recommended for a full schema introspection.\n// Accepts optional IntrospectionOptions.\ngetIntrospectionQuery // @deprecated: use getIntrospectionQuery - will be removed in v15.\n, introspectionQuery // Gets the target Operation from a Document.\n, getOperationAST // Gets the Type for the target Operation AST.\n, getOperationRootType // Convert a GraphQLSchema to an IntrospectionQuery.\n, introspectionFromSchema // Build a GraphQLSchema from an introspection result.\n, buildClientSchema // Build a GraphQLSchema from a parsed GraphQL Schema language AST.\n, buildASTSchema // Build a GraphQLSchema from a GraphQL schema language document.\n, buildSchema // @deprecated: Get the description from a schema AST node and supports legacy\n// syntax for specifying descriptions - will be removed in v16.\n, getDescription // Extends an existing GraphQLSchema from a parsed GraphQL Schema\n// language AST.\n, extendSchema // Sort a GraphQLSchema.\n, lexicographicSortSchema // Print a GraphQLSchema to GraphQL Schema language.\n, printSchema // Print a GraphQLType to GraphQL Schema language.\n, printType // Prints the built-in introspection schema in the Schema Language\n// format.\n, printIntrospectionSchema // Create a GraphQLType from a GraphQL language AST.\n, typeFromAST // Create a JavaScript value from a GraphQL language AST with a Type.\n, valueFromAST // Create a JavaScript value from a GraphQL language AST without a Type.\n, valueFromASTUntyped // Create a GraphQL language AST from a JavaScript value.\n, astFromValue // A helper to use within recursive-descent visitors which need to be aware of\n// the GraphQL type system.\n, TypeInfo // Coerces a JavaScript value to a GraphQL type, or produces errors.\n, coerceInputValue // @deprecated use coerceInputValue - will be removed in v15\n, coerceValue // @deprecated use coerceInputValue - will be removed in v15\n, isValidJSValue // @deprecated use validation - will be removed in v15\n, isValidLiteralValue // Concatenates multiple AST together.\n, concatAST // Separates an AST into an AST per Operation.\n, separateOperations // Strips characters that are not significant to the validity or execution\n// of a GraphQL document.\n, stripIgnoredCharacters // Comparators for types\n, isEqualType, isTypeSubTypeOf, doTypesOverlap // Asserts a string is a valid GraphQL name.\n, assertValidName // Determine if a string is a valid GraphQL name.\n, isValidNameError // Compares two GraphQLSchemas and detects breaking changes.\n, BreakingChangeType, DangerousChangeType, findBreakingChanges, findDangerousChanges // Report all deprecated usage within a GraphQL document.\n, findDeprecatedUsages } from './utilities';","export default function invariant(condition, message) {\n var booleanCondition = Boolean(condition);\n\n if (!booleanCondition) {\n throw new Error(message || 'Unexpected invariant triggered');\n }\n}","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\n\n/* global Reflect, Promise */\nvar _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign.apply(this, arguments);\n};\n\nexport { _assign as __assign };\nexport function __rest(s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {\n if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n }\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\nexport function __param(paramIndex, decorator) {\n return function (target, key) {\n decorator(target, key, paramIndex);\n };\n}\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\nexport function __awaiter(thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : new P(function (resolve) {\n resolve(result.value);\n }).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\nexport function __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nexport function __exportStar(m, exports) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\nexport function __values(o) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator],\n i = 0;\n if (m) return m.call(o);\n return {\n next: function next() {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n}\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n}\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }\n\n return ar;\n}\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) {\n s += arguments[i].length;\n }\n\n for (var r = Array(s), k = 0, i = 0; i < il; i++) {\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {\n r[k] = a[j];\n }\n }\n\n return r;\n}\n;\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []),\n i,\n q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i;\n\n function verb(n) {\n if (g[n]) i[n] = function (v) {\n return new Promise(function (a, b) {\n q.push([n, v, a, b]) > 1 || resume(n, v);\n });\n };\n }\n\n function resume(n, v) {\n try {\n step(g[n](v));\n } catch (e) {\n settle(q[0][3], e);\n }\n }\n\n function step(r) {\n r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);\n }\n\n function fulfill(value) {\n resume(\"next\", value);\n }\n\n function reject(value) {\n resume(\"throw\", value);\n }\n\n function settle(f, v) {\n if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);\n }\n}\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) {\n throw e;\n }), verb(\"return\"), i[Symbol.iterator] = function () {\n return this;\n }, i;\n\n function verb(n, f) {\n i[n] = o[n] ? function (v) {\n return (p = !p) ? {\n value: __await(o[n](v)),\n done: n === \"return\"\n } : f ? f(v) : v;\n } : f;\n }\n}\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator],\n i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i);\n\n function verb(n) {\n i[n] = o[n] && function (v) {\n return new Promise(function (resolve, reject) {\n v = o[n](v), settle(resolve, reject, v.done, v.value);\n });\n };\n }\n\n function settle(resolve, reject, d, v) {\n Promise.resolve(v).then(function (v) {\n resolve({\n value: v,\n done: d\n });\n }, reject);\n }\n}\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n}\n;\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n }\n result.default = mod;\n return result;\n}\nexport function __importDefault(mod) {\n return mod && mod.__esModule ? mod : {\n default: mod\n };\n}","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","import PropTypes from 'prop-types';\nexport var subscriptionShape = PropTypes.shape({\n trySubscribe: PropTypes.func.isRequired,\n tryUnsubscribe: PropTypes.func.isRequired,\n notifyNestedSubs: PropTypes.func.isRequired,\n isSubscribed: PropTypes.func.isRequired\n});\nexport var storeShape = PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n});","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React, { Component, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport { storeShape, subscriptionShape } from '../utils/PropTypes';\nimport warning from '../utils/warning';\nvar prefixUnsafeLifecycleMethods = typeof React.forwardRef !== \"undefined\";\nvar didWarnAboutReceivingStore = false;\n\nfunction warnAboutReceivingStore() {\n if (didWarnAboutReceivingStore) {\n return;\n }\n\n didWarnAboutReceivingStore = true;\n warning(' does not support changing `store` on the fly. ' + 'It is most likely that you see this error because you updated to ' + 'Redux 2.x and React Redux 2.x which no longer hot reload reducers ' + 'automatically. See https://github.com/reduxjs/react-redux/releases/' + 'tag/v2.0.0 for the migration instructions.');\n}\n\nexport function createProvider(storeKey) {\n var _Provider$childContex;\n\n if (storeKey === void 0) {\n storeKey = 'store';\n }\n\n var subscriptionKey = storeKey + \"Subscription\";\n\n var Provider =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[storeKey] = this[storeKey], _ref[subscriptionKey] = null, _ref;\n };\n\n function Provider(props, context) {\n var _this;\n\n _this = _Component.call(this, props, context) || this;\n _this[storeKey] = props.store;\n return _this;\n }\n\n _proto.render = function render() {\n return Children.only(this.props.children);\n };\n\n return Provider;\n }(Component);\n\n if (process.env.NODE_ENV !== 'production') {\n // Use UNSAFE_ event name where supported\n var eventName = prefixUnsafeLifecycleMethods ? 'UNSAFE_componentWillReceiveProps' : 'componentWillReceiveProps';\n\n Provider.prototype[eventName] = function (nextProps) {\n if (this[storeKey] !== nextProps.store) {\n warnAboutReceivingStore();\n }\n };\n }\n\n Provider.propTypes = {\n store: storeShape.isRequired,\n children: PropTypes.element.isRequired\n };\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[storeKey] = storeShape.isRequired, _Provider$childContex[subscriptionKey] = subscriptionShape, _Provider$childContex);\n return Provider;\n}\nexport default createProvider();","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","// encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\nvar CLEARED = null;\nvar nullListeners = {\n notify: function notify() {}\n};\n\nfunction createListenerCollection() {\n // the current/next pattern is copied from redux's createStore code.\n // TODO: refactor+expose that code to be reusable here?\n var current = [];\n var next = [];\n return {\n clear: function clear() {\n next = CLEARED;\n current = CLEARED;\n },\n notify: function notify() {\n var listeners = current = next;\n\n for (var i = 0; i < listeners.length; i++) {\n listeners[i]();\n }\n },\n get: function get() {\n return next;\n },\n subscribe: function subscribe(listener) {\n var isSubscribed = true;\n if (next === current) next = current.slice();\n next.push(listener);\n return function unsubscribe() {\n if (!isSubscribed || current === CLEARED) return;\n isSubscribed = false;\n if (next === current) next = current.slice();\n next.splice(next.indexOf(listener), 1);\n };\n }\n };\n}\n\nvar Subscription =\n/*#__PURE__*/\nfunction () {\n function Subscription(store, parentSub, onStateChange) {\n this.store = store;\n this.parentSub = parentSub;\n this.onStateChange = onStateChange;\n this.unsubscribe = null;\n this.listeners = nullListeners;\n }\n\n var _proto = Subscription.prototype;\n\n _proto.addNestedSub = function addNestedSub(listener) {\n this.trySubscribe();\n return this.listeners.subscribe(listener);\n };\n\n _proto.notifyNestedSubs = function notifyNestedSubs() {\n this.listeners.notify();\n };\n\n _proto.isSubscribed = function isSubscribed() {\n return Boolean(this.unsubscribe);\n };\n\n _proto.trySubscribe = function trySubscribe() {\n if (!this.unsubscribe) {\n this.unsubscribe = this.parentSub ? this.parentSub.addNestedSub(this.onStateChange) : this.store.subscribe(this.onStateChange);\n this.listeners = createListenerCollection();\n }\n };\n\n _proto.tryUnsubscribe = function tryUnsubscribe() {\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n this.listeners.clear();\n this.listeners = nullListeners;\n }\n };\n\n return Subscription;\n}();\n\nexport { Subscription as default };","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport hoistStatics from 'hoist-non-react-statics';\nimport invariant from 'invariant';\nimport React, { Component, createElement } from 'react';\nimport { isValidElementType } from 'react-is';\nimport Subscription from '../utils/Subscription';\nimport { storeShape, subscriptionShape } from '../utils/PropTypes';\nvar prefixUnsafeLifecycleMethods = typeof React.forwardRef !== \"undefined\";\nvar hotReloadingVersion = 0;\nvar dummyState = {};\n\nfunction noop() {}\n\nfunction makeSelectorStateful(sourceSelector, store) {\n // wrap the selector in an object that tracks its results between runs.\n var selector = {\n run: function runComponentSelector(props) {\n try {\n var nextProps = sourceSelector(store.getState(), props);\n\n if (nextProps !== selector.props || selector.error) {\n selector.shouldComponentUpdate = true;\n selector.props = nextProps;\n selector.error = null;\n }\n } catch (error) {\n selector.shouldComponentUpdate = true;\n selector.error = error;\n }\n }\n };\n return selector;\n}\n\nexport default function connectAdvanced(\n/*\n selectorFactory is a func that is responsible for returning the selector function used to\n compute new props from state, props, and dispatch. For example:\n export default connectAdvanced((dispatch, options) => (state, props) => ({\n thing: state.things[props.thingId],\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\n }))(YourComponent)\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\n props. Do not use connectAdvanced directly without memoizing results between calls to your\n selector, otherwise the Connect component will re-render on every state or props change.\n*/\nselectorFactory, // options object:\n_ref) {\n var _contextTypes, _childContextTypes;\n\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\"]);\n\n var subscriptionKey = storeKey + 'Subscription';\n var version = hotReloadingVersion++;\n var contextTypes = (_contextTypes = {}, _contextTypes[storeKey] = storeShape, _contextTypes[subscriptionKey] = subscriptionShape, _contextTypes);\n var childContextTypes = (_childContextTypes = {}, _childContextTypes[subscriptionKey] = subscriptionShape, _childContextTypes);\n return function wrapWithConnect(WrappedComponent) {\n invariant(isValidElementType(WrappedComponent), \"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + JSON.stringify(WrappedComponent)));\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n withRef: withRef,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent // TODO Actually fix our use of componentWillReceiveProps\n\n /* eslint-disable react/no-deprecated */\n\n });\n\n var Connect =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(Connect, _Component);\n\n function Connect(props, context) {\n var _this;\n\n _this = _Component.call(this, props, context) || this;\n _this.version = version;\n _this.state = {};\n _this.renderCount = 0;\n _this.store = props[storeKey] || context[storeKey];\n _this.propsMode = Boolean(props[storeKey]);\n _this.setWrappedInstance = _this.setWrappedInstance.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n invariant(_this.store, \"Could not find \\\"\" + storeKey + \"\\\" in either the context or props of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a , \") + (\"or explicitly pass \\\"\" + storeKey + \"\\\" as a prop to \\\"\" + displayName + \"\\\".\"));\n\n _this.initSelector();\n\n _this.initSubscription();\n\n return _this;\n }\n\n var _proto = Connect.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref3; // If this component received store from props, its subscription should be transparent\n // to any descendants receiving store+subscription from context; it passes along\n // subscription passed to it. Otherwise, it shadows the parent subscription, which allows\n // Connect to control ordering of notifications to flow top-down.\n\n\n var subscription = this.propsMode ? null : this.subscription;\n return _ref3 = {}, _ref3[subscriptionKey] = subscription || this.context[subscriptionKey], _ref3;\n };\n\n _proto.componentDidMount = function componentDidMount() {\n if (!shouldHandleStateChanges) return; // componentWillMount fires during server side rendering, but componentDidMount and\n // componentWillUnmount do not. Because of this, trySubscribe happens during ...didMount.\n // Otherwise, unsubscription would never take place during SSR, causing a memory leak.\n // To handle the case where a child component may have triggered a state change by\n // dispatching an action in its componentWillMount, we have to re-run the select and maybe\n // re-render.\n\n this.subscription.trySubscribe();\n this.selector.run(this.props);\n if (this.selector.shouldComponentUpdate) this.forceUpdate();\n }; // Note: this is renamed below to the UNSAFE_ version in React >=16.3.0\n\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n this.selector.run(nextProps);\n };\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate() {\n return this.selector.shouldComponentUpdate;\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.subscription) this.subscription.tryUnsubscribe();\n this.subscription = null;\n this.notifyNestedSubs = noop;\n this.store = null;\n this.selector.run = noop;\n this.selector.shouldComponentUpdate = false;\n };\n\n _proto.getWrappedInstance = function getWrappedInstance() {\n invariant(withRef, \"To access the wrapped instance, you need to specify \" + (\"{ withRef: true } in the options argument of the \" + methodName + \"() call.\"));\n return this.wrappedInstance;\n };\n\n _proto.setWrappedInstance = function setWrappedInstance(ref) {\n this.wrappedInstance = ref;\n };\n\n _proto.initSelector = function initSelector() {\n var sourceSelector = selectorFactory(this.store.dispatch, selectorFactoryOptions);\n this.selector = makeSelectorStateful(sourceSelector, this.store);\n this.selector.run(this.props);\n };\n\n _proto.initSubscription = function initSubscription() {\n if (!shouldHandleStateChanges) return; // parentSub's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n var parentSub = (this.propsMode ? this.props : this.context)[subscriptionKey];\n this.subscription = new Subscription(this.store, parentSub, this.onStateChange.bind(this)); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `this.subscription` will then be null. An\n // extra null check every change can be avoided by copying the method onto `this` and then\n // replacing it with a no-op on unmount. This can probably be avoided if Subscription's\n // listeners logic is changed to not call listeners that have been unsubscribed in the\n // middle of the notification loop.\n\n this.notifyNestedSubs = this.subscription.notifyNestedSubs.bind(this.subscription);\n };\n\n _proto.onStateChange = function onStateChange() {\n this.selector.run(this.props);\n\n if (!this.selector.shouldComponentUpdate) {\n this.notifyNestedSubs();\n } else {\n this.componentDidUpdate = this.notifyNestedSubsOnComponentDidUpdate;\n this.setState(dummyState);\n }\n };\n\n _proto.notifyNestedSubsOnComponentDidUpdate = function notifyNestedSubsOnComponentDidUpdate() {\n // `componentDidUpdate` is conditionally implemented when `onStateChange` determines it\n // needs to notify nested subs. Once called, it unimplements itself until further state\n // changes occur. Doing it this way vs having a permanent `componentDidUpdate` that does\n // a boolean check every time avoids an extra method call most of the time, resulting\n // in some perf boost.\n this.componentDidUpdate = undefined;\n this.notifyNestedSubs();\n };\n\n _proto.isSubscribed = function isSubscribed() {\n return Boolean(this.subscription) && this.subscription.isSubscribed();\n };\n\n _proto.addExtraProps = function addExtraProps(props) {\n if (!withRef && !renderCountProp && !(this.propsMode && this.subscription)) return props; // make a shallow copy so that fields added don't leak to the original selector.\n // this is especially important for 'ref' since that's a reference back to the component\n // instance. a singleton memoized selector would then be holding a reference to the\n // instance, preventing the instance from being garbage collected, and that would be bad\n\n var withExtras = _extends({}, props);\n\n if (withRef) withExtras.ref = this.setWrappedInstance;\n if (renderCountProp) withExtras[renderCountProp] = this.renderCount++;\n if (this.propsMode && this.subscription) withExtras[subscriptionKey] = this.subscription;\n return withExtras;\n };\n\n _proto.render = function render() {\n var selector = this.selector;\n selector.shouldComponentUpdate = false;\n\n if (selector.error) {\n throw selector.error;\n } else {\n return createElement(WrappedComponent, this.addExtraProps(selector.props));\n }\n };\n\n return Connect;\n }(Component);\n\n if (prefixUnsafeLifecycleMethods) {\n // Use UNSAFE_ event name where supported\n Connect.prototype.UNSAFE_componentWillReceiveProps = Connect.prototype.componentWillReceiveProps;\n delete Connect.prototype.componentWillReceiveProps;\n }\n /* eslint-enable react/no-deprecated */\n\n\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = displayName;\n Connect.childContextTypes = childContextTypes;\n Connect.contextTypes = contextTypes;\n Connect.propTypes = contextTypes;\n\n if (process.env.NODE_ENV !== 'production') {\n // Use UNSAFE_ event name where supported\n var eventName = prefixUnsafeLifecycleMethods ? 'UNSAFE_componentWillUpdate' : 'componentWillUpdate';\n\n Connect.prototype[eventName] = function componentWillUpdate() {\n var _this2 = this; // We are hot reloading!\n\n\n if (this.version !== version) {\n this.version = version;\n this.initSelector(); // If any connected descendants don't hot reload (and resubscribe in the process), their\n // listeners will be lost when we unsubscribe. Unfortunately, by copying over all\n // listeners, this does mean that the old versions of connected descendants will still be\n // notified of state changes; however, their onStateChange function is a no-op so this\n // isn't a huge deal.\n\n var oldListeners = [];\n\n if (this.subscription) {\n oldListeners = this.subscription.listeners.get();\n this.subscription.tryUnsubscribe();\n }\n\n this.initSubscription();\n\n if (shouldHandleStateChanges) {\n this.subscription.trySubscribe();\n oldListeners.forEach(function (listener) {\n return _this2.subscription.listeners.subscribe(listener);\n });\n }\n }\n };\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","var hasOwn = Object.prototype.hasOwnProperty;\n\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwn.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n// \n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n// \n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n// \n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n// \n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n// \n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}","import { bindActionCreators } from 'redux';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = _objectWithoutPropertiesLoose(_ref2, [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"]);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\n connect is a facade over connectAdvanced. It turns its args into a compatible\n selectorFactory, which has the signature:\n\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\n \n connect passes its args to connectAdvanced as options, which will in turn pass them to\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\n\n selectorFactory returns a final props selector from its mapStateToProps,\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\n mergePropsFactories, and pure args.\n\n The resulting final props selector is called by the Connect component instance whenever\n it receives new props or store state.\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"]);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n }, extraOptions));\n };\n}\nexport default createConnect();","import Provider, { createProvider } from './components/Provider';\nimport connectAdvanced from './components/connectAdvanced';\nimport connect from './connect/connect';\nexport { Provider, createProvider, connectAdvanced, connect };","import { __extends } from 'tslib';\nvar genericMessage = \"Invariant Violation\";\nvar _a = Object.setPrototypeOf,\n setPrototypeOf = _a === void 0 ? function (obj, proto) {\n obj.__proto__ = proto;\n return obj;\n} : _a;\n\nvar InvariantError =\n/** @class */\nfunction (_super) {\n __extends(InvariantError, _super);\n\n function InvariantError(message) {\n if (message === void 0) {\n message = genericMessage;\n }\n\n var _this = _super.call(this, typeof message === \"number\" ? genericMessage + \": \" + message + \" (see https://github.com/apollographql/invariant-packages)\" : message) || this;\n\n _this.framesToPop = 1;\n _this.name = genericMessage;\n setPrototypeOf(_this, InvariantError.prototype);\n return _this;\n }\n\n return InvariantError;\n}(Error);\n\nfunction invariant(condition, message) {\n if (!condition) {\n throw new InvariantError(message);\n }\n}\n\nfunction wrapConsoleMethod(method) {\n return function () {\n return console[method].apply(console, arguments);\n };\n}\n\n(function (invariant) {\n invariant.warn = wrapConsoleMethod(\"warn\");\n invariant.error = wrapConsoleMethod(\"error\");\n})(invariant || (invariant = {})); // Code that uses ts-invariant with rollup-plugin-invariant may want to\n// import this process stub to avoid errors evaluating process.env.NODE_ENV.\n// However, because most ESM-to-CJS compilers will rewrite the process import\n// as tsInvariant.process, which prevents proper replacement by minifiers, we\n// also attempt to define the stub globally when it is not already defined.\n\n\nvar processStub = {\n env: {}\n};\n\nif (typeof process === \"object\") {\n processStub = process;\n} else try {\n // Using Function to evaluate this assignment in global scope also escapes\n // the strict mode of the current module, thereby allowing the assignment.\n // Inspired by https://github.com/facebook/regenerator/pull/369.\n Function(\"stub\", \"process = stub\")(processStub);\n} catch (atLeastWeTried) {// The assignment can fail if a Content Security Policy heavy-handedly\n // forbids Function usage. In those environments, developers should take\n // extra care to replace process.env.NODE_ENV in their production builds,\n // or define an appropriate global.process polyfill.\n}\n\nvar invariant$1 = invariant;\nexport default invariant$1;\nexport { InvariantError, invariant, processStub as process };","'use strict';\n\nexports.__esModule = true;\nexports.defaultMemoize = defaultMemoize;\nexports.createSelectorCreator = createSelectorCreator;\nexports.createStructuredSelector = createStructuredSelector;\n\nfunction defaultEqualityCheck(a, b) {\n return a === b;\n}\n\nfunction areArgumentsShallowlyEqual(equalityCheck, prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n } // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n\n\n var length = prev.length;\n\n for (var i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction defaultMemoize(func) {\n var equalityCheck = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultEqualityCheck;\n var lastArgs = null;\n var lastResult = null; // we reference arguments instead of spreading them for performance reasons\n\n return function () {\n if (!areArgumentsShallowlyEqual(equalityCheck, lastArgs, arguments)) {\n // apply arguments instead of spreading for performance.\n lastResult = func.apply(null, arguments);\n }\n\n lastArgs = arguments;\n return lastResult;\n };\n}\n\nfunction getDependencies(funcs) {\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n if (!dependencies.every(function (dep) {\n return typeof dep === 'function';\n })) {\n var dependencyTypes = dependencies.map(function (dep) {\n return typeof dep;\n }).join(', ');\n throw new Error('Selector creators expect all input-selectors to be functions, ' + ('instead received the following types: [' + dependencyTypes + ']'));\n }\n\n return dependencies;\n}\n\nfunction createSelectorCreator(memoize) {\n for (var _len = arguments.length, memoizeOptions = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n memoizeOptions[_key - 1] = arguments[_key];\n }\n\n return function () {\n for (var _len2 = arguments.length, funcs = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n funcs[_key2] = arguments[_key2];\n }\n\n var recomputations = 0;\n var resultFunc = funcs.pop();\n var dependencies = getDependencies(funcs);\n var memoizedResultFunc = memoize.apply(undefined, [function () {\n recomputations++; // apply arguments instead of spreading for performance.\n\n return resultFunc.apply(null, arguments);\n }].concat(memoizeOptions)); // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n\n var selector = defaultMemoize(function () {\n var params = [];\n var length = dependencies.length;\n\n for (var i = 0; i < length; i++) {\n // apply arguments instead of spreading and mutate a local list of params for performance.\n params.push(dependencies[i].apply(null, arguments));\n } // apply arguments instead of spreading for performance.\n\n\n return memoizedResultFunc.apply(null, params);\n });\n selector.resultFunc = resultFunc;\n\n selector.recomputations = function () {\n return recomputations;\n };\n\n selector.resetRecomputations = function () {\n return recomputations = 0;\n };\n\n return selector;\n };\n}\n\nvar createSelector = exports.createSelector = createSelectorCreator(defaultMemoize);\n\nfunction createStructuredSelector(selectors) {\n var selectorCreator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : createSelector;\n\n if (typeof selectors !== 'object') {\n throw new Error('createStructuredSelector expects first argument to be an object ' + ('where each property is a selector, instead received a ' + typeof selectors));\n }\n\n var objectKeys = Object.keys(selectors);\n return selectorCreator(objectKeys.map(function (key) {\n return selectors[key];\n }), function () {\n for (var _len3 = arguments.length, values = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n\n return values.reduce(function (composition, value, index) {\n composition[objectKeys[index]] = value;\n return composition;\n }, {});\n });\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar reselect_1 = require(\"reselect\");\n\nvar reducers_1 = require(\"../workspace/reducers\");\n\nfunction getSelectedWorkspaceId(state) {\n return state.get('selectedWorkspace');\n}\n\nfunction getSelectedWorkspace(state) {\n return state.getIn(['workspaces', getSelectedWorkspaceId(state)]) || reducers_1.makeWorkspace('');\n}\n\nexports.getSessionsState = reselect_1.createSelector([getSelectedWorkspace], function (workspace) {\n return workspace.get('sessions');\n});\nexports.getSelectedSession = reselect_1.createSelector([exports.getSessionsState], function (state) {\n var id = exports.getSelectedSessionId(state);\n var session = state.getIn(['sessions', id]);\n return session;\n});\n\nexports.getSelectedSessionId = function (state) {\n return state.selectedSessionId && state.selectedSessionId !== '' ? state.selectedSessionId : state.sessions.first().id;\n};\n\nexports.getSelectedSessionIdFromRoot = reselect_1.createSelector([exports.getSelectedSession], function (state) {\n return state.get('id');\n});\n\nvar makeSessionSelector = function makeSessionSelector(prop) {\n return reselect_1.createSelector([exports.getSelectedSession], function (session) {\n return session.get(prop);\n });\n};\n\nexports.getScrollTop = makeSessionSelector('scrollTop');\nexports.getEndpoint = makeSessionSelector('endpoint');\nexports.getQuery = makeSessionSelector('query');\nexports.getFile = makeSessionSelector('file');\nexports.getVariables = makeSessionSelector('variables');\nexports.getResponses = makeSessionSelector('responses');\nexports.getOperationName = makeSessionSelector('operationName');\nexports.getQueryRunning = makeSessionSelector('queryRunning');\nexports.getSubscriptionActive = makeSessionSelector('subscriptionActive');\nexports.getOperations = makeSessionSelector('operations');\nexports.getVariableToType = makeSessionSelector('variableToType');\nexports.getQueryTypes = makeSessionSelector('queryTypes');\nexports.getDate = makeSessionSelector('date');\nexports.getHasMutation = makeSessionSelector('hasMutation');\nexports.getHasSubscription = makeSessionSelector('hasSubscription');\nexports.getHasQuery = makeSessionSelector('hasQuery');\nexports.getIsFile = makeSessionSelector('isFile');\nexports.getStarred = makeSessionSelector('starred');\nexports.getName = makeSessionSelector('name');\nexports.getFilePath = makeSessionSelector('filePath');\nexports.getSelectedUserToken = makeSessionSelector('selectedUserToken');\nexports.getHeaders = makeSessionSelector('headers');\nexports.getHasChanged = makeSessionSelector('hasChanged');\nexports.getAbsolutePath = makeSessionSelector('absolutePath');\nexports.getIsSettingsTab = makeSessionSelector('isSettingsTab');\nexports.getIsConfigTab = makeSessionSelector('isConfigTab');\nexports.getCurrentQueryStartTime = makeSessionSelector('currentQueryStartTime');\nexports.getCurrentQueryEndTime = makeSessionSelector('currentQueryEndTime');\nexports.getIsReloadingSchema = makeSessionSelector('isReloadingSchema');\nexports.getIsPollingSchema = reselect_1.createSelector([exports.getEndpoint, getSettings], function (endpoint, settings) {\n var json = JSON.parse(settings);\n\n try {\n var isPolling = json['schema.polling.enable'] && endpoint.match(\"/\" + json['schema.polling.endpointFilter']) && true;\n return isPolling;\n } catch (e) {\n return false;\n }\n});\nexports.getResponseExtensions = makeSessionSelector('responseExtensions');\nexports.getQueryVariablesActive = makeSessionSelector('queryVariablesActive');\nexports.getEndpointUnreachable = makeSessionSelector('endpointUnreachable');\nexports.getEditorFlex = makeSessionSelector('editorFlex');\nexports.getVariableEditorOpen = makeSessionSelector('variableEditorOpen');\nexports.getVariableEditorHeight = makeSessionSelector('variableEditorHeight');\nexports.getIsExtensionsDrawerOpen = makeSessionSelector('isExtensionsDrawerOpen');\nexports.getIsTracingActive = makeSessionSelector('isTracingActive');\nexports.getResponseTracingHeight = makeSessionSelector('responseTracingHeight');\nexports.getDocExplorerWidth = makeSessionSelector('docExplorerWidth');\nexports.getNextQueryStartTime = makeSessionSelector('nextQueryStartTime');\nexports.getTracingSupported = makeSessionSelector('tracingSupported');\nexports.getIsQueryPlanSupported = makeSessionSelector('isQueryPlanSupported');\n\nfunction getSettings(state) {\n return state.getIn(['settingsString']);\n}\n\nexports.getTabWidth = reselect_1.createSelector([getSettings], function (settings) {\n try {\n var json = JSON.parse(settings);\n return json['prettier.tabWidth'] || 2;\n } catch (e) {//\n }\n\n return 2;\n});\nexports.getUseTabs = reselect_1.createSelector([getSettings], function (settings) {\n try {\n var json = JSON.parse(settings);\n return json['prettier.useTabs'] || false;\n } catch (e) {//\n }\n\n return false;\n});\nexports.getHeadersCount = reselect_1.createSelector([exports.getHeaders], function (headers) {\n try {\n var json = JSON.parse(headers);\n return Object.keys(json).length;\n } catch (e) {//\n }\n\n return 0;\n});\nexports.getParsedHeaders = reselect_1.createSelector([exports.getSelectedSession], getParsedHeadersFromSession);\n\nfunction getParsedHeadersFromSession(headers) {\n try {\n var json = JSON.parse(headers);\n return json;\n } catch (e) {//\n }\n\n return {};\n}\n\nexports.getParsedHeadersFromSession = getParsedHeadersFromSession;\nexports.getParsedVariables = reselect_1.createSelector([exports.getSelectedSession], getParsedVariablesFromSession);\n\nfunction getParsedVariablesFromSession(session) {\n var variables = session.variables;\n\n try {\n var json = JSON.parse(variables);\n return json;\n } catch (e) {//\n }\n\n return {};\n}\n\nexports.getParsedVariablesFromSession = getParsedVariablesFromSession;\nexports.getTracing = reselect_1.createSelector([exports.getResponseExtensions], function (extensions) {\n return extensions && extensions.tracing;\n});\nexports.getQueryPlan = reselect_1.createSelector([exports.getResponseExtensions], function (extensions) {\n return extensions && extensions.__queryPlanExperimental;\n});\nexports.getSessionsArray = reselect_1.createSelector([exports.getSessionsState], function (state) {\n var array = state.get('sessions').toArray().map(function (arr) {\n return arr[1];\n });\n return array;\n});","function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n/**\n * Return true if `value` is object-like. A value is object-like if it's not\n * `null` and has a `typeof` result of \"object\".\n */\n\n\nexport default function isObjectLike(value) {\n return _typeof(value) == 'object' && value !== null;\n}","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is'); // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n\n\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function invariant(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n\n throw error;\n }\n};\n\nmodule.exports = invariant;","/**\n * Creates a keyed JS object from an array, given a function to produce the keys\n * and a function to produce the values from each item in the array.\n *\n * const phoneBook = [\n * { name: 'Jon', num: '555-1234' },\n * { name: 'Jenny', num: '867-5309' }\n * ]\n *\n * // { Jon: '555-1234', Jenny: '867-5309' }\n * const phonesByName = keyValMap(\n * phoneBook,\n * entry => entry.name,\n * entry => entry.num\n * )\n *\n */\nexport default function keyValMap(list, keyFn, valFn) {\n return list.reduce(function (map, item) {\n map[keyFn(item)] = valFn(item);\n return map;\n }, Object.create(null));\n}","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n// Used for setting prototype methods that IE8 chokes on.\nvar DELETE = 'delete'; // Constants describing the size of trie nodes.\n\nvar SHIFT = 5; // Resulted in best performance after ______?\n\nvar SIZE = 1 << SHIFT;\nvar MASK = SIZE - 1; // A consistent shared value representing \"not set\" which equals nothing other\n// than itself, and nothing that could be provided externally.\n\nvar NOT_SET = {}; // Boolean references, Rough equivalent of `bool &`.\n\nfunction MakeRef() {\n return {\n value: false\n };\n}\n\nfunction SetRef(ref) {\n if (ref) {\n ref.value = true;\n }\n} // A function which returns a value representing an \"owner\" for transient writes\n// to tries. The return value will only ever equal itself, and will not equal\n// the return of any subsequent call of this function.\n\n\nfunction OwnerID() {}\n\nfunction ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n\n return iter.size;\n}\n\nfunction wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n\n index = uint32Index;\n }\n\n return index < 0 ? ensureSize(iter) + index : index;\n}\n\nfunction returnTrue() {\n return true;\n}\n\nfunction wholeSlice(begin, end, size) {\n return (begin === 0 && !isNeg(begin) || size !== undefined && begin <= -size) && (end === undefined || size !== undefined && end >= size);\n}\n\nfunction resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n}\n\nfunction resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n}\n\nfunction resolveIndex(index, size, defaultIndex) {\n // Sanitize indices using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n return index === undefined ? defaultIndex : isNeg(index) ? size === Infinity ? size : Math.max(0, size + index) | 0 : size === undefined || size === index ? index : Math.min(size, index) | 0;\n}\n\nfunction isNeg(value) {\n // Account for -0 which is negative, but not less than 0.\n return value < 0 || value === 0 && 1 / value === -Infinity;\n} // Note: value is unchanged to not break immutable-devtools.\n\n\nvar IS_COLLECTION_SYMBOL = '@@__IMMUTABLE_ITERABLE__@@';\n\nfunction isCollection(maybeCollection) {\n return Boolean(maybeCollection && maybeCollection[IS_COLLECTION_SYMBOL]);\n}\n\nvar IS_KEYED_SYMBOL = '@@__IMMUTABLE_KEYED__@@';\n\nfunction isKeyed(maybeKeyed) {\n return Boolean(maybeKeyed && maybeKeyed[IS_KEYED_SYMBOL]);\n}\n\nvar IS_INDEXED_SYMBOL = '@@__IMMUTABLE_INDEXED__@@';\n\nfunction isIndexed(maybeIndexed) {\n return Boolean(maybeIndexed && maybeIndexed[IS_INDEXED_SYMBOL]);\n}\n\nfunction isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n}\n\nvar Collection = function Collection(value) {\n return isCollection(value) ? value : Seq(value);\n};\n\nvar KeyedCollection =\n/*@__PURE__*/\nfunction (Collection) {\n function KeyedCollection(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n if (Collection) KeyedCollection.__proto__ = Collection;\n KeyedCollection.prototype = Object.create(Collection && Collection.prototype);\n KeyedCollection.prototype.constructor = KeyedCollection;\n return KeyedCollection;\n}(Collection);\n\nvar IndexedCollection =\n/*@__PURE__*/\nfunction (Collection) {\n function IndexedCollection(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n if (Collection) IndexedCollection.__proto__ = Collection;\n IndexedCollection.prototype = Object.create(Collection && Collection.prototype);\n IndexedCollection.prototype.constructor = IndexedCollection;\n return IndexedCollection;\n}(Collection);\n\nvar SetCollection =\n/*@__PURE__*/\nfunction (Collection) {\n function SetCollection(value) {\n return isCollection(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n if (Collection) SetCollection.__proto__ = Collection;\n SetCollection.prototype = Object.create(Collection && Collection.prototype);\n SetCollection.prototype.constructor = SetCollection;\n return SetCollection;\n}(Collection);\n\nCollection.Keyed = KeyedCollection;\nCollection.Indexed = IndexedCollection;\nCollection.Set = SetCollection;\nvar IS_SEQ_SYMBOL = '@@__IMMUTABLE_SEQ__@@';\n\nfunction isSeq(maybeSeq) {\n return Boolean(maybeSeq && maybeSeq[IS_SEQ_SYMBOL]);\n}\n\nvar IS_RECORD_SYMBOL = '@@__IMMUTABLE_RECORD__@@';\n\nfunction isRecord(maybeRecord) {\n return Boolean(maybeRecord && maybeRecord[IS_RECORD_SYMBOL]);\n}\n\nfunction isImmutable(maybeImmutable) {\n return isCollection(maybeImmutable) || isRecord(maybeImmutable);\n}\n\nvar IS_ORDERED_SYMBOL = '@@__IMMUTABLE_ORDERED__@@';\n\nfunction isOrdered(maybeOrdered) {\n return Boolean(maybeOrdered && maybeOrdered[IS_ORDERED_SYMBOL]);\n}\n\nvar ITERATE_KEYS = 0;\nvar ITERATE_VALUES = 1;\nvar ITERATE_ENTRIES = 2;\nvar REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nvar ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\nvar Iterator = function Iterator(next) {\n this.next = next;\n};\n\nIterator.prototype.toString = function toString() {\n return '[Iterator]';\n};\n\nIterator.KEYS = ITERATE_KEYS;\nIterator.VALUES = ITERATE_VALUES;\nIterator.ENTRIES = ITERATE_ENTRIES;\n\nIterator.prototype.inspect = Iterator.prototype.toSource = function () {\n return this.toString();\n};\n\nIterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n};\n\nfunction iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult ? iteratorResult.value = value : iteratorResult = {\n value: value,\n done: false\n };\n return iteratorResult;\n}\n\nfunction iteratorDone() {\n return {\n value: undefined,\n done: true\n };\n}\n\nfunction hasIterator(maybeIterable) {\n return !!getIteratorFn(maybeIterable);\n}\n\nfunction isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n}\n\nfunction getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n}\n\nfunction getIteratorFn(iterable) {\n var iteratorFn = iterable && (REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL] || iterable[FAUX_ITERATOR_SYMBOL]);\n\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction isArrayLike(value) {\n if (Array.isArray(value) || typeof value === 'string') {\n return true;\n }\n\n return value && typeof value === 'object' && Number.isInteger(value.length) && value.length >= 0 && (value.length === 0 ? // Only {length: 0} is considered Array-like.\n Object.keys(value).length === 1 : // An object is only Array-like if it has a property where the last value\n // in the array-like may be found (which could be undefined).\n value.hasOwnProperty(value.length - 1));\n}\n\nvar Seq =\n/*@__PURE__*/\nfunction (Collection$$1) {\n function Seq(value) {\n return value === null || value === undefined ? emptySequence() : isImmutable(value) ? value.toSeq() : seqFromValue(value);\n }\n\n if (Collection$$1) Seq.__proto__ = Collection$$1;\n Seq.prototype = Object.create(Collection$$1 && Collection$$1.prototype);\n Seq.prototype.constructor = Seq;\n\n Seq.prototype.toSeq = function toSeq() {\n return this;\n };\n\n Seq.prototype.toString = function toString() {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function cacheResult() {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n\n return this;\n }; // abstract __iterateUncached(fn, reverse)\n\n\n Seq.prototype.__iterate = function __iterate(fn, reverse) {\n var cache = this._cache;\n\n if (cache) {\n var size = cache.length;\n var i = 0;\n\n while (i !== size) {\n var entry = cache[reverse ? size - ++i : i++];\n\n if (fn(entry[1], entry[0], this) === false) {\n break;\n }\n }\n\n return i;\n }\n\n return this.__iterateUncached(fn, reverse);\n }; // abstract __iteratorUncached(type, reverse)\n\n\n Seq.prototype.__iterator = function __iterator(type, reverse) {\n var cache = this._cache;\n\n if (cache) {\n var size = cache.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n\n var entry = cache[reverse ? size - ++i : i++];\n return iteratorValue(type, entry[0], entry[1]);\n });\n }\n\n return this.__iteratorUncached(type, reverse);\n };\n\n return Seq;\n}(Collection);\n\nvar KeyedSeq =\n/*@__PURE__*/\nfunction (Seq) {\n function KeyedSeq(value) {\n return value === null || value === undefined ? emptySequence().toKeyedSeq() : isCollection(value) ? isKeyed(value) ? value.toSeq() : value.fromEntrySeq() : isRecord(value) ? value.toSeq() : keyedSeqFromValue(value);\n }\n\n if (Seq) KeyedSeq.__proto__ = Seq;\n KeyedSeq.prototype = Object.create(Seq && Seq.prototype);\n KeyedSeq.prototype.constructor = KeyedSeq;\n\n KeyedSeq.prototype.toKeyedSeq = function toKeyedSeq() {\n return this;\n };\n\n return KeyedSeq;\n}(Seq);\n\nvar IndexedSeq =\n/*@__PURE__*/\nfunction (Seq) {\n function IndexedSeq(value) {\n return value === null || value === undefined ? emptySequence() : isCollection(value) ? isKeyed(value) ? value.entrySeq() : value.toIndexedSeq() : isRecord(value) ? value.toSeq().entrySeq() : indexedSeqFromValue(value);\n }\n\n if (Seq) IndexedSeq.__proto__ = Seq;\n IndexedSeq.prototype = Object.create(Seq && Seq.prototype);\n IndexedSeq.prototype.constructor = IndexedSeq;\n\n IndexedSeq.of = function of()\n /*...values*/\n {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function toIndexedSeq() {\n return this;\n };\n\n IndexedSeq.prototype.toString = function toString() {\n return this.__toString('Seq [', ']');\n };\n\n return IndexedSeq;\n}(Seq);\n\nvar SetSeq =\n/*@__PURE__*/\nfunction (Seq) {\n function SetSeq(value) {\n return (isCollection(value) && !isAssociative(value) ? value : IndexedSeq(value)).toSetSeq();\n }\n\n if (Seq) SetSeq.__proto__ = Seq;\n SetSeq.prototype = Object.create(Seq && Seq.prototype);\n SetSeq.prototype.constructor = SetSeq;\n\n SetSeq.of = function of()\n /*...values*/\n {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function toSetSeq() {\n return this;\n };\n\n return SetSeq;\n}(Seq);\n\nSeq.isSeq = isSeq;\nSeq.Keyed = KeyedSeq;\nSeq.Set = SetSeq;\nSeq.Indexed = IndexedSeq;\nSeq.prototype[IS_SEQ_SYMBOL] = true; // #pragma Root Sequences\n\nvar ArraySeq =\n/*@__PURE__*/\nfunction (IndexedSeq) {\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n if (IndexedSeq) ArraySeq.__proto__ = IndexedSeq;\n ArraySeq.prototype = Object.create(IndexedSeq && IndexedSeq.prototype);\n ArraySeq.prototype.constructor = ArraySeq;\n\n ArraySeq.prototype.get = function get(index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function __iterate(fn, reverse) {\n var array = this._array;\n var size = array.length;\n var i = 0;\n\n while (i !== size) {\n var ii = reverse ? size - ++i : i++;\n\n if (fn(array[ii], ii, this) === false) {\n break;\n }\n }\n\n return i;\n };\n\n ArraySeq.prototype.__iterator = function __iterator(type, reverse) {\n var array = this._array;\n var size = array.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n\n var ii = reverse ? size - ++i : i++;\n return iteratorValue(type, ii, array[ii]);\n });\n };\n\n return ArraySeq;\n}(IndexedSeq);\n\nvar ObjectSeq =\n/*@__PURE__*/\nfunction (KeyedSeq) {\n function ObjectSeq(object) {\n var keys = Object.keys(object);\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n if (KeyedSeq) ObjectSeq.__proto__ = KeyedSeq;\n ObjectSeq.prototype = Object.create(KeyedSeq && KeyedSeq.prototype);\n ObjectSeq.prototype.constructor = ObjectSeq;\n\n ObjectSeq.prototype.get = function get(key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function has(key) {\n return hasOwnProperty.call(this._object, key);\n };\n\n ObjectSeq.prototype.__iterate = function __iterate(fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var size = keys.length;\n var i = 0;\n\n while (i !== size) {\n var key = keys[reverse ? size - ++i : i++];\n\n if (fn(object[key], key, this) === false) {\n break;\n }\n }\n\n return i;\n };\n\n ObjectSeq.prototype.__iterator = function __iterator(type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var size = keys.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n\n var key = keys[reverse ? size - ++i : i++];\n return iteratorValue(type, key, object[key]);\n });\n };\n\n return ObjectSeq;\n}(KeyedSeq);\n\nObjectSeq.prototype[IS_ORDERED_SYMBOL] = true;\n\nvar CollectionSeq =\n/*@__PURE__*/\nfunction (IndexedSeq) {\n function CollectionSeq(collection) {\n this._collection = collection;\n this.size = collection.length || collection.size;\n }\n\n if (IndexedSeq) CollectionSeq.__proto__ = IndexedSeq;\n CollectionSeq.prototype = Object.create(IndexedSeq && IndexedSeq.prototype);\n CollectionSeq.prototype.constructor = CollectionSeq;\n\n CollectionSeq.prototype.__iterateUncached = function __iterateUncached(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n\n var collection = this._collection;\n var iterator = getIterator(collection);\n var iterations = 0;\n\n if (isIterator(iterator)) {\n var step;\n\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n\n return iterations;\n };\n\n CollectionSeq.prototype.__iteratorUncached = function __iteratorUncached(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n\n var collection = this._collection;\n var iterator = getIterator(collection);\n\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n\n var iterations = 0;\n return new Iterator(function () {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n return CollectionSeq;\n}(IndexedSeq); // # pragma Helper functions\n\n\nvar EMPTY_SEQ;\n\nfunction emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n}\n\nfunction keyedSeqFromValue(value) {\n var seq = Array.isArray(value) ? new ArraySeq(value) : hasIterator(value) ? new CollectionSeq(value) : undefined;\n\n if (seq) {\n return seq.fromEntrySeq();\n }\n\n if (typeof value === 'object') {\n return new ObjectSeq(value);\n }\n\n throw new TypeError('Expected Array or collection object of [k, v] entries, or keyed object: ' + value);\n}\n\nfunction indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n\n if (seq) {\n return seq;\n }\n\n throw new TypeError('Expected Array or collection object of values: ' + value);\n}\n\nfunction seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n\n if (seq) {\n return seq;\n }\n\n if (typeof value === 'object') {\n return new ObjectSeq(value);\n }\n\n throw new TypeError('Expected Array or collection object of values, or keyed object: ' + value);\n}\n\nfunction maybeIndexedSeqFromValue(value) {\n return isArrayLike(value) ? new ArraySeq(value) : hasIterator(value) ? new CollectionSeq(value) : undefined;\n}\n\nvar IS_MAP_SYMBOL = '@@__IMMUTABLE_MAP__@@';\n\nfunction isMap(maybeMap) {\n return Boolean(maybeMap && maybeMap[IS_MAP_SYMBOL]);\n}\n\nfunction isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n}\n\nfunction isValueObject(maybeValue) {\n return Boolean(maybeValue && typeof maybeValue.equals === 'function' && typeof maybeValue.hashCode === 'function');\n}\n/**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections are Value Objects: they implement `equals()`\n * and `hashCode()`.\n */\n\n\nfunction is(valueA, valueB) {\n if (valueA === valueB || valueA !== valueA && valueB !== valueB) {\n return true;\n }\n\n if (!valueA || !valueB) {\n return false;\n }\n\n if (typeof valueA.valueOf === 'function' && typeof valueB.valueOf === 'function') {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n\n if (valueA === valueB || valueA !== valueA && valueB !== valueB) {\n return true;\n }\n\n if (!valueA || !valueB) {\n return false;\n }\n }\n\n return !!(isValueObject(valueA) && isValueObject(valueB) && valueA.equals(valueB));\n}\n\nvar imul = typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2 ? Math.imul : function imul(a, b) {\n a |= 0; // int\n\n b |= 0; // int\n\n var c = a & 0xffff;\n var d = b & 0xffff; // Shift by 0 fixes the sign on the high part.\n\n return c * d + ((a >>> 16) * d + c * (b >>> 16) << 16 >>> 0) | 0; // int\n}; // v8 has an optimization for storing 31-bit signed numbers.\n// Values which have either 00 or 11 as the high order bits qualify.\n// This function drops the highest order bit in a signed number, maintaining\n// the sign bit.\n\nfunction smi(i32) {\n return i32 >>> 1 & 0x40000000 | i32 & 0xbfffffff;\n}\n\nvar defaultValueOf = Object.prototype.valueOf;\n\nfunction hash(o) {\n switch (typeof o) {\n case 'boolean':\n // The hash values for built-in constants are a 1 value for each 5-byte\n // shift region expect for the first, which encodes the value. This\n // reduces the odds of a hash collision for these common values.\n return o ? 0x42108421 : 0x42108420;\n\n case 'number':\n return hashNumber(o);\n\n case 'string':\n return o.length > STRING_HASH_CACHE_MIN_STRLEN ? cachedHashString(o) : hashString(o);\n\n case 'object':\n case 'function':\n if (o === null) {\n return 0x42108422;\n }\n\n if (typeof o.hashCode === 'function') {\n // Drop any high bits from accidentally long hash codes.\n return smi(o.hashCode(o));\n }\n\n if (o.valueOf !== defaultValueOf && typeof o.valueOf === 'function') {\n o = o.valueOf(o);\n }\n\n return hashJSObj(o);\n\n case 'undefined':\n return 0x42108423;\n\n default:\n if (typeof o.toString === 'function') {\n return hashString(o.toString());\n }\n\n throw new Error('Value type ' + typeof o + ' cannot be hashed.');\n }\n} // Compress arbitrarily large numbers into smi hashes.\n\n\nfunction hashNumber(n) {\n if (n !== n || n === Infinity) {\n return 0;\n }\n\n var hash = n | 0;\n\n if (hash !== n) {\n hash ^= n * 0xffffffff;\n }\n\n while (n > 0xffffffff) {\n n /= 0xffffffff;\n hash ^= n;\n }\n\n return smi(hash);\n}\n\nfunction cachedHashString(string) {\n var hashed = stringHashCache[string];\n\n if (hashed === undefined) {\n hashed = hashString(string);\n\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hashed;\n }\n\n return hashed;\n} // http://jsperf.com/hashing-strings\n\n\nfunction hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hashed = 0;\n\n for (var ii = 0; ii < string.length; ii++) {\n hashed = 31 * hashed + string.charCodeAt(ii) | 0;\n }\n\n return smi(hashed);\n}\n\nfunction hashJSObj(obj) {\n var hashed;\n\n if (usingWeakMap) {\n hashed = weakMap.get(obj);\n\n if (hashed !== undefined) {\n return hashed;\n }\n }\n\n hashed = obj[UID_HASH_KEY];\n\n if (hashed !== undefined) {\n return hashed;\n }\n\n if (!canDefineProperty) {\n hashed = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n\n if (hashed !== undefined) {\n return hashed;\n }\n\n hashed = getIENodeHash(obj);\n\n if (hashed !== undefined) {\n return hashed;\n }\n }\n\n hashed = ++objHashUID;\n\n if (objHashUID & 0x40000000) {\n objHashUID = 0;\n }\n\n if (usingWeakMap) {\n weakMap.set(obj, hashed);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: hashed\n });\n } else if (obj.propertyIsEnumerable !== undefined && obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function () {\n return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments);\n };\n\n obj.propertyIsEnumerable[UID_HASH_KEY] = hashed;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hashed;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hashed;\n} // Get references to ES5 object methods.\n\n\nvar isExtensible = Object.isExtensible; // True if Object.defineProperty works as expected. IE8 fails this test.\n\nvar canDefineProperty = function () {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n}(); // IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n// and avoid memory leaks from the IE cloneNode bug.\n\n\nfunction getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1:\n // Element\n return node.uniqueID;\n\n case 9:\n // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n} // If possible, use a WeakMap.\n\n\nvar usingWeakMap = typeof WeakMap === 'function';\nvar weakMap;\n\nif (usingWeakMap) {\n weakMap = new WeakMap();\n}\n\nvar objHashUID = 0;\nvar UID_HASH_KEY = '__immutablehash__';\n\nif (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n}\n\nvar STRING_HASH_CACHE_MIN_STRLEN = 16;\nvar STRING_HASH_CACHE_MAX_SIZE = 255;\nvar STRING_HASH_CACHE_SIZE = 0;\nvar stringHashCache = {};\n\nvar ToKeyedSequence =\n/*@__PURE__*/\nfunction (KeyedSeq$$1) {\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n if (KeyedSeq$$1) ToKeyedSequence.__proto__ = KeyedSeq$$1;\n ToKeyedSequence.prototype = Object.create(KeyedSeq$$1 && KeyedSeq$$1.prototype);\n ToKeyedSequence.prototype.constructor = ToKeyedSequence;\n\n ToKeyedSequence.prototype.get = function get(key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function has(key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function valueSeq() {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function reverse() {\n var this$1 = this;\n var reversedSequence = reverseFactory(this, true);\n\n if (!this._useKeys) {\n reversedSequence.valueSeq = function () {\n return this$1._iter.toSeq().reverse();\n };\n }\n\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function map(mapper, context) {\n var this$1 = this;\n var mappedSequence = mapFactory(this, mapper, context);\n\n if (!this._useKeys) {\n mappedSequence.valueSeq = function () {\n return this$1._iter.toSeq().map(mapper, context);\n };\n }\n\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function __iterate(fn, reverse) {\n var this$1 = this;\n return this._iter.__iterate(function (v, k) {\n return fn(v, k, this$1);\n }, reverse);\n };\n\n ToKeyedSequence.prototype.__iterator = function __iterator(type, reverse) {\n return this._iter.__iterator(type, reverse);\n };\n\n return ToKeyedSequence;\n}(KeyedSeq);\n\nToKeyedSequence.prototype[IS_ORDERED_SYMBOL] = true;\n\nvar ToIndexedSequence =\n/*@__PURE__*/\nfunction (IndexedSeq$$1) {\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n if (IndexedSeq$$1) ToIndexedSequence.__proto__ = IndexedSeq$$1;\n ToIndexedSequence.prototype = Object.create(IndexedSeq$$1 && IndexedSeq$$1.prototype);\n ToIndexedSequence.prototype.constructor = ToIndexedSequence;\n\n ToIndexedSequence.prototype.includes = function includes(value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function __iterate(fn, reverse) {\n var this$1 = this;\n var i = 0;\n reverse && ensureSize(this);\n return this._iter.__iterate(function (v) {\n return fn(v, reverse ? this$1.size - ++i : i++, this$1);\n }, reverse);\n };\n\n ToIndexedSequence.prototype.__iterator = function __iterator(type, reverse) {\n var this$1 = this;\n\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n\n var i = 0;\n reverse && ensureSize(this);\n return new Iterator(function () {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, reverse ? this$1.size - ++i : i++, step.value, step);\n });\n };\n\n return ToIndexedSequence;\n}(IndexedSeq);\n\nvar ToSetSequence =\n/*@__PURE__*/\nfunction (SetSeq$$1) {\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n if (SetSeq$$1) ToSetSequence.__proto__ = SetSeq$$1;\n ToSetSequence.prototype = Object.create(SetSeq$$1 && SetSeq$$1.prototype);\n ToSetSequence.prototype.constructor = ToSetSequence;\n\n ToSetSequence.prototype.has = function has(key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function __iterate(fn, reverse) {\n var this$1 = this;\n return this._iter.__iterate(function (v) {\n return fn(v, v, this$1);\n }, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function __iterator(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n\n return new Iterator(function () {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, step.value, step.value, step);\n });\n };\n\n return ToSetSequence;\n}(SetSeq);\n\nvar FromEntriesSequence =\n/*@__PURE__*/\nfunction (KeyedSeq$$1) {\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n if (KeyedSeq$$1) FromEntriesSequence.__proto__ = KeyedSeq$$1;\n FromEntriesSequence.prototype = Object.create(KeyedSeq$$1 && KeyedSeq$$1.prototype);\n FromEntriesSequence.prototype.constructor = FromEntriesSequence;\n\n FromEntriesSequence.prototype.entrySeq = function entrySeq() {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function __iterate(fn, reverse) {\n var this$1 = this;\n return this._iter.__iterate(function (entry) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedCollection = isCollection(entry);\n return fn(indexedCollection ? entry.get(1) : entry[1], indexedCollection ? entry.get(0) : entry[0], this$1);\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function __iterator(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n\n return new Iterator(function () {\n while (true) {\n var step = iterator.next();\n\n if (step.done) {\n return step;\n }\n\n var entry = step.value; // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n\n if (entry) {\n validateEntry(entry);\n var indexedCollection = isCollection(entry);\n return iteratorValue(type, indexedCollection ? entry.get(0) : entry[0], indexedCollection ? entry.get(1) : entry[1], step);\n }\n }\n });\n };\n\n return FromEntriesSequence;\n}(KeyedSeq);\n\nToIndexedSequence.prototype.cacheResult = ToKeyedSequence.prototype.cacheResult = ToSetSequence.prototype.cacheResult = FromEntriesSequence.prototype.cacheResult = cacheResultThrough;\n\nfunction flipFactory(collection) {\n var flipSequence = makeSequence(collection);\n flipSequence._iter = collection;\n flipSequence.size = collection.size;\n\n flipSequence.flip = function () {\n return collection;\n };\n\n flipSequence.reverse = function () {\n var reversedSequence = collection.reverse.apply(this); // super.reverse()\n\n reversedSequence.flip = function () {\n return collection.reverse();\n };\n\n return reversedSequence;\n };\n\n flipSequence.has = function (key) {\n return collection.includes(key);\n };\n\n flipSequence.includes = function (key) {\n return collection.has(key);\n };\n\n flipSequence.cacheResult = cacheResultThrough;\n\n flipSequence.__iterateUncached = function (fn, reverse) {\n var this$1 = this;\n return collection.__iterate(function (v, k) {\n return fn(k, v, this$1) !== false;\n }, reverse);\n };\n\n flipSequence.__iteratorUncached = function (type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = collection.__iterator(type, reverse);\n\n return new Iterator(function () {\n var step = iterator.next();\n\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n\n return step;\n });\n }\n\n return collection.__iterator(type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES, reverse);\n };\n\n return flipSequence;\n}\n\nfunction mapFactory(collection, mapper, context) {\n var mappedSequence = makeSequence(collection);\n mappedSequence.size = collection.size;\n\n mappedSequence.has = function (key) {\n return collection.has(key);\n };\n\n mappedSequence.get = function (key, notSetValue) {\n var v = collection.get(key, NOT_SET);\n return v === NOT_SET ? notSetValue : mapper.call(context, v, key, collection);\n };\n\n mappedSequence.__iterateUncached = function (fn, reverse) {\n var this$1 = this;\n return collection.__iterate(function (v, k, c) {\n return fn(mapper.call(context, v, k, c), k, this$1) !== false;\n }, reverse);\n };\n\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n\n return new Iterator(function () {\n var step = iterator.next();\n\n if (step.done) {\n return step;\n }\n\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(type, key, mapper.call(context, entry[1], key, collection), step);\n });\n };\n\n return mappedSequence;\n}\n\nfunction reverseFactory(collection, useKeys) {\n var this$1 = this;\n var reversedSequence = makeSequence(collection);\n reversedSequence._iter = collection;\n reversedSequence.size = collection.size;\n\n reversedSequence.reverse = function () {\n return collection;\n };\n\n if (collection.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(collection);\n\n flipSequence.reverse = function () {\n return collection.flip();\n };\n\n return flipSequence;\n };\n }\n\n reversedSequence.get = function (key, notSetValue) {\n return collection.get(useKeys ? key : -1 - key, notSetValue);\n };\n\n reversedSequence.has = function (key) {\n return collection.has(useKeys ? key : -1 - key);\n };\n\n reversedSequence.includes = function (value) {\n return collection.includes(value);\n };\n\n reversedSequence.cacheResult = cacheResultThrough;\n\n reversedSequence.__iterate = function (fn, reverse) {\n var this$1 = this;\n var i = 0;\n reverse && ensureSize(collection);\n return collection.__iterate(function (v, k) {\n return fn(v, useKeys ? k : reverse ? this$1.size - ++i : i++, this$1);\n }, !reverse);\n };\n\n reversedSequence.__iterator = function (type, reverse) {\n var i = 0;\n reverse && ensureSize(collection);\n\n var iterator = collection.__iterator(ITERATE_ENTRIES, !reverse);\n\n return new Iterator(function () {\n var step = iterator.next();\n\n if (step.done) {\n return step;\n }\n\n var entry = step.value;\n return iteratorValue(type, useKeys ? entry[0] : reverse ? this$1.size - ++i : i++, entry[1], step);\n });\n };\n\n return reversedSequence;\n}\n\nfunction filterFactory(collection, predicate, context, useKeys) {\n var filterSequence = makeSequence(collection);\n\n if (useKeys) {\n filterSequence.has = function (key) {\n var v = collection.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, collection);\n };\n\n filterSequence.get = function (key, notSetValue) {\n var v = collection.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, collection) ? v : notSetValue;\n };\n }\n\n filterSequence.__iterateUncached = function (fn, reverse) {\n var this$1 = this;\n var iterations = 0;\n\n collection.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$1);\n }\n }, reverse);\n\n return iterations;\n };\n\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n\n var iterations = 0;\n return new Iterator(function () {\n while (true) {\n var step = iterator.next();\n\n if (step.done) {\n return step;\n }\n\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n\n if (predicate.call(context, value, key, collection)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n };\n\n return filterSequence;\n}\n\nfunction countByFactory(collection, grouper, context) {\n var groups = Map().asMutable();\n\n collection.__iterate(function (v, k) {\n groups.update(grouper.call(context, v, k, collection), 0, function (a) {\n return a + 1;\n });\n });\n\n return groups.asImmutable();\n}\n\nfunction groupByFactory(collection, grouper, context) {\n var isKeyedIter = isKeyed(collection);\n var groups = (isOrdered(collection) ? OrderedMap() : Map()).asMutable();\n\n collection.__iterate(function (v, k) {\n groups.update(grouper.call(context, v, k, collection), function (a) {\n return a = a || [], a.push(isKeyedIter ? [k, v] : v), a;\n });\n });\n\n var coerce = collectionClass(collection);\n return groups.map(function (arr) {\n return reify(collection, coerce(arr));\n }).asImmutable();\n}\n\nfunction sliceFactory(collection, begin, end, useKeys) {\n var originalSize = collection.size;\n\n if (wholeSlice(begin, end, originalSize)) {\n return collection;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize); // begin or end will be NaN if they were provided as negative numbers and\n // this collection's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(collection.toSeq().cacheResult(), begin, end, useKeys);\n } // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n\n\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(collection); // If collection.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n\n sliceSeq.size = sliceSize === 0 ? sliceSize : collection.size && sliceSize || undefined;\n\n if (!useKeys && isSeq(collection) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize ? collection.get(index + resolvedBegin, notSetValue) : notSetValue;\n };\n }\n\n sliceSeq.__iterateUncached = function (fn, reverse) {\n var this$1 = this;\n\n if (sliceSize === 0) {\n return 0;\n }\n\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n\n collection.__iterate(function (v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$1) !== false && iterations !== sliceSize;\n }\n });\n\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function (type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n } // Don't bother instantiating parent iterator if taking 0.\n\n\n if (sliceSize === 0) {\n return new Iterator(iteratorDone);\n }\n\n var iterator = collection.__iterator(type, reverse);\n\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function () {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n\n var step = iterator.next();\n\n if (useKeys || type === ITERATE_VALUES || step.done) {\n return step;\n }\n\n if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n }\n\n return iteratorValue(type, iterations - 1, step.value[1], step);\n });\n };\n\n return sliceSeq;\n}\n\nfunction takeWhileFactory(collection, predicate, context) {\n var takeSequence = makeSequence(collection);\n\n takeSequence.__iterateUncached = function (fn, reverse) {\n var this$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n\n var iterations = 0;\n\n collection.__iterate(function (v, k, c) {\n return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$1);\n });\n\n return iterations;\n };\n\n takeSequence.__iteratorUncached = function (type, reverse) {\n var this$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n\n var iterating = true;\n return new Iterator(function () {\n if (!iterating) {\n return iteratorDone();\n }\n\n var step = iterator.next();\n\n if (step.done) {\n return step;\n }\n\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n\n if (!predicate.call(context, v, k, this$1)) {\n iterating = false;\n return iteratorDone();\n }\n\n return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n });\n };\n\n return takeSequence;\n}\n\nfunction skipWhileFactory(collection, predicate, context, useKeys) {\n var skipSequence = makeSequence(collection);\n\n skipSequence.__iterateUncached = function (fn, reverse) {\n var this$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n\n var isSkipping = true;\n var iterations = 0;\n\n collection.__iterate(function (v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$1);\n }\n });\n\n return iterations;\n };\n\n skipSequence.__iteratorUncached = function (type, reverse) {\n var this$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n\n var skipping = true;\n var iterations = 0;\n return new Iterator(function () {\n var step;\n var k;\n var v;\n\n do {\n step = iterator.next();\n\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n }\n\n if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n }\n\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$1));\n } while (skipping);\n\n return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n });\n };\n\n return skipSequence;\n}\n\nfunction concatFactory(collection, values) {\n var isKeyedCollection = isKeyed(collection);\n var iters = [collection].concat(values).map(function (v) {\n if (!isCollection(v)) {\n v = isKeyedCollection ? keyedSeqFromValue(v) : indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedCollection) {\n v = KeyedCollection(v);\n }\n\n return v;\n }).filter(function (v) {\n return v.size !== 0;\n });\n\n if (iters.length === 0) {\n return collection;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n\n if (singleton === collection || isKeyedCollection && isKeyed(singleton) || isIndexed(collection) && isIndexed(singleton)) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n\n if (isKeyedCollection) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(collection)) {\n concatSeq = concatSeq.toSetSeq();\n }\n\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(function (sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n\n if (size !== undefined) {\n return sum + size;\n }\n }\n }, 0);\n return concatSeq;\n}\n\nfunction flattenFactory(collection, depth, useKeys) {\n var flatSequence = makeSequence(collection);\n\n flatSequence.__iterateUncached = function (fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n\n var iterations = 0;\n var stopped = false;\n\n function flatDeep(iter, currentDepth) {\n iter.__iterate(function (v, k) {\n if ((!depth || currentDepth < depth) && isCollection(v)) {\n flatDeep(v, currentDepth + 1);\n } else {\n iterations++;\n\n if (fn(v, useKeys ? k : iterations - 1, flatSequence) === false) {\n stopped = true;\n }\n }\n\n return !stopped;\n }, reverse);\n }\n\n flatDeep(collection, 0);\n return iterations;\n };\n\n flatSequence.__iteratorUncached = function (type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n\n var iterator = collection.__iterator(type, reverse);\n\n var stack = [];\n var iterations = 0;\n return new Iterator(function () {\n while (iterator) {\n var step = iterator.next();\n\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n\n var v = step.value;\n\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n\n if ((!depth || stack.length < depth) && isCollection(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n\n return iteratorDone();\n });\n };\n\n return flatSequence;\n}\n\nfunction flatMapFactory(collection, mapper, context) {\n var coerce = collectionClass(collection);\n return collection.toSeq().map(function (v, k) {\n return coerce(mapper.call(context, v, k, collection));\n }).flatten(true);\n}\n\nfunction interposeFactory(collection, separator) {\n var interposedSequence = makeSequence(collection);\n interposedSequence.size = collection.size && collection.size * 2 - 1;\n\n interposedSequence.__iterateUncached = function (fn, reverse) {\n var this$1 = this;\n var iterations = 0;\n\n collection.__iterate(function (v) {\n return (!iterations || fn(separator, iterations++, this$1) !== false) && fn(v, iterations++, this$1) !== false;\n }, reverse);\n\n return iterations;\n };\n\n interposedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_VALUES, reverse);\n\n var iterations = 0;\n var step;\n return new Iterator(function () {\n if (!step || iterations % 2) {\n step = iterator.next();\n\n if (step.done) {\n return step;\n }\n }\n\n return iterations % 2 ? iteratorValue(type, iterations++, separator) : iteratorValue(type, iterations++, step.value, step);\n });\n };\n\n return interposedSequence;\n}\n\nfunction sortFactory(collection, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n\n var isKeyedCollection = isKeyed(collection);\n var index = 0;\n var entries = collection.toSeq().map(function (v, k) {\n return [k, v, index++, mapper ? mapper(v, k, collection) : v];\n }).valueSeq().toArray();\n entries.sort(function (a, b) {\n return comparator(a[3], b[3]) || a[2] - b[2];\n }).forEach(isKeyedCollection ? function (v, i) {\n entries[i].length = 2;\n } : function (v, i) {\n entries[i] = v[1];\n });\n return isKeyedCollection ? KeyedSeq(entries) : isIndexed(collection) ? IndexedSeq(entries) : SetSeq(entries);\n}\n\nfunction maxFactory(collection, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n\n if (mapper) {\n var entry = collection.toSeq().map(function (v, k) {\n return [v, mapper(v, k, collection)];\n }).reduce(function (a, b) {\n return maxCompare(comparator, a[1], b[1]) ? b : a;\n });\n return entry && entry[0];\n }\n\n return collection.reduce(function (a, b) {\n return maxCompare(comparator, a, b) ? b : a;\n });\n}\n\nfunction maxCompare(comparator, a, b) {\n var comp = comparator(b, a); // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n\n return comp === 0 && b !== a && (b === undefined || b === null || b !== b) || comp > 0;\n}\n\nfunction zipWithFactory(keyIter, zipper, iters, zipAll) {\n var zipSequence = makeSequence(keyIter);\n var sizes = new ArraySeq(iters).map(function (i) {\n return i.size;\n });\n zipSequence.size = zipAll ? sizes.max() : sizes.min(); // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n\n zipSequence.__iterate = function (fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n\n var step;\n var iterations = 0;\n\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n\n return iterations;\n };\n\n zipSequence.__iteratorUncached = function (type, reverse) {\n var iterators = iters.map(function (i) {\n return i = Collection(i), getIterator(reverse ? i.reverse() : i);\n });\n var iterations = 0;\n var isDone = false;\n return new Iterator(function () {\n var steps;\n\n if (!isDone) {\n steps = iterators.map(function (i) {\n return i.next();\n });\n isDone = zipAll ? steps.every(function (s) {\n return s.done;\n }) : steps.some(function (s) {\n return s.done;\n });\n }\n\n if (isDone) {\n return iteratorDone();\n }\n\n return iteratorValue(type, iterations++, zipper.apply(null, steps.map(function (s) {\n return s.value;\n })));\n });\n };\n\n return zipSequence;\n} // #pragma Helper Functions\n\n\nfunction reify(iter, seq) {\n return iter === seq ? iter : isSeq(iter) ? seq : iter.constructor(seq);\n}\n\nfunction validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n}\n\nfunction collectionClass(collection) {\n return isKeyed(collection) ? KeyedCollection : isIndexed(collection) ? IndexedCollection : SetCollection;\n}\n\nfunction makeSequence(collection) {\n return Object.create((isKeyed(collection) ? KeyedSeq : isIndexed(collection) ? IndexedSeq : SetSeq).prototype);\n}\n\nfunction cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n\n this.size = this._iter.size;\n return this;\n }\n\n return Seq.prototype.cacheResult.call(this);\n}\n\nfunction defaultComparator(a, b) {\n if (a === undefined && b === undefined) {\n return 0;\n }\n\n if (a === undefined) {\n return 1;\n }\n\n if (b === undefined) {\n return -1;\n }\n\n return a > b ? 1 : a < b ? -1 : 0;\n} // http://jsperf.com/copy-array-inline\n\n\nfunction arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n\n return newArr;\n}\n\nfunction invariant(condition, error) {\n if (!condition) {\n throw new Error(error);\n }\n}\n\nfunction assertNotInfinite(size) {\n invariant(size !== Infinity, 'Cannot perform this action with an infinite size.');\n}\n\nfunction coerceKeyPath(keyPath) {\n if (isArrayLike(keyPath) && typeof keyPath !== 'string') {\n return keyPath;\n }\n\n if (isOrdered(keyPath)) {\n return keyPath.toArray();\n }\n\n throw new TypeError('Invalid keyPath: expected Ordered Collection or Array: ' + keyPath);\n}\n\nfunction isPlainObj(value) {\n return value && (typeof value.constructor !== 'function' || value.constructor.name === 'Object');\n}\n/**\n * Returns true if the value is a potentially-persistent data structure, either\n * provided by Immutable.js or a plain Array or Object.\n */\n\n\nfunction isDataStructure(value) {\n return typeof value === 'object' && (isImmutable(value) || Array.isArray(value) || isPlainObj(value));\n}\n/**\n * Converts a value to a string, adding quotes if a string was provided.\n */\n\n\nfunction quoteString(value) {\n try {\n return typeof value === 'string' ? JSON.stringify(value) : String(value);\n } catch (_ignoreError) {\n return JSON.stringify(value);\n }\n}\n\nfunction has(collection, key) {\n return isImmutable(collection) ? collection.has(key) : isDataStructure(collection) && hasOwnProperty.call(collection, key);\n}\n\nfunction get(collection, key, notSetValue) {\n return isImmutable(collection) ? collection.get(key, notSetValue) : !has(collection, key) ? notSetValue : typeof collection.get === 'function' ? collection.get(key) : collection[key];\n}\n\nfunction shallowCopy(from) {\n if (Array.isArray(from)) {\n return arrCopy(from);\n }\n\n var to = {};\n\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n\n return to;\n}\n\nfunction remove(collection, key) {\n if (!isDataStructure(collection)) {\n throw new TypeError('Cannot update non-data-structure value: ' + collection);\n }\n\n if (isImmutable(collection)) {\n if (!collection.remove) {\n throw new TypeError('Cannot update immutable value without .remove() method: ' + collection);\n }\n\n return collection.remove(key);\n }\n\n if (!hasOwnProperty.call(collection, key)) {\n return collection;\n }\n\n var collectionCopy = shallowCopy(collection);\n\n if (Array.isArray(collectionCopy)) {\n collectionCopy.splice(key, 1);\n } else {\n delete collectionCopy[key];\n }\n\n return collectionCopy;\n}\n\nfunction set(collection, key, value) {\n if (!isDataStructure(collection)) {\n throw new TypeError('Cannot update non-data-structure value: ' + collection);\n }\n\n if (isImmutable(collection)) {\n if (!collection.set) {\n throw new TypeError('Cannot update immutable value without .set() method: ' + collection);\n }\n\n return collection.set(key, value);\n }\n\n if (hasOwnProperty.call(collection, key) && value === collection[key]) {\n return collection;\n }\n\n var collectionCopy = shallowCopy(collection);\n collectionCopy[key] = value;\n return collectionCopy;\n}\n\nfunction updateIn(collection, keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n\n var updatedValue = updateInDeeply(isImmutable(collection), collection, coerceKeyPath(keyPath), 0, notSetValue, updater);\n return updatedValue === NOT_SET ? notSetValue : updatedValue;\n}\n\nfunction updateInDeeply(inImmutable, existing, keyPath, i, notSetValue, updater) {\n var wasNotSet = existing === NOT_SET;\n\n if (i === keyPath.length) {\n var existingValue = wasNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n\n if (!wasNotSet && !isDataStructure(existing)) {\n throw new TypeError('Cannot update within non-data-structure value in path [' + keyPath.slice(0, i).map(quoteString) + ']: ' + existing);\n }\n\n var key = keyPath[i];\n var nextExisting = wasNotSet ? NOT_SET : get(existing, key, NOT_SET);\n var nextUpdated = updateInDeeply(nextExisting === NOT_SET ? inImmutable : isImmutable(nextExisting), nextExisting, keyPath, i + 1, notSetValue, updater);\n return nextUpdated === nextExisting ? existing : nextUpdated === NOT_SET ? remove(existing, key) : set(wasNotSet ? inImmutable ? emptyMap() : {} : existing, key, nextUpdated);\n}\n\nfunction setIn(collection, keyPath, value) {\n return updateIn(collection, keyPath, NOT_SET, function () {\n return value;\n });\n}\n\nfunction setIn$1(keyPath, v) {\n return setIn(this, keyPath, v);\n}\n\nfunction removeIn(collection, keyPath) {\n return updateIn(collection, keyPath, function () {\n return NOT_SET;\n });\n}\n\nfunction deleteIn(keyPath) {\n return removeIn(this, keyPath);\n}\n\nfunction update(collection, key, notSetValue, updater) {\n return updateIn(collection, [key], notSetValue, updater);\n}\n\nfunction update$1(key, notSetValue, updater) {\n return arguments.length === 1 ? key(this) : update(this, key, notSetValue, updater);\n}\n\nfunction updateIn$1(keyPath, notSetValue, updater) {\n return updateIn(this, keyPath, notSetValue, updater);\n}\n\nfunction merge() {\n var iters = [],\n len = arguments.length;\n\n while (len--) {\n iters[len] = arguments[len];\n }\n\n return mergeIntoKeyedWith(this, iters);\n}\n\nfunction mergeWith(merger) {\n var iters = [],\n len = arguments.length - 1;\n\n while (len-- > 0) {\n iters[len] = arguments[len + 1];\n }\n\n if (typeof merger !== 'function') {\n throw new TypeError('Invalid merger function: ' + merger);\n }\n\n return mergeIntoKeyedWith(this, iters, merger);\n}\n\nfunction mergeIntoKeyedWith(collection, collections, merger) {\n var iters = [];\n\n for (var ii = 0; ii < collections.length; ii++) {\n var collection$1 = KeyedCollection(collections[ii]);\n\n if (collection$1.size !== 0) {\n iters.push(collection$1);\n }\n }\n\n if (iters.length === 0) {\n return collection;\n }\n\n if (collection.toSeq().size === 0 && !collection.__ownerID && iters.length === 1) {\n return collection.constructor(iters[0]);\n }\n\n return collection.withMutations(function (collection) {\n var mergeIntoCollection = merger ? function (value, key) {\n update(collection, key, NOT_SET, function (oldVal) {\n return oldVal === NOT_SET ? value : merger(oldVal, value, key);\n });\n } : function (value, key) {\n collection.set(key, value);\n };\n\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoCollection);\n }\n });\n}\n\nfunction merge$1(collection) {\n var sources = [],\n len = arguments.length - 1;\n\n while (len-- > 0) {\n sources[len] = arguments[len + 1];\n }\n\n return mergeWithSources(collection, sources);\n}\n\nfunction mergeWith$1(merger, collection) {\n var sources = [],\n len = arguments.length - 2;\n\n while (len-- > 0) {\n sources[len] = arguments[len + 2];\n }\n\n return mergeWithSources(collection, sources, merger);\n}\n\nfunction mergeDeep(collection) {\n var sources = [],\n len = arguments.length - 1;\n\n while (len-- > 0) {\n sources[len] = arguments[len + 1];\n }\n\n return mergeDeepWithSources(collection, sources);\n}\n\nfunction mergeDeepWith(merger, collection) {\n var sources = [],\n len = arguments.length - 2;\n\n while (len-- > 0) {\n sources[len] = arguments[len + 2];\n }\n\n return mergeDeepWithSources(collection, sources, merger);\n}\n\nfunction mergeDeepWithSources(collection, sources, merger) {\n return mergeWithSources(collection, sources, deepMergerWith(merger));\n}\n\nfunction mergeWithSources(collection, sources, merger) {\n if (!isDataStructure(collection)) {\n throw new TypeError('Cannot merge into non-data-structure value: ' + collection);\n }\n\n if (isImmutable(collection)) {\n return typeof merger === 'function' && collection.mergeWith ? collection.mergeWith.apply(collection, [merger].concat(sources)) : collection.merge ? collection.merge.apply(collection, sources) : collection.concat.apply(collection, sources);\n }\n\n var isArray = Array.isArray(collection);\n var merged = collection;\n var Collection$$1 = isArray ? IndexedCollection : KeyedCollection;\n var mergeItem = isArray ? function (value) {\n // Copy on write\n if (merged === collection) {\n merged = shallowCopy(merged);\n }\n\n merged.push(value);\n } : function (value, key) {\n var hasVal = hasOwnProperty.call(merged, key);\n var nextVal = hasVal && merger ? merger(merged[key], value, key) : value;\n\n if (!hasVal || nextVal !== merged[key]) {\n // Copy on write\n if (merged === collection) {\n merged = shallowCopy(merged);\n }\n\n merged[key] = nextVal;\n }\n };\n\n for (var i = 0; i < sources.length; i++) {\n Collection$$1(sources[i]).forEach(mergeItem);\n }\n\n return merged;\n}\n\nfunction deepMergerWith(merger) {\n function deepMerger(oldValue, newValue, key) {\n return isDataStructure(oldValue) && isDataStructure(newValue) ? mergeWithSources(oldValue, [newValue], deepMerger) : merger ? merger(oldValue, newValue, key) : newValue;\n }\n\n return deepMerger;\n}\n\nfunction mergeDeep$1() {\n var iters = [],\n len = arguments.length;\n\n while (len--) {\n iters[len] = arguments[len];\n }\n\n return mergeDeepWithSources(this, iters);\n}\n\nfunction mergeDeepWith$1(merger) {\n var iters = [],\n len = arguments.length - 1;\n\n while (len-- > 0) {\n iters[len] = arguments[len + 1];\n }\n\n return mergeDeepWithSources(this, iters, merger);\n}\n\nfunction mergeIn(keyPath) {\n var iters = [],\n len = arguments.length - 1;\n\n while (len-- > 0) {\n iters[len] = arguments[len + 1];\n }\n\n return updateIn(this, keyPath, emptyMap(), function (m) {\n return mergeWithSources(m, iters);\n });\n}\n\nfunction mergeDeepIn(keyPath) {\n var iters = [],\n len = arguments.length - 1;\n\n while (len-- > 0) {\n iters[len] = arguments[len + 1];\n }\n\n return updateIn(this, keyPath, emptyMap(), function (m) {\n return mergeDeepWithSources(m, iters);\n });\n}\n\nfunction withMutations(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n}\n\nfunction asMutable() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n}\n\nfunction asImmutable() {\n return this.__ensureOwner();\n}\n\nfunction wasAltered() {\n return this.__altered;\n}\n\nvar Map =\n/*@__PURE__*/\nfunction (KeyedCollection$$1) {\n function Map(value) {\n return value === null || value === undefined ? emptyMap() : isMap(value) && !isOrdered(value) ? value : emptyMap().withMutations(function (map) {\n var iter = KeyedCollection$$1(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v, k) {\n return map.set(k, v);\n });\n });\n }\n\n if (KeyedCollection$$1) Map.__proto__ = KeyedCollection$$1;\n Map.prototype = Object.create(KeyedCollection$$1 && KeyedCollection$$1.prototype);\n Map.prototype.constructor = Map;\n\n Map.of = function of() {\n var keyValues = [],\n len = arguments.length;\n\n while (len--) {\n keyValues[len] = arguments[len];\n }\n\n return emptyMap().withMutations(function (map) {\n for (var i = 0; i < keyValues.length; i += 2) {\n if (i + 1 >= keyValues.length) {\n throw new Error('Missing value for key: ' + keyValues[i]);\n }\n\n map.set(keyValues[i], keyValues[i + 1]);\n }\n });\n };\n\n Map.prototype.toString = function toString() {\n return this.__toString('Map {', '}');\n }; // @pragma Access\n\n\n Map.prototype.get = function get(k, notSetValue) {\n return this._root ? this._root.get(0, undefined, k, notSetValue) : notSetValue;\n }; // @pragma Modification\n\n\n Map.prototype.set = function set(k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.remove = function remove(k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteAll = function deleteAll(keys) {\n var collection = Collection(keys);\n\n if (collection.size === 0) {\n return this;\n }\n\n return this.withMutations(function (map) {\n collection.forEach(function (key) {\n return map.remove(key);\n });\n });\n };\n\n Map.prototype.clear = function clear() {\n if (this.size === 0) {\n return this;\n }\n\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n\n return emptyMap();\n }; // @pragma Composition\n\n\n Map.prototype.sort = function sort(comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function sortBy(mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n Map.prototype.map = function map(mapper, context) {\n return this.withMutations(function (map) {\n map.forEach(function (value, key) {\n map.set(key, mapper.call(context, value, key, map));\n });\n });\n }; // @pragma Mutability\n\n\n Map.prototype.__iterator = function __iterator(type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function __iterate(fn, reverse) {\n var this$1 = this;\n var iterations = 0;\n this._root && this._root.iterate(function (entry) {\n iterations++;\n return fn(entry[1], entry[0], this$1);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function __ensureOwner(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n\n if (!ownerID) {\n if (this.size === 0) {\n return emptyMap();\n }\n\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n return Map;\n}(KeyedCollection);\n\nMap.isMap = isMap;\nvar MapPrototype = Map.prototype;\nMapPrototype[IS_MAP_SYMBOL] = true;\nMapPrototype[DELETE] = MapPrototype.remove;\nMapPrototype.removeAll = MapPrototype.deleteAll;\nMapPrototype.setIn = setIn$1;\nMapPrototype.removeIn = MapPrototype.deleteIn = deleteIn;\nMapPrototype.update = update$1;\nMapPrototype.updateIn = updateIn$1;\nMapPrototype.merge = MapPrototype.concat = merge;\nMapPrototype.mergeWith = mergeWith;\nMapPrototype.mergeDeep = mergeDeep$1;\nMapPrototype.mergeDeepWith = mergeDeepWith$1;\nMapPrototype.mergeIn = mergeIn;\nMapPrototype.mergeDeepIn = mergeDeepIn;\nMapPrototype.withMutations = withMutations;\nMapPrototype.wasAltered = wasAltered;\nMapPrototype.asImmutable = asImmutable;\nMapPrototype['@@transducer/init'] = MapPrototype.asMutable = asMutable;\n\nMapPrototype['@@transducer/step'] = function (result, arr) {\n return result.set(arr[0], arr[1]);\n};\n\nMapPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n}; // #pragma Trie Nodes\n\n\nvar ArrayMapNode = function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n};\n\nArrayMapNode.prototype.get = function get(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n\n return notSetValue;\n};\n\nArrayMapNode.prototype.update = function update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var entries = this.entries;\n var idx = 0;\n var len = entries.length;\n\n for (; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : newEntries[idx] = newEntries.pop();\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n};\n\nvar BitmapIndexedNode = function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n};\n\nBitmapIndexedNode.prototype.get = function get(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var bit = 1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK);\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0 ? notSetValue : this.nodes[popCount(bitmap & bit - 1)].get(shift + SHIFT, keyHash, key, notSetValue);\n};\n\nBitmapIndexedNode.prototype.update = function update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & bit - 1);\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (exists && !newNode && nodes.length === 2 && isLeafNode(nodes[idx ^ 1])) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? newNode ? bitmap : bitmap ^ bit : bitmap | bit;\n var newNodes = exists ? newNode ? setAt(nodes, idx, newNode, isEditable) : spliceOut(nodes, idx, isEditable) : spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n};\n\nvar HashArrayMapNode = function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n};\n\nHashArrayMapNode.prototype.get = function get(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node ? node.get(shift + SHIFT, keyHash, key, notSetValue) : notSetValue;\n};\n\nHashArrayMapNode.prototype.update = function update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setAt(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n};\n\nvar HashCollisionNode = function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n};\n\nHashCollisionNode.prototype.get = function get(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n\n return notSetValue;\n};\n\nHashCollisionNode.prototype.update = function update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n var len = entries.length;\n\n for (; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : newEntries[idx] = newEntries.pop();\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n};\n\nvar ValueNode = function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n};\n\nValueNode.prototype.get = function get(shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n};\n\nValueNode.prototype.update = function update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n}; // #pragma Iterators\n\n\nArrayMapNode.prototype.iterate = HashCollisionNode.prototype.iterate = function (fn, reverse) {\n var entries = this.entries;\n\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n};\n\nBitmapIndexedNode.prototype.iterate = HashArrayMapNode.prototype.iterate = function (fn, reverse) {\n var nodes = this.nodes;\n\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n}; // eslint-disable-next-line no-unused-vars\n\n\nValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n};\n\nvar MapIterator =\n/*@__PURE__*/\nfunction (Iterator$$1) {\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n if (Iterator$$1) MapIterator.__proto__ = Iterator$$1;\n MapIterator.prototype = Object.create(Iterator$$1 && Iterator$$1.prototype);\n MapIterator.prototype.constructor = MapIterator;\n\n MapIterator.prototype.next = function next() {\n var type = this._type;\n var stack = this._stack;\n\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex = void 0;\n\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n\n if (index <= maxIndex) {\n return mapIteratorValue(type, node.entries[this._reverse ? maxIndex - index : index]);\n }\n } else {\n maxIndex = node.nodes.length - 1;\n\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n\n continue;\n }\n }\n\n stack = this._stack = this._stack.__prev;\n }\n\n return iteratorDone();\n };\n\n return MapIterator;\n}(Iterator);\n\nfunction mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n}\n\nfunction mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev\n };\n}\n\nfunction makeMap(size, root, ownerID, hash$$1) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash$$1;\n map.__altered = false;\n return map;\n}\n\nvar EMPTY_MAP;\n\nfunction emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n}\n\nfunction updateMap(map, k, v) {\n var newRoot;\n var newSize;\n\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef();\n var didAlter = MakeRef();\n newRoot = updateNode(map._root, map.__ownerID, 0, undefined, k, v, didChangeSize, didAlter);\n\n if (!didAlter.value) {\n return map;\n }\n\n newSize = map.size + (didChangeSize.value ? v === NOT_SET ? -1 : 1 : 0);\n }\n\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n}\n\nfunction updateNode(node, ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n\n return node.update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter);\n}\n\nfunction isLeafNode(node) {\n return node.constructor === ValueNode || node.constructor === HashCollisionNode;\n}\n\nfunction mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var newNode;\n var nodes = idx1 === idx2 ? [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)] : (newNode = new ValueNode(ownerID, keyHash, entry), idx1 < idx2 ? [node, newNode] : [newNode, node]);\n return new BitmapIndexedNode(ownerID, 1 << idx1 | 1 << idx2, nodes);\n}\n\nfunction createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n\n return node;\n}\n\nfunction packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n}\n\nfunction expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n}\n\nfunction popCount(x) {\n x -= x >> 1 & 0x55555555;\n x = (x & 0x33333333) + (x >> 2 & 0x33333333);\n x = x + (x >> 4) & 0x0f0f0f0f;\n x += x >> 8;\n x += x >> 16;\n return x & 0x7f;\n}\n\nfunction setAt(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n}\n\nfunction spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n\n var newArray = new Array(newLen);\n var after = 0;\n\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n\n return newArray;\n}\n\nfunction spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n\n var newArray = new Array(newLen);\n var after = 0;\n\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n\n newArray[ii] = array[ii + after];\n }\n\n return newArray;\n}\n\nvar MAX_ARRAY_MAP_SIZE = SIZE / 4;\nvar MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\nvar MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\nvar IS_LIST_SYMBOL = '@@__IMMUTABLE_LIST__@@';\n\nfunction isList(maybeList) {\n return Boolean(maybeList && maybeList[IS_LIST_SYMBOL]);\n}\n\nvar List =\n/*@__PURE__*/\nfunction (IndexedCollection$$1) {\n function List(value) {\n var empty = emptyList();\n\n if (value === null || value === undefined) {\n return empty;\n }\n\n if (isList(value)) {\n return value;\n }\n\n var iter = IndexedCollection$$1(value);\n var size = iter.size;\n\n if (size === 0) {\n return empty;\n }\n\n assertNotInfinite(size);\n\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n\n return empty.withMutations(function (list) {\n list.setSize(size);\n iter.forEach(function (v, i) {\n return list.set(i, v);\n });\n });\n }\n\n if (IndexedCollection$$1) List.__proto__ = IndexedCollection$$1;\n List.prototype = Object.create(IndexedCollection$$1 && IndexedCollection$$1.prototype);\n List.prototype.constructor = List;\n\n List.of = function of()\n /*...values*/\n {\n return this(arguments);\n };\n\n List.prototype.toString = function toString() {\n return this.__toString('List [', ']');\n }; // @pragma Access\n\n\n List.prototype.get = function get(index, notSetValue) {\n index = wrapIndex(this, index);\n\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n\n return notSetValue;\n }; // @pragma Modification\n\n\n List.prototype.set = function set(index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function remove(index) {\n return !this.has(index) ? this : index === 0 ? this.shift() : index === this.size - 1 ? this.pop() : this.splice(index, 1);\n };\n\n List.prototype.insert = function insert(index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function clear() {\n if (this.size === 0) {\n return this;\n }\n\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n\n return emptyList();\n };\n\n List.prototype.push = function push()\n /*...values*/\n {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function (list) {\n setListBounds(list, 0, oldSize + values.length);\n\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function pop() {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function unshift()\n /*...values*/\n {\n var values = arguments;\n return this.withMutations(function (list) {\n setListBounds(list, -values.length);\n\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function shift() {\n return setListBounds(this, 1);\n }; // @pragma Composition\n\n\n List.prototype.concat = function concat()\n /*...collections*/\n {\n var arguments$1 = arguments;\n var seqs = [];\n\n for (var i = 0; i < arguments.length; i++) {\n var argument = arguments$1[i];\n var seq = IndexedCollection$$1(typeof argument !== 'string' && hasIterator(argument) ? argument : [argument]);\n\n if (seq.size !== 0) {\n seqs.push(seq);\n }\n }\n\n if (seqs.length === 0) {\n return this;\n }\n\n if (this.size === 0 && !this.__ownerID && seqs.length === 1) {\n return this.constructor(seqs[0]);\n }\n\n return this.withMutations(function (list) {\n seqs.forEach(function (seq) {\n return seq.forEach(function (value) {\n return list.push(value);\n });\n });\n });\n };\n\n List.prototype.setSize = function setSize(size) {\n return setListBounds(this, 0, size);\n };\n\n List.prototype.map = function map(mapper, context) {\n var this$1 = this;\n return this.withMutations(function (list) {\n for (var i = 0; i < this$1.size; i++) {\n list.set(i, mapper.call(context, list.get(i), i, list));\n }\n });\n }; // @pragma Iteration\n\n\n List.prototype.slice = function slice(begin, end) {\n var size = this.size;\n\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n\n return setListBounds(this, resolveBegin(begin, size), resolveEnd(end, size));\n };\n\n List.prototype.__iterator = function __iterator(type, reverse) {\n var index = reverse ? this.size : 0;\n var values = iterateList(this, reverse);\n return new Iterator(function () {\n var value = values();\n return value === DONE ? iteratorDone() : iteratorValue(type, reverse ? --index : index++, value);\n });\n };\n\n List.prototype.__iterate = function __iterate(fn, reverse) {\n var index = reverse ? this.size : 0;\n var values = iterateList(this, reverse);\n var value;\n\n while ((value = values()) !== DONE) {\n if (fn(value, reverse ? --index : index++, this) === false) {\n break;\n }\n }\n\n return index;\n };\n\n List.prototype.__ensureOwner = function __ensureOwner(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n\n if (!ownerID) {\n if (this.size === 0) {\n return emptyList();\n }\n\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n\n return makeList(this._origin, this._capacity, this._level, this._root, this._tail, ownerID, this.__hash);\n };\n\n return List;\n}(IndexedCollection);\n\nList.isList = isList;\nvar ListPrototype = List.prototype;\nListPrototype[IS_LIST_SYMBOL] = true;\nListPrototype[DELETE] = ListPrototype.remove;\nListPrototype.merge = ListPrototype.concat;\nListPrototype.setIn = setIn$1;\nListPrototype.deleteIn = ListPrototype.removeIn = deleteIn;\nListPrototype.update = update$1;\nListPrototype.updateIn = updateIn$1;\nListPrototype.mergeIn = mergeIn;\nListPrototype.mergeDeepIn = mergeDeepIn;\nListPrototype.withMutations = withMutations;\nListPrototype.wasAltered = wasAltered;\nListPrototype.asImmutable = asImmutable;\nListPrototype['@@transducer/init'] = ListPrototype.asMutable = asMutable;\n\nListPrototype['@@transducer/step'] = function (result, arr) {\n return result.push(arr);\n};\n\nListPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\nvar VNode = function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n}; // TODO: seems like these methods are very similar\n\n\nVNode.prototype.removeBefore = function removeBefore(ownerID, level, index) {\n if (index === level ? 1 << level : this.array.length === 0) {\n return this;\n }\n\n var originIndex = index >>> level & MASK;\n\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n\n var removingFirst = originIndex === 0;\n var newChild;\n\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild = oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n\n if (removingFirst && !newChild) {\n return this;\n }\n\n var editable = editableVNode(this, ownerID);\n\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n\n return editable;\n};\n\nVNode.prototype.removeAfter = function removeAfter(ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n\n var sizeIndex = index - 1 >>> level & MASK;\n\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild = oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n\n return editable;\n};\n\nvar DONE = {};\n\nfunction iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0 ? iterateLeaf(node, offset) : iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n\n if (to > SIZE) {\n to = SIZE;\n }\n\n return function () {\n if (from === to) {\n return DONE;\n }\n\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : left - offset >> level;\n var to = (right - offset >> level) + 1;\n\n if (to > SIZE) {\n to = SIZE;\n }\n\n return function () {\n while (true) {\n if (values) {\n var value = values();\n\n if (value !== DONE) {\n return value;\n }\n\n values = null;\n }\n\n if (from === to) {\n return DONE;\n }\n\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(array && array[idx], level - SHIFT, offset + (idx << level));\n }\n };\n }\n}\n\nfunction makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n}\n\nvar EMPTY_LIST;\n\nfunction emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n}\n\nfunction updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function (list) {\n index < 0 ? setListBounds(list, index).set(0, value) : setListBounds(list, 0, index + 1).set(index, value);\n });\n }\n\n index += list._origin;\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef();\n\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(newRoot, list.__ownerID, list._level, index, value, didAlter);\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n}\n\nfunction updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = index >>> level & MASK;\n var nodeHas = node && idx < node.array.length;\n\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(lowerNode, ownerID, level - SHIFT, index, value, didAlter);\n\n if (newLowerNode === lowerNode) {\n return node;\n }\n\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n if (didAlter) {\n SetRef(didAlter);\n }\n\n newNode = editableVNode(node, ownerID);\n\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n\n return newNode;\n}\n\nfunction editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n\n return new VNode(node ? node.array.slice() : [], ownerID);\n}\n\nfunction listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n\n if (rawIndex < 1 << list._level + SHIFT) {\n var node = list._root;\n var level = list._level;\n\n while (node && level > 0) {\n node = node.array[rawIndex >>> level & MASK];\n level -= SHIFT;\n }\n\n return node;\n }\n}\n\nfunction setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin |= 0;\n }\n\n if (end !== undefined) {\n end |= 0;\n }\n\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity = end === undefined ? oldCapacity : end < 0 ? oldCapacity + end : oldOrigin + end;\n\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n } // If it's going to end after it starts, it's empty.\n\n\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root; // New origin might need creating a higher root.\n\n var offsetShift = 0;\n\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [undefined, newRoot] : [], owner);\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity); // New size might need creating a higher root.\n\n while (newTailOffset >= 1 << newLevel + SHIFT) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [newRoot] : [], owner);\n newLevel += SHIFT;\n } // Locate or create the new tail.\n\n\n var oldTail = list._tail;\n var newTail = newTailOffset < oldTailOffset ? listNodeFor(list, newCapacity - 1) : newTailOffset > oldTailOffset ? new VNode([], owner) : oldTail; // Merge Tail into tree.\n\n if (oldTail && newTailOffset > oldTailOffset && newOrigin < oldCapacity && oldTail.array.length) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = oldTailOffset >>> level & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n\n node.array[oldTailOffset >>> SHIFT & MASK] = oldTail;\n } // If the size has been reduced, there's a chance the tail needs to be trimmed.\n\n\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n } // If the new origin is within the tail, then we do not need a root.\n\n\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin); // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0; // Identify the new top root node of the subtree of the old root.\n\n while (newRoot) {\n var beginIndex = newOrigin >>> newLevel & MASK;\n\n if (beginIndex !== newTailOffset >>> newLevel & MASK) {\n break;\n }\n\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n } // Trim the new sides of the new root.\n\n\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(owner, newLevel, newTailOffset - offsetShift);\n }\n\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n}\n\nfunction getTailOffset(size) {\n return size < SIZE ? 0 : size - 1 >>> SHIFT << SHIFT;\n}\n\nvar OrderedMap =\n/*@__PURE__*/\nfunction (Map$$1) {\n function OrderedMap(value) {\n return value === null || value === undefined ? emptyOrderedMap() : isOrderedMap(value) ? value : emptyOrderedMap().withMutations(function (map) {\n var iter = KeyedCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v, k) {\n return map.set(k, v);\n });\n });\n }\n\n if (Map$$1) OrderedMap.__proto__ = Map$$1;\n OrderedMap.prototype = Object.create(Map$$1 && Map$$1.prototype);\n OrderedMap.prototype.constructor = OrderedMap;\n\n OrderedMap.of = function of()\n /*...values*/\n {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function toString() {\n return this.__toString('OrderedMap {', '}');\n }; // @pragma Access\n\n\n OrderedMap.prototype.get = function get(k, notSetValue) {\n var index = this._map.get(k);\n\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n }; // @pragma Modification\n\n\n OrderedMap.prototype.clear = function clear() {\n if (this.size === 0) {\n return this;\n }\n\n if (this.__ownerID) {\n this.size = 0;\n\n this._map.clear();\n\n this._list.clear();\n\n return this;\n }\n\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function set(k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function remove(k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.wasAltered = function wasAltered() {\n return this._map.wasAltered() || this._list.wasAltered();\n };\n\n OrderedMap.prototype.__iterate = function __iterate(fn, reverse) {\n var this$1 = this;\n return this._list.__iterate(function (entry) {\n return entry && fn(entry[1], entry[0], this$1);\n }, reverse);\n };\n\n OrderedMap.prototype.__iterator = function __iterator(type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function __ensureOwner(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n\n var newMap = this._map.__ensureOwner(ownerID);\n\n var newList = this._list.__ensureOwner(ownerID);\n\n if (!ownerID) {\n if (this.size === 0) {\n return emptyOrderedMap();\n }\n\n this.__ownerID = ownerID;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n return OrderedMap;\n}(Map);\n\nOrderedMap.isOrderedMap = isOrderedMap;\nOrderedMap.prototype[IS_ORDERED_SYMBOL] = true;\nOrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\nfunction makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n return omap;\n}\n\nvar EMPTY_ORDERED_MAP;\n\nfunction emptyOrderedMap() {\n return EMPTY_ORDERED_MAP || (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()));\n}\n\nfunction updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n\n if (v === NOT_SET) {\n // removed\n if (!has) {\n return omap;\n }\n\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function (entry, idx) {\n return entry !== undefined && i !== idx;\n });\n newMap = newList.toKeyedSeq().map(function (entry) {\n return entry[0];\n }).flip().toMap();\n\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n return omap;\n }\n\n return makeOrderedMap(newMap, newList);\n}\n\nvar IS_STACK_SYMBOL = '@@__IMMUTABLE_STACK__@@';\n\nfunction isStack(maybeStack) {\n return Boolean(maybeStack && maybeStack[IS_STACK_SYMBOL]);\n}\n\nvar Stack =\n/*@__PURE__*/\nfunction (IndexedCollection$$1) {\n function Stack(value) {\n return value === null || value === undefined ? emptyStack() : isStack(value) ? value : emptyStack().pushAll(value);\n }\n\n if (IndexedCollection$$1) Stack.__proto__ = IndexedCollection$$1;\n Stack.prototype = Object.create(IndexedCollection$$1 && IndexedCollection$$1.prototype);\n Stack.prototype.constructor = Stack;\n\n Stack.of = function of()\n /*...values*/\n {\n return this(arguments);\n };\n\n Stack.prototype.toString = function toString() {\n return this.__toString('Stack [', ']');\n }; // @pragma Access\n\n\n Stack.prototype.get = function get(index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n\n while (head && index--) {\n head = head.next;\n }\n\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function peek() {\n return this._head && this._head.value;\n }; // @pragma Modification\n\n\n Stack.prototype.push = function push()\n /*...values*/\n {\n var arguments$1 = arguments;\n\n if (arguments.length === 0) {\n return this;\n }\n\n var newSize = this.size + arguments.length;\n var head = this._head;\n\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments$1[ii],\n next: head\n };\n }\n\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function pushAll(iter) {\n iter = IndexedCollection$$1(iter);\n\n if (iter.size === 0) {\n return this;\n }\n\n if (this.size === 0 && isStack(iter)) {\n return iter;\n }\n\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n\n iter.__iterate(function (value) {\n newSize++;\n head = {\n value: value,\n next: head\n };\n },\n /* reverse */\n true);\n\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function pop() {\n return this.slice(1);\n };\n\n Stack.prototype.clear = function clear() {\n if (this.size === 0) {\n return this;\n }\n\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n\n return emptyStack();\n };\n\n Stack.prototype.slice = function slice(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection$$1.prototype.slice.call(this, begin, end);\n }\n\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n\n while (resolvedBegin--) {\n head = head.next;\n }\n\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n\n return makeStack(newSize, head);\n }; // @pragma Mutability\n\n\n Stack.prototype.__ensureOwner = function __ensureOwner(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n\n if (!ownerID) {\n if (this.size === 0) {\n return emptyStack();\n }\n\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n\n return makeStack(this.size, this._head, ownerID, this.__hash);\n }; // @pragma Iteration\n\n\n Stack.prototype.__iterate = function __iterate(fn, reverse) {\n var this$1 = this;\n\n if (reverse) {\n return new ArraySeq(this.toArray()).__iterate(function (v, k) {\n return fn(v, k, this$1);\n }, reverse);\n }\n\n var iterations = 0;\n var node = this._head;\n\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n\n node = node.next;\n }\n\n return iterations;\n };\n\n Stack.prototype.__iterator = function __iterator(type, reverse) {\n if (reverse) {\n return new ArraySeq(this.toArray()).__iterator(type, reverse);\n }\n\n var iterations = 0;\n var node = this._head;\n return new Iterator(function () {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n\n return iteratorDone();\n });\n };\n\n return Stack;\n}(IndexedCollection);\n\nStack.isStack = isStack;\nvar StackPrototype = Stack.prototype;\nStackPrototype[IS_STACK_SYMBOL] = true;\nStackPrototype.shift = StackPrototype.pop;\nStackPrototype.unshift = StackPrototype.push;\nStackPrototype.unshiftAll = StackPrototype.pushAll;\nStackPrototype.withMutations = withMutations;\nStackPrototype.wasAltered = wasAltered;\nStackPrototype.asImmutable = asImmutable;\nStackPrototype['@@transducer/init'] = StackPrototype.asMutable = asMutable;\n\nStackPrototype['@@transducer/step'] = function (result, arr) {\n return result.unshift(arr);\n};\n\nStackPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\nfunction makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n}\n\nvar EMPTY_STACK;\n\nfunction emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n}\n\nvar IS_SET_SYMBOL = '@@__IMMUTABLE_SET__@@';\n\nfunction isSet(maybeSet) {\n return Boolean(maybeSet && maybeSet[IS_SET_SYMBOL]);\n}\n\nfunction isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n}\n\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (!isCollection(b) || a.size !== undefined && b.size !== undefined && a.size !== b.size || a.__hash !== undefined && b.__hash !== undefined && a.__hash !== b.__hash || isKeyed(a) !== isKeyed(b) || isIndexed(a) !== isIndexed(b) || isOrdered(a) !== isOrdered(b)) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return b.every(function (v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done;\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n\n var bSize = b.__iterate(function (v, k) {\n if (notAssociative ? !a.has(v) : flipped ? !is(v, a.get(k, NOT_SET)) : !is(a.get(k, NOT_SET), v)) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n}\n/**\n * Contributes additional methods to a constructor\n */\n\n\nfunction mixin(ctor, methods) {\n var keyCopier = function keyCopier(key) {\n ctor.prototype[key] = methods[key];\n };\n\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols && Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n}\n\nfunction toJS(value) {\n if (!value || typeof value !== 'object') {\n return value;\n }\n\n if (!isCollection(value)) {\n if (!isDataStructure(value)) {\n return value;\n }\n\n value = Seq(value);\n }\n\n if (isKeyed(value)) {\n var result$1 = {};\n\n value.__iterate(function (v, k) {\n result$1[k] = toJS(v);\n });\n\n return result$1;\n }\n\n var result = [];\n\n value.__iterate(function (v) {\n result.push(toJS(v));\n });\n\n return result;\n}\n\nvar Set =\n/*@__PURE__*/\nfunction (SetCollection$$1) {\n function Set(value) {\n return value === null || value === undefined ? emptySet() : isSet(value) && !isOrdered(value) ? value : emptySet().withMutations(function (set) {\n var iter = SetCollection$$1(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v) {\n return set.add(v);\n });\n });\n }\n\n if (SetCollection$$1) Set.__proto__ = SetCollection$$1;\n Set.prototype = Object.create(SetCollection$$1 && SetCollection$$1.prototype);\n Set.prototype.constructor = Set;\n\n Set.of = function of()\n /*...values*/\n {\n return this(arguments);\n };\n\n Set.fromKeys = function fromKeys(value) {\n return this(KeyedCollection(value).keySeq());\n };\n\n Set.intersect = function intersect(sets) {\n sets = Collection(sets).toArray();\n return sets.length ? SetPrototype.intersect.apply(Set(sets.pop()), sets) : emptySet();\n };\n\n Set.union = function union(sets) {\n sets = Collection(sets).toArray();\n return sets.length ? SetPrototype.union.apply(Set(sets.pop()), sets) : emptySet();\n };\n\n Set.prototype.toString = function toString() {\n return this.__toString('Set {', '}');\n }; // @pragma Access\n\n\n Set.prototype.has = function has(value) {\n return this._map.has(value);\n }; // @pragma Modification\n\n\n Set.prototype.add = function add(value) {\n return updateSet(this, this._map.set(value, value));\n };\n\n Set.prototype.remove = function remove(value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function clear() {\n return updateSet(this, this._map.clear());\n }; // @pragma Composition\n\n\n Set.prototype.map = function map(mapper, context) {\n var this$1 = this;\n var removes = [];\n var adds = [];\n this.forEach(function (value) {\n var mapped = mapper.call(context, value, value, this$1);\n\n if (mapped !== value) {\n removes.push(value);\n adds.push(mapped);\n }\n });\n return this.withMutations(function (set) {\n removes.forEach(function (value) {\n return set.remove(value);\n });\n adds.forEach(function (value) {\n return set.add(value);\n });\n });\n };\n\n Set.prototype.union = function union() {\n var iters = [],\n len = arguments.length;\n\n while (len--) {\n iters[len] = arguments[len];\n }\n\n iters = iters.filter(function (x) {\n return x.size !== 0;\n });\n\n if (iters.length === 0) {\n return this;\n }\n\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n\n return this.withMutations(function (set) {\n for (var ii = 0; ii < iters.length; ii++) {\n SetCollection$$1(iters[ii]).forEach(function (value) {\n return set.add(value);\n });\n }\n });\n };\n\n Set.prototype.intersect = function intersect() {\n var iters = [],\n len = arguments.length;\n\n while (len--) {\n iters[len] = arguments[len];\n }\n\n if (iters.length === 0) {\n return this;\n }\n\n iters = iters.map(function (iter) {\n return SetCollection$$1(iter);\n });\n var toRemove = [];\n this.forEach(function (value) {\n if (!iters.every(function (iter) {\n return iter.includes(value);\n })) {\n toRemove.push(value);\n }\n });\n return this.withMutations(function (set) {\n toRemove.forEach(function (value) {\n set.remove(value);\n });\n });\n };\n\n Set.prototype.subtract = function subtract() {\n var iters = [],\n len = arguments.length;\n\n while (len--) {\n iters[len] = arguments[len];\n }\n\n if (iters.length === 0) {\n return this;\n }\n\n iters = iters.map(function (iter) {\n return SetCollection$$1(iter);\n });\n var toRemove = [];\n this.forEach(function (value) {\n if (iters.some(function (iter) {\n return iter.includes(value);\n })) {\n toRemove.push(value);\n }\n });\n return this.withMutations(function (set) {\n toRemove.forEach(function (value) {\n set.remove(value);\n });\n });\n };\n\n Set.prototype.sort = function sort(comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function sortBy(mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function wasAltered() {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function __iterate(fn, reverse) {\n var this$1 = this;\n return this._map.__iterate(function (k) {\n return fn(k, k, this$1);\n }, reverse);\n };\n\n Set.prototype.__iterator = function __iterator(type, reverse) {\n return this._map.__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function __ensureOwner(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n\n var newMap = this._map.__ensureOwner(ownerID);\n\n if (!ownerID) {\n if (this.size === 0) {\n return this.__empty();\n }\n\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n\n return this.__make(newMap, ownerID);\n };\n\n return Set;\n}(SetCollection);\n\nSet.isSet = isSet;\nvar SetPrototype = Set.prototype;\nSetPrototype[IS_SET_SYMBOL] = true;\nSetPrototype[DELETE] = SetPrototype.remove;\nSetPrototype.merge = SetPrototype.concat = SetPrototype.union;\nSetPrototype.withMutations = withMutations;\nSetPrototype.asImmutable = asImmutable;\nSetPrototype['@@transducer/init'] = SetPrototype.asMutable = asMutable;\n\nSetPrototype['@@transducer/step'] = function (result, arr) {\n return result.add(arr);\n};\n\nSetPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\nSetPrototype.__empty = emptySet;\nSetPrototype.__make = makeSet;\n\nfunction updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n\n return newMap === set._map ? set : newMap.size === 0 ? set.__empty() : set.__make(newMap);\n}\n\nfunction makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n}\n\nvar EMPTY_SET;\n\nfunction emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n}\n/**\n * Returns a lazy seq of nums from start (inclusive) to end\n * (exclusive), by step, where start defaults to 0, step to 1, and end to\n * infinity. When start is equal to end, returns empty list.\n */\n\n\nvar Range =\n/*@__PURE__*/\nfunction (IndexedSeq$$1) {\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n\n if (end === undefined) {\n end = Infinity;\n }\n\n step = step === undefined ? 1 : Math.abs(step);\n\n if (end < start) {\n step = -step;\n }\n\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n\n EMPTY_RANGE = this;\n }\n }\n\n if (IndexedSeq$$1) Range.__proto__ = IndexedSeq$$1;\n Range.prototype = Object.create(IndexedSeq$$1 && IndexedSeq$$1.prototype);\n Range.prototype.constructor = Range;\n\n Range.prototype.toString = function toString() {\n if (this.size === 0) {\n return 'Range []';\n }\n\n return 'Range [ ' + this._start + '...' + this._end + (this._step !== 1 ? ' by ' + this._step : '') + ' ]';\n };\n\n Range.prototype.get = function get(index, notSetValue) {\n return this.has(index) ? this._start + wrapIndex(this, index) * this._step : notSetValue;\n };\n\n Range.prototype.includes = function includes(searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return possibleIndex >= 0 && possibleIndex < this.size && possibleIndex === Math.floor(possibleIndex);\n };\n\n Range.prototype.slice = function slice(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n\n if (end <= begin) {\n return new Range(0, 0);\n }\n\n return new Range(this.get(begin, this._end), this.get(end, this._end), this._step);\n };\n\n Range.prototype.indexOf = function indexOf(searchValue) {\n var offsetValue = searchValue - this._start;\n\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n\n if (index >= 0 && index < this.size) {\n return index;\n }\n }\n\n return -1;\n };\n\n Range.prototype.lastIndexOf = function lastIndexOf(searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function __iterate(fn, reverse) {\n var size = this.size;\n var step = this._step;\n var value = reverse ? this._start + (size - 1) * step : this._start;\n var i = 0;\n\n while (i !== size) {\n if (fn(value, reverse ? size - ++i : i++, this) === false) {\n break;\n }\n\n value += reverse ? -step : step;\n }\n\n return i;\n };\n\n Range.prototype.__iterator = function __iterator(type, reverse) {\n var size = this.size;\n var step = this._step;\n var value = reverse ? this._start + (size - 1) * step : this._start;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n\n var v = value;\n value += reverse ? -step : step;\n return iteratorValue(type, reverse ? size - ++i : i++, v);\n });\n };\n\n Range.prototype.equals = function equals(other) {\n return other instanceof Range ? this._start === other._start && this._end === other._end && this._step === other._step : deepEqual(this, other);\n };\n\n return Range;\n}(IndexedSeq);\n\nvar EMPTY_RANGE;\n\nfunction getIn(collection, searchKeyPath, notSetValue) {\n var keyPath = coerceKeyPath(searchKeyPath);\n var i = 0;\n\n while (i !== keyPath.length) {\n collection = get(collection, keyPath[i++], NOT_SET);\n\n if (collection === NOT_SET) {\n return notSetValue;\n }\n }\n\n return collection;\n}\n\nfunction getIn$1(searchKeyPath, notSetValue) {\n return getIn(this, searchKeyPath, notSetValue);\n}\n\nfunction hasIn(collection, keyPath) {\n return getIn(collection, keyPath, NOT_SET) !== NOT_SET;\n}\n\nfunction hasIn$1(searchKeyPath) {\n return hasIn(this, searchKeyPath);\n}\n\nfunction toObject() {\n assertNotInfinite(this.size);\n var object = {};\n\n this.__iterate(function (v, k) {\n object[k] = v;\n });\n\n return object;\n} // Note: all of these methods are deprecated.\n\n\nCollection.isIterable = isCollection;\nCollection.isKeyed = isKeyed;\nCollection.isIndexed = isIndexed;\nCollection.isAssociative = isAssociative;\nCollection.isOrdered = isOrdered;\nCollection.Iterator = Iterator;\nmixin(Collection, {\n // ### Conversion to other types\n toArray: function toArray() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n var useTuples = isKeyed(this);\n var i = 0;\n\n this.__iterate(function (v, k) {\n // Keyed collections produce an array of tuples.\n array[i++] = useTuples ? [k, v] : v;\n });\n\n return array;\n },\n toIndexedSeq: function toIndexedSeq() {\n return new ToIndexedSequence(this);\n },\n toJS: function toJS$1() {\n return toJS(this);\n },\n toKeyedSeq: function toKeyedSeq() {\n return new ToKeyedSequence(this, true);\n },\n toMap: function toMap() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n toObject: toObject,\n toOrderedMap: function toOrderedMap() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n toOrderedSet: function toOrderedSet() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n toSet: function toSet() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n toSetSeq: function toSetSeq() {\n return new ToSetSequence(this);\n },\n toSeq: function toSeq() {\n return isIndexed(this) ? this.toIndexedSeq() : isKeyed(this) ? this.toKeyedSeq() : this.toSetSeq();\n },\n toStack: function toStack() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n toList: function toList() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n // ### Common JavaScript methods and properties\n toString: function toString() {\n return '[Collection]';\n },\n __toString: function __toString(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n\n return head + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + tail;\n },\n // ### ES6 Collection methods (ES6 Array and Map)\n concat: function concat() {\n var values = [],\n len = arguments.length;\n\n while (len--) {\n values[len] = arguments[len];\n }\n\n return reify(this, concatFactory(this, values));\n },\n includes: function includes(searchValue) {\n return this.some(function (value) {\n return is(value, searchValue);\n });\n },\n entries: function entries() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n every: function every(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n\n this.__iterate(function (v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n\n return returnValue;\n },\n filter: function filter(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n find: function find(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n forEach: function forEach(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n join: function join(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n\n this.__iterate(function (v) {\n isFirst ? isFirst = false : joined += separator;\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n\n return joined;\n },\n keys: function keys() {\n return this.__iterator(ITERATE_KEYS);\n },\n map: function map(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n reduce: function reduce$1(reducer, initialReduction, context) {\n return reduce(this, reducer, initialReduction, context, arguments.length < 2, false);\n },\n reduceRight: function reduceRight(reducer, initialReduction, context) {\n return reduce(this, reducer, initialReduction, context, arguments.length < 2, true);\n },\n reverse: function reverse() {\n return reify(this, reverseFactory(this, true));\n },\n slice: function slice(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n some: function some(predicate, context) {\n return !this.every(not(predicate), context);\n },\n sort: function sort(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n values: function values() {\n return this.__iterator(ITERATE_VALUES);\n },\n // ### More sequential methods\n butLast: function butLast() {\n return this.slice(0, -1);\n },\n isEmpty: function isEmpty() {\n return this.size !== undefined ? this.size === 0 : !this.some(function () {\n return true;\n });\n },\n count: function count(predicate, context) {\n return ensureSize(predicate ? this.toSeq().filter(predicate, context) : this);\n },\n countBy: function countBy(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n equals: function equals(other) {\n return deepEqual(this, other);\n },\n entrySeq: function entrySeq() {\n var collection = this;\n\n if (collection._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(collection._cache);\n }\n\n var entriesSequence = collection.toSeq().map(entryMapper).toIndexedSeq();\n\n entriesSequence.fromEntrySeq = function () {\n return collection.toSeq();\n };\n\n return entriesSequence;\n },\n filterNot: function filterNot(predicate, context) {\n return this.filter(not(predicate), context);\n },\n findEntry: function findEntry(predicate, context, notSetValue) {\n var found = notSetValue;\n\n this.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n\n return found;\n },\n findKey: function findKey(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n findLast: function findLast(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n findLastEntry: function findLastEntry(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().findEntry(predicate, context, notSetValue);\n },\n findLastKey: function findLastKey(predicate, context) {\n return this.toKeyedSeq().reverse().findKey(predicate, context);\n },\n first: function first(notSetValue) {\n return this.find(returnTrue, null, notSetValue);\n },\n flatMap: function flatMap(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n flatten: function flatten(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n fromEntrySeq: function fromEntrySeq() {\n return new FromEntriesSequence(this);\n },\n get: function get(searchKey, notSetValue) {\n return this.find(function (_, key) {\n return is(key, searchKey);\n }, undefined, notSetValue);\n },\n getIn: getIn$1,\n groupBy: function groupBy(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n has: function has(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n hasIn: hasIn$1,\n isSubset: function isSubset(iter) {\n iter = typeof iter.includes === 'function' ? iter : Collection(iter);\n return this.every(function (value) {\n return iter.includes(value);\n });\n },\n isSuperset: function isSuperset(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Collection(iter);\n return iter.isSubset(this);\n },\n keyOf: function keyOf(searchValue) {\n return this.findKey(function (value) {\n return is(value, searchValue);\n });\n },\n keySeq: function keySeq() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n last: function last(notSetValue) {\n return this.toSeq().reverse().first(notSetValue);\n },\n lastKeyOf: function lastKeyOf(searchValue) {\n return this.toKeyedSeq().reverse().keyOf(searchValue);\n },\n max: function max(comparator) {\n return maxFactory(this, comparator);\n },\n maxBy: function maxBy(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n min: function min(comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator);\n },\n minBy: function minBy(mapper, comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator, mapper);\n },\n rest: function rest() {\n return this.slice(1);\n },\n skip: function skip(amount) {\n return amount === 0 ? this : this.slice(Math.max(0, amount));\n },\n skipLast: function skipLast(amount) {\n return amount === 0 ? this : this.slice(0, -Math.max(0, amount));\n },\n skipWhile: function skipWhile(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n skipUntil: function skipUntil(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n sortBy: function sortBy(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n take: function take(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n takeLast: function takeLast(amount) {\n return this.slice(-Math.max(0, amount));\n },\n takeWhile: function takeWhile(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n takeUntil: function takeUntil(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n update: function update(fn) {\n return fn(this);\n },\n valueSeq: function valueSeq() {\n return this.toIndexedSeq();\n },\n // ### Hashable Object\n hashCode: function hashCode() {\n return this.__hash || (this.__hash = hashCollection(this));\n } // ### Internal\n // abstract __iterate(fn, reverse)\n // abstract __iterator(type, reverse)\n\n});\nvar CollectionPrototype = Collection.prototype;\nCollectionPrototype[IS_COLLECTION_SYMBOL] = true;\nCollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.values;\nCollectionPrototype.toJSON = CollectionPrototype.toArray;\nCollectionPrototype.__toStringMapper = quoteString;\n\nCollectionPrototype.inspect = CollectionPrototype.toSource = function () {\n return this.toString();\n};\n\nCollectionPrototype.chain = CollectionPrototype.flatMap;\nCollectionPrototype.contains = CollectionPrototype.includes;\nmixin(KeyedCollection, {\n // ### More sequential methods\n flip: function flip() {\n return reify(this, flipFactory(this));\n },\n mapEntries: function mapEntries(mapper, context) {\n var this$1 = this;\n var iterations = 0;\n return reify(this, this.toSeq().map(function (v, k) {\n return mapper.call(context, [k, v], iterations++, this$1);\n }).fromEntrySeq());\n },\n mapKeys: function mapKeys(mapper, context) {\n var this$1 = this;\n return reify(this, this.toSeq().flip().map(function (k, v) {\n return mapper.call(context, k, v, this$1);\n }).flip());\n }\n});\nvar KeyedCollectionPrototype = KeyedCollection.prototype;\nKeyedCollectionPrototype[IS_KEYED_SYMBOL] = true;\nKeyedCollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.entries;\nKeyedCollectionPrototype.toJSON = toObject;\n\nKeyedCollectionPrototype.__toStringMapper = function (v, k) {\n return quoteString(k) + ': ' + quoteString(v);\n};\n\nmixin(IndexedCollection, {\n // ### Conversion to other types\n toKeyedSeq: function toKeyedSeq() {\n return new ToKeyedSequence(this, false);\n },\n // ### ES6 Collection methods (ES6 Array and Map)\n filter: function filter(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n findIndex: function findIndex(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n indexOf: function indexOf(searchValue) {\n var key = this.keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n lastIndexOf: function lastIndexOf(searchValue) {\n var key = this.lastKeyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n reverse: function reverse() {\n return reify(this, reverseFactory(this, false));\n },\n slice: function slice(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n splice: function splice(index, removeNum\n /*, ...values*/\n ) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum || 0, 0);\n\n if (numArgs === 0 || numArgs === 2 && !removeNum) {\n return this;\n } // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n\n\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(this, numArgs === 1 ? spliced : spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum)));\n },\n // ### More collection methods\n findLastIndex: function findLastIndex(predicate, context) {\n var entry = this.findLastEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n first: function first(notSetValue) {\n return this.get(0, notSetValue);\n },\n flatten: function flatten(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n get: function get(index, notSetValue) {\n index = wrapIndex(this, index);\n return index < 0 || this.size === Infinity || this.size !== undefined && index > this.size ? notSetValue : this.find(function (_, key) {\n return key === index;\n }, undefined, notSetValue);\n },\n has: function has(index) {\n index = wrapIndex(this, index);\n return index >= 0 && (this.size !== undefined ? this.size === Infinity || index < this.size : this.indexOf(index) !== -1);\n },\n interpose: function interpose(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n interleave: function interleave()\n /*...collections*/\n {\n var collections = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, collections);\n var interleaved = zipped.flatten(true);\n\n if (zipped.size) {\n interleaved.size = zipped.size * collections.length;\n }\n\n return reify(this, interleaved);\n },\n keySeq: function keySeq() {\n return Range(0, this.size);\n },\n last: function last(notSetValue) {\n return this.get(-1, notSetValue);\n },\n skipWhile: function skipWhile(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n zip: function zip()\n /*, ...collections */\n {\n var collections = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, collections));\n },\n zipAll: function zipAll()\n /*, ...collections */\n {\n var collections = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, collections, true));\n },\n zipWith: function zipWith(zipper\n /*, ...collections */\n ) {\n var collections = arrCopy(arguments);\n collections[0] = this;\n return reify(this, zipWithFactory(this, zipper, collections));\n }\n});\nvar IndexedCollectionPrototype = IndexedCollection.prototype;\nIndexedCollectionPrototype[IS_INDEXED_SYMBOL] = true;\nIndexedCollectionPrototype[IS_ORDERED_SYMBOL] = true;\nmixin(SetCollection, {\n // ### ES6 Collection methods (ES6 Array and Map)\n get: function get(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n includes: function includes(value) {\n return this.has(value);\n },\n // ### More sequential methods\n keySeq: function keySeq() {\n return this.valueSeq();\n }\n});\nSetCollection.prototype.has = CollectionPrototype.includes;\nSetCollection.prototype.contains = SetCollection.prototype.includes; // Mixin subclasses\n\nmixin(KeyedSeq, KeyedCollection.prototype);\nmixin(IndexedSeq, IndexedCollection.prototype);\nmixin(SetSeq, SetCollection.prototype); // #pragma Helper functions\n\nfunction reduce(collection, reducer, reduction, context, useFirst, reverse) {\n assertNotInfinite(collection.size);\n\n collection.__iterate(function (v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n }, reverse);\n\n return reduction;\n}\n\nfunction keyMapper(v, k) {\n return k;\n}\n\nfunction entryMapper(v, k) {\n return [k, v];\n}\n\nfunction not(predicate) {\n return function () {\n return !predicate.apply(this, arguments);\n };\n}\n\nfunction neg(predicate) {\n return function () {\n return -predicate.apply(this, arguments);\n };\n}\n\nfunction defaultZipper() {\n return arrCopy(arguments);\n}\n\nfunction defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n}\n\nfunction hashCollection(collection) {\n if (collection.size === Infinity) {\n return 0;\n }\n\n var ordered = isOrdered(collection);\n var keyed = isKeyed(collection);\n var h = ordered ? 1 : 0;\n\n var size = collection.__iterate(keyed ? ordered ? function (v, k) {\n h = 31 * h + hashMerge(hash(v), hash(k)) | 0;\n } : function (v, k) {\n h = h + hashMerge(hash(v), hash(k)) | 0;\n } : ordered ? function (v) {\n h = 31 * h + hash(v) | 0;\n } : function (v) {\n h = h + hash(v) | 0;\n });\n\n return murmurHashOfSize(size, h);\n}\n\nfunction murmurHashOfSize(size, h) {\n h = imul(h, 0xcc9e2d51);\n h = imul(h << 15 | h >>> -15, 0x1b873593);\n h = imul(h << 13 | h >>> -13, 5);\n h = (h + 0xe6546b64 | 0) ^ size;\n h = imul(h ^ h >>> 16, 0x85ebca6b);\n h = imul(h ^ h >>> 13, 0xc2b2ae35);\n h = smi(h ^ h >>> 16);\n return h;\n}\n\nfunction hashMerge(a, b) {\n return a ^ b + 0x9e3779b9 + (a << 6) + (a >> 2) | 0; // int\n}\n\nvar OrderedSet =\n/*@__PURE__*/\nfunction (Set$$1) {\n function OrderedSet(value) {\n return value === null || value === undefined ? emptyOrderedSet() : isOrderedSet(value) ? value : emptyOrderedSet().withMutations(function (set) {\n var iter = SetCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v) {\n return set.add(v);\n });\n });\n }\n\n if (Set$$1) OrderedSet.__proto__ = Set$$1;\n OrderedSet.prototype = Object.create(Set$$1 && Set$$1.prototype);\n OrderedSet.prototype.constructor = OrderedSet;\n\n OrderedSet.of = function of()\n /*...values*/\n {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function fromKeys(value) {\n return this(KeyedCollection(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function toString() {\n return this.__toString('OrderedSet {', '}');\n };\n\n return OrderedSet;\n}(Set);\n\nOrderedSet.isOrderedSet = isOrderedSet;\nvar OrderedSetPrototype = OrderedSet.prototype;\nOrderedSetPrototype[IS_ORDERED_SYMBOL] = true;\nOrderedSetPrototype.zip = IndexedCollectionPrototype.zip;\nOrderedSetPrototype.zipWith = IndexedCollectionPrototype.zipWith;\nOrderedSetPrototype.__empty = emptyOrderedSet;\nOrderedSetPrototype.__make = makeOrderedSet;\n\nfunction makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n}\n\nvar EMPTY_ORDERED_SET;\n\nfunction emptyOrderedSet() {\n return EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()));\n}\n\nvar Record = function Record(defaultValues, name) {\n var hasInitialized;\n\n var RecordType = function Record(values) {\n var this$1 = this;\n\n if (values instanceof RecordType) {\n return values;\n }\n\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n var indices = RecordTypePrototype._indices = {}; // Deprecated: left to attempt not to break any external code which\n // relies on a ._name property existing on record instances.\n // Use Record.getDescriptiveName() instead\n\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n\n for (var i = 0; i < keys.length; i++) {\n var propName = keys[i];\n indices[propName] = i;\n\n if (RecordTypePrototype[propName]) {\n /* eslint-disable no-console */\n typeof console === 'object' && console.warn && console.warn('Cannot define ' + recordName(this) + ' with property \"' + propName + '\" since that property name is part of the Record API.');\n /* eslint-enable no-console */\n } else {\n setProp(RecordTypePrototype, propName);\n }\n }\n }\n\n this.__ownerID = undefined;\n this._values = List().withMutations(function (l) {\n l.setSize(this$1._keys.length);\n KeyedCollection(values).forEach(function (v, k) {\n l.set(this$1._indices[k], v === this$1._defaultValues[k] ? undefined : v);\n });\n });\n };\n\n var RecordTypePrototype = RecordType.prototype = Object.create(RecordPrototype);\n RecordTypePrototype.constructor = RecordType;\n\n if (name) {\n RecordType.displayName = name;\n }\n\n return RecordType;\n};\n\nRecord.prototype.toString = function toString() {\n var str = recordName(this) + ' { ';\n var keys = this._keys;\n var k;\n\n for (var i = 0, l = keys.length; i !== l; i++) {\n k = keys[i];\n str += (i ? ', ' : '') + k + ': ' + quoteString(this.get(k));\n }\n\n return str + ' }';\n};\n\nRecord.prototype.equals = function equals(other) {\n return this === other || other && this._keys === other._keys && recordSeq(this).equals(recordSeq(other));\n};\n\nRecord.prototype.hashCode = function hashCode() {\n return recordSeq(this).hashCode();\n}; // @pragma Access\n\n\nRecord.prototype.has = function has(k) {\n return this._indices.hasOwnProperty(k);\n};\n\nRecord.prototype.get = function get(k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n\n var index = this._indices[k];\n\n var value = this._values.get(index);\n\n return value === undefined ? this._defaultValues[k] : value;\n}; // @pragma Modification\n\n\nRecord.prototype.set = function set(k, v) {\n if (this.has(k)) {\n var newValues = this._values.set(this._indices[k], v === this._defaultValues[k] ? undefined : v);\n\n if (newValues !== this._values && !this.__ownerID) {\n return makeRecord(this, newValues);\n }\n }\n\n return this;\n};\n\nRecord.prototype.remove = function remove(k) {\n return this.set(k);\n};\n\nRecord.prototype.clear = function clear() {\n var newValues = this._values.clear().setSize(this._keys.length);\n\n return this.__ownerID ? this : makeRecord(this, newValues);\n};\n\nRecord.prototype.wasAltered = function wasAltered() {\n return this._values.wasAltered();\n};\n\nRecord.prototype.toSeq = function toSeq() {\n return recordSeq(this);\n};\n\nRecord.prototype.toJS = function toJS$1() {\n return toJS(this);\n};\n\nRecord.prototype.entries = function entries() {\n return this.__iterator(ITERATE_ENTRIES);\n};\n\nRecord.prototype.__iterator = function __iterator(type, reverse) {\n return recordSeq(this).__iterator(type, reverse);\n};\n\nRecord.prototype.__iterate = function __iterate(fn, reverse) {\n return recordSeq(this).__iterate(fn, reverse);\n};\n\nRecord.prototype.__ensureOwner = function __ensureOwner(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n\n var newValues = this._values.__ensureOwner(ownerID);\n\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._values = newValues;\n return this;\n }\n\n return makeRecord(this, newValues, ownerID);\n};\n\nRecord.isRecord = isRecord;\nRecord.getDescriptiveName = recordName;\nvar RecordPrototype = Record.prototype;\nRecordPrototype[IS_RECORD_SYMBOL] = true;\nRecordPrototype[DELETE] = RecordPrototype.remove;\nRecordPrototype.deleteIn = RecordPrototype.removeIn = deleteIn;\nRecordPrototype.getIn = getIn$1;\nRecordPrototype.hasIn = CollectionPrototype.hasIn;\nRecordPrototype.merge = merge;\nRecordPrototype.mergeWith = mergeWith;\nRecordPrototype.mergeIn = mergeIn;\nRecordPrototype.mergeDeep = mergeDeep$1;\nRecordPrototype.mergeDeepWith = mergeDeepWith$1;\nRecordPrototype.mergeDeepIn = mergeDeepIn;\nRecordPrototype.setIn = setIn$1;\nRecordPrototype.update = update$1;\nRecordPrototype.updateIn = updateIn$1;\nRecordPrototype.withMutations = withMutations;\nRecordPrototype.asMutable = asMutable;\nRecordPrototype.asImmutable = asImmutable;\nRecordPrototype[ITERATOR_SYMBOL] = RecordPrototype.entries;\nRecordPrototype.toJSON = RecordPrototype.toObject = CollectionPrototype.toObject;\n\nRecordPrototype.inspect = RecordPrototype.toSource = function () {\n return this.toString();\n};\n\nfunction makeRecord(likeRecord, values, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._values = values;\n record.__ownerID = ownerID;\n return record;\n}\n\nfunction recordName(record) {\n return record.constructor.displayName || record.constructor.name || 'Record';\n}\n\nfunction recordSeq(record) {\n return keyedSeqFromValue(record._keys.map(function (k) {\n return [k, record.get(k)];\n }));\n}\n\nfunction setProp(prototype, name) {\n try {\n Object.defineProperty(prototype, name, {\n get: function get() {\n return this.get(name);\n },\n set: function set(value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n }\n });\n } catch (error) {// Object.defineProperty failed. Probably IE8.\n }\n}\n/**\n * Returns a lazy Seq of `value` repeated `times` times. When `times` is\n * undefined, returns an infinite sequence of `value`.\n */\n\n\nvar Repeat =\n/*@__PURE__*/\nfunction (IndexedSeq$$1) {\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n\n EMPTY_REPEAT = this;\n }\n }\n\n if (IndexedSeq$$1) Repeat.__proto__ = IndexedSeq$$1;\n Repeat.prototype = Object.create(IndexedSeq$$1 && IndexedSeq$$1.prototype);\n Repeat.prototype.constructor = Repeat;\n\n Repeat.prototype.toString = function toString() {\n if (this.size === 0) {\n return 'Repeat []';\n }\n\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function get(index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function includes(searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function slice(begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size) ? this : new Repeat(this._value, resolveEnd(end, size) - resolveBegin(begin, size));\n };\n\n Repeat.prototype.reverse = function reverse() {\n return this;\n };\n\n Repeat.prototype.indexOf = function indexOf(searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function lastIndexOf(searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n\n return -1;\n };\n\n Repeat.prototype.__iterate = function __iterate(fn, reverse) {\n var size = this.size;\n var i = 0;\n\n while (i !== size) {\n if (fn(this._value, reverse ? size - ++i : i++, this) === false) {\n break;\n }\n }\n\n return i;\n };\n\n Repeat.prototype.__iterator = function __iterator(type, reverse) {\n var this$1 = this;\n var size = this.size;\n var i = 0;\n return new Iterator(function () {\n return i === size ? iteratorDone() : iteratorValue(type, reverse ? size - ++i : i++, this$1._value);\n });\n };\n\n Repeat.prototype.equals = function equals(other) {\n return other instanceof Repeat ? is(this._value, other._value) : deepEqual(other);\n };\n\n return Repeat;\n}(IndexedSeq);\n\nvar EMPTY_REPEAT;\n\nfunction fromJS(value, converter) {\n return fromJSWith([], converter || defaultConverter, value, '', converter && converter.length > 2 ? [] : undefined, {\n '': value\n });\n}\n\nfunction fromJSWith(stack, converter, value, key, keyPath, parentValue) {\n var toSeq = Array.isArray(value) ? IndexedSeq : isPlainObj(value) ? KeyedSeq : null;\n\n if (toSeq) {\n if (~stack.indexOf(value)) {\n throw new TypeError('Cannot convert circular structure to Immutable');\n }\n\n stack.push(value);\n keyPath && key !== '' && keyPath.push(key);\n var converted = converter.call(parentValue, key, toSeq(value).map(function (v, k) {\n return fromJSWith(stack, converter, v, k, keyPath, value);\n }), keyPath && keyPath.slice());\n stack.pop();\n keyPath && keyPath.pop();\n return converted;\n }\n\n return value;\n}\n\nfunction defaultConverter(k, v) {\n return isKeyed(v) ? v.toMap() : v.toList();\n}\n\nvar version = \"4.0.0-rc.11\";\nvar Immutable = {\n version: version,\n Collection: Collection,\n // Note: Iterable is deprecated\n Iterable: Collection,\n Seq: Seq,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n is: is,\n fromJS: fromJS,\n hash: hash,\n isImmutable: isImmutable,\n isCollection: isCollection,\n isKeyed: isKeyed,\n isIndexed: isIndexed,\n isAssociative: isAssociative,\n isOrdered: isOrdered,\n isValueObject: isValueObject,\n isSeq: isSeq,\n isList: isList,\n isMap: isMap,\n isOrderedMap: isOrderedMap,\n isStack: isStack,\n isSet: isSet,\n isOrderedSet: isOrderedSet,\n isRecord: isRecord,\n get: get,\n getIn: getIn,\n has: has,\n hasIn: hasIn,\n merge: merge$1,\n mergeDeep: mergeDeep,\n mergeWith: mergeWith$1,\n mergeDeepWith: mergeDeepWith,\n remove: remove,\n removeIn: removeIn,\n set: set,\n setIn: setIn,\n update: update,\n updateIn: updateIn\n}; // Note: Iterable is deprecated\n\nvar Iterable = Collection;\nexport default Immutable;\nexport { version, Collection, Iterable, Seq, Map, OrderedMap, List, Stack, Set, OrderedSet, Record, Range, Repeat, is, fromJS, hash, isImmutable, isCollection, isKeyed, isIndexed, isAssociative, isOrdered, isValueObject, get, getIn, has, hasIn, merge$1 as merge, mergeDeep, mergeWith$1 as mergeWith, mergeDeepWith, remove, removeIn, set, setIn, update, updateIn };","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = ['kind', 'resolve', 'construct', 'instanceOf', 'predicate', 'represent', 'defaultStyle', 'styleAliases'];\nvar YAML_NODE_KINDS = ['scalar', 'sequence', 'mapping'];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n }); // TODO: Add tag format check.\n\n this.tag = tag;\n this.kind = options['kind'] || null;\n\n this.resolve = options['resolve'] || function () {\n return true;\n };\n\n this.construct = options['construct'] || function (data) {\n return data;\n };\n\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nimport { is, check, remove, MATCH, internalErr, SAGA_ACTION } from './utils';\nimport { buffers } from './buffers';\nimport { asap } from './scheduler';\nvar CHANNEL_END_TYPE = '@@redux-saga/CHANNEL_END';\nexport var END = {\n type: CHANNEL_END_TYPE\n};\nexport var isEnd = function isEnd(a) {\n return a && a.type === CHANNEL_END_TYPE;\n};\nexport function emitter() {\n var subscribers = [];\n\n function subscribe(sub) {\n subscribers.push(sub);\n return function () {\n return remove(subscribers, sub);\n };\n }\n\n function emit(item) {\n var arr = subscribers.slice();\n\n for (var i = 0, len = arr.length; i < len; i++) {\n arr[i](item);\n }\n }\n\n return {\n subscribe: subscribe,\n emit: emit\n };\n}\nexport var INVALID_BUFFER = 'invalid buffer passed to channel factory function';\nexport var UNDEFINED_INPUT_ERROR = 'Saga was provided with an undefined action';\n\nif (process.env.NODE_ENV !== 'production') {\n UNDEFINED_INPUT_ERROR += '\\nHints:\\n - check that your Action Creator returns a non-undefined value\\n - if the Saga was started using runSaga, check that your subscribe source provides the action to its listeners\\n ';\n}\n\nexport function channel() {\n var buffer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : buffers.fixed();\n var closed = false;\n var takers = [];\n check(buffer, is.buffer, INVALID_BUFFER);\n\n function checkForbiddenStates() {\n if (closed && takers.length) {\n throw internalErr('Cannot have a closed channel with pending takers');\n }\n\n if (takers.length && !buffer.isEmpty()) {\n throw internalErr('Cannot have pending takers with non empty buffer');\n }\n }\n\n function put(input) {\n checkForbiddenStates();\n check(input, is.notUndef, UNDEFINED_INPUT_ERROR);\n\n if (closed) {\n return;\n }\n\n if (!takers.length) {\n return buffer.put(input);\n }\n\n for (var i = 0; i < takers.length; i++) {\n var cb = takers[i];\n\n if (!cb[MATCH] || cb[MATCH](input)) {\n takers.splice(i, 1);\n return cb(input);\n }\n }\n }\n\n function take(cb) {\n checkForbiddenStates();\n check(cb, is.func, \"channel.take's callback must be a function\");\n\n if (closed && buffer.isEmpty()) {\n cb(END);\n } else if (!buffer.isEmpty()) {\n cb(buffer.take());\n } else {\n takers.push(cb);\n\n cb.cancel = function () {\n return remove(takers, cb);\n };\n }\n }\n\n function flush(cb) {\n checkForbiddenStates(); // TODO: check if some new state should be forbidden now\n\n check(cb, is.func, \"channel.flush' callback must be a function\");\n\n if (closed && buffer.isEmpty()) {\n cb(END);\n return;\n }\n\n cb(buffer.flush());\n }\n\n function close() {\n checkForbiddenStates();\n\n if (!closed) {\n closed = true;\n\n if (takers.length) {\n var arr = takers;\n takers = [];\n\n for (var i = 0, len = arr.length; i < len; i++) {\n arr[i](END);\n }\n }\n }\n }\n\n return {\n take: take,\n put: put,\n flush: flush,\n close: close,\n\n get __takers__() {\n return takers;\n },\n\n get __closed__() {\n return closed;\n }\n\n };\n}\nexport function eventChannel(subscribe) {\n var buffer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : buffers.none();\n var matcher = arguments[2];\n /**\n should be if(typeof matcher !== undefined) instead?\n see PR #273 for a background discussion\n **/\n\n if (arguments.length > 2) {\n check(matcher, is.func, 'Invalid match function passed to eventChannel');\n }\n\n var chan = channel(buffer);\n\n var close = function close() {\n if (!chan.__closed__) {\n if (unsubscribe) {\n unsubscribe();\n }\n\n chan.close();\n }\n };\n\n var unsubscribe = subscribe(function (input) {\n if (isEnd(input)) {\n close();\n return;\n }\n\n if (matcher && !matcher(input)) {\n return;\n }\n\n chan.put(input);\n });\n\n if (chan.__closed__) {\n unsubscribe();\n }\n\n if (!is.func(unsubscribe)) {\n throw new Error('in eventChannel: subscribe should return a function to unsubscribe');\n }\n\n return {\n take: chan.take,\n flush: chan.flush,\n close: close\n };\n}\nexport function stdChannel(subscribe) {\n var chan = eventChannel(function (cb) {\n return subscribe(function (input) {\n if (input[SAGA_ACTION]) {\n cb(input);\n return;\n }\n\n asap(function () {\n return cb(input);\n });\n });\n });\n return _extends({}, chan, {\n take: function take(cb, matcher) {\n if (arguments.length > 1) {\n check(matcher, is.func, \"channel.take's matcher argument must be a function\");\n cb[MATCH] = matcher;\n }\n\n chan.take(cb);\n }\n });\n}","/**\n * Creates a keyed JS object from an array, given a function to produce the keys\n * for each value in the array.\n *\n * This provides a convenient lookup for the array items if the key function\n * produces unique results.\n *\n * const phoneBook = [\n * { name: 'Jon', num: '555-1234' },\n * { name: 'Jenny', num: '867-5309' }\n * ]\n *\n * // { Jon: { name: 'Jon', num: '555-1234' },\n * // Jenny: { name: 'Jenny', num: '867-5309' } }\n * const entriesByName = keyMap(\n * phoneBook,\n * entry => entry.name\n * )\n *\n * // { name: 'Jenny', num: '857-6309' }\n * const jennyEntry = entriesByName['Jenny']\n *\n */\nexport default function keyMap(list, keyFn) {\n return list.reduce(function (map, item) {\n map[keyFn(item)] = item;\n return map;\n }, Object.create(null));\n}","var g; // This works in non-strict mode\n\ng = function () {\n return this;\n}();\n\ntry {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n} catch (e) {\n // This works if the window reference is available\n if (typeof window === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _a;\n\nvar redux_actions_1 = require(\"redux-actions\");\n\nexports.editQuery = (_a = redux_actions_1.createActions({\n // simple property setting\n EDIT_QUERY: function EDIT_QUERY(query) {\n return {\n query: query\n };\n },\n EDIT_HEADERS: simpleAction('headers'),\n EDIT_ENDPOINT: simpleAction('endpoint'),\n EDIT_VARIABLES: simpleAction('variables'),\n SET_OPERATION_NAME: simpleAction('operationName'),\n SET_VARIABLE_TO_TYPE: simpleAction('variableToType'),\n SET_OPERATIONS: simpleAction('operations'),\n SET_EDITOR_FLEX: simpleAction('editorFlex'),\n EDIT_NAME: simpleAction('name'),\n OPEN_QUERY_VARIABLES: function OPEN_QUERY_VARIABLES() {\n return {\n queryVariablesActive: true\n };\n },\n CLOSE_QUERY_VARIABLES: function CLOSE_QUERY_VARIABLES() {\n return {\n queryVariablesActive: false\n };\n },\n SET_VARIABLE_EDITOR_HEIGHT: simpleAction('variableEditorHeight'),\n SET_RESPONSE_TRACING_HEIGHT: simpleAction('responceTracingHeight'),\n SET_TRACING_SUPPORTED: simpleAction('tracingSupported'),\n SET_IS_QUERY_PLAN_SUPPORTED: simpleAction('isQueryPlanSupported'),\n SET_SUBSCRIPTION_ACTIVE: simpleAction('subscriptionActive'),\n SET_QUERY_TYPES: simpleAction('queryTypes'),\n SET_RESPONSE_EXTENSIONS: simpleAction('responseExtensions'),\n SET_CURRENT_QUERY_START_TIME: simpleAction('currentQueryStartTime'),\n SET_CURRENT_QUERY_END_TIME: simpleAction('currentQueryEndTime'),\n UPDATE_QUERY_FACTS: simpleAction(),\n PRETTIFY_QUERY: simpleAction(),\n INJECT_HEADERS: function INJECT_HEADERS(headers, endpoint) {\n return {\n headers: headers,\n endpoint: endpoint\n };\n },\n\n /* setting multiple props\n this.setState({\n isExtensionsDrawerOpen: true,\n isTracingActive: false,\n } as State)\n */\n // Action is intentionally ignoring arguments to prevent passing around\n // React's `SyntheticEvent`s\n CLOSE_TRACING: function CLOSE_TRACING() {},\n OPEN_TRACING: function OPEN_TRACING() {},\n TOGGLE_TRACING: function TOGGLE_TRACING() {},\n\n /* setting multiple props\n this.setState({\n variableEditorHeight: hadHeight,\n variableEditorOpen: false,\n } as State)\n */\n CLOSE_VARIABLES: simpleAction('variableEditorHeight'),\n OPEN_VARIABLES: simpleAction('variableEditorHeight'),\n TOGGLE_VARIABLES: simpleAction(),\n\n /*\n a littlebit more complex state mutations\n */\n ADD_RESPONSE: function ADD_RESPONSE(workspaceId, sessionId, response) {\n return {\n workspaceId: workspaceId,\n sessionId: sessionId,\n response: response\n };\n },\n SET_RESPONSE: function SET_RESPONSE(workspaceId, sessionId, response) {\n return {\n workspaceId: workspaceId,\n sessionId: sessionId,\n response: response\n };\n },\n CLEAR_RESPONSES: simpleAction(),\n FETCH_SCHEMA: simpleAction(),\n REFETCH_SCHEMA: simpleAction(),\n SET_ENDPOINT_UNREACHABLE: simpleAction('endpoint'),\n SET_SCROLL_TOP: function SET_SCROLL_TOP(sessionId, scrollTop) {\n return {\n sessionId: sessionId,\n scrollTop: scrollTop\n };\n },\n SCHEMA_FETCHING_SUCCESS: function SCHEMA_FETCHING_SUCCESS(endpoint, tracingSupported, isQueryPlanSupported, isPollingSchema) {\n return {\n endpoint: endpoint,\n tracingSupported: tracingSupported,\n isQueryPlanSupported: isQueryPlanSupported,\n isPollingSchema: isPollingSchema\n };\n },\n\n /*\n this.setState({\n schema,\n isReloadingSchema: false,\n endpointUnreachable: false,\n + tracingSupported\n })\n */\n SCHEMA_FETCHING_ERROR: function SCHEMA_FETCHING_ERROR(endpoint, error) {\n return {\n endpoint: endpoint,\n error: error\n };\n },\n\n /*\n this.setState({\n isReloadingSchema: false,\n endpointUnreachable: true,\n })\n */\n RENEW_STACKS: simpleAction(),\n\n /*\n GraphQLEditor.renewStacks()\n */\n RUN_QUERY: function RUN_QUERY(operationName) {\n return {\n operationName: operationName\n };\n },\n QUERY_SUCCESS: simpleAction(),\n QUERY_ERROR: simpleAction(),\n RUN_QUERY_AT_POSITION: function RUN_QUERY_AT_POSITION(position) {\n return {\n position: position\n };\n },\n START_QUERY: simpleAction('queryRunning', true),\n STOP_QUERY: function STOP_QUERY(sessionId, workspaceId) {\n return {\n workspaceId: workspaceId,\n sessionId: sessionId\n };\n },\n\n /* GraphQLEditor.handleRunQuery */\n OPEN_SETTINGS_TAB: function OPEN_SETTINGS_TAB() {\n return {};\n },\n OPEN_CONFIG_TAB: function OPEN_CONFIG_TAB() {\n return {};\n },\n NEW_SESSION: function NEW_SESSION(endpoint, reuseHeaders) {\n return {\n endpoint: endpoint,\n reuseHeaders: reuseHeaders\n };\n },\n NEW_SESSION_FROM_QUERY: function NEW_SESSION_FROM_QUERY(query) {\n return {\n query: query\n };\n },\n NEW_FILE_TAB: function NEW_FILE_TAB(fileName, filePath, file) {\n return {\n fileName: fileName,\n filePath: filePath,\n file: file\n };\n },\n DUPLICATE_SESSION: simpleAction('session'),\n CLOSE_SELECTED_TAB: function CLOSE_SELECTED_TAB() {\n return {};\n },\n SELECT_NEXT_TAB: function SELECT_NEXT_TAB() {\n return {};\n },\n SELECT_PREV_TAB: function SELECT_PREV_TAB() {\n return {};\n },\n SELECT_TAB: simpleAction('sessionId'),\n SELECT_TAB_INDEX: simpleAction('index'),\n CLOSE_TAB: simpleAction('sessionId'),\n REORDER_TABS: function REORDER_TABS(src, dest) {\n return {\n src: src,\n dest: dest\n };\n },\n // files, settings, config\n EDIT_SETTINGS: simpleAction(),\n SAVE_SETTINGS: simpleAction(),\n EDIT_CONFIG: simpleAction(),\n SAVE_CONFIG: simpleAction(),\n EDIT_FILE: simpleAction(),\n SAVE_FILE: simpleAction()\n}), _a.editQuery), exports.editVariables = _a.editVariables, exports.setOperationName = _a.setOperationName, exports.editHeaders = _a.editHeaders, exports.editEndpoint = _a.editEndpoint, exports.setVariableToType = _a.setVariableToType, exports.setOperations = _a.setOperations, exports.startQuery = _a.startQuery, exports.stopQuery = _a.stopQuery, exports.setEditorFlex = _a.setEditorFlex, exports.openQueryVariables = _a.openQueryVariables, exports.closeQueryVariables = _a.closeQueryVariables, exports.setVariableEditorHeight = _a.setVariableEditorHeight, exports.setResponseTracingHeight = _a.setResponseTracingHeight, exports.setTracingSupported = _a.setTracingSupported, exports.setIsQueryPlanSupported = _a.setIsQueryPlanSupported, exports.closeTracing = _a.closeTracing, exports.openTracing = _a.openTracing, exports.closeVariables = _a.closeVariables, exports.openVariables = _a.openVariables, exports.addResponse = _a.addResponse, exports.setResponse = _a.setResponse, exports.clearResponses = _a.clearResponses, exports.openSettingsTab = _a.openSettingsTab, exports.schemaFetchingSuccess = _a.schemaFetchingSuccess, exports.schemaFetchingError = _a.schemaFetchingError, exports.setEndpointUnreachable = _a.setEndpointUnreachable, exports.renewStacks = _a.renewStacks, exports.runQuery = _a.runQuery, exports.prettifyQuery = _a.prettifyQuery, exports.fetchSchema = _a.fetchSchema, exports.updateQueryFacts = _a.updateQueryFacts, exports.runQueryAtPosition = _a.runQueryAtPosition, exports.toggleTracing = _a.toggleTracing, exports.toggleVariables = _a.toggleVariables, exports.newSession = _a.newSession, exports.newSessionFromQuery = _a.newSessionFromQuery, exports.newFileTab = _a.newFileTab, exports.closeTab = _a.closeTab, exports.closeSelectedTab = _a.closeSelectedTab, exports.editSettings = _a.editSettings, exports.saveSettings = _a.saveSettings, exports.editConfig = _a.editConfig, exports.saveConfig = _a.saveConfig, exports.editFile = _a.editFile, exports.saveFile = _a.saveFile, exports.selectTab = _a.selectTab, exports.selectTabIndex = _a.selectTabIndex, exports.selectNextTab = _a.selectNextTab, exports.selectPrevTab = _a.selectPrevTab, exports.duplicateSession = _a.duplicateSession, exports.querySuccess = _a.querySuccess, exports.queryError = _a.queryError, exports.setSubscriptionActive = _a.setSubscriptionActive, exports.setQueryTypes = _a.setQueryTypes, exports.injectHeaders = _a.injectHeaders, exports.openConfigTab = _a.openConfigTab, exports.editName = _a.editName, exports.setResponseExtensions = _a.setResponseExtensions, exports.setCurrentQueryStartTime = _a.setCurrentQueryStartTime, exports.setCurrentQueryEndTime = _a.setCurrentQueryEndTime, exports.refetchSchema = _a.refetchSchema, exports.setScrollTop = _a.setScrollTop, exports.reorderTabs = _a.reorderTabs;\n\nfunction simpleAction(key, defaultValue) {\n return function (value) {\n var _a;\n\n return _a = {}, _a[key] = value || defaultValue, _a;\n };\n}","\"use strict\";\n\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar redux_immutable_1 = require(\"redux-immutable\");\n\nvar reducers_1 = require(\"../docs/reducers\");\n\nvar reducers_2 = require(\"../sessions/reducers\");\n\nvar reducers_3 = require(\"../sharing/reducers\");\n\nvar reducers_4 = require(\"../history/reducers\");\n\nvar immutable_1 = require(\"immutable\");\n\nvar reducers_5 = require(\"../general/reducers\");\n\nvar immutableMemoize_1 = require(\"../../components/Playground/util/immutableMemoize\");\n\nvar reselect_1 = require(\"reselect\");\n\nvar deserialize_1 = require(\"./deserialize\");\n\nvar reducers_6 = require(\"../appHistory/reducers\");\n\nfunction getSelectedWorkspaceId(state) {\n return state.get('selectedWorkspace');\n}\n\nexports.getSelectedWorkspaceId = getSelectedWorkspaceId;\n\nfunction getSelectedWorkspace(state) {\n return state.getIn(['workspaces', getSelectedWorkspaceId(state)]);\n}\n\nexports.getSelectedWorkspace = getSelectedWorkspace;\n\nvar Workspace =\n/** @class */\nfunction (_super) {\n __extends(Workspace, _super);\n\n function Workspace() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n return Workspace;\n}(immutable_1.Record({\n docs: immutable_1.Map({}),\n sessions: reducers_2.makeSessionState(''),\n sharing: new reducers_3.SharingState(),\n history: immutable_1.OrderedMap()\n}));\n\nexports.Workspace = Workspace;\nexports.defaultSettings = {\n 'editor.cursorShape': 'line',\n 'editor.fontFamily': \"'Source Code Pro', 'Consolas', 'Inconsolata', 'Droid Sans Mono', 'Monaco', monospace\",\n 'editor.fontSize': 14,\n 'editor.reuseHeaders': true,\n 'editor.theme': 'dark',\n 'general.betaUpdates': false,\n 'prettier.printWidth': 80,\n 'prettier.tabWidth': 2,\n 'prettier.useTabs': false,\n 'request.credentials': 'omit',\n 'schema.disableComments': true,\n 'schema.polling.enable': true,\n 'schema.polling.endpointFilter': '*localhost*',\n 'schema.polling.interval': 2000,\n 'tracing.hideTracingResponse': true,\n 'queryPlan.hideQueryPlanResponse': true\n}; // tslint:disable-next-line:max-classes-per-file\n\nvar RootState =\n/** @class */\nfunction (_super) {\n __extends(RootState, _super);\n\n function RootState() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n return RootState;\n}(immutable_1.Record({\n workspaces: immutable_1.Map({\n '': makeWorkspace('')\n }),\n selectedWorkspace: '',\n settingsString: JSON.stringify(exports.defaultSettings, null, 2),\n stateInjected: false,\n appHistory: new reducers_6.AppHistory(),\n general: new reducers_5.GeneralState()\n}));\n\nexports.RootState = RootState;\nvar workspaceReducers = redux_immutable_1.combineReducers({\n docs: reducers_1.default,\n sessions: reducers_2.default,\n sharing: reducers_3.default,\n history: reducers_4.default,\n general: reducers_5.default,\n appHistory: reducers_6.default\n}); // todo: add lru-cache later when the localStorage is full\n\nexports.rootReducer = function (state, action) {\n if (state === void 0) {\n state = new RootState();\n }\n\n if (action.type === 'SELECT_WORKSPACE') {\n return state.set('selectedWorkspace', action.payload.workspace);\n }\n\n if (action.type === 'SET_SETTINGS_STRING') {\n return state.set('settingsString', action.payload.settingsString);\n }\n\n if (action.type === 'INIT_STATE' && !state.stateInjected) {\n var _a = action.payload,\n workspaceId = _a.workspaceId,\n endpoint = _a.endpoint;\n\n if (!state.workspaces.get(workspaceId)) {\n var newState = state.setIn(['workspaces', workspaceId], makeWorkspace(endpoint));\n return newState.set('selectedWorkspace', workspaceId);\n }\n\n return state.set('selectedWorkspace', workspaceId);\n }\n\n if (action.type === 'INJECT_STATE') {\n return deserialize_1.deserializePersistedState(action.payload.state).set('stateInjected', true);\n }\n\n if (action.type === 'INJECT_TABS') {\n return makeStateFromTabs(action.payload.tabs);\n }\n\n if (action.type === 'SELECT_APP_HISTORY_ITEM') {\n return state.set('appHistory', reducers_6.default(state.appHistory, action));\n }\n\n var generalActions = {\n OPEN_HISTORY: true,\n CLOSE_HISTORY: true,\n SET_ENDPOINT_DISABLED: true,\n SET_CONFIG_STRING: true\n };\n\n if (generalActions[action.type]) {\n return state.set('general', reducers_5.default(state.general, action));\n }\n\n var selectedWorkspaceId = action.payload && action.payload.workspaceId ? action.payload.workspaceId : getSelectedWorkspaceId(state);\n var path = ['workspaces', selectedWorkspaceId];\n return state.setIn(path, workspaceReducers(state.getIn(path), action));\n};\n\nfunction makeStateFromTabs(tabs) {\n var endpoint = tabs[0].endpoint;\n var tabSessions = immutable_1.OrderedMap(tabs.map(reducers_2.sessionFromTab).reduce(function (acc, curr) {\n var _a;\n\n return __assign({}, acc, (_a = {}, _a[curr.id] = curr, _a));\n }, {}));\n var selectedSessionId = tabSessions.first().id;\n var workspace = makeWorkspace(endpoint).setIn(['sessions', 'sessions'], tabSessions).setIn(['sessions', 'selectedSessionId'], selectedSessionId);\n return new RootState().setIn(['workspaces', endpoint], workspace).set('selectedWorkspace', endpoint);\n}\n\nfunction makeWorkspace(endpoint) {\n var _a;\n\n var sessionState = reducers_2.makeSessionState(endpoint); // weird typescript error\n\n return new Workspace({\n docs: immutable_1.Map((_a = {}, _a[sessionState.selectedSessionId] = new reducers_1.DocsSession(), _a)),\n sessions: sessionState,\n sharing: new reducers_3.SharingState(),\n history: immutable_1.OrderedMap()\n });\n}\n\nexports.makeWorkspace = makeWorkspace;\nexports.default = exports.rootReducer;\nexports.getSessionCounts = immutableMemoize_1.immutableMemoize(function (state) {\n return state.workspaces.map(function (w) {\n return w.sessions.sessionCount;\n });\n});\n\nexports.getSettingsString = function (state) {\n return state.settingsString;\n};\n\nexports.getSettings = reselect_1.createSelector([exports.getSettingsString], parseSettingsString);\n\nfunction normalizeSettings(settings) {\n var theme = settings['editor.theme'];\n\n if (theme !== 'dark' && theme !== 'light') {\n settings['editor.theme'] = 'dark';\n }\n\n return __assign({}, exports.defaultSettings, settings);\n}\n\nfunction parseSettingsString(settingsString) {\n try {\n return normalizeSettings(JSON.parse(settingsString));\n } catch (e) {\n return exports.defaultSettings;\n }\n}\n\nfunction normalizeSettingsString(settingsString) {\n return JSON.stringify(parseSettingsString(settingsString), null, 2);\n}\n\nexports.normalizeSettingsString = normalizeSettingsString;\n\nexports.getTheme = function (state, customSettings) {\n var settings = customSettings || exports.getSettings(state);\n return settings['editor.theme'] || 'dark';\n};","import objectEntries from '../polyfills/objectEntries';\nexport default function toObjMap(obj) {\n /* eslint-enable no-redeclare */\n if (Object.getPrototypeOf(obj) === null) {\n return obj;\n }\n\n var map = Object.create(null);\n\n for (var _i2 = 0, _objectEntries2 = objectEntries(obj); _i2 < _objectEntries2.length; _i2++) {\n var _ref2 = _objectEntries2[_i2];\n var key = _ref2[0];\n var value = _ref2[1];\n map[key] = value;\n }\n\n return map;\n}","import zenObservable from 'zen-observable';\nvar Observable = zenObservable;\nexport default Observable;\nexport { Observable };","/**\n * Returns true if a value is undefined, or NaN.\n */\nexport default function isInvalid(value) {\n return value === undefined || value !== value;\n}","/**\n * Copyright (c) 2016, Lee Byron\n * All rights reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @flow\n * @ignore\n */\n\n/**\n * [Iterator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#iterator)\n * is a *protocol* which describes a standard way to produce a sequence of\n * values, typically the values of the Iterable represented by this Iterator.\n *\n * While described by the [ES2015 version of JavaScript](http://www.ecma-international.org/ecma-262/6.0/#sec-iterator-interface)\n * it can be utilized by any version of JavaScript.\n *\n * @external Iterator\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#iterator|MDN Iteration protocols}\n */\n\n/**\n * [Iterable](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#iterable)\n * is a *protocol* which when implemented allows a JavaScript object to define\n * their iteration behavior, such as what values are looped over in a\n * [`for...of`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of)\n * loop or `iterall`'s `forEach` function. Many [built-in types](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#Builtin_iterables)\n * implement the Iterable protocol, including `Array` and `Map`.\n *\n * While described by the [ES2015 version of JavaScript](http://www.ecma-international.org/ecma-262/6.0/#sec-iterable-interface)\n * it can be utilized by any version of JavaScript.\n *\n * @external Iterable\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#iterable|MDN Iteration protocols}\n */\n// In ES2015 environments, Symbol exists\nvar SYMBOL\n/*: any */\n= typeof Symbol === 'function' ? Symbol : void 0; // In ES2015 (or a polyfilled) environment, this will be Symbol.iterator\n\nvar SYMBOL_ITERATOR = SYMBOL && SYMBOL.iterator;\n/**\n * A property name to be used as the name of an Iterable's method responsible\n * for producing an Iterator, referred to as `@@iterator`. Typically represents\n * the value `Symbol.iterator` but falls back to the string `\"@@iterator\"` when\n * `Symbol.iterator` is not defined.\n *\n * Use `$$iterator` for defining new Iterables instead of `Symbol.iterator`,\n * but do not use it for accessing existing Iterables, instead use\n * {@link getIterator} or {@link isIterable}.\n *\n * @example\n *\n * var $$iterator = require('iterall').$$iterator\n *\n * function Counter (to) {\n * this.to = to\n * }\n *\n * Counter.prototype[$$iterator] = function () {\n * return {\n * to: this.to,\n * num: 0,\n * next () {\n * if (this.num >= this.to) {\n * return { value: undefined, done: true }\n * }\n * return { value: this.num++, done: false }\n * }\n * }\n * }\n *\n * var counter = new Counter(3)\n * for (var number of counter) {\n * console.log(number) // 0 ... 1 ... 2\n * }\n *\n * @type {Symbol|string}\n */\n\n/*:: declare export var $$iterator: '@@iterator'; */\n\nexport var $$iterator = SYMBOL_ITERATOR || '@@iterator';\n/**\n * Returns true if the provided object implements the Iterator protocol via\n * either implementing a `Symbol.iterator` or `\"@@iterator\"` method.\n *\n * @example\n *\n * var isIterable = require('iterall').isIterable\n * isIterable([ 1, 2, 3 ]) // true\n * isIterable('ABC') // true\n * isIterable({ length: 1, 0: 'Alpha' }) // false\n * isIterable({ key: 'value' }) // false\n * isIterable(new Map()) // true\n *\n * @param obj\n * A value which might implement the Iterable protocol.\n * @return {boolean} true if Iterable.\n */\n\n/*:: declare export function isIterable(obj: any): boolean; */\n\nexport function isIterable(obj) {\n return !!getIteratorMethod(obj);\n}\n/**\n * Returns true if the provided object implements the Array-like protocol via\n * defining a positive-integer `length` property.\n *\n * @example\n *\n * var isArrayLike = require('iterall').isArrayLike\n * isArrayLike([ 1, 2, 3 ]) // true\n * isArrayLike('ABC') // true\n * isArrayLike({ length: 1, 0: 'Alpha' }) // true\n * isArrayLike({ key: 'value' }) // false\n * isArrayLike(new Map()) // false\n *\n * @param obj\n * A value which might implement the Array-like protocol.\n * @return {boolean} true if Array-like.\n */\n\n/*:: declare export function isArrayLike(obj: any): boolean; */\n\nexport function isArrayLike(obj) {\n var length = obj != null && obj.length;\n return typeof length === 'number' && length >= 0 && length % 1 === 0;\n}\n/**\n * Returns true if the provided object is an Object (i.e. not a string literal)\n * and is either Iterable or Array-like.\n *\n * This may be used in place of [Array.isArray()][isArray] to determine if an\n * object should be iterated-over. It always excludes string literals and\n * includes Arrays (regardless of if it is Iterable). It also includes other\n * Array-like objects such as NodeList, TypedArray, and Buffer.\n *\n * @example\n *\n * var isCollection = require('iterall').isCollection\n * isCollection([ 1, 2, 3 ]) // true\n * isCollection('ABC') // false\n * isCollection({ length: 1, 0: 'Alpha' }) // true\n * isCollection({ key: 'value' }) // false\n * isCollection(new Map()) // true\n *\n * @example\n *\n * var forEach = require('iterall').forEach\n * if (isCollection(obj)) {\n * forEach(obj, function (value) {\n * console.log(value)\n * })\n * }\n *\n * @param obj\n * An Object value which might implement the Iterable or Array-like protocols.\n * @return {boolean} true if Iterable or Array-like Object.\n */\n\n/*:: declare export function isCollection(obj: any): boolean; */\n\nexport function isCollection(obj) {\n return Object(obj) === obj && (isArrayLike(obj) || isIterable(obj));\n}\n/**\n * If the provided object implements the Iterator protocol, its Iterator object\n * is returned. Otherwise returns undefined.\n *\n * @example\n *\n * var getIterator = require('iterall').getIterator\n * var iterator = getIterator([ 1, 2, 3 ])\n * iterator.next() // { value: 1, done: false }\n * iterator.next() // { value: 2, done: false }\n * iterator.next() // { value: 3, done: false }\n * iterator.next() // { value: undefined, done: true }\n *\n * @template T the type of each iterated value\n * @param {Iterable} iterable\n * An Iterable object which is the source of an Iterator.\n * @return {Iterator} new Iterator instance.\n */\n\n/*:: declare export var getIterator:\n & (<+TValue>(iterable: Iterable) => Iterator)\n & ((iterable: mixed) => void | Iterator); */\n\nexport function getIterator(iterable) {\n var method = getIteratorMethod(iterable);\n\n if (method) {\n return method.call(iterable);\n }\n}\n/**\n * If the provided object implements the Iterator protocol, the method\n * responsible for producing its Iterator object is returned.\n *\n * This is used in rare cases for performance tuning. This method must be called\n * with obj as the contextual this-argument.\n *\n * @example\n *\n * var getIteratorMethod = require('iterall').getIteratorMethod\n * var myArray = [ 1, 2, 3 ]\n * var method = getIteratorMethod(myArray)\n * if (method) {\n * var iterator = method.call(myArray)\n * }\n *\n * @template T the type of each iterated value\n * @param {Iterable} iterable\n * An Iterable object which defines an `@@iterator` method.\n * @return {function(): Iterator} `@@iterator` method.\n */\n\n/*:: declare export var getIteratorMethod:\n & (<+TValue>(iterable: Iterable) => (() => Iterator))\n & ((iterable: mixed) => (void | (() => Iterator))); */\n\nexport function getIteratorMethod(iterable) {\n if (iterable != null) {\n var method = SYMBOL_ITERATOR && iterable[SYMBOL_ITERATOR] || iterable['@@iterator'];\n\n if (typeof method === 'function') {\n return method;\n }\n }\n}\n/**\n * Similar to {@link getIterator}, this method returns a new Iterator given an\n * Iterable. However it will also create an Iterator for a non-Iterable\n * Array-like collection, such as Array in a non-ES2015 environment.\n *\n * `createIterator` is complimentary to `forEach`, but allows a \"pull\"-based\n * iteration as opposed to `forEach`'s \"push\"-based iteration.\n *\n * `createIterator` produces an Iterator for Array-likes with the same behavior\n * as ArrayIteratorPrototype described in the ECMAScript specification, and\n * does *not* skip over \"holes\".\n *\n * @example\n *\n * var createIterator = require('iterall').createIterator\n *\n * var myArraylike = { length: 3, 0: 'Alpha', 1: 'Bravo', 2: 'Charlie' }\n * var iterator = createIterator(myArraylike)\n * iterator.next() // { value: 'Alpha', done: false }\n * iterator.next() // { value: 'Bravo', done: false }\n * iterator.next() // { value: 'Charlie', done: false }\n * iterator.next() // { value: undefined, done: true }\n *\n * @template T the type of each iterated value\n * @param {Iterable|{ length: number }} collection\n * An Iterable or Array-like object to produce an Iterator.\n * @return {Iterator} new Iterator instance.\n */\n\n/*:: declare export var createIterator:\n & (<+TValue>(collection: Iterable) => Iterator)\n & ((collection: {length: number}) => Iterator)\n & ((collection: mixed) => (void | Iterator)); */\n\nexport function createIterator(collection) {\n if (collection != null) {\n var iterator = getIterator(collection);\n\n if (iterator) {\n return iterator;\n }\n\n if (isArrayLike(collection)) {\n return new ArrayLikeIterator(collection);\n }\n }\n} // When the object provided to `createIterator` is not Iterable but is\n// Array-like, this simple Iterator is created.\n\nfunction ArrayLikeIterator(obj) {\n this._o = obj;\n this._i = 0;\n} // Note: all Iterators are themselves Iterable.\n\n\nArrayLikeIterator.prototype[$$iterator] = function () {\n return this;\n}; // A simple state-machine determines the IteratorResult returned, yielding\n// each value in the Array-like object in order of their indicies.\n\n\nArrayLikeIterator.prototype.next = function () {\n if (this._o === void 0 || this._i >= this._o.length) {\n this._o = void 0;\n return {\n value: void 0,\n done: true\n };\n }\n\n return {\n value: this._o[this._i++],\n done: false\n };\n};\n/**\n * Given an object which either implements the Iterable protocol or is\n * Array-like, iterate over it, calling the `callback` at each iteration.\n *\n * Use `forEach` where you would expect to use a `for ... of` loop in ES6.\n * However `forEach` adheres to the behavior of [Array#forEach][] described in\n * the ECMAScript specification, skipping over \"holes\" in Array-likes. It will\n * also delegate to a `forEach` method on `collection` if one is defined,\n * ensuring native performance for `Arrays`.\n *\n * Similar to [Array#forEach][], the `callback` function accepts three\n * arguments, and is provided with `thisArg` as the calling context.\n *\n * Note: providing an infinite Iterator to forEach will produce an error.\n *\n * [Array#forEach]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach\n *\n * @example\n *\n * var forEach = require('iterall').forEach\n *\n * forEach(myIterable, function (value, index, iterable) {\n * console.log(value, index, iterable === myIterable)\n * })\n *\n * @example\n *\n * // ES6:\n * for (let value of myIterable) {\n * console.log(value)\n * }\n *\n * // Any JavaScript environment:\n * forEach(myIterable, function (value) {\n * console.log(value)\n * })\n *\n * @template T the type of each iterated value\n * @param {Iterable|{ length: number }} collection\n * The Iterable or array to iterate over.\n * @param {function(T, number, object)} callback\n * Function to execute for each iteration, taking up to three arguments\n * @param [thisArg]\n * Optional. Value to use as `this` when executing `callback`.\n */\n\n/*:: declare export var forEach:\n & (<+TValue, TCollection: Iterable>(\n collection: TCollection,\n callbackFn: (value: TValue, index: number, collection: TCollection) => any,\n thisArg?: any\n ) => void)\n & ((\n collection: TCollection,\n callbackFn: (value: mixed, index: number, collection: TCollection) => any,\n thisArg?: any\n ) => void); */\n\n\nexport function forEach(collection, callback, thisArg) {\n if (collection != null) {\n if (typeof collection.forEach === 'function') {\n return collection.forEach(callback, thisArg);\n }\n\n var i = 0;\n var iterator = getIterator(collection);\n\n if (iterator) {\n var step;\n\n while (!(step = iterator.next()).done) {\n callback.call(thisArg, step.value, i++, collection); // Infinite Iterators could cause forEach to run forever.\n // After a very large number of iterations, produce an error.\n\n /* istanbul ignore if */\n\n if (i > 9999999) {\n throw new TypeError('Near-infinite iteration.');\n }\n }\n } else if (isArrayLike(collection)) {\n for (; i < collection.length; i++) {\n if (collection.hasOwnProperty(i)) {\n callback.call(thisArg, collection[i], i, collection);\n }\n }\n }\n }\n} /////////////////////////////////////////////////////\n// //\n// ASYNC ITERATORS //\n// //\n/////////////////////////////////////////////////////\n\n/**\n * [AsyncIterable](https://tc39.github.io/proposal-async-iteration/#sec-asynciterable-interface)\n * is a *protocol* which when implemented allows a JavaScript object to define\n * an asynchronous iteration behavior, such as what values are looped over in\n * a [`for-await-of`](https://tc39.github.io/proposal-async-iteration/#sec-for-in-and-for-of-statements)\n * loop or `iterall`'s {@link forAwaitEach} function.\n *\n * While described as a proposed addition to the [ES2017 version of JavaScript](https://tc39.github.io/proposal-async-iteration/)\n * it can be utilized by any version of JavaScript.\n *\n * @external AsyncIterable\n * @see {@link https://tc39.github.io/proposal-async-iteration/#sec-asynciterable-interface|Async Iteration Proposal}\n * @template T The type of each iterated value\n * @property {function (): AsyncIterator} Symbol.asyncIterator\n * A method which produces an AsyncIterator for this AsyncIterable.\n */\n\n/**\n * [AsyncIterator](https://tc39.github.io/proposal-async-iteration/#sec-asynciterator-interface)\n * is a *protocol* which describes a standard way to produce and consume an\n * asynchronous sequence of values, typically the values of the\n * {@link AsyncIterable} represented by this {@link AsyncIterator}.\n *\n * AsyncIterator is similar to Observable or Stream. Like an {@link Iterator} it\n * also as a `next()` method, however instead of an IteratorResult,\n * calling this method returns a {@link Promise} for a IteratorResult.\n *\n * While described as a proposed addition to the [ES2017 version of JavaScript](https://tc39.github.io/proposal-async-iteration/)\n * it can be utilized by any version of JavaScript.\n *\n * @external AsyncIterator\n * @see {@link https://tc39.github.io/proposal-async-iteration/#sec-asynciterator-interface|Async Iteration Proposal}\n */\n// In ES2017 (or a polyfilled) environment, this will be Symbol.asyncIterator\n\nvar SYMBOL_ASYNC_ITERATOR = SYMBOL && SYMBOL.asyncIterator;\n/**\n * A property name to be used as the name of an AsyncIterable's method\n * responsible for producing an Iterator, referred to as `@@asyncIterator`.\n * Typically represents the value `Symbol.asyncIterator` but falls back to the\n * string `\"@@asyncIterator\"` when `Symbol.asyncIterator` is not defined.\n *\n * Use `$$asyncIterator` for defining new AsyncIterables instead of\n * `Symbol.asyncIterator`, but do not use it for accessing existing Iterables,\n * instead use {@link getAsyncIterator} or {@link isAsyncIterable}.\n *\n * @example\n *\n * var $$asyncIterator = require('iterall').$$asyncIterator\n *\n * function Chirper (to) {\n * this.to = to\n * }\n *\n * Chirper.prototype[$$asyncIterator] = function () {\n * return {\n * to: this.to,\n * num: 0,\n * next () {\n * return new Promise(resolve => {\n * if (this.num >= this.to) {\n * resolve({ value: undefined, done: true })\n * } else {\n * setTimeout(() => {\n * resolve({ value: this.num++, done: false })\n * }, 1000)\n * }\n * })\n * }\n * }\n * }\n *\n * var chirper = new Chirper(3)\n * for await (var number of chirper) {\n * console.log(number) // 0 ...wait... 1 ...wait... 2\n * }\n *\n * @type {Symbol|string}\n */\n\n/*:: declare export var $$asyncIterator: '@@asyncIterator'; */\n\nexport var $$asyncIterator = SYMBOL_ASYNC_ITERATOR || '@@asyncIterator';\n/**\n * Returns true if the provided object implements the AsyncIterator protocol via\n * either implementing a `Symbol.asyncIterator` or `\"@@asyncIterator\"` method.\n *\n * @example\n *\n * var isAsyncIterable = require('iterall').isAsyncIterable\n * isAsyncIterable(myStream) // true\n * isAsyncIterable('ABC') // false\n *\n * @param obj\n * A value which might implement the AsyncIterable protocol.\n * @return {boolean} true if AsyncIterable.\n */\n\n/*:: declare export function isAsyncIterable(obj: any): boolean; */\n\nexport function isAsyncIterable(obj) {\n return !!getAsyncIteratorMethod(obj);\n}\n/**\n * If the provided object implements the AsyncIterator protocol, its\n * AsyncIterator object is returned. Otherwise returns undefined.\n *\n * @example\n *\n * var getAsyncIterator = require('iterall').getAsyncIterator\n * var asyncIterator = getAsyncIterator(myStream)\n * asyncIterator.next().then(console.log) // { value: 1, done: false }\n * asyncIterator.next().then(console.log) // { value: 2, done: false }\n * asyncIterator.next().then(console.log) // { value: 3, done: false }\n * asyncIterator.next().then(console.log) // { value: undefined, done: true }\n *\n * @template T the type of each iterated value\n * @param {AsyncIterable} asyncIterable\n * An AsyncIterable object which is the source of an AsyncIterator.\n * @return {AsyncIterator} new AsyncIterator instance.\n */\n\n/*:: declare export var getAsyncIterator:\n & (<+TValue>(asyncIterable: AsyncIterable) => AsyncIterator)\n & ((asyncIterable: mixed) => (void | AsyncIterator)); */\n\nexport function getAsyncIterator(asyncIterable) {\n var method = getAsyncIteratorMethod(asyncIterable);\n\n if (method) {\n return method.call(asyncIterable);\n }\n}\n/**\n * If the provided object implements the AsyncIterator protocol, the method\n * responsible for producing its AsyncIterator object is returned.\n *\n * This is used in rare cases for performance tuning. This method must be called\n * with obj as the contextual this-argument.\n *\n * @example\n *\n * var getAsyncIteratorMethod = require('iterall').getAsyncIteratorMethod\n * var method = getAsyncIteratorMethod(myStream)\n * if (method) {\n * var asyncIterator = method.call(myStream)\n * }\n *\n * @template T the type of each iterated value\n * @param {AsyncIterable} asyncIterable\n * An AsyncIterable object which defines an `@@asyncIterator` method.\n * @return {function(): AsyncIterator} `@@asyncIterator` method.\n */\n\n/*:: declare export var getAsyncIteratorMethod:\n & (<+TValue>(asyncIterable: AsyncIterable) => (() => AsyncIterator))\n & ((asyncIterable: mixed) => (void | (() => AsyncIterator))); */\n\nexport function getAsyncIteratorMethod(asyncIterable) {\n if (asyncIterable != null) {\n var method = SYMBOL_ASYNC_ITERATOR && asyncIterable[SYMBOL_ASYNC_ITERATOR] || asyncIterable['@@asyncIterator'];\n\n if (typeof method === 'function') {\n return method;\n }\n }\n}\n/**\n * Similar to {@link getAsyncIterator}, this method returns a new AsyncIterator\n * given an AsyncIterable. However it will also create an AsyncIterator for a\n * non-async Iterable as well as non-Iterable Array-like collection, such as\n * Array in a pre-ES2015 environment.\n *\n * `createAsyncIterator` is complimentary to `forAwaitEach`, but allows a\n * buffering \"pull\"-based iteration as opposed to `forAwaitEach`'s\n * \"push\"-based iteration.\n *\n * `createAsyncIterator` produces an AsyncIterator for non-async Iterables as\n * described in the ECMAScript proposal [Async-from-Sync Iterator Objects](https://tc39.github.io/proposal-async-iteration/#sec-async-from-sync-iterator-objects).\n *\n * > Note: Creating `AsyncIterator`s requires the existence of `Promise`.\n * > While `Promise` has been available in modern browsers for a number of\n * > years, legacy browsers (like IE 11) may require a polyfill.\n *\n * @example\n *\n * var createAsyncIterator = require('iterall').createAsyncIterator\n *\n * var myArraylike = { length: 3, 0: 'Alpha', 1: 'Bravo', 2: 'Charlie' }\n * var iterator = createAsyncIterator(myArraylike)\n * iterator.next().then(console.log) // { value: 'Alpha', done: false }\n * iterator.next().then(console.log) // { value: 'Bravo', done: false }\n * iterator.next().then(console.log) // { value: 'Charlie', done: false }\n * iterator.next().then(console.log) // { value: undefined, done: true }\n *\n * @template T the type of each iterated value\n * @param {AsyncIterable|Iterable|{ length: number }} source\n * An AsyncIterable, Iterable, or Array-like object to produce an Iterator.\n * @return {AsyncIterator} new AsyncIterator instance.\n */\n\n/*:: declare export var createAsyncIterator:\n & (<+TValue>(\n collection: Iterable | TValue> | AsyncIterable\n ) => AsyncIterator)\n & ((collection: {length: number}) => AsyncIterator)\n & ((collection: mixed) => (void | AsyncIterator)); */\n\nexport function createAsyncIterator(source) {\n if (source != null) {\n var asyncIterator = getAsyncIterator(source);\n\n if (asyncIterator) {\n return asyncIterator;\n }\n\n var iterator = createIterator(source);\n\n if (iterator) {\n return new AsyncFromSyncIterator(iterator);\n }\n }\n} // When the object provided to `createAsyncIterator` is not AsyncIterable but is\n// sync Iterable, this simple wrapper is created.\n\nfunction AsyncFromSyncIterator(iterator) {\n this._i = iterator;\n} // Note: all AsyncIterators are themselves AsyncIterable.\n\n\nAsyncFromSyncIterator.prototype[$$asyncIterator] = function () {\n return this;\n}; // A simple state-machine determines the IteratorResult returned, yielding\n// each value in the Array-like object in order of their indicies.\n\n\nAsyncFromSyncIterator.prototype.next = function () {\n var step = this._i.next();\n\n return Promise.resolve(step.value).then(function (value) {\n return {\n value: value,\n done: step.done\n };\n });\n};\n/**\n * Given an object which either implements the AsyncIterable protocol or is\n * Array-like, iterate over it, calling the `callback` at each iteration.\n *\n * Use `forAwaitEach` where you would expect to use a [for-await-of](https://tc39.github.io/proposal-async-iteration/#sec-for-in-and-for-of-statements) loop.\n *\n * Similar to [Array#forEach][], the `callback` function accepts three\n * arguments, and is provided with `thisArg` as the calling context.\n *\n * > Note: Using `forAwaitEach` requires the existence of `Promise`.\n * > While `Promise` has been available in modern browsers for a number of\n * > years, legacy browsers (like IE 11) may require a polyfill.\n *\n * @example\n *\n * var forAwaitEach = require('iterall').forAwaitEach\n *\n * forAwaitEach(myIterable, function (value, index, iterable) {\n * console.log(value, index, iterable === myIterable)\n * })\n *\n * @example\n *\n * // ES2017:\n * for await (let value of myAsyncIterable) {\n * console.log(await doSomethingAsync(value))\n * }\n * console.log('done')\n *\n * // Any JavaScript environment:\n * forAwaitEach(myAsyncIterable, function (value) {\n * return doSomethingAsync(value).then(console.log)\n * }).then(function () {\n * console.log('done')\n * })\n *\n * @template T the type of each iterated value\n * @param {AsyncIterable|Iterable | T>|{ length: number }} source\n * The AsyncIterable or array to iterate over.\n * @param {function(T, number, object)} callback\n * Function to execute for each iteration, taking up to three arguments\n * @param [thisArg]\n * Optional. Value to use as `this` when executing `callback`.\n */\n\n/*:: declare export var forAwaitEach:\n & (<+TValue, TCollection: Iterable | TValue> | AsyncIterable>(\n collection: TCollection,\n callbackFn: (value: TValue, index: number, collection: TCollection) => any,\n thisArg?: any\n ) => Promise)\n & ((\n collection: TCollection,\n callbackFn: (value: mixed, index: number, collection: TCollection) => any,\n thisArg?: any\n ) => Promise); */\n\n\nexport function forAwaitEach(source, callback, thisArg) {\n var asyncIterator = createAsyncIterator(source);\n\n if (asyncIterator) {\n var i = 0;\n return new Promise(function (resolve, reject) {\n function next() {\n asyncIterator.next().then(function (step) {\n if (!step.done) {\n Promise.resolve(callback.call(thisArg, step.value, i++, source)).then(next).catch(reject);\n } else {\n resolve();\n } // Explicitly return null, silencing bluebird-style warnings.\n\n\n return null;\n }).catch(reject); // Explicitly return null, silencing bluebird-style warnings.\n\n return null;\n }\n\n next();\n });\n }\n}","/**\n * The `defineToStringTag()` function checks first to see if the runtime\n * supports the `Symbol` class and then if the `Symbol.toStringTag` constant\n * is defined as a `Symbol` instance. If both conditions are met, the\n * Symbol.toStringTag property is defined as a getter that returns the\n * supplied class constructor's name.\n *\n * @method defineToStringTag\n *\n * @param {Class} classObject a class such as Object, String, Number but\n * typically one of your own creation through the class keyword; `class A {}`,\n * for example.\n */\nexport default function defineToStringTag(classObject) {\n if (typeof Symbol === 'function' && Symbol.toStringTag) {\n Object.defineProperty(classObject.prototype, Symbol.toStringTag, {\n get: function get() {\n return this.constructor.name;\n }\n });\n }\n}","import nodejsCustomInspectSymbol from './nodejsCustomInspectSymbol';\n/**\n * The `defineToJSON()` function defines toJSON() and inspect() prototype\n * methods, if no function provided they become aliases for toString().\n */\n\nexport default function defineToJSON(classObject) {\n var fn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : classObject.prototype.toString;\n classObject.prototype.toJSON = fn;\n classObject.prototype.inspect = fn;\n\n if (nodejsCustomInspectSymbol) {\n classObject.prototype[nodejsCustomInspectSymbol] = fn;\n }\n}","export default (function (value) {\n return typeof value === 'function';\n});","export default (function (value) {\n return typeof value === 'symbol' || typeof value === 'object' && Object.prototype.toString.call(value) === '[object Symbol]';\n});","export default (function (value) {\n return value.length === 0;\n});","export default (function (value) {\n return value.toString();\n});","export default (function (value) {\n return typeof value === 'string';\n});","export var DEFAULT_NAMESPACE = '/';\nexport var ACTION_TYPE_DELIMITER = '||';","import invariant from 'invariant';\nimport isFunction from './utils/isFunction';\nimport isSymbol from './utils/isSymbol';\nimport isEmpty from './utils/isEmpty';\nimport toString from './utils/toString';\nimport isString from './utils/isString';\nimport { ACTION_TYPE_DELIMITER } from './constants';\n\nfunction isValidActionType(type) {\n return isString(type) || isFunction(type) || isSymbol(type);\n}\n\nfunction isValidActionTypes(types) {\n if (isEmpty(types)) {\n return false;\n }\n\n return types.every(isValidActionType);\n}\n\nexport default function combineActions() {\n for (var _len = arguments.length, actionsTypes = new Array(_len), _key = 0; _key < _len; _key++) {\n actionsTypes[_key] = arguments[_key];\n }\n\n invariant(isValidActionTypes(actionsTypes), 'Expected action types to be strings, symbols, or action creators');\n var combinedActionType = actionsTypes.map(toString).join(ACTION_TYPE_DELIMITER);\n return {\n toString: function toString() {\n return combinedActionType;\n }\n };\n}","export default (function (value) {\n return value;\n});","export default (function (value) {\n return value === null;\n});","import invariant from 'invariant';\nimport isFunction from './utils/isFunction';\nimport identity from './utils/identity';\nimport isNull from './utils/isNull';\nexport default function createAction(type, payloadCreator, metaCreator) {\n if (payloadCreator === void 0) {\n payloadCreator = identity;\n }\n\n invariant(isFunction(payloadCreator) || isNull(payloadCreator), 'Expected payloadCreator to be a function, undefined or null');\n var finalPayloadCreator = isNull(payloadCreator) || payloadCreator === identity ? identity : function (head) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return head instanceof Error ? head : payloadCreator.apply(void 0, [head].concat(args));\n };\n var hasMeta = isFunction(metaCreator);\n var typeString = type.toString();\n\n var actionCreator = function actionCreator() {\n var payload = finalPayloadCreator.apply(void 0, arguments);\n var action = {\n type: type\n };\n\n if (payload instanceof Error) {\n action.error = true;\n }\n\n if (payload !== undefined) {\n action.payload = payload;\n }\n\n if (hasMeta) {\n action.meta = metaCreator.apply(void 0, arguments);\n }\n\n return action;\n };\n\n actionCreator.toString = function () {\n return typeString;\n };\n\n return actionCreator;\n}","export default (function (value) {\n if (typeof value !== 'object' || value === null) return false;\n var proto = value;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(value) === proto;\n});","export default (function (value) {\n return Array.isArray(value);\n});","export default (function (value) {\n return value === null || value === undefined;\n});","export default (function (array) {\n return array[array.length - 1];\n});","import camelCase from 'to-camel-case';\nvar namespacer = '/';\nexport default (function (type) {\n return type.indexOf(namespacer) === -1 ? camelCase(type) : type.split(namespacer).map(camelCase).join(namespacer);\n});","export default (function (array, callback) {\n return array.reduce(function (partialObject, element) {\n return callback(partialObject, element);\n }, {});\n});","export default (function (value) {\n return typeof Map !== 'undefined' && value instanceof Map;\n});","import isMap from './isMap';\nexport default function ownKeys(object) {\n if (isMap(object)) {\n // We are using loose transforms in babel. Here we are trying to convert an\n // interable to an array. Loose mode expects everything to already be an\n // array. The problem is that our eslint rules encourage us to prefer\n // spread over Array.from.\n //\n // Instead of disabling loose mode we simply disable the warning.\n // eslint-disable-next-line unicorn/prefer-spread\n return Array.from(object.keys());\n }\n\n if (typeof Reflect !== 'undefined' && typeof Reflect.ownKeys === 'function') {\n return Reflect.ownKeys(object);\n }\n\n var keys = Object.getOwnPropertyNames(object);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n keys = keys.concat(Object.getOwnPropertySymbols(object));\n }\n\n return keys;\n}","import isMap from './isMap';\nexport default function get(key, x) {\n return isMap(x) ? x.get(key) : x[key];\n}","import { DEFAULT_NAMESPACE, ACTION_TYPE_DELIMITER } from '../constants';\nimport ownKeys from './ownKeys';\nimport get from './get';\nexport default (function (predicate) {\n return function flatten(map, _temp, partialFlatMap, partialFlatActionType) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$namespace = _ref.namespace,\n namespace = _ref$namespace === void 0 ? DEFAULT_NAMESPACE : _ref$namespace,\n prefix = _ref.prefix;\n\n if (partialFlatMap === void 0) {\n partialFlatMap = {};\n }\n\n if (partialFlatActionType === void 0) {\n partialFlatActionType = '';\n }\n\n function connectNamespace(type) {\n var _ref2;\n\n if (!partialFlatActionType) return type;\n var types = type.toString().split(ACTION_TYPE_DELIMITER);\n var partials = partialFlatActionType.split(ACTION_TYPE_DELIMITER);\n return (_ref2 = []).concat.apply(_ref2, partials.map(function (p) {\n return types.map(function (t) {\n return \"\" + p + namespace + t;\n });\n })).join(ACTION_TYPE_DELIMITER);\n }\n\n function connectPrefix(type) {\n if (partialFlatActionType || !prefix || prefix && new RegExp(\"^\" + prefix + namespace).test(type)) {\n return type;\n }\n\n return \"\" + prefix + namespace + type;\n }\n\n ownKeys(map).forEach(function (type) {\n var nextNamespace = connectPrefix(connectNamespace(type));\n var mapValue = get(type, map);\n\n if (predicate(mapValue)) {\n flatten(mapValue, {\n namespace: namespace,\n prefix: prefix\n }, partialFlatMap, nextNamespace);\n } else {\n partialFlatMap[nextNamespace] = mapValue;\n }\n });\n return partialFlatMap;\n };\n});","import isPlainObject from './isPlainObject';\nimport flattenWhenNode from './flattenWhenNode';\nexport default flattenWhenNode(isPlainObject);","import { DEFAULT_NAMESPACE } from '../constants';\nimport isEmpty from './isEmpty';\nimport camelCase from './camelCase';\nexport default function unflattenActionCreators(flatActionCreators, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$namespace = _ref.namespace,\n namespace = _ref$namespace === void 0 ? DEFAULT_NAMESPACE : _ref$namespace,\n prefix = _ref.prefix;\n\n function unflatten(flatActionType, partialNestedActionCreators, partialFlatActionTypePath) {\n var nextNamespace = camelCase(partialFlatActionTypePath.shift());\n\n if (isEmpty(partialFlatActionTypePath)) {\n partialNestedActionCreators[nextNamespace] = flatActionCreators[flatActionType];\n } else {\n if (!partialNestedActionCreators[nextNamespace]) {\n partialNestedActionCreators[nextNamespace] = {};\n }\n\n unflatten(flatActionType, partialNestedActionCreators[nextNamespace], partialFlatActionTypePath);\n }\n }\n\n var nestedActionCreators = {};\n Object.getOwnPropertyNames(flatActionCreators).forEach(function (type) {\n var unprefixedType = prefix ? type.replace(\"\" + prefix + namespace, '') : type;\n return unflatten(type, nestedActionCreators, unprefixedType.split(namespace));\n });\n return nestedActionCreators;\n}","function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nimport invariant from 'invariant';\nimport isPlainObject from './utils/isPlainObject';\nimport isFunction from './utils/isFunction';\nimport identity from './utils/identity';\nimport isArray from './utils/isArray';\nimport isString from './utils/isString';\nimport isNil from './utils/isNil';\nimport getLastElement from './utils/getLastElement';\nimport camelCase from './utils/camelCase';\nimport arrayToObject from './utils/arrayToObject';\nimport flattenActionMap from './utils/flattenActionMap';\nimport unflattenActionCreators from './utils/unflattenActionCreators';\nimport createAction from './createAction';\nimport { DEFAULT_NAMESPACE } from './constants';\nexport default function createActions(actionMap) {\n for (var _len = arguments.length, identityActions = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n identityActions[_key - 1] = arguments[_key];\n }\n\n var options = isPlainObject(getLastElement(identityActions)) ? identityActions.pop() : {};\n invariant(identityActions.every(isString) && (isString(actionMap) || isPlainObject(actionMap)), 'Expected optional object followed by string action types');\n\n if (isString(actionMap)) {\n return actionCreatorsFromIdentityActions([actionMap].concat(identityActions), options);\n }\n\n return _objectSpread({}, actionCreatorsFromActionMap(actionMap, options), actionCreatorsFromIdentityActions(identityActions, options));\n}\n\nfunction actionCreatorsFromActionMap(actionMap, options) {\n var flatActionMap = flattenActionMap(actionMap, options);\n var flatActionCreators = actionMapToActionCreators(flatActionMap);\n return unflattenActionCreators(flatActionCreators, options);\n}\n\nfunction actionMapToActionCreators(actionMap, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n prefix = _ref.prefix,\n _ref$namespace = _ref.namespace,\n namespace = _ref$namespace === void 0 ? DEFAULT_NAMESPACE : _ref$namespace;\n\n function isValidActionMapValue(actionMapValue) {\n if (isFunction(actionMapValue) || isNil(actionMapValue)) {\n return true;\n }\n\n if (isArray(actionMapValue)) {\n var _actionMapValue$ = actionMapValue[0],\n payload = _actionMapValue$ === void 0 ? identity : _actionMapValue$,\n meta = actionMapValue[1];\n return isFunction(payload) && isFunction(meta);\n }\n\n return false;\n }\n\n return arrayToObject(Object.keys(actionMap), function (partialActionCreators, type) {\n var _objectSpread2;\n\n var actionMapValue = actionMap[type];\n invariant(isValidActionMapValue(actionMapValue), 'Expected function, undefined, null, or array with payload and meta ' + (\"functions for \" + type));\n var prefixedType = prefix ? \"\" + prefix + namespace + type : type;\n var actionCreator = isArray(actionMapValue) ? createAction.apply(void 0, [prefixedType].concat(actionMapValue)) : createAction(prefixedType, actionMapValue);\n return _objectSpread({}, partialActionCreators, (_objectSpread2 = {}, _objectSpread2[type] = actionCreator, _objectSpread2));\n });\n}\n\nfunction actionCreatorsFromIdentityActions(identityActions, options) {\n var actionMap = arrayToObject(identityActions, function (partialActionMap, type) {\n var _objectSpread3;\n\n return _objectSpread({}, partialActionMap, (_objectSpread3 = {}, _objectSpread3[type] = identity, _objectSpread3));\n });\n var actionCreators = actionMapToActionCreators(actionMap, options);\n return arrayToObject(Object.keys(actionCreators), function (partialActionCreators, type) {\n var _objectSpread4;\n\n return _objectSpread({}, partialActionCreators, (_objectSpread4 = {}, _objectSpread4[camelCase(type)] = actionCreators[type], _objectSpread4));\n });\n}","import curry from 'just-curry-it';\nimport createAction from './createAction';\nexport default (function (type, payloadCreator) {\n return curry(createAction(type, payloadCreator), payloadCreator.length);\n});","export default (function (value) {\n return value === undefined;\n});","import invariant from 'invariant';\nimport isFunction from './utils/isFunction';\nimport isPlainObject from './utils/isPlainObject';\nimport identity from './utils/identity';\nimport isNil from './utils/isNil';\nimport isUndefined from './utils/isUndefined';\nimport toString from './utils/toString';\nimport { ACTION_TYPE_DELIMITER } from './constants';\nexport default function handleAction(type, reducer, defaultState) {\n if (reducer === void 0) {\n reducer = identity;\n }\n\n var types = toString(type).split(ACTION_TYPE_DELIMITER);\n invariant(!isUndefined(defaultState), \"defaultState for reducer handling \" + types.join(', ') + \" should be defined\");\n invariant(isFunction(reducer) || isPlainObject(reducer), 'Expected reducer to be a function or object with next and throw reducers');\n\n var _ref = isFunction(reducer) ? [reducer, reducer] : [reducer.next, reducer.throw].map(function (aReducer) {\n return isNil(aReducer) ? identity : aReducer;\n }),\n nextReducer = _ref[0],\n throwReducer = _ref[1];\n\n return function (state, action) {\n if (state === void 0) {\n state = defaultState;\n }\n\n var actionType = action.type;\n\n if (!actionType || types.indexOf(toString(actionType)) === -1) {\n return state;\n }\n\n return (action.error === true ? throwReducer : nextReducer)(state, action);\n };\n}","export default (function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var initialState = typeof args[args.length - 1] !== 'function' && args.pop();\n var reducers = args;\n\n if (typeof initialState === 'undefined') {\n throw new TypeError('The initial state may not be undefined. If you do not want to set a value for this reducer, you can use null instead of undefined.');\n }\n\n return function (prevState, value) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n var prevStateIsUndefined = typeof prevState === 'undefined';\n var valueIsUndefined = typeof value === 'undefined';\n\n if (prevStateIsUndefined && valueIsUndefined && initialState) {\n return initialState;\n }\n\n return reducers.reduce(function (newState, reducer) {\n return reducer.apply(undefined, [newState, value].concat(args));\n }, prevStateIsUndefined && !valueIsUndefined && initialState ? initialState : prevState);\n };\n});","import isPlainObject from './isPlainObject';\nimport isMap from './isMap';\nimport hasGeneratorInterface from './hasGeneratorInterface';\nimport flattenWhenNode from './flattenWhenNode';\nexport default flattenWhenNode(function (node) {\n return (isPlainObject(node) || isMap(node)) && !hasGeneratorInterface(node);\n});","import ownKeys from './ownKeys';\nexport default function hasGeneratorInterface(handler) {\n var keys = ownKeys(handler);\n var hasOnlyInterfaceNames = keys.every(function (ownKey) {\n return ownKey === 'next' || ownKey === 'throw';\n });\n return keys.length && keys.length <= 2 && hasOnlyInterfaceNames;\n}","import reduceReducers from 'reduce-reducers';\nimport invariant from 'invariant';\nimport isPlainObject from './utils/isPlainObject';\nimport isMap from './utils/isMap';\nimport ownKeys from './utils/ownKeys';\nimport flattenReducerMap from './utils/flattenReducerMap';\nimport handleAction from './handleAction';\nimport get from './utils/get';\nexport default function handleActions(handlers, defaultState, options) {\n if (options === void 0) {\n options = {};\n }\n\n invariant(isPlainObject(handlers) || isMap(handlers), 'Expected handlers to be a plain object.');\n var flattenedReducerMap = flattenReducerMap(handlers, options);\n var reducers = ownKeys(flattenedReducerMap).map(function (type) {\n return handleAction(type, get(type, flattenedReducerMap), defaultState);\n });\n var reducer = reduceReducers.apply(void 0, reducers.concat([defaultState]));\n return function (state, action) {\n if (state === void 0) {\n state = defaultState;\n }\n\n return reducer(state, action);\n };\n}","import combineActions from './combineActions';\nimport createAction from './createAction';\nimport createActions from './createActions';\nimport createCurriedAction from './createCurriedAction';\nimport handleAction from './handleAction';\nimport handleActions from './handleActions';\nexport { combineActions, createAction, createActions, createCurriedAction, handleAction, handleActions };","/* eslint-disable no-redeclare */\n// $FlowFixMe workaround for: https://github.com/facebook/flow/issues/5838\nvar objectEntries = Object.entries || function (obj) {\n return Object.keys(obj).map(function (key) {\n return [key, obj[key]];\n });\n};\n\nexport default objectEntries;","import { Kind } from './kinds';\nexport function isDefinitionNode(node) {\n return isExecutableDefinitionNode(node) || isTypeSystemDefinitionNode(node) || isTypeSystemExtensionNode(node);\n}\nexport function isExecutableDefinitionNode(node) {\n return node.kind === Kind.OPERATION_DEFINITION || node.kind === Kind.FRAGMENT_DEFINITION;\n}\nexport function isSelectionNode(node) {\n return node.kind === Kind.FIELD || node.kind === Kind.FRAGMENT_SPREAD || node.kind === Kind.INLINE_FRAGMENT;\n}\nexport function isValueNode(node) {\n return node.kind === Kind.VARIABLE || node.kind === Kind.INT || node.kind === Kind.FLOAT || node.kind === Kind.STRING || node.kind === Kind.BOOLEAN || node.kind === Kind.NULL || node.kind === Kind.ENUM || node.kind === Kind.LIST || node.kind === Kind.OBJECT;\n}\nexport function isTypeNode(node) {\n return node.kind === Kind.NAMED_TYPE || node.kind === Kind.LIST_TYPE || node.kind === Kind.NON_NULL_TYPE;\n}\nexport function isTypeSystemDefinitionNode(node) {\n return node.kind === Kind.SCHEMA_DEFINITION || isTypeDefinitionNode(node) || node.kind === Kind.DIRECTIVE_DEFINITION;\n}\nexport function isTypeDefinitionNode(node) {\n return node.kind === Kind.SCALAR_TYPE_DEFINITION || node.kind === Kind.OBJECT_TYPE_DEFINITION || node.kind === Kind.INTERFACE_TYPE_DEFINITION || node.kind === Kind.UNION_TYPE_DEFINITION || node.kind === Kind.ENUM_TYPE_DEFINITION || node.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION;\n}\nexport function isTypeSystemExtensionNode(node) {\n return node.kind === Kind.SCHEMA_EXTENSION || isTypeExtensionNode(node);\n}\nexport function isTypeExtensionNode(node) {\n return node.kind === Kind.SCALAR_TYPE_EXTENSION || node.kind === Kind.OBJECT_TYPE_EXTENSION || node.kind === Kind.INTERFACE_TYPE_EXTENSION || node.kind === Kind.UNION_TYPE_EXTENSION || node.kind === Kind.ENUM_TYPE_EXTENSION || node.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION;\n}","/**\n * A replacement for instanceof which includes an error warning when multi-realm\n * constructors are detected.\n */\n// See: https://expressjs.com/en/advanced/best-practice-performance.html#set-node_env-to-production\n// See: https://webpack.js.org/guides/production/\nexport default process.env.NODE_ENV === 'production' ? // eslint-disable-next-line no-shadow\nfunction instanceOf(value, constructor) {\n return value instanceof constructor;\n} : // eslint-disable-next-line no-shadow\nfunction instanceOf(value, constructor) {\n if (value instanceof constructor) {\n return true;\n }\n\n if (value) {\n var valueClass = value.constructor;\n var className = constructor.name;\n\n if (className && valueClass && valueClass.name === className) {\n throw new Error(\"Cannot use \".concat(className, \" \\\"\").concat(value, \"\\\" from another module or realm.\\n\\nEnsure that there is only one instance of \\\"graphql\\\" in the node_modules\\ndirectory. If different versions of \\\"graphql\\\" are the dependencies of other\\nrelied on modules, use \\\"resolutions\\\" to ensure only one version is installed.\\n\\nhttps://yarnpkg.com/en/docs/selective-version-resolutions\\n\\nDuplicate \\\"graphql\\\" modules cannot be used at the same time since different\\nversions may have different capabilities and behavior. The data from one\\nversion used in the function from another could produce confusing and\\nspurious results.\"));\n }\n }\n\n return false;\n};","\"use strict\";\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar __rest = undefined && undefined.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar Svg = function Svg(_a) {\n var title = _a.title,\n children = _a.children,\n props = __rest(_a, [\"title\", \"children\"]);\n\n return React.createElement(\"svg\", props, title ? React.createElement(\"title\", null, title) : undefined, children);\n};\n\nexports.AddIcon = function (props) {\n return React.createElement(Svg, _extends({}, props, {\n viewBox: \"0 0 50 50\"\n }), React.createElement(\"line\", {\n x1: \"25\",\n y1: \"13.1\",\n x2: \"25\",\n y2: \"36.9\"\n }), React.createElement(\"line\", {\n x1: \"36.9\",\n y1: \"25\",\n x2: \"13.1\",\n y2: \"25\"\n }));\n};\n\nexports.AddFullIcon = function (props) {\n return React.createElement(Svg, _extends({\n x: \"0px\",\n y: \"0px\",\n viewBox: \"-1 3 50 50\"\n }, props), React.createElement(\"line\", {\n x1: \"24\",\n y1: \"7.27\",\n x2: \"24\",\n y2: \"48.73\"\n }), React.createElement(\"line\", {\n x1: \"44.73\",\n y1: \"28\",\n x2: \"3.27\",\n y2: \"28\"\n }));\n};\n\nexports.FullArrowRightIcon = function (props) {\n return React.createElement(Svg, _extends({}, props, {\n viewBox: \"0 0 14 11\"\n }), React.createElement(\"path\", {\n d: \"M13.32,4.97L8.99,0.64c-0.29-0.29-0.77-0.29-1.06,0s-0.29,0.77,0,1.06l2.97,2.97H1.21 C0.8,4.67,0.46,5,0.46,5.42S0.8,6.17,1.21,6.17h9.85L7.93,9.3c-0.29,0.29-0.29,0.77,0,1.06c0.15,0.15,0.34,0.22,0.53,0.22 s0.38-0.07,0.53-0.22l4.33-4.33C13.61,5.74,13.61,5.26,13.32,4.97z\"\n }));\n}; // export const ArrowRight = ({ width, height, color }: IProps) => (\n// \n// \n// \n// )\n\n\nexports.SettingsIcon = function (props) {\n return React.createElement(Svg, _extends({}, props, {\n viewBox: \"0 0 50 50\"\n }), React.createElement(\"path\", {\n d: \"M48,21h-5.71c-0.4-1.58-0.91-3.33-1.56-4.66l4.06-4.06c0.19-0.19,0.29-0.44,0.29-0.71 c0-0.27-0.11-0.52-0.29-0.71L39.14,5.2c-0.39-0.39-1.02-0.39-1.41,0l-4.06,4.06C32.33,8.62,30.58,8.11,29,7.71V2c0-0.55-0.45-1-1-1 h-6c-0.55,0-1,0.45-1,1v5.71c-1.58,0.4-3.33,0.91-4.66,1.55L12.27,5.2c-0.39-0.39-1.02-0.39-1.41,0L5.2,10.86 c-0.39,0.39-0.39,1.02,0,1.41l4.07,4.07C8.62,17.66,8.11,19.42,7.71,21H2c-0.55,0-1,0.45-1,1v6c0,0.55,0.45,1,1,1h5.71 c0.4,1.58,0.91,3.34,1.56,4.66L5.2,37.73c-0.19,0.19-0.29,0.44-0.29,0.71s0.11,0.52,0.29,0.71l5.66,5.66c0.38,0.38,1.04,0.38,1.41,0 l4.07-4.06c1.32,0.65,3.08,1.15,4.66,1.56V48c0,0.55,0.45,1,1,1h6c0.55,0,1-0.45,1-1v-5.71c1.58-0.4,3.34-0.91,4.66-1.56l4.07,4.06 c0.39,0.39,1.02,0.39,1.41,0l5.66-5.66c0.39-0.39,0.39-1.02,0-1.41l-4.06-4.07c0.65-1.33,1.16-3.08,1.56-4.66H48c0.55,0,1-0.45,1-1 v-6C49,21.45,48.55,21,48,21 M25,33c-4.41,0-8-3.59-8-8s3.59-8,8-8s8,3.59,8,8S29.41,33,25,33\"\n }));\n};\n\nexports.CrossIcon = function (props) {\n return React.createElement(Svg, _extends({}, props, {\n viewBox: \"0 0 50 50\"\n }), React.createElement(\"line\", {\n x1: \"4\",\n y1: \"4\",\n x2: \"46\",\n y2: \"46\"\n }), React.createElement(\"line\", {\n x1: \"46\",\n y1: \"4\",\n x2: \"4\",\n y2: \"46\"\n }));\n};\n\nexports.ArrowRight = function (props) {\n return React.createElement(Svg, _extends({\n width: 14,\n height: 11\n }, props, {\n viewBox: \"-1 -1 14 11\"\n }), React.createElement(\"path\", {\n d: \"M5,8.79825579 L5,-1.79402089\",\n id: \"Stroke-3\",\n stroke: \"#FFFFFF\",\n strokeWidth: \"1.5\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n fill: \"none\",\n transform: \"translate(5.750000, 3.502117) rotate(-90.000000) translate(-5.750000, -3.502117) \"\n }), React.createElement(\"polyline\", {\n id: \"Stroke-5\",\n stroke: \"#FFFFFF\",\n strokeWidth: \"1.5\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n fill: \"none\",\n transform: \"translate(9.868295, 4.333992) rotate(-90.000000) translate(-9.868295, -4.333992) \",\n points: \"14.2022868 2.16699605 9.86829475 6.50098814 5.53430265 2.16699605\"\n }));\n};\n\nexports.History = function (props) {\n return React.createElement(Svg, _extends({}, props, {\n viewBox: \"0 0 50 50\",\n fill: \"none\"\n }), React.createElement(\"polyline\", {\n points: \"4.33,19.64 9.7,27.69 15.95,20.54 \"\n }), React.createElement(\"path\", {\n d: \"M9.71,27.69C8.36,16.81,16.68,8.38,26.06,8.03c9.37-0.35,17.25,6.97,17.6,16.35 c0.35,9.38-6.97,17.26-16.35,17.6\"\n }), React.createElement(\"polyline\", {\n points: \"26.68,16.06 26.68,25.89 35.62,25.89 \"\n }));\n};\n\nexports.Star = function (_a) {\n var height = _a.height,\n width = _a.width,\n stroke = _a.stroke,\n fill = _a.fill,\n strokeWidth = _a.strokeWidth,\n onClick = _a.onClick,\n props = __rest(_a, [\"height\", \"width\", \"stroke\", \"fill\", \"strokeWidth\", \"onClick\"]);\n\n return React.createElement(Svg, _extends({\n width: width,\n height: height,\n fill: fill ? fill : 'none',\n stroke: stroke ? stroke : 'none',\n strokeWidth: strokeWidth,\n viewBox: \"118 12 16 16\",\n onClick: onClick\n }, props), React.createElement(\"polygon\", {\n points: \"126 24 121.297718 26.472136 122.195774 21.236068 118.391548 17.527864 123.648859 16.763932 126 12 128.351141 16.763932 133.608452 17.527864 129.804226 21.236068 130.702282 26.472136\"\n }));\n};\n\nexports.Search = function (_a) {\n var height = _a.height,\n width = _a.width,\n strokeWidth = _a.strokeWidth,\n color = _a.color,\n props = __rest(_a, [\"height\", \"width\", \"strokeWidth\", \"color\"]);\n\n return React.createElement(Svg, _extends({\n width: width,\n height: height,\n viewBox: \"0 0 50 50\",\n strokeWidth: strokeWidth,\n stroke: color,\n fill: \"none\"\n }, props), React.createElement(\"circle\", {\n cx: \"17.82\",\n cy: \"18.11\",\n r: \"16.21\"\n }), React.createElement(\"line\", {\n x1: \"29.28\",\n y1: \"29.57\",\n x2: \"48.21\",\n y2: \"48.5\"\n }));\n};\n\nexports.ShareIcon = function (_a) {\n var width = _a.width,\n height = _a.height,\n color = _a.color,\n props = __rest(_a, [\"width\", \"height\", \"color\"]);\n\n return React.createElement(Svg, _extends({\n width: width,\n height: height,\n viewBox: \"0 0 50 50\",\n stroke: color\n }, props), React.createElement(\"path\", {\n d: \"M16.47 15.56c-.36 0-.65.3-.65.67v20.22c0 .37.29.67.65.67h9.06c.36 0 .65-.3.65-.67s-.29-.67-.65-.67h-8.41V16.91h1.29v.67c0 .37.29.67.65.67h10.35c.36 0 .65-.3.65-.67v-.67h1.29v6.07c0 .37.29.67.65.67.36 0 .65-.3.65-.67v-6.74a.66.66 0 0 0-.65-.67h-1.94v-1.35h3.88v8.76c0 .37.29.67.65.67.36 0 .65-.3.65-.67v-9.44a.66.66 0 0 0-.65-.67h-4.53v-.67a.66.66 0 0 0-.65-.67H27.4c-.3-1.54-1.61-2.7-3.17-2.7-1.56 0-2.87 1.16-3.17 2.7h-2.01c-.36 0-.65.3-.65.67v.67h-4.53c-.36 0-.65.3-.65.67V40.5c0 .37.29.67.65.67h11.65c.36 0 .65-.3.65-.67s-.29-.67-.65-.67h-11V14.22h3.88v1.35h-1.93zm3.24-2.69h1.94c.36 0 .65-.3.65-.67 0-1.11.87-2.02 1.94-2.02 1.07 0 1.94.91 1.94 2.02 0 .37.29.67.65.67h1.94v4.04h-9.06v-4.04z\"\n }), React.createElement(\"path\", {\n d: \"M28.71 20.96h-9.06c-.36 0-.65.3-.65.67 0 .37.29.67.65.67h9.06c.36 0 .65-.3.65-.67a.66.66 0 0 0-.65-.67M28.71 23.65h-9.06c-.36 0-.65.3-.65.67s.3.68.66.68h9.06c.36 0 .65-.3.65-.67s-.3-.68-.66-.68M28.71 26.35h-9.06c-.36 0-.65.3-.65.67s.29.67.65.67h9.06c.36 0 .65-.3.65-.67s-.29-.67-.65-.67M26.13 29.04h-6.47c-.36 0-.65.3-.65.67 0 .37.29.67.65.67h6.47c.36 0 .65-.3.65-.67-.01-.36-.3-.67-.65-.67M37.77 33.21h-6.13l1.43-1.38c.26-.25.28-.68.03-.95a.62.62 0 0 0-.91-.04l-2.63 2.54c-.13.13-.21.3-.21.49v.02c0 .2.09.38.23.5l2.6 2.56c.12.12.28.18.44.18.17 0 .34-.07.47-.21.25-.27.23-.7-.03-.95l-1.43-1.41h6.13c.36 0 .65-.3.65-.67s-.28-.68-.64-.68\"\n }));\n};\n\nexports.Triangle = function (props) {\n return React.createElement(Svg, _extends({\n width: 6,\n height: 7,\n viewBox: \"40 0 6 7\"\n }, props), React.createElement(\"polygon\", {\n stroke: \"none\",\n fill: \"rgba(0, 0, 0, .2)\",\n fillRule: \"evenodd\",\n points: \"40 7 40 0 46 3.5\"\n }));\n};","/**\n * Produces the value of a block string from its parsed raw value, similar to\n * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.\n *\n * This implements the GraphQL spec's BlockStringValue() static algorithm.\n */\nexport function dedentBlockStringValue(rawString) {\n // Expand a block string's raw value into independent lines.\n var lines = rawString.split(/\\r\\n|[\\n\\r]/g); // Remove common indentation from all lines but first.\n\n var commonIndent = getBlockStringIndentation(lines);\n\n if (commonIndent !== 0) {\n for (var i = 1; i < lines.length; i++) {\n lines[i] = lines[i].slice(commonIndent);\n }\n } // Remove leading and trailing blank lines.\n\n\n while (lines.length > 0 && isBlank(lines[0])) {\n lines.shift();\n }\n\n while (lines.length > 0 && isBlank(lines[lines.length - 1])) {\n lines.pop();\n } // Return a string of the lines joined with U+000A.\n\n\n return lines.join('\\n');\n} // @internal\n\nexport function getBlockStringIndentation(lines) {\n var commonIndent = null;\n\n for (var i = 1; i < lines.length; i++) {\n var line = lines[i];\n var indent = leadingWhitespace(line);\n\n if (indent === line.length) {\n continue; // skip empty lines\n }\n\n if (commonIndent === null || indent < commonIndent) {\n commonIndent = indent;\n\n if (commonIndent === 0) {\n break;\n }\n }\n }\n\n return commonIndent === null ? 0 : commonIndent;\n}\n\nfunction leadingWhitespace(str) {\n var i = 0;\n\n while (i < str.length && (str[i] === ' ' || str[i] === '\\t')) {\n i++;\n }\n\n return i;\n}\n\nfunction isBlank(str) {\n return leadingWhitespace(str) === str.length;\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n */\n\n\nexport function printBlockString(value) {\n var indentation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var preferMultipleLines = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var isSingleLine = value.indexOf('\\n') === -1;\n var hasLeadingSpace = value[0] === ' ' || value[0] === '\\t';\n var hasTrailingQuote = value[value.length - 1] === '\"';\n var printAsMultipleLines = !isSingleLine || hasTrailingQuote || preferMultipleLines;\n var result = ''; // Format a multi-line block quote to account for leading space.\n\n if (printAsMultipleLines && !(isSingleLine && hasLeadingSpace)) {\n result += '\\n' + indentation;\n }\n\n result += indentation ? value.replace(/\\n/g, '\\n' + indentation) : value;\n\n if (printAsMultipleLines) {\n result += '\\n';\n }\n\n return '\"\"\"' + result.replace(/\"\"\"/g, '\\\\\"\"\"') + '\"\"\"';\n}","import objectEntries from '../polyfills/objectEntries';\n/**\n * Creates an object map with the same keys as `map` and values generated by\n * running each value of `map` thru `fn`.\n */\n\nexport default function mapValue(map, fn) {\n var result = Object.create(null);\n\n for (var _i2 = 0, _objectEntries2 = objectEntries(map); _i2 < _objectEntries2.length; _i2++) {\n var _ref2 = _objectEntries2[_i2];\n var _key = _ref2[0];\n var _value = _ref2[1];\n result[_key] = fn(_value, _key);\n }\n\n return result;\n}","import { kTrue, noop } from './utils';\nexport var BUFFER_OVERFLOW = \"Channel's Buffer overflow!\";\nvar ON_OVERFLOW_THROW = 1;\nvar ON_OVERFLOW_DROP = 2;\nvar ON_OVERFLOW_SLIDE = 3;\nvar ON_OVERFLOW_EXPAND = 4;\nvar zeroBuffer = {\n isEmpty: kTrue,\n put: noop,\n take: noop\n};\n\nfunction ringBuffer() {\n var limit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;\n var overflowAction = arguments[1];\n var arr = new Array(limit);\n var length = 0;\n var pushIndex = 0;\n var popIndex = 0;\n\n var push = function push(it) {\n arr[pushIndex] = it;\n pushIndex = (pushIndex + 1) % limit;\n length++;\n };\n\n var take = function take() {\n if (length != 0) {\n var it = arr[popIndex];\n arr[popIndex] = null;\n length--;\n popIndex = (popIndex + 1) % limit;\n return it;\n }\n };\n\n var flush = function flush() {\n var items = [];\n\n while (length) {\n items.push(take());\n }\n\n return items;\n };\n\n return {\n isEmpty: function isEmpty() {\n return length == 0;\n },\n put: function put(it) {\n if (length < limit) {\n push(it);\n } else {\n var doubledLimit = void 0;\n\n switch (overflowAction) {\n case ON_OVERFLOW_THROW:\n throw new Error(BUFFER_OVERFLOW);\n\n case ON_OVERFLOW_SLIDE:\n arr[pushIndex] = it;\n pushIndex = (pushIndex + 1) % limit;\n popIndex = pushIndex;\n break;\n\n case ON_OVERFLOW_EXPAND:\n doubledLimit = 2 * limit;\n arr = flush();\n length = arr.length;\n pushIndex = arr.length;\n popIndex = 0;\n arr.length = doubledLimit;\n limit = doubledLimit;\n push(it);\n break;\n\n default: // DROP\n\n }\n }\n },\n take: take,\n flush: flush\n };\n}\n\nexport var buffers = {\n none: function none() {\n return zeroBuffer;\n },\n fixed: function fixed(limit) {\n return ringBuffer(limit, ON_OVERFLOW_THROW);\n },\n dropping: function dropping(limit) {\n return ringBuffer(limit, ON_OVERFLOW_DROP);\n },\n sliding: function sliding(limit) {\n return ringBuffer(limit, ON_OVERFLOW_SLIDE);\n },\n expanding: function expanding(initialSize) {\n return ringBuffer(initialSize, ON_OVERFLOW_EXPAND);\n }\n};","import Observable from 'zen-observable-ts';\nexport { default as Observable } from 'zen-observable-ts';\nimport { invariant, InvariantError } from 'ts-invariant';\nimport { __extends, __assign } from 'tslib';\nimport { getOperationName } from 'apollo-utilities';\nexport { getOperationName } from 'apollo-utilities';\n\nfunction validateOperation(operation) {\n var OPERATION_FIELDS = ['query', 'operationName', 'variables', 'extensions', 'context'];\n\n for (var _i = 0, _a = Object.keys(operation); _i < _a.length; _i++) {\n var key = _a[_i];\n\n if (OPERATION_FIELDS.indexOf(key) < 0) {\n throw process.env.NODE_ENV === \"production\" ? new InvariantError(2) : new InvariantError(\"illegal argument: \" + key);\n }\n }\n\n return operation;\n}\n\nvar LinkError = function (_super) {\n __extends(LinkError, _super);\n\n function LinkError(message, link) {\n var _this = _super.call(this, message) || this;\n\n _this.link = link;\n return _this;\n }\n\n return LinkError;\n}(Error);\n\nfunction isTerminating(link) {\n return link.request.length <= 1;\n}\n\nfunction toPromise(observable) {\n var completed = false;\n return new Promise(function (resolve, reject) {\n observable.subscribe({\n next: function next(data) {\n if (completed) {\n process.env.NODE_ENV === \"production\" || invariant.warn(\"Promise Wrapper does not support multiple results from Observable\");\n } else {\n completed = true;\n resolve(data);\n }\n },\n error: reject\n });\n });\n}\n\nvar makePromise = toPromise;\n\nfunction fromPromise(promise) {\n return new Observable(function (observer) {\n promise.then(function (value) {\n observer.next(value);\n observer.complete();\n }).catch(observer.error.bind(observer));\n });\n}\n\nfunction fromError(errorValue) {\n return new Observable(function (observer) {\n observer.error(errorValue);\n });\n}\n\nfunction transformOperation(operation) {\n var transformedOperation = {\n variables: operation.variables || {},\n extensions: operation.extensions || {},\n operationName: operation.operationName,\n query: operation.query\n };\n\n if (!transformedOperation.operationName) {\n transformedOperation.operationName = typeof transformedOperation.query !== 'string' ? getOperationName(transformedOperation.query) : '';\n }\n\n return transformedOperation;\n}\n\nfunction createOperation(starting, operation) {\n var context = __assign({}, starting);\n\n var setContext = function setContext(next) {\n if (typeof next === 'function') {\n context = __assign({}, context, next(context));\n } else {\n context = __assign({}, context, next);\n }\n };\n\n var getContext = function getContext() {\n return __assign({}, context);\n };\n\n Object.defineProperty(operation, 'setContext', {\n enumerable: false,\n value: setContext\n });\n Object.defineProperty(operation, 'getContext', {\n enumerable: false,\n value: getContext\n });\n Object.defineProperty(operation, 'toKey', {\n enumerable: false,\n value: function value() {\n return getKey(operation);\n }\n });\n return operation;\n}\n\nfunction getKey(operation) {\n var query = operation.query,\n variables = operation.variables,\n operationName = operation.operationName;\n return JSON.stringify([operationName, query, variables]);\n}\n\nfunction passthrough(op, forward) {\n return forward ? forward(op) : Observable.of();\n}\n\nfunction toLink(handler) {\n return typeof handler === 'function' ? new ApolloLink(handler) : handler;\n}\n\nfunction empty() {\n return new ApolloLink(function () {\n return Observable.of();\n });\n}\n\nfunction from(links) {\n if (links.length === 0) return empty();\n return links.map(toLink).reduce(function (x, y) {\n return x.concat(y);\n });\n}\n\nfunction split(test, left, right) {\n var leftLink = toLink(left);\n var rightLink = toLink(right || new ApolloLink(passthrough));\n\n if (isTerminating(leftLink) && isTerminating(rightLink)) {\n return new ApolloLink(function (operation) {\n return test(operation) ? leftLink.request(operation) || Observable.of() : rightLink.request(operation) || Observable.of();\n });\n } else {\n return new ApolloLink(function (operation, forward) {\n return test(operation) ? leftLink.request(operation, forward) || Observable.of() : rightLink.request(operation, forward) || Observable.of();\n });\n }\n}\n\nvar concat = function concat(first, second) {\n var firstLink = toLink(first);\n\n if (isTerminating(firstLink)) {\n process.env.NODE_ENV === \"production\" || invariant.warn(new LinkError(\"You are calling concat on a terminating link, which will have no effect\", firstLink));\n return firstLink;\n }\n\n var nextLink = toLink(second);\n\n if (isTerminating(nextLink)) {\n return new ApolloLink(function (operation) {\n return firstLink.request(operation, function (op) {\n return nextLink.request(op) || Observable.of();\n }) || Observable.of();\n });\n } else {\n return new ApolloLink(function (operation, forward) {\n return firstLink.request(operation, function (op) {\n return nextLink.request(op, forward) || Observable.of();\n }) || Observable.of();\n });\n }\n};\n\nvar ApolloLink = function () {\n function ApolloLink(request) {\n if (request) this.request = request;\n }\n\n ApolloLink.prototype.split = function (test, left, right) {\n return this.concat(split(test, left, right || new ApolloLink(passthrough)));\n };\n\n ApolloLink.prototype.concat = function (next) {\n return concat(this, next);\n };\n\n ApolloLink.prototype.request = function (operation, forward) {\n throw process.env.NODE_ENV === \"production\" ? new InvariantError(1) : new InvariantError('request is not implemented');\n };\n\n ApolloLink.empty = empty;\n ApolloLink.from = from;\n ApolloLink.split = split;\n ApolloLink.execute = execute;\n return ApolloLink;\n}();\n\nfunction execute(link, operation) {\n return link.request(createOperation(operation.context, transformOperation(validateOperation(operation)))) || Observable.of();\n}\n\nexport { ApolloLink, concat, createOperation, empty, execute, from, fromError, fromPromise, makePromise, split, toPromise };","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n(function (mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);else // Plain browser env\n mod(CodeMirror);\n})(function (CodeMirror) {\n \"use strict\";\n\n var Pos = CodeMirror.Pos;\n\n function regexpFlags(regexp) {\n var flags = regexp.flags;\n return flags != null ? flags : (regexp.ignoreCase ? \"i\" : \"\") + (regexp.global ? \"g\" : \"\") + (regexp.multiline ? \"m\" : \"\");\n }\n\n function ensureFlags(regexp, flags) {\n var current = regexpFlags(regexp),\n target = current;\n\n for (var i = 0; i < flags.length; i++) {\n if (target.indexOf(flags.charAt(i)) == -1) target += flags.charAt(i);\n }\n\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\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),\n match = regexp.exec(string);\n if (match) return {\n from: Pos(line, match.index),\n to: Pos(line, match.index + match[0].length),\n match: match\n };\n }\n }\n\n function searchRegexpForwardMultiline(doc, regexp, start) {\n if (!maybeMultiline(regexp)) return searchRegexpForward(doc, regexp, start);\n regexp = ensureFlags(regexp, \"gm\");\n var string,\n chunk = 1;\n\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\n chunk = chunk * 2;\n regexp.lastIndex = start.ch;\n var match = regexp.exec(string);\n\n if (match) {\n var before = string.slice(0, match.index).split(\"\\n\"),\n inside = match[0].split(\"\\n\");\n var startLine = start.line + before.length - 1,\n startCh = before[before.length - 1].length;\n return {\n from: Pos(startLine, startCh),\n to: Pos(startLine + inside.length - 1, inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n match: match\n };\n }\n }\n }\n\n function lastMatchIn(string, regexp) {\n var cutOff = 0,\n match;\n\n for (;;) {\n regexp.lastIndex = cutOff;\n var newMatch = regexp.exec(string);\n if (!newMatch) return match;\n match = newMatch;\n cutOff = match.index + (match[0].length || 1);\n if (cutOff == string.length) return match;\n }\n }\n\n function searchRegexpBackward(doc, regexp, start) {\n regexp = ensureFlags(regexp, \"g\");\n\n for (var line = start.line, ch = start.ch, first = doc.firstLine(); line >= first; line--, ch = -1) {\n var string = doc.getLine(line);\n if (ch > -1) string = string.slice(0, ch);\n var match = lastMatchIn(string, regexp);\n if (match) return {\n from: Pos(line, match.index),\n to: Pos(line, match.index + match[0].length),\n match: match\n };\n }\n }\n\n function searchRegexpBackwardMultiline(doc, regexp, start) {\n regexp = ensureFlags(regexp, \"gm\");\n var string,\n chunk = 1;\n\n for (var line = start.line, first = doc.firstLine(); line >= first;) {\n for (var i = 0; i < chunk; i++) {\n var curLine = doc.getLine(line--);\n string = string == null ? curLine.slice(0, start.ch) : curLine + \"\\n\" + string;\n }\n\n chunk *= 2;\n var match = lastMatchIn(string, regexp);\n\n if (match) {\n var before = string.slice(0, match.index).split(\"\\n\"),\n inside = match[0].split(\"\\n\");\n var startLine = line + before.length,\n startCh = before[before.length - 1].length;\n return {\n from: Pos(startLine, startCh),\n to: Pos(startLine + inside.length - 1, inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n match: match\n };\n }\n }\n }\n\n var doFold, noFold;\n\n if (String.prototype.normalize) {\n doFold = function doFold(str) {\n return str.normalize(\"NFD\").toLowerCase();\n };\n\n noFold = function noFold(str) {\n return str.normalize(\"NFD\");\n };\n } else {\n doFold = function doFold(str) {\n return str.toLowerCase();\n };\n\n noFold = function noFold(str) {\n return str;\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\n\n function adjustPos(orig, folded, pos, foldFunc) {\n if (orig.length == folded.length) return pos;\n\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;else if (len > pos) max = mid;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),\n string = fold(orig);\n\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 {\n from: Pos(line, adjustPos(orig, string, found, fold) + ch),\n to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold) + ch)\n };\n } else {\n var cutFrom = string.length - lines[0].length;\n if (string.slice(cutFrom) != lines[0]) continue search;\n\n for (var i = 1; i < lines.length - 1; i++) {\n if (fold(doc.getLine(line + i)) != lines[i]) continue search;\n }\n\n var end = doc.getLine(line + lines.length - 1),\n endString = fold(end),\n lastLine = lines[lines.length - 1];\n if (endString.slice(0, lastLine.length) != lastLine) continue search;\n return {\n 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\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\n if (lines.length == 1) {\n var found = string.lastIndexOf(lines[0]);\n if (found == -1) continue search;\n return {\n from: Pos(line, adjustPos(orig, string, found, fold)),\n to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold))\n };\n } else {\n var lastLine = lines[lines.length - 1];\n if (string.slice(0, lastLine.length) != lastLine) continue search;\n\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 }\n\n var top = doc.getLine(line + 1 - lines.length),\n topString = fold(top);\n if (topString.slice(topString.length - lines[0].length) != lines[0]) continue search;\n return {\n 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\n function SearchCursor(doc, query, pos, options) {\n this.atOccurrence = false;\n this.doc = doc;\n pos = pos ? doc.clipPos(pos) : Pos(0, 0);\n this.pos = {\n from: pos,\n to: pos\n };\n var caseFold;\n\n if (typeof options == \"object\") {\n caseFold = options.caseFold;\n } else {\n // 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\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) this.matches = function (reverse, pos) {\n return (reverse ? searchRegexpBackwardMultiline : searchRegexpForwardMultiline)(doc, query, pos);\n };else this.matches = function (reverse, pos) {\n return (reverse ? searchRegexpBackward : searchRegexpForward)(doc, query, pos);\n };\n }\n }\n\n SearchCursor.prototype = {\n findNext: function findNext() {\n return this.find(false);\n },\n findPrevious: function findPrevious() {\n return this.find(true);\n },\n find: function find(reverse) {\n var result = this.matches(reverse, this.doc.clipPos(reverse ? this.pos.from : this.pos.to)); // Implements weird auto-growing behavior on null-matches for\n // backwards-compatiblity with the vim code (unfortunately)\n\n while (result && CodeMirror.cmpPos(result.from, result.to) == 0) {\n if (reverse) {\n if (result.from.ch) result.from = Pos(result.from.line, result.from.ch - 1);else if (result.from.line == this.doc.firstLine()) result = null;else result = this.matches(reverse, this.doc.clipPos(Pos(result.from.line - 1)));\n } else {\n if (result.to.ch < this.doc.getLine(result.to.line).length) result.to = Pos(result.to.line, result.to.ch + 1);else if (result.to.line == this.doc.lastLine()) result = null;else result = this.matches(reverse, Pos(result.to.line + 1, 0));\n }\n }\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 = {\n from: end,\n to: end\n };\n return this.atOccurrence = false;\n }\n },\n from: function from() {\n if (this.atOccurrence) return this.pos.from;\n },\n to: function to() {\n if (this.atOccurrence) return this.pos.to;\n },\n replace: function replace(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, lines[lines.length - 1].length + (lines.length == 1 ? this.pos.from.ch : 0));\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 CodeMirror.defineExtension(\"selectMatches\", function (query, caseFold) {\n var ranges = [];\n var cur = this.getSearchCursor(query, this.getCursor(\"from\"), caseFold);\n\n while (cur.findNext()) {\n if (CodeMirror.cmpPos(cur.to(), this.getCursor(\"to\")) > 0) break;\n ranges.push({\n anchor: cur.from(),\n head: cur.to()\n });\n }\n\n if (ranges.length) this.setSelections(ranges, 0);\n });\n});","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n// Open simple dialogs on top of an editor. Relies on dialog.css.\n(function (mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);else // Plain browser env\n mod(CodeMirror);\n})(function (CodeMirror) {\n function dialogDiv(cm, template, bottom) {\n var wrap = cm.getWrapperElement();\n var dialog;\n dialog = wrap.appendChild(document.createElement(\"div\"));\n if (bottom) dialog.className = \"CodeMirror-dialog CodeMirror-dialog-bottom\";else dialog.className = \"CodeMirror-dialog CodeMirror-dialog-top\";\n\n if (typeof template == \"string\") {\n dialog.innerHTML = template;\n } else {\n // Assuming it's a detached DOM element.\n dialog.appendChild(template);\n }\n\n CodeMirror.addClass(wrap, 'dialog-opened');\n return dialog;\n }\n\n function closeNotification(cm, newVal) {\n if (cm.state.currentNotificationClose) cm.state.currentNotificationClose();\n cm.state.currentNotificationClose = newVal;\n }\n\n CodeMirror.defineExtension(\"openDialog\", function (template, callback, options) {\n if (!options) options = {};\n closeNotification(this, null);\n var dialog = dialogDiv(this, template, options.bottom);\n var closed = false,\n me = this;\n\n function close(newVal) {\n if (typeof newVal == 'string') {\n inp.value = newVal;\n } else {\n if (closed) return;\n closed = true;\n CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n dialog.parentNode.removeChild(dialog);\n me.focus();\n if (options.onClose) options.onClose(dialog);\n }\n }\n\n var inp = dialog.getElementsByTagName(\"input\")[0],\n button;\n\n if (inp) {\n inp.focus();\n\n if (options.value) {\n inp.value = options.value;\n\n if (options.selectValueOnOpen !== false) {\n inp.select();\n }\n }\n\n if (options.onInput) CodeMirror.on(inp, \"input\", function (e) {\n options.onInput(e, inp.value, close);\n });\n if (options.onKeyUp) CodeMirror.on(inp, \"keyup\", function (e) {\n options.onKeyUp(e, inp.value, close);\n });\n CodeMirror.on(inp, \"keydown\", function (e) {\n if (options && options.onKeyDown && options.onKeyDown(e, inp.value, close)) {\n return;\n }\n\n if (e.keyCode == 27 || options.closeOnEnter !== false && e.keyCode == 13) {\n inp.blur();\n CodeMirror.e_stop(e);\n close();\n }\n\n if (e.keyCode == 13) callback(inp.value, e);\n });\n if (options.closeOnBlur !== false) CodeMirror.on(inp, \"blur\", close);\n } else if (button = dialog.getElementsByTagName(\"button\")[0]) {\n CodeMirror.on(button, \"click\", function () {\n close();\n me.focus();\n });\n if (options.closeOnBlur !== false) CodeMirror.on(button, \"blur\", close);\n button.focus();\n }\n\n return close;\n });\n CodeMirror.defineExtension(\"openConfirm\", function (template, callbacks, options) {\n closeNotification(this, null);\n var dialog = dialogDiv(this, template, options && options.bottom);\n var buttons = dialog.getElementsByTagName(\"button\");\n var closed = false,\n me = this,\n blurring = 1;\n\n function close() {\n if (closed) return;\n closed = true;\n CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n dialog.parentNode.removeChild(dialog);\n me.focus();\n }\n\n buttons[0].focus();\n\n for (var i = 0; i < buttons.length; ++i) {\n var b = buttons[i];\n\n (function (callback) {\n CodeMirror.on(b, \"click\", function (e) {\n CodeMirror.e_preventDefault(e);\n close();\n if (callback) callback(me);\n });\n })(callbacks[i]);\n\n CodeMirror.on(b, \"blur\", function () {\n --blurring;\n setTimeout(function () {\n if (blurring <= 0) close();\n }, 200);\n });\n CodeMirror.on(b, \"focus\", function () {\n ++blurring;\n });\n }\n });\n /*\n * openNotification\n * Opens a notification, that can be closed with an optional timer\n * (default 5000ms timer) and always closes on click.\n *\n * If a notification is opened while another is opened, it will close the\n * currently opened one and open the new one immediately.\n */\n\n CodeMirror.defineExtension(\"openNotification\", function (template, options) {\n closeNotification(this, close);\n var dialog = dialogDiv(this, template, options && options.bottom);\n var closed = false,\n doneTimer;\n var duration = options && typeof options.duration !== \"undefined\" ? options.duration : 5000;\n\n function close() {\n if (closed) return;\n closed = true;\n clearTimeout(doneTimer);\n CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n dialog.parentNode.removeChild(dialog);\n }\n\n CodeMirror.on(dialog, 'click', function (e) {\n CodeMirror.e_preventDefault(e);\n close();\n });\n if (duration) doneTimer = setTimeout(close, duration);\n return close;\n });\n});","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' || typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function') {\n return;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}","import { is, makeIterator } from '../utils';\nvar done = {\n done: true,\n value: undefined\n};\nexport var qEnd = {};\nexport function safeName(patternOrChannel) {\n if (is.channel(patternOrChannel)) {\n return 'channel';\n } else if (Array.isArray(patternOrChannel)) {\n return String(patternOrChannel.map(function (entry) {\n return String(entry);\n }));\n } else {\n return String(patternOrChannel);\n }\n}\nexport default function fsmIterator(fsm, q0) {\n var name = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'iterator';\n var updateState = void 0,\n qNext = q0;\n\n function next(arg, error) {\n if (qNext === qEnd) {\n return done;\n }\n\n if (error) {\n qNext = qEnd;\n throw error;\n } else {\n updateState && updateState(arg);\n\n var _fsm$qNext = fsm[qNext](),\n q = _fsm$qNext[0],\n output = _fsm$qNext[1],\n _updateState = _fsm$qNext[2];\n\n qNext = q;\n updateState = _updateState;\n return qNext === qEnd ? done : output;\n }\n }\n\n return makeIterator(next, function (error) {\n return next(null, error);\n }, name, true);\n}","import fsmIterator, { qEnd, safeName } from './fsmIterator';\nimport { take, fork } from '../io';\nimport { END } from '../channel';\nexport default function takeEvery(patternOrChannel, worker) {\n for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n var yTake = {\n done: false,\n value: take(patternOrChannel)\n };\n\n var yFork = function yFork(ac) {\n return {\n done: false,\n value: fork.apply(undefined, [worker].concat(args, [ac]))\n };\n };\n\n var action = void 0,\n setAction = function setAction(ac) {\n return action = ac;\n };\n\n return fsmIterator({\n q1: function q1() {\n return ['q2', yTake, setAction];\n },\n q2: function q2() {\n return action === END ? [qEnd] : ['q1', yFork(action)];\n }\n }, 'q1', 'takeEvery(' + safeName(patternOrChannel) + ', ' + worker.name + ')');\n}","import fsmIterator, { qEnd, safeName } from './fsmIterator';\nimport { cancel, take, fork } from '../io';\nimport { END } from '../channel';\nexport default function takeLatest(patternOrChannel, worker) {\n for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n var yTake = {\n done: false,\n value: take(patternOrChannel)\n };\n\n var yFork = function yFork(ac) {\n return {\n done: false,\n value: fork.apply(undefined, [worker].concat(args, [ac]))\n };\n };\n\n var yCancel = function yCancel(task) {\n return {\n done: false,\n value: cancel(task)\n };\n };\n\n var task = void 0,\n action = void 0;\n\n var setTask = function setTask(t) {\n return task = t;\n };\n\n var setAction = function setAction(ac) {\n return action = ac;\n };\n\n return fsmIterator({\n q1: function q1() {\n return ['q2', yTake, setAction];\n },\n q2: function q2() {\n return action === END ? [qEnd] : task ? ['q3', yCancel(task)] : ['q1', yFork(action), setTask];\n },\n q3: function q3() {\n return ['q1', yFork(action), setTask];\n }\n }, 'q1', 'takeLatest(' + safeName(patternOrChannel) + ', ' + worker.name + ')');\n}","import fsmIterator, { qEnd, safeName } from './fsmIterator';\nimport { take, fork, actionChannel, call } from '../io';\nimport { END } from '../channel';\nimport { buffers } from '../buffers';\nimport { delay } from '../utils';\nexport default function throttle(delayLength, pattern, worker) {\n for (var _len = arguments.length, args = Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n args[_key - 3] = arguments[_key];\n }\n\n var action = void 0,\n channel = void 0;\n var yActionChannel = {\n done: false,\n value: actionChannel(pattern, buffers.sliding(1))\n };\n\n var yTake = function yTake() {\n return {\n done: false,\n value: take(channel)\n };\n };\n\n var yFork = function yFork(ac) {\n return {\n done: false,\n value: fork.apply(undefined, [worker].concat(args, [ac]))\n };\n };\n\n var yDelay = {\n done: false,\n value: call(delay, delayLength)\n };\n\n var setAction = function setAction(ac) {\n return action = ac;\n };\n\n var setChannel = function setChannel(ch) {\n return channel = ch;\n };\n\n return fsmIterator({\n q1: function q1() {\n return ['q2', yActionChannel, setChannel];\n },\n q2: function q2() {\n return ['q3', yTake(), setAction];\n },\n q3: function q3() {\n return action === END ? [qEnd] : ['q4', yFork(action)];\n },\n q4: function q4() {\n return ['q2', yDelay];\n }\n }, 'q1', 'throttle(' + safeName(pattern) + ', ' + worker.name + ')');\n}","import takeEveryHelper from './takeEvery';\nimport takeLatestHelper from './takeLatest';\nimport throttleHelper from './throttle';\nimport { deprecate } from '../utils';\n\nvar deprecationWarning = function deprecationWarning(helperName) {\n return 'import { ' + helperName + ' } from \\'redux-saga\\' has been deprecated in favor of import { ' + helperName + ' } from \\'redux-saga/effects\\'.\\nThe latter will not work with yield*, as helper effects are wrapped automatically for you in fork effect.\\nTherefore yield ' + helperName + ' will return task descriptor to your saga and execute next lines of code.';\n};\n\nvar takeEvery =\n/*#__PURE__*/\ndeprecate(takeEveryHelper,\n/*#__PURE__*/\ndeprecationWarning('takeEvery'));\nvar takeLatest =\n/*#__PURE__*/\ndeprecate(takeLatestHelper,\n/*#__PURE__*/\ndeprecationWarning('takeLatest'));\nvar throttle =\n/*#__PURE__*/\ndeprecate(throttleHelper,\n/*#__PURE__*/\ndeprecationWarning('throttle'));\nexport { takeEvery, takeLatest, throttle, takeEveryHelper, takeLatestHelper, throttleHelper };","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar cuid = require(\"cuid\");\n\nvar getQueryTypes_1 = require(\"./components/Playground/util/getQueryTypes\");\n\nvar immutable_1 = require(\"immutable\");\n\nexports.columnWidth = 300;\nexports.introspectionQuery = \"\\n query IntrospectionQuery {\\n __schema {\\n queryType { name }\\n mutationType { name }\\n subscriptionType { name }\\n types {\\n ...FullType\\n }\\n directives {\\n name\\n description\\n locations\\n args {\\n ...InputValue\\n }\\n }\\n }\\n }\\n\\n fragment FullType on __Type {\\n kind\\n name\\n description\\n fields(includeDeprecated: true) {\\n name\\n description\\n args {\\n ...InputValue\\n }\\n type {\\n ...TypeRef\\n }\\n isDeprecated\\n deprecationReason\\n }\\n inputFields {\\n ...InputValue\\n }\\n interfaces {\\n ...TypeRef\\n }\\n enumValues(includeDeprecated: true) {\\n name\\n description\\n isDeprecated\\n deprecationReason\\n }\\n possibleTypes {\\n ...TypeRef\\n }\\n }\\n\\n fragment InputValue on __InputValue {\\n name\\n description\\n type { ...TypeRef }\\n defaultValue\\n }\\n\\n fragment TypeRef on __Type {\\n kind\\n name\\n ofType {\\n kind\\n name\\n ofType {\\n kind\\n name\\n ofType {\\n kind\\n name\\n ofType {\\n kind\\n name\\n ofType {\\n kind\\n name\\n ofType {\\n kind\\n name\\n ofType {\\n kind\\n name\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n\";\nexports.defaultQuery = '# Write your query or mutation here\\n';\nexports.modalStyle = {\n overlay: {\n zIndex: 99999,\n backgroundColor: 'rgba(15,32,46,.9)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n },\n content: {\n position: 'relative',\n width: 976,\n height: 'auto',\n top: 'initial',\n left: 'initial',\n right: 'initial',\n bottom: 'initial',\n borderRadius: 2,\n padding: 0,\n border: 'none',\n background: 'none',\n boxShadow: '0 1px 7px rgba(0,0,0,.2)'\n }\n};\n\nfunction getDefaultSession(endpoint) {\n return {\n id: cuid(),\n query: exports.defaultQuery,\n variables: '',\n responses: immutable_1.List([]),\n endpoint: endpoint,\n operationName: undefined,\n hasMutation: false,\n hasSubscription: false,\n hasQuery: false,\n queryTypes: getQueryTypes_1.getQueryTypes(exports.defaultQuery),\n subscriptionActive: false,\n date: new Date(),\n starred: false,\n queryRunning: false,\n operations: immutable_1.List([]),\n isReloadingSchema: false,\n isSchemaPendingUpdate: false,\n responseExtensions: {},\n queryVariablesActive: false,\n endpointUnreachable: false,\n editorFlex: 1,\n variableEditorOpen: false,\n variableEditorHeight: 200,\n responseTracingHeight: 300,\n isExtensionsDrawerOpen: false,\n isTracingActive: false,\n docExplorerWidth: 350,\n variableToType: immutable_1.Map({}),\n headers: '',\n file: undefined,\n isFile: false,\n name: undefined,\n filePath: undefined,\n selectedUserToken: undefined,\n hasChanged: undefined,\n absolutePath: undefined,\n isSettingsTab: undefined,\n isConfigTab: undefined,\n currentQueryStartTime: undefined,\n currentQueryEndTime: undefined,\n nextQueryStartTime: undefined,\n tracingSupported: undefined,\n isQueryPlanSupported: undefined,\n changed: undefined,\n scrollTop: undefined\n };\n}\n\nexports.getDefaultSession = getDefaultSession;","\"use strict\";\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar styled_1 = require(\"../../styled\");\n\nvar EditorWrapper = styled_1.styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n /* Comment */\\n .cm-comment {\\n color: \", \";\\n }\\n\\n /* Punctuation */\\n .cm-punctuation {\\n color: \", \";\\n }\\n\\n /* Proppery */\\n .cm-property {\\n color: \", \";\\n }\\n\\n /* Keyword */\\n .cm-keyword {\\n color: \", \";\\n }\\n\\n /* OperationName, FragmentName */\\n .cm-def {\\n color: \", \";\\n }\\n\\n /* FieldAlias */\\n .cm-qualifier {\\n color: \", \";\\n }\\n\\n /* ArgumentName and ObjectFieldName */\\n .cm-attribute {\\n color: \", \";\\n }\\n\\n /* Number */\\n .cm-number {\\n color: \", \";\\n }\\n\\n /* String */\\n .cm-string {\\n color: \", \";\\n }\\n\\n /* Boolean */\\n .cm-builtin {\\n color: \", \";\\n }\\n\\n /* EnumValue */\\n .cm-string-2 {\\n color: \", \";\\n }\\n\\n /* Variable */\\n .cm-variable {\\n color: \", \";\\n }\\n\\n /* Directive */\\n .cm-meta {\\n color: \", \";\\n }\\n\\n /* Type */\\n .cm-atom {\\n color: \", \";\\n }\\n\\n /* Comma */\\n .cm-ws {\\n color: \", \";\\n }\\n position: relative;\\n display: flex;\\n flex: 1 1 0%;\\n flex-flow: column;\\n\\n .CodeMirror {\\n color: rgba(255, 255, 255, 0.3);\\n font-family: \", \";\\n font-size: \", \";\\n height: 100%;\\n left: 0;\\n position: absolute;\\n top: 0;\\n width: 100%;\\n }\\n\\n .CodeMirror-lines {\\n padding: 20px 0;\\n }\\n\\n .CodeMirror-gutters {\\n border-right: none;\\n }\\n\\n .CodeMirror span[role='presentation'] {\\n color: \", \";\\n }\\n\\n /* CURSOR */\\n\\n .CodeMirror div.CodeMirror-cursor {\\n background: \", \";\\n border-left: \", \";\\n border-bottom: \", \";\\n }\\n /* Shown when moving in bi-directional text */\\n .CodeMirror div.CodeMirror-secondarycursor {\\n border-left: 1px solid silver;\\n }\\n .CodeMirror.cm-fat-cursor div.CodeMirror-cursor {\\n background: rgba(255, 255, 255, 0.6);\\n color: white;\\n border: 0;\\n width: auto;\\n }\\n .CodeMirror.cm-fat-cursor div.CodeMirror-cursors {\\n z-index: 1;\\n }\\n\\n .cm-animate-fat-cursor {\\n -webkit-animation: blink 1.06s steps(1) infinite;\\n animation: blink 1.06s steps(1) infinite;\\n border: 0;\\n width: auto;\\n }\\n @-webkit-keyframes blink {\\n 0% {\\n background: #7e7;\\n }\\n 50% {\\n background: none;\\n }\\n 100% {\\n background: #7e7;\\n }\\n }\\n @keyframes blink {\\n 0% {\\n background: #7e7;\\n }\\n 50% {\\n background: none;\\n }\\n 100% {\\n background: #7e7;\\n }\\n }\\n\\n .CodeMirror-foldmarker {\\n border-radius: 4px;\\n background: #08f;\\n background: linear-gradient(#43a8ff, #0f83e8);\\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), inset 0 0 0 1px rgba(0, 0, 0, 0.1);\\n color: white;\\n font-family: arial;\\n font-size: 12px;\\n line-height: 0;\\n margin: 0 3px;\\n padding: 0px 4px 1px;\\n text-shadow: 0 -1px rgba(0, 0, 0, 0.1);\\n }\\n\\n div.CodeMirror span.CodeMirror-matchingbracket {\\n /* color: rgba(255, 255, 255, 0.4); */\\n text-decoration: underline;\\n }\\n\\n div.CodeMirror span.CodeMirror-nonmatchingbracket {\\n color: rgb(242, 92, 84);\\n }\\n\\n .toolbar-button {\\n background: #fdfdfd;\\n background: linear-gradient(#fbfbfb, #f8f8f8);\\n border-color: #d3d3d3 #d0d0d0 #bababa;\\n border-radius: 4px;\\n border-style: solid;\\n border-width: 0.5px;\\n box-shadow: 0 1px 1px -1px rgba(0, 0, 0, 0.13), inset 0 1px #fff;\\n color: #444;\\n cursor: pointer;\\n display: inline-block;\\n margin: 0 5px 0;\\n padding: 2px 8px 4px;\\n text-decoration: none;\\n }\\n .toolbar-button:active {\\n background: linear-gradient(#ececec, #d8d8d8);\\n border-color: #cacaca #c9c9c9 #b0b0b0;\\n box-shadow: 0 1px 0 #fff, inset 0 1px rgba(255, 255, 255, 0.2),\\n inset 0 1px 1px rgba(0, 0, 0, 0.08);\\n }\\n .toolbar-button.error {\\n background: linear-gradient(#fdf3f3, #e6d6d7);\\n color: #b00;\\n }\\n\\n .autoInsertedLeaf.cm-property {\\n -webkit-animation-duration: 6s;\\n animation-duration: 6s;\\n -webkit-animation-name: insertionFade;\\n animation-name: insertionFade;\\n border-bottom: 2px solid rgba(255, 255, 255, 0);\\n border-radius: 2px;\\n margin: -2px -4px -1px;\\n padding: 2px 4px 1px;\\n }\\n\\n @-webkit-keyframes insertionFade {\\n from,\\n to {\\n background: rgba(255, 255, 255, 0);\\n border-color: rgba(255, 255, 255, 0);\\n }\\n\\n 15%,\\n 85% {\\n background: #fbffc9;\\n border-color: #f0f3c0;\\n }\\n }\\n\\n @keyframes insertionFade {\\n from,\\n to {\\n background: rgba(255, 255, 255, 0);\\n border-color: rgba(255, 255, 255, 0);\\n }\\n\\n 15%,\\n 85% {\\n background: #fbffc9;\\n border-color: #f0f3c0;\\n }\\n }\\n\\n .CodeMirror pre {\\n padding: 0 4px; /* Horizontal padding of content */\\n }\\n\\n .CodeMirror-scrollbar-filler,\\n .CodeMirror-gutter-filler {\\n background-color: white; /* The little square between H and V scrollbars */\\n }\\n\\n /* GUTTER */\\n\\n .CodeMirror-gutters {\\n background-color: transparent;\\n border: none;\\n white-space: nowrap;\\n }\\n .CodeMirror-linenumbers {\\n background: \", \";\\n }\\n .CodeMirror-linenumber {\\n font-family: Open Sans, sans-serif;\\n font-weight: 600;\\n font-size: \", \";\\n color: \", \";\\n min-width: 20px;\\n padding: 0 3px 0 5px;\\n text-align: right;\\n white-space: nowrap;\\n }\\n\\n .CodeMirror-guttermarker {\\n color: black;\\n }\\n .CodeMirror-guttermarker-subtle {\\n color: #999;\\n }\\n\\n .cm-tab {\\n display: inline-block;\\n text-decoration: inherit;\\n }\\n\\n .CodeMirror-ruler {\\n border-left: 1px solid #ccc;\\n position: absolute;\\n }\\n .cm-negative {\\n color: #d44;\\n }\\n .cm-positive {\\n color: #292;\\n }\\n .cm-header,\\n .cm-strong {\\n font-weight: bold;\\n }\\n .cm-em {\\n font-style: italic;\\n }\\n .cm-link {\\n text-decoration: underline;\\n }\\n .cm-strikethrough {\\n text-decoration: line-through;\\n }\\n\\n .cm-s-default .cm-error {\\n color: #f00;\\n }\\n .cm-invalidchar {\\n color: #f00;\\n }\\n\\n .CodeMirror-composing {\\n border-bottom: 2px solid;\\n }\\n .CodeMirror-matchingtag {\\n background: rgba(255, 150, 0, 0.3);\\n }\\n .CodeMirror-activeline-background {\\n background: #e8f2ff;\\n }\\n\\n /* The rest of this file contains styles related to the mechanics of\\n the editor. You probably shouldn't touch them. */\\n\\n .CodeMirror {\\n background: white;\\n overflow: hidden;\\n line-height: 1.6;\\n }\\n\\n .CodeMirror-scroll {\\n height: 100%;\\n /* 30px is the magic margin used to hide the element's real scrollbars */\\n /* See overflow: hidden in .CodeMirror */\\n /* margin-bottom: -30px;\\n margin-right: -30px; */\\n outline: none; /* Prevent dragging from highlighting the element */\\n overflow: hidden;\\n /* padding-bottom: 30px; */\\n position: relative;\\n &:hover {\\n overflow: scroll !important;\\n }\\n }\\n .CodeMirror-sizer {\\n border-right: 30px solid transparent;\\n position: relative;\\n }\\n\\n /* The fake, visible scrollbars. Used to force redraw during scrolling\\n before actual scrolling happens, thus preventing shaking and\\n flickering artifacts. */\\n .CodeMirror-vscrollbar,\\n .CodeMirror-hscrollbar,\\n .CodeMirror-scrollbar-filler,\\n .CodeMirror-gutter-filler {\\n display: none !important;\\n position: absolute;\\n z-index: 6;\\n }\\n .CodeMirror-vscrollbar {\\n overflow-x: hidden;\\n overflow-y: scroll;\\n right: 0;\\n top: 0;\\n }\\n .CodeMirror-hscrollbar {\\n bottom: 0;\\n left: 0;\\n overflow-x: scroll;\\n overflow-y: hidden;\\n }\\n .CodeMirror-scrollbar-filler {\\n right: 0;\\n bottom: 0;\\n }\\n .CodeMirror-gutter-filler {\\n left: 0;\\n bottom: 0;\\n }\\n\\n .CodeMirror-gutters {\\n min-height: 100%;\\n position: absolute;\\n left: 0;\\n top: 0;\\n z-index: 3;\\n margin-left: 3px;\\n }\\n .CodeMirror-gutter {\\n display: inline-block;\\n height: 100%;\\n margin-bottom: -30px;\\n vertical-align: top;\\n white-space: normal;\\n /* Hack to make IE7 behave */\\n *zoom: 1;\\n *display: inline;\\n }\\n .CodeMirror-gutter-wrapper {\\n background: none !important;\\n border: none !important;\\n position: absolute;\\n z-index: 4;\\n }\\n .CodeMirror-gutter-background {\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n z-index: 4;\\n }\\n .CodeMirror-gutter-elt {\\n cursor: default;\\n position: absolute;\\n z-index: 4;\\n }\\n .CodeMirror-gutter-wrapper {\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n }\\n\\n .CodeMirror-lines {\\n cursor: text;\\n min-height: 1px; /* prevents collapsing before first draw */\\n }\\n .CodeMirror pre {\\n -webkit-tap-highlight-color: transparent;\\n /* Reset some styles that the rest of the page might have set */\\n background: transparent;\\n border-radius: 0;\\n border-width: 0;\\n color: inherit;\\n font-family: inherit;\\n font-size: inherit;\\n -webkit-font-variant-ligatures: none;\\n font-variant-ligatures: none;\\n line-height: inherit;\\n margin: 0;\\n overflow: visible;\\n position: relative;\\n white-space: pre;\\n word-wrap: normal;\\n z-index: 2;\\n }\\n .CodeMirror-wrap pre {\\n word-wrap: break-word;\\n white-space: pre-wrap;\\n word-break: normal;\\n }\\n\\n .CodeMirror-linebackground {\\n position: absolute;\\n left: 0;\\n right: 0;\\n top: 0;\\n bottom: 0;\\n z-index: 0;\\n }\\n\\n .CodeMirror-linewidget {\\n overflow: auto;\\n position: relative;\\n z-index: 2;\\n }\\n\\n .CodeMirror-widget {\\n }\\n\\n .CodeMirror-code {\\n outline: none;\\n }\\n\\n /* Force content-box sizing for the elements where we expect it */\\n .CodeMirror-scroll,\\n .CodeMirror-sizer,\\n .CodeMirror-gutter,\\n .CodeMirror-gutters,\\n .CodeMirror-linenumber {\\n box-sizing: content-box;\\n }\\n\\n .CodeMirror-measure {\\n height: 0;\\n overflow: hidden;\\n position: absolute;\\n visibility: hidden;\\n width: 100%;\\n }\\n\\n .CodeMirror-cursor {\\n position: absolute;\\n }\\n .CodeMirror-measure pre {\\n position: static;\\n }\\n\\n div.CodeMirror-cursors {\\n position: relative;\\n visibility: hidden;\\n z-index: 3;\\n }\\n div.CodeMirror-dragcursors {\\n visibility: visible;\\n }\\n\\n .CodeMirror-focused div.CodeMirror-cursors {\\n visibility: visible;\\n }\\n\\n .CodeMirror-selected {\\n background: \", \";\\n }\\n .CodeMirror-focused .CodeMirror-selected {\\n background: \", \";\\n }\\n .CodeMirror-crosshair {\\n cursor: crosshair;\\n }\\n .CodeMirror-line::-moz-selection,\\n .CodeMirror-line > span::-moz-selection,\\n .CodeMirror-line > span > span::-moz-selection {\\n background: \", \";\\n }\\n .CodeMirror-line::selection,\\n .CodeMirror-line > span::selection,\\n .CodeMirror-line > span > span::selection {\\n background: \", \";\\n }\\n .CodeMirror-line::-moz-selection,\\n .CodeMirror-line > span::-moz-selection,\\n .CodeMirror-line > span > span::-moz-selection {\\n background: \", \";\\n }\\n\\n .cm-searching {\\n background: #ffa;\\n background: rgba(255, 255, 0, 0.4);\\n }\\n\\n /* IE7 hack to prevent it from returning funny offsetTops on the spans */\\n .CodeMirror span {\\n *vertical-align: text-bottom;\\n }\\n\\n /* Used to force a border model for a node */\\n .cm-force-border {\\n padding-right: 0.1px;\\n }\\n\\n @media print {\\n /* Hide the cursor when printing */\\n .CodeMirror div.CodeMirror-cursors {\\n visibility: hidden;\\n }\\n }\\n\\n /* See issue #2901 */\\n .cm-tab-wrap-hack:after {\\n content: '';\\n }\\n\\n /* Help users use markselection to safely style text background */\\n span.CodeMirror-selectedtext {\\n background: none;\\n }\\n\\n .CodeMirror-dialog {\\n background: inherit;\\n color: inherit;\\n left: 0;\\n right: 0;\\n overflow: hidden;\\n padding: 0.1em 0.8em;\\n position: absolute;\\n z-index: 15;\\n }\\n\\n .CodeMirror-dialog-top {\\n border-bottom: 1px solid #eee;\\n top: 0;\\n }\\n\\n .CodeMirror-dialog-bottom {\\n border-top: 1px solid #eee;\\n bottom: 0;\\n }\\n\\n .CodeMirror-dialog input {\\n background: transparent;\\n border: 1px solid #d3d6db;\\n color: inherit;\\n font-family: monospace;\\n outline: none;\\n width: 20em;\\n }\\n\\n .CodeMirror-dialog span.CodeMirror-search-label {\\n color: \", \";\\n }\\n\\n .CodeMirror-dialog input.CodeMirror-search-field {\\n color: \", \";\\n background: \", \";\\n }\\n\\n .CodeMirror-dialog button {\\n font-size: 70%;\\n }\\n\\n .CodeMirror-foldgutter {\\n width: 0.7em;\\n }\\n .CodeMirror-foldgutter-open,\\n .CodeMirror-foldgutter-folded {\\n cursor: pointer;\\n }\\n .CodeMirror-foldgutter-open:after {\\n content: '\\u25BE';\\n }\\n .CodeMirror-foldgutter-folded:after {\\n content: '\\u25B8';\\n }\\n /* The lint marker gutter */\\n .CodeMirror-lint-markers {\\n width: 16px;\\n }\\n\\n .CodeMirror-jump-token {\\n cursor: pointer;\\n text-decoration: underline;\\n }\\n\"], [\"\\n /* Comment */\\n .cm-comment {\\n color: \", \";\\n }\\n\\n /* Punctuation */\\n .cm-punctuation {\\n color: \", \";\\n }\\n\\n /* Proppery */\\n .cm-property {\\n color: \", \";\\n }\\n\\n /* Keyword */\\n .cm-keyword {\\n color: \", \";\\n }\\n\\n /* OperationName, FragmentName */\\n .cm-def {\\n color: \", \";\\n }\\n\\n /* FieldAlias */\\n .cm-qualifier {\\n color: \", \";\\n }\\n\\n /* ArgumentName and ObjectFieldName */\\n .cm-attribute {\\n color: \", \";\\n }\\n\\n /* Number */\\n .cm-number {\\n color: \", \";\\n }\\n\\n /* String */\\n .cm-string {\\n color: \", \";\\n }\\n\\n /* Boolean */\\n .cm-builtin {\\n color: \", \";\\n }\\n\\n /* EnumValue */\\n .cm-string-2 {\\n color: \", \";\\n }\\n\\n /* Variable */\\n .cm-variable {\\n color: \", \";\\n }\\n\\n /* Directive */\\n .cm-meta {\\n color: \", \";\\n }\\n\\n /* Type */\\n .cm-atom {\\n color: \", \";\\n }\\n\\n /* Comma */\\n .cm-ws {\\n color: \", \";\\n }\\n position: relative;\\n display: flex;\\n flex: 1 1 0%;\\n flex-flow: column;\\n\\n .CodeMirror {\\n color: rgba(255, 255, 255, 0.3);\\n font-family: \", \";\\n font-size: \", \";\\n height: 100%;\\n left: 0;\\n position: absolute;\\n top: 0;\\n width: 100%;\\n }\\n\\n .CodeMirror-lines {\\n padding: 20px 0;\\n }\\n\\n .CodeMirror-gutters {\\n border-right: none;\\n }\\n\\n .CodeMirror span[role='presentation'] {\\n color: \", \";\\n }\\n\\n /* CURSOR */\\n\\n .CodeMirror div.CodeMirror-cursor {\\n background: \", \";\\n border-left: \", \";\\n border-bottom: \", \";\\n }\\n /* Shown when moving in bi-directional text */\\n .CodeMirror div.CodeMirror-secondarycursor {\\n border-left: 1px solid silver;\\n }\\n .CodeMirror.cm-fat-cursor div.CodeMirror-cursor {\\n background: rgba(255, 255, 255, 0.6);\\n color: white;\\n border: 0;\\n width: auto;\\n }\\n .CodeMirror.cm-fat-cursor div.CodeMirror-cursors {\\n z-index: 1;\\n }\\n\\n .cm-animate-fat-cursor {\\n -webkit-animation: blink 1.06s steps(1) infinite;\\n animation: blink 1.06s steps(1) infinite;\\n border: 0;\\n width: auto;\\n }\\n @-webkit-keyframes blink {\\n 0% {\\n background: #7e7;\\n }\\n 50% {\\n background: none;\\n }\\n 100% {\\n background: #7e7;\\n }\\n }\\n @keyframes blink {\\n 0% {\\n background: #7e7;\\n }\\n 50% {\\n background: none;\\n }\\n 100% {\\n background: #7e7;\\n }\\n }\\n\\n .CodeMirror-foldmarker {\\n border-radius: 4px;\\n background: #08f;\\n background: linear-gradient(#43a8ff, #0f83e8);\\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), inset 0 0 0 1px rgba(0, 0, 0, 0.1);\\n color: white;\\n font-family: arial;\\n font-size: 12px;\\n line-height: 0;\\n margin: 0 3px;\\n padding: 0px 4px 1px;\\n text-shadow: 0 -1px rgba(0, 0, 0, 0.1);\\n }\\n\\n div.CodeMirror span.CodeMirror-matchingbracket {\\n /* color: rgba(255, 255, 255, 0.4); */\\n text-decoration: underline;\\n }\\n\\n div.CodeMirror span.CodeMirror-nonmatchingbracket {\\n color: rgb(242, 92, 84);\\n }\\n\\n .toolbar-button {\\n background: #fdfdfd;\\n background: linear-gradient(#fbfbfb, #f8f8f8);\\n border-color: #d3d3d3 #d0d0d0 #bababa;\\n border-radius: 4px;\\n border-style: solid;\\n border-width: 0.5px;\\n box-shadow: 0 1px 1px -1px rgba(0, 0, 0, 0.13), inset 0 1px #fff;\\n color: #444;\\n cursor: pointer;\\n display: inline-block;\\n margin: 0 5px 0;\\n padding: 2px 8px 4px;\\n text-decoration: none;\\n }\\n .toolbar-button:active {\\n background: linear-gradient(#ececec, #d8d8d8);\\n border-color: #cacaca #c9c9c9 #b0b0b0;\\n box-shadow: 0 1px 0 #fff, inset 0 1px rgba(255, 255, 255, 0.2),\\n inset 0 1px 1px rgba(0, 0, 0, 0.08);\\n }\\n .toolbar-button.error {\\n background: linear-gradient(#fdf3f3, #e6d6d7);\\n color: #b00;\\n }\\n\\n .autoInsertedLeaf.cm-property {\\n -webkit-animation-duration: 6s;\\n animation-duration: 6s;\\n -webkit-animation-name: insertionFade;\\n animation-name: insertionFade;\\n border-bottom: 2px solid rgba(255, 255, 255, 0);\\n border-radius: 2px;\\n margin: -2px -4px -1px;\\n padding: 2px 4px 1px;\\n }\\n\\n @-webkit-keyframes insertionFade {\\n from,\\n to {\\n background: rgba(255, 255, 255, 0);\\n border-color: rgba(255, 255, 255, 0);\\n }\\n\\n 15%,\\n 85% {\\n background: #fbffc9;\\n border-color: #f0f3c0;\\n }\\n }\\n\\n @keyframes insertionFade {\\n from,\\n to {\\n background: rgba(255, 255, 255, 0);\\n border-color: rgba(255, 255, 255, 0);\\n }\\n\\n 15%,\\n 85% {\\n background: #fbffc9;\\n border-color: #f0f3c0;\\n }\\n }\\n\\n .CodeMirror pre {\\n padding: 0 4px; /* Horizontal padding of content */\\n }\\n\\n .CodeMirror-scrollbar-filler,\\n .CodeMirror-gutter-filler {\\n background-color: white; /* The little square between H and V scrollbars */\\n }\\n\\n /* GUTTER */\\n\\n .CodeMirror-gutters {\\n background-color: transparent;\\n border: none;\\n white-space: nowrap;\\n }\\n .CodeMirror-linenumbers {\\n background: \", \";\\n }\\n .CodeMirror-linenumber {\\n font-family: Open Sans, sans-serif;\\n font-weight: 600;\\n font-size: \", \";\\n color: \", \";\\n min-width: 20px;\\n padding: 0 3px 0 5px;\\n text-align: right;\\n white-space: nowrap;\\n }\\n\\n .CodeMirror-guttermarker {\\n color: black;\\n }\\n .CodeMirror-guttermarker-subtle {\\n color: #999;\\n }\\n\\n .cm-tab {\\n display: inline-block;\\n text-decoration: inherit;\\n }\\n\\n .CodeMirror-ruler {\\n border-left: 1px solid #ccc;\\n position: absolute;\\n }\\n .cm-negative {\\n color: #d44;\\n }\\n .cm-positive {\\n color: #292;\\n }\\n .cm-header,\\n .cm-strong {\\n font-weight: bold;\\n }\\n .cm-em {\\n font-style: italic;\\n }\\n .cm-link {\\n text-decoration: underline;\\n }\\n .cm-strikethrough {\\n text-decoration: line-through;\\n }\\n\\n .cm-s-default .cm-error {\\n color: #f00;\\n }\\n .cm-invalidchar {\\n color: #f00;\\n }\\n\\n .CodeMirror-composing {\\n border-bottom: 2px solid;\\n }\\n .CodeMirror-matchingtag {\\n background: rgba(255, 150, 0, 0.3);\\n }\\n .CodeMirror-activeline-background {\\n background: #e8f2ff;\\n }\\n\\n /* The rest of this file contains styles related to the mechanics of\\n the editor. You probably shouldn't touch them. */\\n\\n .CodeMirror {\\n background: white;\\n overflow: hidden;\\n line-height: 1.6;\\n }\\n\\n .CodeMirror-scroll {\\n height: 100%;\\n /* 30px is the magic margin used to hide the element's real scrollbars */\\n /* See overflow: hidden in .CodeMirror */\\n /* margin-bottom: -30px;\\n margin-right: -30px; */\\n outline: none; /* Prevent dragging from highlighting the element */\\n overflow: hidden;\\n /* padding-bottom: 30px; */\\n position: relative;\\n &:hover {\\n overflow: scroll !important;\\n }\\n }\\n .CodeMirror-sizer {\\n border-right: 30px solid transparent;\\n position: relative;\\n }\\n\\n /* The fake, visible scrollbars. Used to force redraw during scrolling\\n before actual scrolling happens, thus preventing shaking and\\n flickering artifacts. */\\n .CodeMirror-vscrollbar,\\n .CodeMirror-hscrollbar,\\n .CodeMirror-scrollbar-filler,\\n .CodeMirror-gutter-filler {\\n display: none !important;\\n position: absolute;\\n z-index: 6;\\n }\\n .CodeMirror-vscrollbar {\\n overflow-x: hidden;\\n overflow-y: scroll;\\n right: 0;\\n top: 0;\\n }\\n .CodeMirror-hscrollbar {\\n bottom: 0;\\n left: 0;\\n overflow-x: scroll;\\n overflow-y: hidden;\\n }\\n .CodeMirror-scrollbar-filler {\\n right: 0;\\n bottom: 0;\\n }\\n .CodeMirror-gutter-filler {\\n left: 0;\\n bottom: 0;\\n }\\n\\n .CodeMirror-gutters {\\n min-height: 100%;\\n position: absolute;\\n left: 0;\\n top: 0;\\n z-index: 3;\\n margin-left: 3px;\\n }\\n .CodeMirror-gutter {\\n display: inline-block;\\n height: 100%;\\n margin-bottom: -30px;\\n vertical-align: top;\\n white-space: normal;\\n /* Hack to make IE7 behave */\\n *zoom: 1;\\n *display: inline;\\n }\\n .CodeMirror-gutter-wrapper {\\n background: none !important;\\n border: none !important;\\n position: absolute;\\n z-index: 4;\\n }\\n .CodeMirror-gutter-background {\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n z-index: 4;\\n }\\n .CodeMirror-gutter-elt {\\n cursor: default;\\n position: absolute;\\n z-index: 4;\\n }\\n .CodeMirror-gutter-wrapper {\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n }\\n\\n .CodeMirror-lines {\\n cursor: text;\\n min-height: 1px; /* prevents collapsing before first draw */\\n }\\n .CodeMirror pre {\\n -webkit-tap-highlight-color: transparent;\\n /* Reset some styles that the rest of the page might have set */\\n background: transparent;\\n border-radius: 0;\\n border-width: 0;\\n color: inherit;\\n font-family: inherit;\\n font-size: inherit;\\n -webkit-font-variant-ligatures: none;\\n font-variant-ligatures: none;\\n line-height: inherit;\\n margin: 0;\\n overflow: visible;\\n position: relative;\\n white-space: pre;\\n word-wrap: normal;\\n z-index: 2;\\n }\\n .CodeMirror-wrap pre {\\n word-wrap: break-word;\\n white-space: pre-wrap;\\n word-break: normal;\\n }\\n\\n .CodeMirror-linebackground {\\n position: absolute;\\n left: 0;\\n right: 0;\\n top: 0;\\n bottom: 0;\\n z-index: 0;\\n }\\n\\n .CodeMirror-linewidget {\\n overflow: auto;\\n position: relative;\\n z-index: 2;\\n }\\n\\n .CodeMirror-widget {\\n }\\n\\n .CodeMirror-code {\\n outline: none;\\n }\\n\\n /* Force content-box sizing for the elements where we expect it */\\n .CodeMirror-scroll,\\n .CodeMirror-sizer,\\n .CodeMirror-gutter,\\n .CodeMirror-gutters,\\n .CodeMirror-linenumber {\\n box-sizing: content-box;\\n }\\n\\n .CodeMirror-measure {\\n height: 0;\\n overflow: hidden;\\n position: absolute;\\n visibility: hidden;\\n width: 100%;\\n }\\n\\n .CodeMirror-cursor {\\n position: absolute;\\n }\\n .CodeMirror-measure pre {\\n position: static;\\n }\\n\\n div.CodeMirror-cursors {\\n position: relative;\\n visibility: hidden;\\n z-index: 3;\\n }\\n div.CodeMirror-dragcursors {\\n visibility: visible;\\n }\\n\\n .CodeMirror-focused div.CodeMirror-cursors {\\n visibility: visible;\\n }\\n\\n .CodeMirror-selected {\\n background: \", \";\\n }\\n .CodeMirror-focused .CodeMirror-selected {\\n background: \", \";\\n }\\n .CodeMirror-crosshair {\\n cursor: crosshair;\\n }\\n .CodeMirror-line::-moz-selection,\\n .CodeMirror-line > span::-moz-selection,\\n .CodeMirror-line > span > span::-moz-selection {\\n background: \", \";\\n }\\n .CodeMirror-line::selection,\\n .CodeMirror-line > span::selection,\\n .CodeMirror-line > span > span::selection {\\n background: \", \";\\n }\\n .CodeMirror-line::-moz-selection,\\n .CodeMirror-line > span::-moz-selection,\\n .CodeMirror-line > span > span::-moz-selection {\\n background: \", \";\\n }\\n\\n .cm-searching {\\n background: #ffa;\\n background: rgba(255, 255, 0, 0.4);\\n }\\n\\n /* IE7 hack to prevent it from returning funny offsetTops on the spans */\\n .CodeMirror span {\\n *vertical-align: text-bottom;\\n }\\n\\n /* Used to force a border model for a node */\\n .cm-force-border {\\n padding-right: 0.1px;\\n }\\n\\n @media print {\\n /* Hide the cursor when printing */\\n .CodeMirror div.CodeMirror-cursors {\\n visibility: hidden;\\n }\\n }\\n\\n /* See issue #2901 */\\n .cm-tab-wrap-hack:after {\\n content: '';\\n }\\n\\n /* Help users use markselection to safely style text background */\\n span.CodeMirror-selectedtext {\\n background: none;\\n }\\n\\n .CodeMirror-dialog {\\n background: inherit;\\n color: inherit;\\n left: 0;\\n right: 0;\\n overflow: hidden;\\n padding: 0.1em 0.8em;\\n position: absolute;\\n z-index: 15;\\n }\\n\\n .CodeMirror-dialog-top {\\n border-bottom: 1px solid #eee;\\n top: 0;\\n }\\n\\n .CodeMirror-dialog-bottom {\\n border-top: 1px solid #eee;\\n bottom: 0;\\n }\\n\\n .CodeMirror-dialog input {\\n background: transparent;\\n border: 1px solid #d3d6db;\\n color: inherit;\\n font-family: monospace;\\n outline: none;\\n width: 20em;\\n }\\n\\n .CodeMirror-dialog span.CodeMirror-search-label {\\n color: \", \";\\n }\\n\\n .CodeMirror-dialog input.CodeMirror-search-field {\\n color: \", \";\\n background: \", \";\\n }\\n\\n .CodeMirror-dialog button {\\n font-size: 70%;\\n }\\n\\n .CodeMirror-foldgutter {\\n width: 0.7em;\\n }\\n .CodeMirror-foldgutter-open,\\n .CodeMirror-foldgutter-folded {\\n cursor: pointer;\\n }\\n .CodeMirror-foldgutter-open:after {\\n content: '\\u25BE';\\n }\\n .CodeMirror-foldgutter-folded:after {\\n content: '\\u25B8';\\n }\\n /* The lint marker gutter */\\n .CodeMirror-lint-markers {\\n width: 16px;\\n }\\n\\n .CodeMirror-jump-token {\\n cursor: pointer;\\n text-decoration: underline;\\n }\\n\" // Styling of portal for hints\n// .CodeMirror-info info for types breaks stack trace\n// tslint:disable-next-line\n])), function (p) {\n return p.theme.editorColours.comment;\n}, function (p) {\n return p.theme.editorColours.punctuation;\n}, function (p) {\n return p.theme.editorColours.property;\n}, function (p) {\n return p.theme.editorColours.keyword;\n}, function (p) {\n return p.theme.editorColours.def;\n}, function (p) {\n return p.theme.editorColours.def;\n}, function (p) {\n return p.theme.editorColours.attribute;\n}, function (p) {\n return p.theme.editorColours.number;\n}, function (p) {\n return p.theme.editorColours.string;\n}, function (p) {\n return p.theme.editorColours.builtin;\n}, function (p) {\n return p.theme.editorColours.string2;\n}, function (p) {\n return p.theme.editorColours.variable;\n}, function (p) {\n return p.theme.editorColours.meta;\n}, function (p) {\n return p.theme.editorColours.atom;\n}, function (p) {\n return p.theme.editorColours.ws;\n}, function (p) {\n return p.theme.settings['editor.fontFamily'];\n}, function (p) {\n return p.theme.settings['editor.fontSize'] + \"px\";\n}, function (p) {\n return p.theme.colours.text;\n}, function (p) {\n return p.theme.settings['editor.cursorShape'] === 'block' ? p.theme.editorColours.cursorColor : 'transparent';\n}, function (p) {\n return p.theme.settings['editor.cursorShape'] === 'line' ? \"1px solid \" + p.theme.editorColours.cursorColor : 0;\n}, function (p) {\n return p.theme.settings['editor.cursorShape'] === 'underline' ? \"1px solid \" + p.theme.editorColours.cursorColor : 0;\n}, function (p) {\n return p.theme.editorColours.editorBackground;\n}, function (p) {\n return p.theme.settings['editor.fontSize'] - 2 + \"px\";\n}, function (p) {\n return p.theme.colours.textInactive;\n}, function (p) {\n return p.theme.editorColours.selection;\n}, function (p) {\n return p.theme.editorColours.selection;\n}, function (p) {\n return p.theme.editorColours.selection;\n}, function (p) {\n return p.theme.editorColours.selection;\n}, function (p) {\n return p.theme.editorColours.selection;\n}, function (p) {\n return p.theme.colours.text;\n}, function (p) {\n return p.theme.colours.text;\n}, function (p) {\n return p.theme.colours.background;\n}); // Styling of portal for hints\n// .CodeMirror-info info for types breaks stack trace\n// tslint:disable-next-line\n\nvar GlobalStyle = styled_1.createGlobalStyle(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n *::-webkit-scrollbar {\\n -webkit-appearance: none;\\n width: 7px;\\n height: 7px;\\n }\\n *::-webkit-scrollbar-track-piece {\\n background-color: rgba(255, 255, 255, 0);\\n }\\n *::-webkit-scrollbar-track {\\n background-color: inherit;\\n }\\n *::-webkit-scrollbar-thumb {\\n max-height: 100px;\\n border-radius: 3px;\\n background-color: rgba(1, 1, 1, 0.23);\\n }\\n *::-webkit-scrollbar-thumb:hover {\\n background-color: rgba(1, 1, 1, 0.35);\\n }\\n *::-webkit-scrollbar-thumb:active {\\n background-color: rgba(1, 1, 1, 0.48);\\n }\\n *::-webkit-scrollbar-corner {\\n background: rgba(0,0,0,0);\\n }\\n\\n\\n .CodeMirror-lint-tooltip, .CodeMirror-info {\\n background-color: white;\\n border-radius: 4px 4px 4px 4px;\\n border: 1px solid black;\\n color: #09141C;\\n font-family: Open Sans, monospace;\\n font-size: 14px;\\n max-width: 600px;\\n opacity: 0;\\n overflow: hidden;\\n padding: 12px 14px;\\n position: fixed;\\n -webkit-transition: opacity 0.4s;\\n transition: opacity 0.4s;\\n z-index: 100;\\n }\\n\\n .CodeMirror-lint-message-error,\\n .CodeMirror-lint-message-warning {\\n padding-left: 18px;\\n }\\n\\n .CodeMirror-lint-mark-error,\\n .CodeMirror-lint-mark-warning {\\n background-position: left bottom;\\n background-repeat: repeat-x;\\n }\\n\\n .CodeMirror-lint-mark-error {\\n background-image: url('data:image/svg+xml;utf8,\\n \\n \\n ');\\n }\\n\\n .CodeMirror-lint-mark-warning {\\n background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJFhQXEbhTg7YAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAMklEQVQI12NkgIIvJ3QXMjAwdDN+OaEbysDA4MPAwNDNwMCwiOHLCd1zX07o6kBVGQEAKBANtobskNMAAAAASUVORK5CYII=');\\n }\\n\\n .CodeMirror-lint-marker-error,\\n .CodeMirror-lint-marker-warning {\\n background-position: center center;\\n background-repeat: no-repeat;\\n cursor: pointer;\\n display: inline-block;\\n height: 16px;\\n position: relative;\\n vertical-align: middle;\\n width: 16px;\\n }\\n\\n .CodeMirror-lint-message-error,\\n .CodeMirror-lint-message-warning {\\n background-position: top left;\\n background-repeat: no-repeat;\\n padding-left: 22px;\\n }\\n\\n .CodeMirror-lint-marker-error,\\n .CodeMirror-lint-message-error {\\n background-image: url('data:image/svg+xml;utf8,\\n \\n \\n \\n ');\\n background-position: 0 50%;\\n }\\n\\n .CodeMirror-lint-marker-warning,\\n .CodeMirror-lint-message-warning {\\n background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAANlBMVEX/uwDvrwD/uwD/uwD/uwD/uwD/uwD/uwD/uwD6twD/uwAAAADurwD2tQD7uAD+ugAAAAD/uwDhmeTRAAAADHRSTlMJ8mN1EYcbmiixgACm7WbuAAAAVklEQVR42n3PUQqAIBBFUU1LLc3u/jdbOJoW1P08DA9Gba8+YWJ6gNJoNYIBzAA2chBth5kLmG9YUoG0NHAUwFXwO9LuBQL1giCQb8gC9Oro2vp5rncCIY8L8uEx5ZkAAAAASUVORK5CYII=');\\n }\\n\\n .CodeMirror-lint-marker-multiple {\\n background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAMAAADzjKfhAAAACVBMVEUAAAAAAAC/v7914kyHAAAAAXRSTlMAQObYZgAAACNJREFUeNo1ioEJAAAIwmz/H90iFFSGJgFMe3gaLZ0od+9/AQZ0ADosbYraAAAAAElFTkSuQmCC');\\n background-position: right bottom;\\n background-repeat: no-repeat;\\n width: 100%;\\n height: 100%;\\n }\\n\\n .CodeMirror-lint-mark-error {\\n &:before {\\n content: '';\\n width: 50px;\\n height: 14px;\\n position: absolute;\\n background: #FF4F56;\\n left: -80px;\\n top: 50%;\\n transform: translateY(-50%);\\n z-index: 10;\\n }\\n }\\n\\n .CodeMirror-lint-message-error span {\\n color: white;\\n background: #FF4F56;\\n font-family: 'Source Code Pro', monospace;\\n font-weight: 600;\\n border-radius: 2px;\\n padding: 0 4px;\\n }\\n\\n .CodeMirror-hints {\\n background: white;\\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);\\n font-size: 14px;\\n list-style: none;\\n margin-left: -6px;\\n margin: 0;\\n max-height: 20em;\\n overflow: hidden;\\n padding: 0;\\n position: absolute;\\n z-index: 10;\\n border-radius: 2px;\\n top: 0;\\n left: 0;\\n &:hover {\\n overflow-y: overlay;\\n }\\n }\\n\\n .CodeMirror-hints-wrapper {\\n font-family: 'Open Sans', sans-serif;\\n background: white;\\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.45);\\n margin-left: -6px;\\n position: absolute;\\n z-index: 10;\\n }\\n\\n .CodeMirror-hints-wrapper .CodeMirror-hints {\\n box-shadow: none;\\n margin-left: 0;\\n position: relative;\\n z-index: 0;\\n }\\n\\n .CodeMirror-hint {\\n color: rgba(15, 32, 45, 0.6);\\n cursor: pointer;\\n margin: 0;\\n max-width: 300px;\\n overflow: hidden;\\n padding: 6px 12px;\\n white-space: pre;\\n }\\n\\n li.CodeMirror-hint-active {\\n background-color: #2a7ed3;\\n border-top-color: white;\\n color: white;\\n }\\n\\n .CodeMirror-hint-information {\\n border-top: solid 1px rgba(0, 0, 0, 0.1);\\n max-width: 300px;\\n padding: 10px 12px;\\n position: relative;\\n z-index: 1;\\n background-color: rgba(15, 32, 45, 0.03);\\n font-size: 14px;\\n }\\n\\n .CodeMirror-hint-information:first-child {\\n border-bottom: solid 1px #c0c0c0;\\n border-top: none;\\n margin-bottom: -1px;\\n }\\n\\n .CodeMirror-hint-information .content {\\n color: rgba(15, 32, 45, 0.6);\\n box-orient: vertical;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n line-clamp: 3;\\n line-height: 1.36;\\n max-height: 59px;\\n overflow: hidden;\\n text-overflow: -o-ellipsis-lastline;\\n }\\n\\n .CodeMirror-hint-information .content p:first-child {\\n margin-top: 0;\\n }\\n\\n .CodeMirror-hint-information .content p:last-child {\\n margin-bottom: 0;\\n }\\n\\n .CodeMirror-hint-information .infoType {\\n color: rgb(241, 143, 1);\\n cursor: pointer;\\n display: inline;\\n margin-right: 0.5em;\\n }\\n\"], [\"\\n *::-webkit-scrollbar {\\n -webkit-appearance: none;\\n width: 7px;\\n height: 7px;\\n }\\n *::-webkit-scrollbar-track-piece {\\n background-color: rgba(255, 255, 255, 0);\\n }\\n *::-webkit-scrollbar-track {\\n background-color: inherit;\\n }\\n *::-webkit-scrollbar-thumb {\\n max-height: 100px;\\n border-radius: 3px;\\n background-color: rgba(1, 1, 1, 0.23);\\n }\\n *::-webkit-scrollbar-thumb:hover {\\n background-color: rgba(1, 1, 1, 0.35);\\n }\\n *::-webkit-scrollbar-thumb:active {\\n background-color: rgba(1, 1, 1, 0.48);\\n }\\n *::-webkit-scrollbar-corner {\\n background: rgba(0,0,0,0);\\n }\\n\\n\\n .CodeMirror-lint-tooltip, .CodeMirror-info {\\n background-color: white;\\n border-radius: 4px 4px 4px 4px;\\n border: 1px solid black;\\n color: #09141C;\\n font-family: Open Sans, monospace;\\n font-size: 14px;\\n max-width: 600px;\\n opacity: 0;\\n overflow: hidden;\\n padding: 12px 14px;\\n position: fixed;\\n -webkit-transition: opacity 0.4s;\\n transition: opacity 0.4s;\\n z-index: 100;\\n }\\n\\n .CodeMirror-lint-message-error,\\n .CodeMirror-lint-message-warning {\\n padding-left: 18px;\\n }\\n\\n .CodeMirror-lint-mark-error,\\n .CodeMirror-lint-mark-warning {\\n background-position: left bottom;\\n background-repeat: repeat-x;\\n }\\n\\n .CodeMirror-lint-mark-error {\\n background-image: url('data:image/svg+xml;utf8,\\n \\n \\n ');\\n }\\n\\n .CodeMirror-lint-mark-warning {\\n background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJFhQXEbhTg7YAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAMklEQVQI12NkgIIvJ3QXMjAwdDN+OaEbysDA4MPAwNDNwMCwiOHLCd1zX07o6kBVGQEAKBANtobskNMAAAAASUVORK5CYII=');\\n }\\n\\n .CodeMirror-lint-marker-error,\\n .CodeMirror-lint-marker-warning {\\n background-position: center center;\\n background-repeat: no-repeat;\\n cursor: pointer;\\n display: inline-block;\\n height: 16px;\\n position: relative;\\n vertical-align: middle;\\n width: 16px;\\n }\\n\\n .CodeMirror-lint-message-error,\\n .CodeMirror-lint-message-warning {\\n background-position: top left;\\n background-repeat: no-repeat;\\n padding-left: 22px;\\n }\\n\\n .CodeMirror-lint-marker-error,\\n .CodeMirror-lint-message-error {\\n background-image: url('data:image/svg+xml;utf8,\\n \\n \\n \\n ');\\n background-position: 0 50%;\\n }\\n\\n .CodeMirror-lint-marker-warning,\\n .CodeMirror-lint-message-warning {\\n background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAANlBMVEX/uwDvrwD/uwD/uwD/uwD/uwD/uwD/uwD/uwD6twD/uwAAAADurwD2tQD7uAD+ugAAAAD/uwDhmeTRAAAADHRSTlMJ8mN1EYcbmiixgACm7WbuAAAAVklEQVR42n3PUQqAIBBFUU1LLc3u/jdbOJoW1P08DA9Gba8+YWJ6gNJoNYIBzAA2chBth5kLmG9YUoG0NHAUwFXwO9LuBQL1giCQb8gC9Oro2vp5rncCIY8L8uEx5ZkAAAAASUVORK5CYII=');\\n }\\n\\n .CodeMirror-lint-marker-multiple {\\n background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAMAAADzjKfhAAAACVBMVEUAAAAAAAC/v7914kyHAAAAAXRSTlMAQObYZgAAACNJREFUeNo1ioEJAAAIwmz/H90iFFSGJgFMe3gaLZ0od+9/AQZ0ADosbYraAAAAAElFTkSuQmCC');\\n background-position: right bottom;\\n background-repeat: no-repeat;\\n width: 100%;\\n height: 100%;\\n }\\n\\n .CodeMirror-lint-mark-error {\\n &:before {\\n content: '';\\n width: 50px;\\n height: 14px;\\n position: absolute;\\n background: #FF4F56;\\n left: -80px;\\n top: 50%;\\n transform: translateY(-50%);\\n z-index: 10;\\n }\\n }\\n\\n .CodeMirror-lint-message-error span {\\n color: white;\\n background: #FF4F56;\\n font-family: 'Source Code Pro', monospace;\\n font-weight: 600;\\n border-radius: 2px;\\n padding: 0 4px;\\n }\\n\\n .CodeMirror-hints {\\n background: white;\\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);\\n font-size: 14px;\\n list-style: none;\\n margin-left: -6px;\\n margin: 0;\\n max-height: 20em;\\n overflow: hidden;\\n padding: 0;\\n position: absolute;\\n z-index: 10;\\n border-radius: 2px;\\n top: 0;\\n left: 0;\\n &:hover {\\n overflow-y: overlay;\\n }\\n }\\n\\n .CodeMirror-hints-wrapper {\\n font-family: 'Open Sans', sans-serif;\\n background: white;\\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.45);\\n margin-left: -6px;\\n position: absolute;\\n z-index: 10;\\n }\\n\\n .CodeMirror-hints-wrapper .CodeMirror-hints {\\n box-shadow: none;\\n margin-left: 0;\\n position: relative;\\n z-index: 0;\\n }\\n\\n .CodeMirror-hint {\\n color: rgba(15, 32, 45, 0.6);\\n cursor: pointer;\\n margin: 0;\\n max-width: 300px;\\n overflow: hidden;\\n padding: 6px 12px;\\n white-space: pre;\\n }\\n\\n li.CodeMirror-hint-active {\\n background-color: #2a7ed3;\\n border-top-color: white;\\n color: white;\\n }\\n\\n .CodeMirror-hint-information {\\n border-top: solid 1px rgba(0, 0, 0, 0.1);\\n max-width: 300px;\\n padding: 10px 12px;\\n position: relative;\\n z-index: 1;\\n background-color: rgba(15, 32, 45, 0.03);\\n font-size: 14px;\\n }\\n\\n .CodeMirror-hint-information:first-child {\\n border-bottom: solid 1px #c0c0c0;\\n border-top: none;\\n margin-bottom: -1px;\\n }\\n\\n .CodeMirror-hint-information .content {\\n color: rgba(15, 32, 45, 0.6);\\n box-orient: vertical;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n line-clamp: 3;\\n line-height: 1.36;\\n max-height: 59px;\\n overflow: hidden;\\n text-overflow: -o-ellipsis-lastline;\\n }\\n\\n .CodeMirror-hint-information .content p:first-child {\\n margin-top: 0;\\n }\\n\\n .CodeMirror-hint-information .content p:last-child {\\n margin-bottom: 0;\\n }\\n\\n .CodeMirror-hint-information .infoType {\\n color: rgb(241, 143, 1);\\n cursor: pointer;\\n display: inline;\\n margin-right: 0.5em;\\n }\\n\"])));\n\nvar Wrapper = function Wrapper(_a) {\n var children = _a.children;\n\n function lintMessage(e) {\n if (e.target.classList.contains('CodeMirror-lint-mark-error')) {\n var items = document.getElementsByClassName('CodeMirror-lint-message-error');\n\n for (var _i = 0, _a = Array.from(items); _i < _a.length; _i++) {\n var item = _a[_i];\n item.innerHTML = item.innerHTML.replace(/\"(.*?)\"/g, '$1');\n }\n }\n }\n\n return React.createElement(EditorWrapper, {\n onMouseMove: lintMessage\n }, children, React.createElement(GlobalStyle, null));\n};\n\nvar GraphqlContainer = styled_1.styled.div(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n color: #141823;\\n display: flex;\\n flex-direction: row;\\n font-family: system, -apple-system, 'San Francisco', '.SFNSDisplay-Regular',\\n 'Segoe UI', Segoe, 'Segoe WP', 'Helvetica Neue', helvetica, 'Lucida Grande',\\n arial, sans-serif;\\n font-size: 14px;\\n height: 100%;\\n margin: 0;\\n overflow: hidden;\\n width: 100%;\\n\"], [\"\\n color: #141823;\\n display: flex;\\n flex-direction: row;\\n font-family: system, -apple-system, 'San Francisco', '.SFNSDisplay-Regular',\\n 'Segoe UI', Segoe, 'Segoe WP', 'Helvetica Neue', helvetica, 'Lucida Grande',\\n arial, sans-serif;\\n font-size: 14px;\\n height: 100%;\\n margin: 0;\\n overflow: hidden;\\n width: 100%;\\n\"])));\n\nvar Container =\n/** @class */\nfunction (_super) {\n __extends(Container, _super);\n\n function Container() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.getWidth = function () {\n return _this.graphqlContainer.offsetWidth;\n };\n\n _this.setGraphqlContainer = function (ref) {\n _this.graphqlContainer = ref;\n };\n\n return _this;\n }\n\n Container.prototype.render = function () {\n return React.createElement(GraphqlContainer, {\n ref: this.setGraphqlContainer\n }, this.props.children);\n };\n\n return Container;\n}(React.PureComponent);\n\nexports.Container = Container;\nexports.default = Wrapper;\nvar templateObject_1, templateObject_2, templateObject_3;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _a;\n\nvar redux_actions_1 = require(\"redux-actions\");\n\nexports.setStacks = (_a = redux_actions_1.createActions({\n SET_STACKS: function SET_STACKS(sessionId, stacks) {\n return {\n sessionId: sessionId,\n stacks: stacks\n };\n },\n ADD_STACK: function ADD_STACK(sessionId, field, x, y) {\n return {\n sessionId: sessionId,\n field: field,\n x: x,\n y: y\n };\n },\n TOGGLE_DOCS: function TOGGLE_DOCS(sessionId, activeTabIdx) {\n return {\n sessionId: sessionId,\n activeTabIdx: activeTabIdx\n };\n },\n SET_DOCS_VISIBLE: function SET_DOCS_VISIBLE(sessionId, open, activeTabIdx) {\n return {\n sessionId: sessionId,\n open: open,\n activeTabIdx: activeTabIdx\n };\n },\n CHANGE_WIDTH_DOCS: function CHANGE_WIDTH_DOCS(sessionId, width) {\n return {\n sessionId: sessionId,\n width: width\n };\n },\n CHANGE_KEY_MOVE: function CHANGE_KEY_MOVE(sessionId, move) {\n return {\n sessionId: sessionId,\n move: move\n };\n },\n SHOW_DOC_FOR_REFERENCE: function SHOW_DOC_FOR_REFERENCE(reference) {\n return {\n reference: reference\n };\n }\n}), _a.setStacks), exports.addStack = _a.addStack, exports.toggleDocs = _a.toggleDocs, exports.setDocsVisible = _a.setDocsVisible, exports.changeWidthDocs = _a.changeWidthDocs, exports.changeKeyMove = _a.changeKeyMove, exports.showDocForReference = _a.showDocForReference;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar reselect_1 = require(\"reselect\");\n\nvar reducers_1 = require(\"./reducers\");\n\nvar reducers_2 = require(\"../workspace/reducers\");\n\nexports.getSessionDocsState = reselect_1.createSelector([reducers_2.getSelectedWorkspace], function (state) {\n var sessionId = state.sessions.selectedSessionId;\n return state.docs.get(sessionId) || new reducers_1.DocsSession();\n});\nexports.getSessionDocs = reselect_1.createSelector([exports.getSessionDocsState], function (state) {\n return state.toJS();\n});\nexports.getDocsOpen = reselect_1.createSelector([exports.getSessionDocsState], function (state) {\n return state.get('docsOpen');\n});","import freeGlobal from './_freeGlobal.js';\n/** Detect free variable `self`. */\n\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n/** Used as a reference to the global object. */\n\nvar root = freeGlobal || freeSelf || Function('return this')();\nexport default root;","import root from './_root.js';\n/** Built-in value references. */\n\nvar Symbol = root.Symbol;\nexport default Symbol;","import Symbol from './_Symbol.js';\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar nativeObjectToString = objectProto.toString;\n/** Built-in value references. */\n\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n\n return result;\n}\n\nexport default getRawTag;","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar nativeObjectToString = objectProto.toString;\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n/** `Object#toString` result references. */\n\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n/** Built-in value references. */\n\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n\n return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);\n}\n\nexport default baseGetTag;","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;","import overArg from './_overArg.js';\n/** Built-in value references. */\n\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\nexport default getPrototype;","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n/** `Object#toString` result references. */\n\nvar objectTag = '[object Object]';\n/** Used for built-in method references. */\n\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n/** Used to resolve the decompiled source of functions. */\n\nvar funcToString = funcProto.toString;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/** Used to infer the `Object` constructor. */\n\nvar objectCtorString = funcToString.call(Object);\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n\n var proto = getPrototype(value);\n\n if (proto === null) {\n return true;\n }\n\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;","import isPlainObject from 'lodash-es/isPlainObject';\nimport $$observable from 'symbol-observable';\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\n\nexport var ActionTypes = {\n INIT: '@@redux/INIT'\n /**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\n};\nexport default function createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected listener to be a function.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer;\n dispatch({\n type: ActionTypes.INIT\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object') {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}","import { ActionTypes } from './createStore';\nimport isPlainObject from 'lodash-es/isPlainObject';\nimport warning from './utils/warning';\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionName = actionType && '\"' + actionType.toString() + '\"' || 'an action';\n return 'Given action ' + actionName + ', reducer \"' + key + '\" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state. ' + 'If you want this reducer to hold no value, you can return null instead of undefined.';\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return 'The ' + argumentName + ' has unexpected type of \"' + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + '\". Expected argument to be an object with the following ' + ('keys: \"' + reducerKeys.join('\", \"') + '\"');\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n\n if (unexpectedKeys.length > 0) {\n return 'Unexpected ' + (unexpectedKeys.length > 1 ? 'keys' : 'key') + ' ' + ('\"' + unexpectedKeys.join('\", \"') + '\" found in ' + argumentName + '. ') + 'Expected to find one of the known reducer keys instead: ' + ('\"' + reducerKeys.join('\", \"') + '\". Unexpected keys will be ignored.');\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error('Reducer \"' + key + '\" returned undefined during initialization. ' + 'If the state passed to the reducer is undefined, you must ' + 'explicitly return the initial state. The initial state may ' + 'not be undefined. If you don\\'t want to set a value for this reducer, ' + 'you can use null instead of undefined.');\n }\n\n var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.');\n\n if (typeof reducer(undefined, {\n type: type\n }) === 'undefined') {\n throw new Error('Reducer \"' + key + '\" returned undefined when probed with a random type. ' + ('Don\\'t try to handle ' + ActionTypes.INIT + ' or other actions in \"redux/*\" ') + 'namespace. They are considered private. Instead, you must return the ' + 'current state for any unknown actions, unless it is undefined, ' + 'in which case you must return the initial state, regardless of the ' + 'action type. The initial state may not be undefined, but can be null.');\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nexport default function combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning('No reducer provided for key \"' + key + '\"');\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers);\n var unexpectedKeyCache = void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError = void 0;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments[1];\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n return hasChanged ? nextState : state;\n };\n}","function bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(undefined, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nexport default function bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error('bindActionCreators expected an object or a function, instead received ' + (actionCreators === null ? 'null' : typeof actionCreators) + '. ' + 'Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?');\n }\n\n var keys = Object.keys(actionCreators);\n var boundActionCreators = {};\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}","/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nexport default function compose() {\n for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(undefined, arguments));\n };\n });\n}","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nimport compose from './compose';\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nexport default function applyMiddleware() {\n for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function (reducer, preloadedState, enhancer) {\n var store = createStore(reducer, preloadedState, enhancer);\n var _dispatch = store.dispatch;\n var chain = [];\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch(action) {\n return _dispatch(action);\n }\n };\n chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(undefined, chain)(store.dispatch);\n return _extends({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}","import createStore from './createStore';\nimport combineReducers from './combineReducers';\nimport bindActionCreators from './bindActionCreators';\nimport applyMiddleware from './applyMiddleware';\nimport compose from './compose';\nimport warning from './utils/warning';\n/*\n* This is a dummy function to check if the function name has been altered by minification.\n* If the function has been minified and NODE_ENV !== 'production', warn the user.\n*/\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \\'production\\'. ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or DefinePlugin for webpack (http://stackoverflow.com/questions/30030031) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { createStore, combineReducers, bindActionCreators, applyMiddleware, compose };","import { forEach, isCollection } from 'iterall';\nimport objectValues from '../polyfills/objectValues';\nimport inspect from '../jsutils/inspect';\nimport invariant from '../jsutils/invariant';\nimport isNullish from '../jsutils/isNullish';\nimport isInvalid from '../jsutils/isInvalid';\nimport isObjectLike from '../jsutils/isObjectLike';\nimport { Kind } from '../language/kinds';\nimport { GraphQLID } from '../type/scalars';\nimport { isLeafType, isEnumType, isInputObjectType, isListType, isNonNullType } from '../type/definition';\n/**\n * Produces a GraphQL Value AST given a JavaScript value.\n *\n * A GraphQL type must be provided, which will be used to interpret different\n * JavaScript values.\n *\n * | JSON Value | GraphQL Value |\n * | ------------- | -------------------- |\n * | Object | Input Object |\n * | Array | List |\n * | Boolean | Boolean |\n * | String | String / Enum Value |\n * | Number | Int / Float |\n * | Mixed | Enum Value |\n * | null | NullValue |\n *\n */\n\nexport function astFromValue(value, type) {\n if (isNonNullType(type)) {\n var astValue = astFromValue(value, type.ofType);\n\n if (astValue && astValue.kind === Kind.NULL) {\n return null;\n }\n\n return astValue;\n } // only explicit null, not undefined, NaN\n\n\n if (value === null) {\n return {\n kind: Kind.NULL\n };\n } // undefined, NaN\n\n\n if (isInvalid(value)) {\n return null;\n } // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but\n // the value is not an array, convert the value using the list's item type.\n\n\n if (isListType(type)) {\n var itemType = type.ofType;\n\n if (isCollection(value)) {\n var valuesNodes = [];\n forEach(value, function (item) {\n var itemNode = astFromValue(item, itemType);\n\n if (itemNode) {\n valuesNodes.push(itemNode);\n }\n });\n return {\n kind: Kind.LIST,\n values: valuesNodes\n };\n }\n\n return astFromValue(value, itemType);\n } // Populate the fields of the input object by creating ASTs from each value\n // in the JavaScript object according to the fields in the input type.\n\n\n if (isInputObjectType(type)) {\n if (!isObjectLike(value)) {\n return null;\n }\n\n var fieldNodes = [];\n\n for (var _i2 = 0, _objectValues2 = objectValues(type.getFields()); _i2 < _objectValues2.length; _i2++) {\n var field = _objectValues2[_i2];\n var fieldValue = astFromValue(value[field.name], field.type);\n\n if (fieldValue) {\n fieldNodes.push({\n kind: Kind.OBJECT_FIELD,\n name: {\n kind: Kind.NAME,\n value: field.name\n },\n value: fieldValue\n });\n }\n }\n\n return {\n kind: Kind.OBJECT,\n fields: fieldNodes\n };\n }\n /* istanbul ignore else */\n\n\n if (isLeafType(type)) {\n // Since value is an internally represented value, it must be serialized\n // to an externally represented value before converting into an AST.\n var serialized = type.serialize(value);\n\n if (isNullish(serialized)) {\n return null;\n } // Others serialize based on their corresponding JavaScript scalar types.\n\n\n if (typeof serialized === 'boolean') {\n return {\n kind: Kind.BOOLEAN,\n value: serialized\n };\n } // JavaScript numbers can be Int or Float values.\n\n\n if (typeof serialized === 'number') {\n var stringNum = String(serialized);\n return integerStringRegExp.test(stringNum) ? {\n kind: Kind.INT,\n value: stringNum\n } : {\n kind: Kind.FLOAT,\n value: stringNum\n };\n }\n\n if (typeof serialized === 'string') {\n // Enum types use Enum literals.\n if (isEnumType(type)) {\n return {\n kind: Kind.ENUM,\n value: serialized\n };\n } // ID types can use Int literals.\n\n\n if (type === GraphQLID && integerStringRegExp.test(serialized)) {\n return {\n kind: Kind.INT,\n value: serialized\n };\n }\n\n return {\n kind: Kind.STRING,\n value: serialized\n };\n }\n\n throw new TypeError(\"Cannot convert value to AST: \".concat(inspect(serialized)));\n } // Not reachable. All possible input types have been considered.\n\n /* istanbul ignore next */\n\n\n invariant(false, 'Unexpected input type: ' + inspect(type));\n}\n/**\n * IntValue:\n * - NegativeSign? 0\n * - NegativeSign? NonZeroDigit ( Digit+ )?\n */\n\nvar integerStringRegExp = /^-?(?:0|[1-9][0-9]*)$/;","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n(function (mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);else // Plain browser env\n mod(CodeMirror);\n})(function (CodeMirror) {\n \"use strict\";\n\n CodeMirror.registerHelper(\"fold\", \"brace\", function (cm, start) {\n var line = start.line,\n lineText = cm.getLine(line);\n var tokenType;\n\n function findOpening(openCh) {\n for (var at = start.ch, pass = 0;;) {\n var found = at <= 0 ? -1 : lineText.lastIndexOf(openCh, at - 1);\n\n if (found == -1) {\n if (pass == 1) break;\n pass = 1;\n at = lineText.length;\n continue;\n }\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 found + 1;\n at = found - 1;\n }\n }\n\n var startToken = \"{\",\n endToken = \"}\",\n startCh = findOpening(\"{\");\n\n if (startCh == null) {\n startToken = \"[\", endToken = \"]\";\n startCh = findOpening(\"[\");\n }\n\n if (startCh == null) return;\n var count = 1,\n lastLine = cm.lastLine(),\n end,\n endCh;\n\n outer: for (var i = line; i <= lastLine; ++i) {\n var text = cm.getLine(i),\n pos = i == line ? startCh : 0;\n\n for (;;) {\n var nextOpen = text.indexOf(startToken, pos),\n nextClose = text.indexOf(endToken, 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\n if (cm.getTokenTypeAt(CodeMirror.Pos(i, pos + 1)) == tokenType) {\n if (pos == nextOpen) ++count;else if (! --count) {\n end = i;\n endCh = pos;\n break outer;\n }\n }\n\n ++pos;\n }\n }\n\n if (end == null || line == end) return;\n return {\n from: CodeMirror.Pos(line, startCh),\n to: CodeMirror.Pos(end, endCh)\n };\n });\n CodeMirror.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; // Now find closing semicolon, return its position\n\n for (var i = line, e = Math.min(cm.lastLine(), line + 10); i <= e; ++i) {\n var text = cm.getLine(i),\n semi = text.indexOf(\";\");\n if (semi != -1) return {\n startCh: start.end,\n end: CodeMirror.Pos(i, semi)\n };\n }\n }\n\n var startLine = start.line,\n has = hasImport(startLine),\n prev;\n if (!has || hasImport(startLine - 1) || (prev = hasImport(startLine - 2)) && prev.end.line == startLine - 1) return null;\n\n for (var end = has.end;;) {\n var next = hasImport(end.line + 1);\n if (next == null) break;\n end = next.end;\n }\n\n return {\n from: cm.clipPos(CodeMirror.Pos(startLine, has.startCh + 1)),\n to: end\n };\n });\n CodeMirror.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,\n has = hasInclude(startLine);\n if (has == null || hasInclude(startLine - 1) != null) return null;\n\n for (var end = startLine;;) {\n var next = hasInclude(end + 1);\n if (next == null) break;\n ++end;\n }\n\n return {\n from: CodeMirror.Pos(startLine, has + 1),\n to: cm.clipPos(CodeMirror.Pos(end))\n };\n });\n});","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _autocompleteUtils = require('./autocompleteUtils');\n\nObject.defineProperty(exports, 'getDefinitionState', {\n enumerable: true,\n get: function get() {\n return _autocompleteUtils.getDefinitionState;\n }\n});\nObject.defineProperty(exports, 'getFieldDef', {\n enumerable: true,\n get: function get() {\n return _autocompleteUtils.getFieldDef;\n }\n});\nObject.defineProperty(exports, 'forEachState', {\n enumerable: true,\n get: function get() {\n return _autocompleteUtils.forEachState;\n }\n});\nObject.defineProperty(exports, 'objectValues', {\n enumerable: true,\n get: function get() {\n return _autocompleteUtils.objectValues;\n }\n});\nObject.defineProperty(exports, 'hintList', {\n enumerable: true,\n get: function get() {\n return _autocompleteUtils.hintList;\n }\n});\n\nvar _getAutocompleteSuggestions = require('./getAutocompleteSuggestions');\n\nObject.defineProperty(exports, 'getAutocompleteSuggestions', {\n enumerable: true,\n get: function get() {\n return _getAutocompleteSuggestions.getAutocompleteSuggestions;\n }\n});\n\nvar _getDefinition = require('./getDefinition');\n\nObject.defineProperty(exports, 'LANGUAGE', {\n enumerable: true,\n get: function get() {\n return _getDefinition.LANGUAGE;\n }\n});\nObject.defineProperty(exports, 'getDefinitionQueryResultForFragmentSpread', {\n enumerable: true,\n get: function get() {\n return _getDefinition.getDefinitionQueryResultForFragmentSpread;\n }\n});\nObject.defineProperty(exports, 'getDefinitionQueryResultForDefinitionNode', {\n enumerable: true,\n get: function get() {\n return _getDefinition.getDefinitionQueryResultForDefinitionNode;\n }\n});\n\nvar _getDiagnostics = require('./getDiagnostics');\n\nObject.defineProperty(exports, 'getDiagnostics', {\n enumerable: true,\n get: function get() {\n return _getDiagnostics.getDiagnostics;\n }\n});\nObject.defineProperty(exports, 'validateQuery', {\n enumerable: true,\n get: function get() {\n return _getDiagnostics.validateQuery;\n }\n});\n\nvar _getOutline = require('./getOutline');\n\nObject.defineProperty(exports, 'getOutline', {\n enumerable: true,\n get: function get() {\n return _getOutline.getOutline;\n }\n});\n\nvar _getHoverInformation = require('./getHoverInformation');\n\nObject.defineProperty(exports, 'getHoverInformation', {\n enumerable: true,\n get: function get() {\n return _getHoverInformation.getHoverInformation;\n }\n});\n\nvar _GraphQLLanguageService = require('./GraphQLLanguageService');\n\nObject.defineProperty(exports, 'GraphQLLanguageService', {\n enumerable: true,\n get: function get() {\n return _GraphQLLanguageService.GraphQLLanguageService;\n }\n});","\"use strict\";\n\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar redux_1 = require(\"redux\");\n\nvar react_redux_1 = require(\"react-redux\");\n\nvar graphql_1 = require(\"graphql\");\n\nvar ArgumentInline_1 = require(\"./ArgumentInline\");\n\nvar Icons_1 = require(\"../../Icons\");\n\nvar toJS_1 = require(\"../util/toJS\");\n\nvar actions_1 = require(\"../../../state/docs/actions\");\n\nvar selectors_1 = require(\"../../../state/docs/selectors\");\n\nvar selectors_2 = require(\"../../../state/sessions/selectors\");\n\nvar reselect_1 = require(\"reselect\");\n\nvar styled_1 = require(\"../../../styled\");\n\nvar TypeLink =\n/** @class */\nfunction (_super) {\n __extends(TypeLink, _super);\n\n function TypeLink(props) {\n var _this = _super.call(this, props) || this;\n\n _this.onClick = function () {\n if (_this.props.clickable) {\n _this.props.addStack(_this.props.sessionId, _this.props.type, _this.props.x, _this.props.y);\n }\n };\n\n _this.setRef = function (ref) {\n _this.ref = ref;\n };\n\n _this.state = {\n collapsed: false\n };\n return _this;\n }\n\n TypeLink.prototype.shouldComponentUpdate = function (nextProps, nextState) {\n return this.props.type !== nextProps.type || this.props.keyMove !== nextProps.keyMove || this.props.isActive !== nextProps.isActive || this.state.collapsed !== nextState.collapsed;\n };\n\n TypeLink.prototype.componentDidMount = function () {\n this.updateSize();\n };\n\n TypeLink.prototype.componentDidUpdate = function () {\n this.updateSize();\n };\n\n TypeLink.prototype.updateSize = function () {\n if (this.ref) {\n if (typeof this.props.onSetWidth === 'function') {\n this.props.onSetWidth(this.ref.scrollWidth);\n }\n\n var LINE_HEIGHT = 31;\n\n if (this.ref.scrollHeight > LINE_HEIGHT && !this.state.collapsed && this.props.collapsable) {\n this.setState({\n collapsed: true\n });\n }\n }\n };\n\n TypeLink.prototype.render = function () {\n var _a = this.props,\n type = _a.type,\n clickable = _a.clickable,\n className = _a.className,\n beforeNode = _a.beforeNode,\n afterNode = _a.afterNode,\n showParentName = _a.showParentName,\n isActive = _a.isActive;\n var isGraphqlType = graphql_1.isType(type);\n var fieldName = showParentName && type.parent ? React.createElement(\"span\", null, type.parent.name, \".\", React.createElement(\"b\", null, type.name)) : type.name;\n return React.createElement(DocsCategoryItem, {\n active: isActive,\n clickable: clickable,\n className: \"doc-category-item\" + (className ? className : ''),\n onClick: this.onClick,\n ref: this.setRef\n }, beforeNode, beforeNode && ' ', !isGraphqlType && React.createElement(\"span\", null, React.createElement(\"span\", {\n className: \"field-name\"\n }, fieldName), type.args && type.args.length > 0 && ['(', React.createElement(\"span\", {\n key: \"args\"\n }, this.state.collapsed ? React.createElement(Dots, null, \"...\") : type.args.map(function (arg) {\n return React.createElement(ArgumentInline_1.default, {\n key: arg.name,\n arg: arg\n });\n })), ')'], ': '), React.createElement(\"span\", {\n className: \"type-name\"\n }, renderType(type.type || type)), type.defaultValue !== undefined ? React.createElement(DefaultValue, null, ' ', \"= \", React.createElement(\"span\", null, \"\" + JSON.stringify(type.defaultValue, null, 2))) : undefined, clickable && React.createElement(IconBox, null, React.createElement(Icons_1.Triangle, null)), afterNode && ' ', afterNode);\n };\n\n TypeLink.defaultProps = {\n clickable: true,\n collapsable: false\n };\n return TypeLink;\n}(React.Component);\n\nfunction renderType(type) {\n if (type instanceof graphql_1.GraphQLNonNull) {\n return React.createElement(\"span\", null, renderType(type.ofType), '!');\n }\n\n if (type instanceof graphql_1.GraphQLList) {\n return React.createElement(\"span\", null, '[', renderType(type.ofType), ']');\n }\n\n return React.createElement(\"span\", null, type.name);\n}\n\nvar mapStateToProps = function mapStateToProps(state, _a) {\n var x = _a.x,\n y = _a.y;\n var docs = selectors_1.getSessionDocsState(state);\n var sessionId = selectors_2.getSelectedSessionIdFromRoot(state);\n\n if (docs) {\n var nav = docs.navStack.get(x);\n\n if (nav) {\n var isActive = nav.get('x') === x && nav.get('y') === y;\n return {\n isActive: isActive,\n keyMove: docs.keyMove,\n lastActive: isActive && x === docs.navStack.length - 1,\n sessionId: sessionId\n };\n }\n }\n\n return {\n isActive: false,\n keyMove: false,\n lastActive: false,\n sessionId: sessionId\n };\n};\n\nvar selector = reselect_1.createSelector([mapStateToProps], function (s) {\n return s;\n});\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch) {\n return redux_1.bindActionCreators({\n addStack: actions_1.addStack\n }, dispatch);\n};\n\nexports.default = react_redux_1.connect(selector, mapDispatchToProps)(toJS_1.toJS(TypeLink));\nvar DocsCategoryItem = styled_1.styled('div')(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n position: relative;\\n padding: 6px 16px;\\n overflow: auto;\\n font-size: 14px;\\n transition: 0.1s background-color;\\n background: \", \";\\n\\n cursor: \", \";\\n\\n &:hover {\\n color: \", \";\\n background: #2a7ed3;\\n .field-name,\\n .type-name,\\n .arg-name,\\n span {\\n color: \", \" !important;\\n }\\n }\\n b {\\n font-weight: 600;\\n }\\n\"], [\"\\n position: relative;\\n padding: 6px 16px;\\n overflow: auto;\\n font-size: 14px;\\n transition: 0.1s background-color;\\n background: \", \";\\n\\n cursor: \", \";\\n\\n &:hover {\\n color: \", \";\\n background: #2a7ed3;\\n .field-name,\\n .type-name,\\n .arg-name,\\n span {\\n color: \", \" !important;\\n }\\n }\\n b {\\n font-weight: 600;\\n }\\n\"])), function (p) {\n return p.active ? p.theme.colours.black07 : p.theme.colours.white;\n}, function (p) {\n return p.clickable ? 'pointer' : 'select';\n}, function (p) {\n return p.theme.colours.white;\n}, function (p) {\n return p.theme.colours.white;\n});\nvar Dots = styled_1.styled.span(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n font-weight: 600;\\n\"], [\"\\n font-weight: 600;\\n\"])));\nvar IconBox = styled_1.styled.div(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n position: absolute;\\n right: 10px;\\n top: 50%;\\n transform: translateY(-50%);\\n\"], [\"\\n position: absolute;\\n right: 10px;\\n top: 50%;\\n transform: translateY(-50%);\\n\"])));\nvar DefaultValue = styled_1.styled.span(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n color: \", \";\\n span {\\n color: #1f61a9;\\n }\\n\"], [\"\\n color: \", \";\\n span {\\n color: #1f61a9;\\n }\\n\"])), function (p) {\n return p.theme.colours.black30;\n});\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4;","'use strict';\n\nfunction isNothing(subject) {\n return typeof subject === 'undefined' || subject === null;\n}\n\nfunction isObject(subject) {\n return typeof subject === 'object' && subject !== null;\n}\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;else if (isNothing(sequence)) return [];\n return [sequence];\n}\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction repeat(string, count) {\n var result = '',\n cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\nfunction isNegativeZero(number) {\n return number === 0 && Number.NEGATIVE_INFINITY === 1 / number;\n}\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;","'use strict';\n/*eslint-disable max-len*/\n\nvar common = require('./common');\n\nvar YAMLException = require('./exception');\n\nvar Type = require('./type');\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n result.push(currentType);\n });\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\nfunction compileMap()\n/* lists... */\n{\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n },\n index,\n length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n\n return result;\n}\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\nSchema.DEFAULT = null;\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) {\n return schema instanceof Schema;\n })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) {\n return type instanceof Type;\n })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\nmodule.exports = Schema;","import { fork } from './io';\nimport { takeEveryHelper, takeLatestHelper, throttleHelper } from './sagaHelpers';\nexport function takeEvery(patternOrChannel, worker) {\n for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n return fork.apply(undefined, [takeEveryHelper, patternOrChannel, worker].concat(args));\n}\nexport function takeLatest(patternOrChannel, worker) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n return fork.apply(undefined, [takeLatestHelper, patternOrChannel, worker].concat(args));\n}\nexport function throttle(ms, pattern, worker) {\n for (var _len3 = arguments.length, args = Array(_len3 > 3 ? _len3 - 3 : 0), _key3 = 3; _key3 < _len3; _key3++) {\n args[_key3 - 3] = arguments[_key3];\n }\n\n return fork.apply(undefined, [throttleHelper, ms, pattern, worker].concat(args));\n}","export { take, takem, put, all, race, call, apply, cps, fork, spawn, join, cancel, select, actionChannel, cancelled, flush, getContext, setContext } from './internal/io';\nexport { takeEvery, takeLatest, throttle } from './internal/io-helpers';","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}","var queue = [];\n/**\n Variable to hold a counting semaphore\n - Incrementing adds a lock and puts the scheduler in a `suspended` state (if it's not\n already suspended)\n - Decrementing releases a lock. Zero locks puts the scheduler in a `released` state. This\n triggers flushing the queued tasks.\n**/\n\nvar semaphore = 0;\n/**\n Executes a task 'atomically'. Tasks scheduled during this execution will be queued\n and flushed after this task has finished (assuming the scheduler endup in a released\n state).\n**/\n\nfunction exec(task) {\n try {\n suspend();\n task();\n } finally {\n release();\n }\n}\n/**\n Executes or queues a task depending on the state of the scheduler (`suspended` or `released`)\n**/\n\n\nexport function asap(task) {\n queue.push(task);\n\n if (!semaphore) {\n suspend();\n flush();\n }\n}\n/**\n Puts the scheduler in a `suspended` state. Scheduled tasks will be queued until the\n scheduler is released.\n**/\n\nexport function suspend() {\n semaphore++;\n}\n/**\n Puts the scheduler in a `released` state.\n**/\n\nfunction release() {\n semaphore--;\n}\n/**\n Releases the current lock. Executes all queued tasks if the scheduler is in the released state.\n**/\n\n\nexport function flush() {\n release();\n var task = void 0;\n\n while (!semaphore && (task = queue.shift()) !== undefined) {\n exec(task);\n }\n}","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n'use strict';\n/* eslint-disable no-unused-vars */\n\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n if (val === null || val === undefined) {\n throw new TypeError('Object.assign cannot be called with null or undefined');\n }\n\n return Object(val);\n}\n\nfunction shouldUseNative() {\n try {\n if (!Object.assign) {\n return false;\n } // Detect buggy property enumeration order in older V8 versions.\n // https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\n\n var test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\n test1[5] = 'de';\n\n if (Object.getOwnPropertyNames(test1)[0] === '5') {\n return false;\n } // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\n\n var test2 = {};\n\n for (var i = 0; i < 10; i++) {\n test2['_' + String.fromCharCode(i)] = i;\n }\n\n var order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n return test2[n];\n });\n\n if (order2.join('') !== '0123456789') {\n return false;\n } // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\n\n var test3 = {};\n 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n test3[letter] = letter;\n });\n\n if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') {\n return false;\n }\n\n return true;\n } catch (err) {\n // We don't expect any of the above to throw, but better to be safe.\n return false;\n }\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n var from;\n var to = toObject(target);\n var symbols;\n\n for (var s = 1; s < arguments.length; s++) {\n from = Object(arguments[s]);\n\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n\n if (getOwnPropertySymbols) {\n symbols = getOwnPropertySymbols(from);\n\n for (var i = 0; i < symbols.length; i++) {\n if (propIsEnumerable.call(from, symbols[i])) {\n to[symbols[i]] = from[symbols[i]];\n }\n }\n }\n }\n\n return to;\n};","// shim for using process in browser\nvar process = module.exports = {}; // cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\n\nfunction defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n}\n\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n})();\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n } // if setTimeout wasn't available but was latter defined\n\n\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\n\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n } // if clearTimeout wasn't available but was latter defined\n\n\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\n\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n\n draining = false;\n\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n\n while (len) {\n currentQueue = queue;\n queue = [];\n\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n\n queueIndex = -1;\n len = queue.length;\n }\n\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n\n queue.push(new Item(fun, args));\n\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}; // v8 likes predictible objects\n\n\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\n\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\n\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\n\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) {\n return [];\n};\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () {\n return '/';\n};\n\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\n\nprocess.umask = function () {\n return 0;\n};","/**\n * cuid.js\n * Collision-resistant UID generator for browsers and node.\n * Sequential for fast db lookups and recency sorting.\n * Safe for element IDs and server-side lookups.\n *\n * Extracted from CLCTR\n *\n * Copyright (c) Eric Elliott 2012\n * MIT License\n */\n\n/*global window, navigator, document, require, process, module */\n(function (app) {\n 'use strict';\n\n var namespace = 'cuid',\n c = 0,\n blockSize = 4,\n base = 36,\n discreteValues = Math.pow(base, blockSize),\n pad = function pad(num, size) {\n var s = \"000000000\" + num;\n return s.substr(s.length - size);\n },\n randomBlock = function randomBlock() {\n return pad((Math.random() * discreteValues << 0).toString(base), blockSize);\n },\n safeCounter = function safeCounter() {\n c = c < discreteValues ? c : 0;\n c++; // this is not subliminal\n\n return c - 1;\n },\n api = function cuid() {\n // Starting with a lowercase letter makes\n // it HTML element ID friendly.\n var letter = 'c',\n // hard-coded allows for sequential access\n // timestamp\n // warning: this exposes the exact date and time\n // that the uid was created.\n timestamp = new Date().getTime().toString(base),\n // Prevent same-machine collisions.\n counter,\n // A few chars to generate distinct ids for different\n // clients (so different computers are far less\n // likely to generate the same id)\n fingerprint = api.fingerprint(),\n // Grab some more chars from Math.random()\n random = randomBlock() + randomBlock();\n counter = pad(safeCounter().toString(base), blockSize);\n return letter + timestamp + counter + fingerprint + random;\n };\n\n api.slug = function slug() {\n var date = new Date().getTime().toString(36),\n counter,\n print = api.fingerprint().slice(0, 1) + api.fingerprint().slice(-1),\n random = randomBlock().slice(-2);\n counter = safeCounter().toString(36).slice(-4);\n return date.slice(-2) + counter + print + random;\n };\n\n api.globalCount = function globalCount() {\n // We want to cache the results of this\n var cache = function calc() {\n var i,\n count = 0;\n\n for (i in window) {\n count++;\n }\n\n return count;\n }();\n\n api.globalCount = function () {\n return cache;\n };\n\n return cache;\n };\n\n api.fingerprint = function browserPrint() {\n return pad((navigator.mimeTypes.length + navigator.userAgent.length).toString(36) + api.globalCount().toString(36), 4);\n }; // don't change anything from here down.\n\n\n if (app.register) {\n app.register(namespace, api);\n } else if (typeof module !== 'undefined') {\n module.exports = api;\n } else {\n app[namespace] = api;\n }\n})(this.applitude || this);","\"use strict\";\n\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __generator = undefined && undefined.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar prettier = require(\"prettier/standalone\");\n\nvar graphql = require(\"prettier/parser-graphql\"); // tslint:disable\n\n\nfunction safely(cb) {\n return function () {\n var _i, e_1;\n\n var args = [];\n\n for (_i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2,, 3]);\n\n return [4\n /*yield*/\n , cb.apply(void 0, args)];\n\n case 1:\n _a.sent();\n\n return [3\n /*break*/\n , 3];\n\n case 2:\n e_1 = _a.sent();\n console.error(e_1);\n return [3\n /*break*/\n , 3];\n\n case 3:\n return [2\n /*return*/\n ];\n }\n });\n };\n}\n\nexports.safely = safely;\n\nfunction prettify(query, options) {\n return prettier.format(query, __assign({}, options, {\n parser: 'graphql',\n plugins: [graphql]\n }));\n}\n\nexports.prettify = prettify;\n\nfunction isIframe() {\n try {\n return window.self !== window.top;\n } catch (e) {\n return true;\n }\n}\n\nexports.isIframe = isIframe;","/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;\n(function () {\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n /** Used as the semantic version number. */\n\n var VERSION = '4.17.15';\n /** Used as the size to enable large array optimizations. */\n\n var LARGE_ARRAY_SIZE = 200;\n /** Error message constants. */\n\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function';\n /** Used to stand-in for `undefined` hash values. */\n\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n /** Used as the maximum memoize cache size. */\n\n var MAX_MEMOIZE_SIZE = 500;\n /** Used as the internal argument placeholder. */\n\n var PLACEHOLDER = '__lodash_placeholder__';\n /** Used to compose bitmasks for cloning. */\n\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n /** Used to compose bitmasks for value comparisons. */\n\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n /** Used to compose bitmasks for function metadata. */\n\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n /** Used as default options for `_.truncate`. */\n\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n /** Used to indicate the type of lazy iteratees. */\n\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n /** Used as references for various `Number` constants. */\n\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n /** Used as references for the maximum length and index of an array. */\n\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n /** Used to associate wrap methods with their bit flags. */\n\n var wrapFlags = [['ary', WRAP_ARY_FLAG], ['bind', WRAP_BIND_FLAG], ['bindKey', WRAP_BIND_KEY_FLAG], ['curry', WRAP_CURRY_FLAG], ['curryRight', WRAP_CURRY_RIGHT_FLAG], ['flip', WRAP_FLIP_FLAG], ['partial', WRAP_PARTIAL_FLAG], ['partialRight', WRAP_PARTIAL_RIGHT_FLAG], ['rearg', WRAP_REARG_FLAG]];\n /** `Object#toString` result references. */\n\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n /** Used to match empty string literals in compiled template source. */\n\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n /** Used to match HTML entities and HTML characters. */\n\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n /** Used to match template delimiters. */\n\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n /** Used to match property names within property paths. */\n\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n /** Used to match leading and trailing whitespace. */\n\n var reTrim = /^\\s+|\\s+$/g,\n reTrimStart = /^\\s+/,\n reTrimEnd = /\\s+$/;\n /** Used to match wrap detail comments. */\n\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n /** Used to match words composed of alphanumeric characters. */\n\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n /** Used to match backslashes in property paths. */\n\n var reEscapeChar = /\\\\(\\\\)?/g;\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n /** Used to match `RegExp` flags from their coerced string values. */\n\n var reFlags = /\\w*$/;\n /** Used to detect bad signed hexadecimal string values. */\n\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n /** Used to detect binary string values. */\n\n var reIsBinary = /^0b[01]+$/i;\n /** Used to detect host constructors (Safari). */\n\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n /** Used to detect octal string values. */\n\n var reIsOctal = /^0o[0-7]+$/i;\n /** Used to detect unsigned integer values. */\n\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n /** Used to ensure capturing order of template delimiters. */\n\n var reNoMatch = /($^)/;\n /** Used to match unescaped characters in compiled string literals. */\n\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n /** Used to compose unicode character classes. */\n\n var rsAstralRange = \"\\\\ud800-\\\\udfff\",\n rsComboMarksRange = \"\\\\u0300-\\\\u036f\",\n reComboHalfMarksRange = \"\\\\ufe20-\\\\ufe2f\",\n rsComboSymbolsRange = \"\\\\u20d0-\\\\u20ff\",\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = \"\\\\u2700-\\\\u27bf\",\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = \"\\\\u2000-\\\\u206f\",\n rsSpaceRange = \" \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000\",\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = \"\\\\ufe0e\\\\ufe0f\",\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n /** Used to compose unicode capture groups. */\n\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = \"\\\\ud83c[\\\\udffb-\\\\udfff]\",\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = \"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\",\n rsSurrPair = \"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\",\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = \"\\\\u200d\";\n /** Used to compose unicode regexes. */\n\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n /** Used to match apostrophes. */\n\n var reApos = RegExp(rsApos, 'g');\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n\n var reComboMark = RegExp(rsCombo, 'g');\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n /** Used to match complex or compound words. */\n\n var reUnicodeWord = RegExp([rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')', rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower, rsUpper + '+' + rsOptContrUpper, rsOrdUpper, rsOrdLower, rsDigits, rsEmoji].join('|'), 'g');\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n /** Used to detect strings that need a more robust regexp to match words. */\n\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n /** Used to assign default `context` object properties. */\n\n var contextProps = ['Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array', 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object', 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array', 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap', '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'];\n /** Used to make template sourceURLs easier to identify. */\n\n var templateCounter = -1;\n /** Used to identify `toStringTag` values of typed arrays. */\n\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false;\n /** Used to map Latin Unicode letters to basic Latin letters. */\n\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A',\n '\\xc1': 'A',\n '\\xc2': 'A',\n '\\xc3': 'A',\n '\\xc4': 'A',\n '\\xc5': 'A',\n '\\xe0': 'a',\n '\\xe1': 'a',\n '\\xe2': 'a',\n '\\xe3': 'a',\n '\\xe4': 'a',\n '\\xe5': 'a',\n '\\xc7': 'C',\n '\\xe7': 'c',\n '\\xd0': 'D',\n '\\xf0': 'd',\n '\\xc8': 'E',\n '\\xc9': 'E',\n '\\xca': 'E',\n '\\xcb': 'E',\n '\\xe8': 'e',\n '\\xe9': 'e',\n '\\xea': 'e',\n '\\xeb': 'e',\n '\\xcc': 'I',\n '\\xcd': 'I',\n '\\xce': 'I',\n '\\xcf': 'I',\n '\\xec': 'i',\n '\\xed': 'i',\n '\\xee': 'i',\n '\\xef': 'i',\n '\\xd1': 'N',\n '\\xf1': 'n',\n '\\xd2': 'O',\n '\\xd3': 'O',\n '\\xd4': 'O',\n '\\xd5': 'O',\n '\\xd6': 'O',\n '\\xd8': 'O',\n '\\xf2': 'o',\n '\\xf3': 'o',\n '\\xf4': 'o',\n '\\xf5': 'o',\n '\\xf6': 'o',\n '\\xf8': 'o',\n '\\xd9': 'U',\n '\\xda': 'U',\n '\\xdb': 'U',\n '\\xdc': 'U',\n '\\xf9': 'u',\n '\\xfa': 'u',\n '\\xfb': 'u',\n '\\xfc': 'u',\n '\\xdd': 'Y',\n '\\xfd': 'y',\n '\\xff': 'y',\n '\\xc6': 'Ae',\n '\\xe6': 'ae',\n '\\xde': 'Th',\n '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n \"\\u0100\": 'A',\n \"\\u0102\": 'A',\n \"\\u0104\": 'A',\n \"\\u0101\": 'a',\n \"\\u0103\": 'a',\n \"\\u0105\": 'a',\n \"\\u0106\": 'C',\n \"\\u0108\": 'C',\n \"\\u010A\": 'C',\n \"\\u010C\": 'C',\n \"\\u0107\": 'c',\n \"\\u0109\": 'c',\n \"\\u010B\": 'c',\n \"\\u010D\": 'c',\n \"\\u010E\": 'D',\n \"\\u0110\": 'D',\n \"\\u010F\": 'd',\n \"\\u0111\": 'd',\n \"\\u0112\": 'E',\n \"\\u0114\": 'E',\n \"\\u0116\": 'E',\n \"\\u0118\": 'E',\n \"\\u011A\": 'E',\n \"\\u0113\": 'e',\n \"\\u0115\": 'e',\n \"\\u0117\": 'e',\n \"\\u0119\": 'e',\n \"\\u011B\": 'e',\n \"\\u011C\": 'G',\n \"\\u011E\": 'G',\n \"\\u0120\": 'G',\n \"\\u0122\": 'G',\n \"\\u011D\": 'g',\n \"\\u011F\": 'g',\n \"\\u0121\": 'g',\n \"\\u0123\": 'g',\n \"\\u0124\": 'H',\n \"\\u0126\": 'H',\n \"\\u0125\": 'h',\n \"\\u0127\": 'h',\n \"\\u0128\": 'I',\n \"\\u012A\": 'I',\n \"\\u012C\": 'I',\n \"\\u012E\": 'I',\n \"\\u0130\": 'I',\n \"\\u0129\": 'i',\n \"\\u012B\": 'i',\n \"\\u012D\": 'i',\n \"\\u012F\": 'i',\n \"\\u0131\": 'i',\n \"\\u0134\": 'J',\n \"\\u0135\": 'j',\n \"\\u0136\": 'K',\n \"\\u0137\": 'k',\n \"\\u0138\": 'k',\n \"\\u0139\": 'L',\n \"\\u013B\": 'L',\n \"\\u013D\": 'L',\n \"\\u013F\": 'L',\n \"\\u0141\": 'L',\n \"\\u013A\": 'l',\n \"\\u013C\": 'l',\n \"\\u013E\": 'l',\n \"\\u0140\": 'l',\n \"\\u0142\": 'l',\n \"\\u0143\": 'N',\n \"\\u0145\": 'N',\n \"\\u0147\": 'N',\n \"\\u014A\": 'N',\n \"\\u0144\": 'n',\n \"\\u0146\": 'n',\n \"\\u0148\": 'n',\n \"\\u014B\": 'n',\n \"\\u014C\": 'O',\n \"\\u014E\": 'O',\n \"\\u0150\": 'O',\n \"\\u014D\": 'o',\n \"\\u014F\": 'o',\n \"\\u0151\": 'o',\n \"\\u0154\": 'R',\n \"\\u0156\": 'R',\n \"\\u0158\": 'R',\n \"\\u0155\": 'r',\n \"\\u0157\": 'r',\n \"\\u0159\": 'r',\n \"\\u015A\": 'S',\n \"\\u015C\": 'S',\n \"\\u015E\": 'S',\n \"\\u0160\": 'S',\n \"\\u015B\": 's',\n \"\\u015D\": 's',\n \"\\u015F\": 's',\n \"\\u0161\": 's',\n \"\\u0162\": 'T',\n \"\\u0164\": 'T',\n \"\\u0166\": 'T',\n \"\\u0163\": 't',\n \"\\u0165\": 't',\n \"\\u0167\": 't',\n \"\\u0168\": 'U',\n \"\\u016A\": 'U',\n \"\\u016C\": 'U',\n \"\\u016E\": 'U',\n \"\\u0170\": 'U',\n \"\\u0172\": 'U',\n \"\\u0169\": 'u',\n \"\\u016B\": 'u',\n \"\\u016D\": 'u',\n \"\\u016F\": 'u',\n \"\\u0171\": 'u',\n \"\\u0173\": 'u',\n \"\\u0174\": 'W',\n \"\\u0175\": 'w',\n \"\\u0176\": 'Y',\n \"\\u0177\": 'y',\n \"\\u0178\": 'Y',\n \"\\u0179\": 'Z',\n \"\\u017B\": 'Z',\n \"\\u017D\": 'Z',\n \"\\u017A\": 'z',\n \"\\u017C\": 'z',\n \"\\u017E\": 'z',\n \"\\u0132\": 'IJ',\n \"\\u0133\": 'ij',\n \"\\u0152\": 'Oe',\n \"\\u0153\": 'oe',\n \"\\u0149\": \"'n\",\n \"\\u017F\": 's'\n };\n /** Used to map characters to HTML entities. */\n\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n /** Used to map HTML entities to characters. */\n\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n /** Used to escape characters for inclusion in compiled string literals. */\n\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n \"\\u2028\": 'u2028',\n \"\\u2029\": 'u2029'\n };\n /** Built-in method references without a dependency on `root`. */\n\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n /** Detect free variable `global` from Node.js. */\n\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n /** Detect free variable `self`. */\n\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n /** Used as a reference to the global object. */\n\n var root = freeGlobal || freeSelf || Function('return this')();\n /** Detect free variable `exports`. */\n\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n /** Detect free variable `module`. */\n\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n /** Detect the popular CommonJS extension `module.exports`. */\n\n var moduleExports = freeModule && freeModule.exports === freeExports;\n /** Detect free variable `process` from Node.js. */\n\n var freeProcess = moduleExports && freeGlobal.process;\n /** Used to access faster Node.js helpers. */\n\n var nodeUtil = function () {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n } // Legacy `process.binding('util')` for Node.js < 10.\n\n\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }();\n /* Node.js helper references. */\n\n\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0:\n return func.call(thisArg);\n\n case 1:\n return func.call(thisArg, args[0]);\n\n case 2:\n return func.call(thisArg, args[0], args[1]);\n\n case 3:\n return func.call(thisArg, args[0], args[1], args[2]);\n }\n\n return func.apply(thisArg, args);\n }\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n\n\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n\n return accumulator;\n }\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n\n\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n\n return array;\n }\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n\n\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n\n return array;\n }\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n\n\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n\n return true;\n }\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n\n\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n\n return result;\n }\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n\n\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n\n\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n\n return false;\n }\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n\n\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n\n return result;\n }\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n\n\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n\n return array;\n }\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n\n\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n\n return accumulator;\n }\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n\n\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[--length];\n }\n\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n\n return accumulator;\n }\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n\n\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n\n return false;\n }\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n\n\n var asciiSize = baseProperty('length');\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n\n function asciiToArray(string) {\n return string.split('');\n }\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n\n\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n\n\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function (value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n\n\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while (fromRight ? index-- : ++index < length) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n\n return -1;\n }\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n\n\n function baseIndexOf(array, value, fromIndex) {\n return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n\n\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n\n return -1;\n }\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n\n\n function baseIsNaN(value) {\n return value !== value;\n }\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n\n\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? baseSum(array, iteratee) / length : NAN;\n }\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n\n\n function baseProperty(key) {\n return function (object) {\n return object == null ? undefined : object[key];\n };\n }\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n\n\n function basePropertyOf(object) {\n return function (key) {\n return object == null ? undefined : object[key];\n };\n }\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n\n\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function (value, index, collection) {\n accumulator = initAccum ? (initAccum = false, value) : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\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 */\n\n\n function baseSortBy(array, comparer) {\n var length = array.length;\n array.sort(comparer);\n\n while (length--) {\n array[length] = array[length].value;\n }\n\n return array;\n }\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n\n\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n\n if (current !== undefined) {\n result = result === undefined ? current : result + current;\n }\n }\n\n return result;\n }\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n\n\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n\n return result;\n }\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n\n\n function baseToPairs(object, props) {\n return arrayMap(props, function (key) {\n return [key, object[key]];\n });\n }\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n\n\n function baseUnary(func) {\n return function (value) {\n return func(value);\n };\n }\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n\n\n function baseValues(object, props) {\n return arrayMap(props, function (key) {\n return object[key];\n });\n }\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n\n\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n\n return index;\n }\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n\n\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n\n return index;\n }\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n\n\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n\n return result;\n }\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n\n\n var deburrLetter = basePropertyOf(deburredLetters);\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n\n\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n\n\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n\n\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n\n\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n\n return result;\n }\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n\n\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n map.forEach(function (value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n\n\n function overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n }\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n\n\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n\n return result;\n }\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n\n\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n set.forEach(function (value) {\n result[++index] = value;\n });\n return result;\n }\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n\n\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n set.forEach(function (value) {\n result[++index] = [value, value];\n });\n return result;\n }\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n\n\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n\n return -1;\n }\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n\n\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n\n return index;\n }\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n\n\n function stringSize(string) {\n return hasUnicode(string) ? unicodeSize(string) : asciiSize(string);\n }\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n\n\n function stringToArray(string) {\n return hasUnicode(string) ? unicodeToArray(string) : asciiToArray(string);\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 */\n\n\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n\n while (reUnicode.test(string)) {\n ++result;\n }\n\n return result;\n }\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n\n\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n\n\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n\n\n var runInContext = function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n /** Built-in constructor references. */\n\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n /** Used for built-in method references. */\n\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n /** Used to detect overreaching core-js shims. */\n\n var coreJsData = context['__core-js_shared__'];\n /** Used to resolve the decompiled source of functions. */\n\n var funcToString = funcProto.toString;\n /** Used to check objects for own properties. */\n\n var hasOwnProperty = objectProto.hasOwnProperty;\n /** Used to generate unique IDs. */\n\n var idCounter = 0;\n /** Used to detect methods masquerading as native. */\n\n var maskSrcKey = function () {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? 'Symbol(src)_1.' + uid : '';\n }();\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\n\n var nativeObjectToString = objectProto.toString;\n /** Used to infer the `Object` constructor. */\n\n var objectCtorString = funcToString.call(Object);\n /** Used to restore the original `_` reference in `_.noConflict`. */\n\n var oldDash = root._;\n /** Used to detect if a method is native. */\n\n var reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&').replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n /** Built-in value references. */\n\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = function () {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }();\n /** Mocked built-ins. */\n\n\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n /* Built-in method references for those with the same name as other `lodash` methods. */\n\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n /* Built-in method references that are verified to be native. */\n\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n /** Used to store function metadata. */\n\n var metaMap = WeakMap && new WeakMap();\n /** Used to lookup unminified function names. */\n\n var realNames = {};\n /** Used to detect maps, sets, and weakmaps. */\n\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n /** Used to convert symbols to primitives and strings. */\n\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n\n return new LodashWrapper(value);\n }\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n\n\n var baseCreate = function () {\n function object() {}\n\n return function (proto) {\n if (!isObject(proto)) {\n return {};\n }\n\n if (objectCreate) {\n return objectCreate(proto);\n }\n\n object.prototype = proto;\n var result = new object();\n object.prototype = undefined;\n return result;\n };\n }();\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n\n\n function baseLodash() {} // No operation performed.\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n\n\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n\n\n lodash.templateSettings = {\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n }; // Ensure wrappers are instances of `baseLodash`.\n\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n\n\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n\n\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n\n return result;\n }\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n\n\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : start - 1,\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || !isRight && arrLength == length && takeCount == length) {\n return baseWrapperValue(array, this.__actions__);\n }\n\n var result = [];\n\n outer: while (length-- && resIndex < takeCount) {\n index += dir;\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n\n result[resIndex++] = value;\n }\n\n return result;\n } // Ensure `LazyWrapper` is an instance of `baseLodash`.\n\n\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n\n\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\n\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\n function hashGet(key) {\n var data = this.__data__;\n\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n }\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n\n\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value;\n return this;\n } // Add methods to `Hash`.\n\n\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n\n\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\n\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n\n var lastIndex = data.length - 1;\n\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n\n --this.size;\n return true;\n }\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n return index < 0 ? undefined : data[index][1];\n }\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n\n\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n\n return this;\n } // Add methods to `ListCache`.\n\n\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n\n\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash(),\n 'map': new (Map || ListCache)(),\n 'string': new Hash()\n };\n }\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\n\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n\n\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n } // Add methods to `MapCache`.\n\n\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n this.__data__ = new MapCache();\n\n while (++index < length) {\n this.add(values[index]);\n }\n }\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n\n\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n\n return this;\n }\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n\n\n function setCacheHas(value) {\n return this.__data__.has(value);\n } // Add methods to `SetCache`.\n\n\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n\n\n function stackClear() {\n this.__data__ = new ListCache();\n this.size = 0;\n }\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\n\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n this.size = data.size;\n return result;\n }\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\n function stackGet(key) {\n return this.__data__.get(key);\n }\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\n function stackHas(key) {\n return this.__data__.has(key);\n }\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n\n\n function stackSet(key, value) {\n var data = this.__data__;\n\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n\n if (!Map || pairs.length < LARGE_ARRAY_SIZE - 1) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n\n data = this.__data__ = new MapCache(pairs);\n }\n\n data.set(key, value);\n this.size = data.size;\n return this;\n } // Add methods to `Stack`.\n\n\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && ( // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' || // Node.js 0.10 has enumerable non-index properties on buffers.\n isBuff && (key == 'offset' || key == 'parent') || // PhantomJS 2 has enumerable non-index properties on typed arrays.\n isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset') || // Skip index properties.\n isIndex(key, length)))) {\n result.push(key);\n }\n }\n\n return result;\n }\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n\n\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n\n\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n\n\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n\n\n function assignMergeValue(object, key, value) {\n if (value !== undefined && !eq(object[key], value) || value === undefined && !(key in object)) {\n baseAssignValue(object, key, value);\n }\n }\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n\n\n function assignValue(object, key, value) {\n var objValue = object[key];\n\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || value === undefined && !(key in object)) {\n baseAssignValue(object, key, value);\n }\n }\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n\n\n function assocIndexOf(array, key) {\n var length = array.length;\n\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n\n return -1;\n }\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n\n\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function (value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n\n\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n\n\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n\n\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n\n\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n\n return result;\n }\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n\n\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n\n return number;\n }\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n\n\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n\n if (result !== undefined) {\n return result;\n }\n\n if (!isObject(value)) {\n return value;\n }\n\n var isArr = isArray(value);\n\n if (isArr) {\n result = initCloneArray(value);\n\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n\n if (tag == objectTag || tag == argsTag || isFunc && !object) {\n result = isFlat || isFunc ? {} : initCloneObject(value);\n\n if (!isDeep) {\n return isFlat ? copySymbolsIn(value, baseAssignIn(result, value)) : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n\n result = initCloneByTag(value, tag, isDeep);\n }\n } // Check for circular references and return its corresponding clone.\n\n\n stack || (stack = new Stack());\n var stacked = stack.get(value);\n\n if (stacked) {\n return stacked;\n }\n\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function (subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function (subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys;\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function (subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n } // Recursively populate clone (susceptible to call stack limits).\n\n\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n\n\n function baseConforms(source) {\n var props = keys(source);\n return function (object) {\n return baseConformsTo(object, source, props);\n };\n }\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n\n\n function baseConformsTo(object, source, props) {\n var length = props.length;\n\n if (object == null) {\n return !length;\n }\n\n object = Object(object);\n\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if (value === undefined && !(key in object) || !predicate(value)) {\n return false;\n }\n }\n\n return true;\n }\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n\n\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n\n return setTimeout(function () {\n func.apply(undefined, args);\n }, wait);\n }\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n\n\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n } else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n\n outer: while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n value = comparator || value !== 0 ? value : 0;\n\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n\n result.push(value);\n } else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n\n return result;\n }\n /**\n * The base implementation of `_.forEach` 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|Object} Returns `collection`.\n */\n\n\n var baseEach = createBaseEach(baseForOwn);\n /**\n * The base implementation of `_.forEachRight` 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|Object} Returns `collection`.\n */\n\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n /**\n * The base implementation of `_.every` 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 {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function (value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n\n\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined ? current === current && !isSymbol(current) : comparator(current, computed))) {\n var computed = current,\n result = value;\n }\n }\n\n return result;\n }\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n\n\n function baseFill(array, value, start, end) {\n var length = array.length;\n start = toInteger(start);\n\n if (start < 0) {\n start = -start > length ? 0 : length + start;\n }\n\n end = end === undefined || end > length ? length : toInteger(end);\n\n if (end < 0) {\n end += length;\n }\n\n end = start > end ? 0 : toLength(end);\n\n while (start < end) {\n array[start++] = value;\n }\n\n return array;\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 */\n\n\n function 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 /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n\n\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n\n return result;\n }\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n\n\n var baseFor = createBaseFor();\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n\n var baseForRight = createBaseFor(true);\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n\n\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n\n\n function baseFunctions(object, props) {\n return arrayFilter(props, function (key) {\n return isFunction(object[key]);\n });\n }\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n\n\n function baseGet(object, path) {\n path = castPath(path, object);\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n\n return index && index == length ? object : undefined;\n }\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n\n\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n\n\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n\n return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);\n }\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n\n\n function baseGt(value, other) {\n return value > other;\n }\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n\n\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n\n\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n\n\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n\n\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || length >= 120 && array.length >= 120) ? new SetCache(othIndex && array) : undefined;\n }\n\n array = arrays[0];\n var index = -1,\n seen = caches[0];\n\n outer: while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n value = comparator || value !== 0 ? value : 0;\n\n if (!(seen ? cacheHas(seen, computed) : includes(result, computed, comparator))) {\n othIndex = othLength;\n\n while (--othIndex) {\n var cache = caches[othIndex];\n\n if (!(cache ? cacheHas(cache, computed) : includes(arrays[othIndex], computed, comparator))) {\n continue outer;\n }\n }\n\n if (seen) {\n seen.push(computed);\n }\n\n result.push(value);\n }\n }\n\n return result;\n }\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n\n\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function (value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n\n\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n\n\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n\n\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n\n\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n\n\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n\n if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {\n return value !== value && other !== other;\n }\n\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n\n\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n\n objIsArr = true;\n objIsObj = false;\n }\n\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack());\n return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n stack || (stack = new Stack());\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n\n if (!isSameTag) {\n return false;\n }\n\n stack || (stack = new Stack());\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n\n\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n\n\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n\n object = Object(object);\n\n while (index--) {\n var data = matchData[index];\n\n if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {\n return false;\n }\n }\n\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack();\n\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n\n if (!(result === undefined ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) : result)) {\n return false;\n }\n }\n }\n\n return true;\n }\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n\n\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n\n\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n\n\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n\n\n function baseIsTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n\n\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n\n if (value == null) {\n return identity;\n }\n\n if (typeof value == 'object') {\n return isArray(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);\n }\n\n return property(value);\n }\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n\n\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n\n var result = [];\n\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n\n return result;\n }\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n\n\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n\n return result;\n }\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n\n\n function baseLt(value, other) {\n return value < other;\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 */\n\n\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n baseEach(collection, function (value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n\n\n function baseMatches(source) {\n var matchData = getMatchData(source);\n\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n\n return function (object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n\n\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n\n return function (object) {\n var objValue = get(object, path);\n return objValue === undefined && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n\n\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n\n baseFor(source, function (srcValue, key) {\n stack || (stack = new Stack());\n\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n } else {\n var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + '', object, source, stack) : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n\n\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n\n var newValue = customizer ? customizer(objValue, srcValue, key + '', object, source, stack) : undefined;\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n newValue = srcValue;\n\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n } else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n } else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n } else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n } else {\n newValue = [];\n }\n } else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n } else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n } else {\n isCommon = false;\n }\n }\n\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n\n assignMergeValue(object, key, newValue);\n }\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n\n\n function baseNth(array, n) {\n var length = array.length;\n\n if (!length) {\n return;\n }\n\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\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 */\n\n\n function baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee()));\n var result = baseMap(collection, function (value, key, collection) {\n var criteria = arrayMap(iteratees, function (iteratee) {\n return iteratee(value);\n });\n return {\n 'criteria': criteria,\n 'index': ++index,\n 'value': value\n };\n });\n return baseSortBy(result, function (object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n\n\n function basePick(object, paths) {\n return basePickBy(object, paths, function (value, path) {\n return hasIn(object, path);\n });\n }\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n\n\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n\n return result;\n }\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n\n\n function basePropertyDeep(path) {\n return function (object) {\n return baseGet(object, path);\n };\n }\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n\n\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n\n splice.call(array, fromIndex, 1);\n }\n }\n\n return array;\n }\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n\n\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n\n if (length == lastIndex || index !== previous) {\n var previous = index;\n\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n\n return array;\n }\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n\n\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n\n\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n\n return result;\n }\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n\n\n function baseRepeat(string, n) {\n var result = '';\n\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n } // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n\n\n do {\n if (n % 2) {\n result += string;\n }\n\n n = nativeFloor(n / 2);\n\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n\n\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n\n\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n\n\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n\n\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n\n path = castPath(path, object);\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n\n if (newValue === undefined) {\n newValue = isObject(objValue) ? objValue : isIndex(path[index + 1]) ? [] : {};\n }\n }\n\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n\n return object;\n }\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n\n\n var baseSetData = !metaMap ? identity : function (func, data) {\n metaMap.set(func, data);\n return func;\n };\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n\n var baseSetToString = !defineProperty ? identity : function (func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\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 */\n\n\n function 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\n end = end > length ? length : end;\n\n if (end < 0) {\n end += length;\n }\n\n length = start > end ? 0 : end - start >>> 0;\n start >>>= 0;\n var result = Array(length);\n\n while (++index < length) {\n result[index] = array[index + start];\n }\n\n return result;\n }\n /**\n * The base implementation of `_.some` 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 {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n\n\n function baseSome(collection, predicate) {\n var result;\n baseEach(collection, function (value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n\n\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = low + high >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) && (retHighest ? computed <= value : computed < value)) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n\n return high;\n }\n\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n\n\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n value = iteratee(value);\n var low = 0,\n high = array == null ? 0 : array.length,\n valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? computed <= value : computed < value;\n }\n\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n\n\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n\n return result;\n }\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n\n\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n\n if (isSymbol(value)) {\n return NAN;\n }\n\n return +value;\n }\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n\n\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n\n var result = value + '';\n return result == '0' && 1 / value == -INFINITY ? '-0' : result;\n }\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n\n\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n } else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n\n if (set) {\n return setToArray(set);\n }\n\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache();\n } else {\n seen = iteratee ? [] : result;\n }\n\n outer: while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n value = comparator || value !== 0 ? value : 0;\n\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n\n if (iteratee) {\n seen.push(computed);\n }\n\n result.push(value);\n } else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n\n result.push(value);\n }\n }\n\n return result;\n }\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n\n\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n\n\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n\n\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) && predicate(array[index], index, array)) {}\n\n return isDrop ? baseSlice(array, fromRight ? 0 : index, fromRight ? index + 1 : length) : baseSlice(array, fromRight ? index + 1 : 0, fromRight ? length : index);\n }\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n\n\n function baseWrapperValue(value, actions) {\n var result = value;\n\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n\n return arrayReduce(actions, function (result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n\n\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n\n\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n\n return result;\n }\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n\n\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n\n\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\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 */\n\n\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n\n\n var castRest = baseRest;\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return !start && end >= length ? array : baseSlice(array, start, end);\n }\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n\n\n var clearTimeout = ctxClearTimeout || function (id) {\n return root.clearTimeout(id);\n };\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n\n\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n buffer.copy(result);\n return result;\n }\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n\n\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n\n\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n\n\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n\n\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n\n\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\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 */\n\n\n function 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 var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if (!othIsNull && !othIsSymbol && !valIsSymbol && value > other || valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol || valIsNull && othIsDefined && othIsReflexive || !valIsDefined && othIsReflexive || !valIsReflexive) {\n return 1;\n }\n\n if (!valIsNull && !valIsSymbol && !othIsSymbol && value < other || othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol || othIsNull && valIsDefined && valIsReflexive || !othIsDefined && valIsReflexive || !othIsReflexive) {\n return -1;\n }\n }\n\n return 0;\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 */\n\n\n function 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\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\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\n\n return object.index - other.index;\n }\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n\n\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n\n return result;\n }\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n\n\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n\n var offset = argsIndex;\n\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n\n return result;\n }\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n\n\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n array || (array = Array(length));\n\n while (++index < length) {\n array[index] = source[index];\n }\n\n return array;\n }\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n\n\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n\n return object;\n }\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n\n\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n\n\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n\n\n function createAggregator(setter, initializer) {\n return function (collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n\n\n function createAssigner(assigner) {\n return baseRest(function (object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n customizer = assigner.length > 3 && typeof customizer == 'function' ? (length--, customizer) : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n\n object = Object(object);\n\n while (++index < length) {\n var source = sources[index];\n\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n\n return object;\n });\n }\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n\n\n function createBaseEach(eachFunc, fromRight) {\n return function (collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while (fromRight ? index-- : ++index < length) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n\n return collection;\n };\n }\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n\n\n function createBaseFor(fromRight) {\n return function (object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n\n return object;\n };\n }\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n\n\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = this && this !== root && this instanceof wrapper ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n\n return wrapper;\n }\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n\n\n function createCaseFirst(methodName) {\n return function (string) {\n string = toString(string);\n var strSymbols = hasUnicode(string) ? stringToArray(string) : undefined;\n var chr = strSymbols ? strSymbols[0] : string.charAt(0);\n var trailing = strSymbols ? castSlice(strSymbols, 1).join('') : string.slice(1);\n return chr[methodName]() + trailing;\n };\n }\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n\n\n function createCompounder(callback) {\n return function (string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n\n\n function createCtor(Ctor) {\n return function () {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n\n switch (args.length) {\n case 0:\n return new Ctor();\n\n case 1:\n return new Ctor(args[0]);\n\n case 2:\n return new Ctor(args[0], args[1]);\n\n case 3:\n return new Ctor(args[0], args[1], args[2]);\n\n case 4:\n return new Ctor(args[0], args[1], args[2], args[3]);\n\n case 5:\n return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n\n case 6:\n return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n\n case 7:\n return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args); // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n\n return isObject(result) ? result : thisBinding;\n };\n }\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n\n\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n\n var holders = length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder ? [] : replaceHolders(args, placeholder);\n length -= holders.length;\n\n if (length < arity) {\n return createRecurry(func, bitmask, createHybrid, wrapper.placeholder, undefined, args, holders, undefined, undefined, arity - length);\n }\n\n var fn = this && this !== root && this instanceof wrapper ? Ctor : func;\n return apply(fn, this, args);\n }\n\n return wrapper;\n }\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n\n\n function createFind(findIndexFunc) {\n return function (collection, predicate, fromIndex) {\n var iterable = Object(collection);\n\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n\n predicate = function predicate(key) {\n return iteratee(iterable[key], key, iterable);\n };\n }\n\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n\n\n function createFlow(fromRight) {\n return flatRest(function (funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n\n while (index--) {\n var func = funcs[index];\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n\n index = wrapper ? index : length;\n\n while (++index < length) {\n func = funcs[index];\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) && data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && !data[4].length && data[9] == 1) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = func.length == 1 && isLaziable(func) ? wrapper[funcName]() : wrapper.thru(func);\n }\n }\n\n return function () {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n\n return result;\n };\n });\n }\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n\n\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n\n length -= holdersCount;\n\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(func, bitmask, createHybrid, wrapper.placeholder, thisArg, args, newHolders, argPos, ary, arity - length);\n }\n\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n length = args.length;\n\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n\n if (isAry && ary < length) {\n args.length = ary;\n }\n\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n\n return fn.apply(thisBinding, args);\n }\n\n return wrapper;\n }\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n\n\n function createInverter(setter, toIteratee) {\n return function (object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n\n\n function createMathOperation(operator, defaultValue) {\n return function (value, other) {\n var result;\n\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n\n if (value !== undefined) {\n result = value;\n }\n\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n\n result = operator(value, other);\n }\n\n return result;\n };\n }\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n\n\n function createOver(arrayFunc) {\n return flatRest(function (iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function (args) {\n var thisArg = this;\n return arrayFunc(iteratees, function (iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n\n\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n var charsLength = chars.length;\n\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars) ? castSlice(stringToArray(result), 0, length).join('') : result.slice(0, length);\n }\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n\n\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = this && this !== root && this instanceof wrapper ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n\n return apply(fn, isBind ? thisArg : this, args);\n }\n\n return wrapper;\n }\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n\n\n function createRange(fromRight) {\n return function (start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n } // Ensure the sign of `-0` is preserved.\n\n\n start = toFinite(start);\n\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n\n step = step === undefined ? start < end ? 1 : -1 : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n\n\n function createRelationalOperation(operator) {\n return function (value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n\n return operator(value, other);\n };\n }\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n\n\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n bitmask |= isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG;\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n\n var newData = [func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, newHoldersRight, argPos, ary, arity];\n var result = wrapFunc.apply(undefined, newData);\n\n if (isLaziable(func)) {\n setData(result, newData);\n }\n\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n\n\n function createRound(methodName) {\n var func = Math[methodName];\n return function (number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n\n return func(number);\n };\n }\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n\n\n var createSet = !(Set && 1 / setToArray(new Set([, -0]))[1] == INFINITY) ? noop : function (values) {\n return new Set(values);\n };\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n\n function createToPairs(keysFunc) {\n return function (object) {\n var tag = getTag(object);\n\n if (tag == mapTag) {\n return mapToArray(object);\n }\n\n if (tag == setTag) {\n return setToPairs(object);\n }\n\n return baseToPairs(object, keysFunc(object));\n };\n }\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n\n\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n\n var length = partials ? partials.length : 0;\n\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n partials = holders = undefined;\n }\n\n var data = isBindKey ? undefined : getData(func);\n var newData = [func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity];\n\n if (data) {\n mergeData(newData, data);\n }\n\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined ? isBindKey ? 0 : func.length : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n\n\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined || eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key)) {\n return srcValue;\n }\n\n return objValue;\n }\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n\n\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n\n return objValue;\n }\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n\n\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n\n\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n } // Assume cyclic values are equal.\n\n\n var stacked = stack.get(array);\n\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n\n var index = -1,\n result = true,\n seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined;\n stack.set(array, other);\n stack.set(other, array); // Ignore non-index properties.\n\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);\n }\n\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n\n result = false;\n break;\n } // Recursively compare arrays (susceptible to call stack limits).\n\n\n if (seen) {\n if (!arraySome(other, function (othValue, othIndex) {\n if (!cacheHas(seen, othIndex) && (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n result = false;\n break;\n }\n }\n\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n\n\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\n return false;\n }\n\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == other + '';\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n } // Assume cyclic values are equal.\n\n\n var stacked = stack.get(object);\n\n if (stacked) {\n return stacked == other;\n }\n\n bitmask |= COMPARE_UNORDERED_FLAG; // Recursively compare objects (susceptible to call stack limits).\n\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n\n }\n\n return false;\n }\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n\n\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n\n var index = objLength;\n\n while (index--) {\n var key = objProps[index];\n\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n } // Assume cyclic values are equal.\n\n\n var stacked = stack.get(object);\n\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n var skipCtor = isPartial;\n\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);\n } // Recursively compare objects (susceptible to call stack limits).\n\n\n if (!(compared === undefined ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {\n result = false;\n break;\n }\n\n skipCtor || (skipCtor = key == 'constructor');\n }\n\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor; // Non `Object` object instances with different constructors are not equal.\n\n if (objCtor != othCtor && 'constructor' in object && 'constructor' in other && !(typeof objCtor == 'function' && objCtor instanceof objCtor && typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n\n\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n\n\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n\n\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n\n\n var getData = !metaMap ? noop : function (func) {\n return metaMap.get(func);\n };\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n\n function getFuncName(func) {\n var result = func.name + '',\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n\n return result;\n }\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n\n\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n\n\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n\n\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map;\n }\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n\n\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n result[length] = [key, value, isStrictComparable(value)];\n }\n\n return result;\n }\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n\n\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n\n\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n\n return result;\n }\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n\n\n var getSymbols = !nativeGetSymbols ? stubArray : function (object) {\n if (object == null) {\n return [];\n }\n\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function (symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function (object) {\n var result = [];\n\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n\n return result;\n };\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n\n var getTag = baseGetTag; // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n\n if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map && getTag(new Map()) != mapTag || Promise && getTag(Promise.resolve()) != promiseTag || Set && getTag(new Set()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) {\n getTag = function getTag(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString:\n return dataViewTag;\n\n case mapCtorString:\n return mapTag;\n\n case promiseCtorString:\n return promiseTag;\n\n case setCtorString:\n return setTag;\n\n case weakMapCtorString:\n return weakMapTag;\n }\n }\n\n return result;\n };\n }\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n\n\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop':\n start += size;\n break;\n\n case 'dropRight':\n end -= size;\n break;\n\n case 'take':\n end = nativeMin(end, start + size);\n break;\n\n case 'takeRight':\n start = nativeMax(start, end - size);\n break;\n }\n }\n\n return {\n 'start': start,\n 'end': end\n };\n }\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n\n\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n\n\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n\n object = object[key];\n }\n\n if (result || ++index != length) {\n return result;\n }\n\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) && (isArray(object) || isArguments(object));\n }\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n\n\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length); // Add properties assigned by `RegExp#exec`.\n\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n\n return result;\n }\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n\n\n function initCloneObject(object) {\n return typeof object.constructor == 'function' && !isPrototype(object) ? baseCreate(getPrototype(object)) : {};\n }\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n\n\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag:\n case float64Tag:\n case int8Tag:\n case int16Tag:\n case int32Tag:\n case uint8Tag:\n case uint8ClampedTag:\n case uint16Tag:\n case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor();\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor();\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n\n\n function insertWrapDetails(source, details) {\n var length = details.length;\n\n if (!length) {\n return source;\n }\n\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n\n\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) || !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n\n\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length && (type == 'number' || type != 'symbol' && reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;\n }\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n\n\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n\n var type = typeof index;\n\n if (type == 'number' ? isArrayLike(object) && isIndex(index, object.length) : type == 'string' && index in object) {\n return eq(object[index], value);\n }\n\n return false;\n }\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n\n\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n\n var type = typeof value;\n\n if (type == 'number' || type == 'symbol' || type == 'boolean' || value == null || isSymbol(value)) {\n return true;\n }\n\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);\n }\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n\n\n function isKeyable(value) {\n var type = typeof value;\n return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null;\n }\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n\n\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n\n if (func === other) {\n return true;\n }\n\n var data = getData(other);\n return !!data && func === data[0];\n }\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n\n\n function isMasked(func) {\n return !!maskSrcKey && maskSrcKey in func;\n }\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n\n\n var isMaskable = coreJsData ? isFunction : stubFalse;\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = typeof Ctor == 'function' && Ctor.prototype || objectProto;\n return value === proto;\n }\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n\n\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n\n\n function matchesStrictComparable(key, srcValue) {\n return function (object) {\n if (object == null) {\n return false;\n }\n\n return object[key] === srcValue && (srcValue !== undefined || key in Object(object));\n };\n }\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n\n\n function memoizeCapped(func) {\n var result = memoize(func, function (key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n\n return key;\n });\n var cache = result.cache;\n return result;\n }\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n\n\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n var isCombo = srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_CURRY_FLAG || srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_REARG_FLAG && data[7].length <= source[8] || srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG) && source[7].length <= source[8] && bitmask == WRAP_CURRY_FLAG; // Exit early if metadata can't be merged.\n\n if (!(isCommon || isCombo)) {\n return data;\n } // Use source `thisArg` if available.\n\n\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2]; // Set when currying a bound function.\n\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n } // Compose partial arguments.\n\n\n var value = source[3];\n\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n } // Compose partial right arguments.\n\n\n value = source[5];\n\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n } // Use source `argPos` if available.\n\n\n value = source[7];\n\n if (value) {\n data[7] = value;\n } // Use source `ary` if it's smaller.\n\n\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n } // Use source `arity` if one is not provided.\n\n\n if (data[9] == null) {\n data[9] = source[9];\n } // Use source `func` and merge bitmasks.\n\n\n data[0] = source[0];\n data[1] = newBitmask;\n return data;\n }\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n\n\n function nativeKeysIn(object) {\n var result = [];\n\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n\n return result;\n }\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n\n\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n\n\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? func.length - 1 : start, 0);\n return function () {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n\n index = -1;\n var otherArgs = Array(start + 1);\n\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n\n\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n\n\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n\n return array;\n }\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n\n\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n\n\n var setData = shortOut(baseSetData);\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n\n var setTimeout = ctxSetTimeout || function (func, wait) {\n return root.setTimeout(func, wait);\n };\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n\n\n var setToString = shortOut(baseSetToString);\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n\n function setWrapToString(wrapper, reference, bitmask) {\n var source = reference + '';\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n\n\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n return function () {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n lastCalled = stamp;\n\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n\n return func.apply(undefined, arguments);\n };\n }\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n\n\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n size = size === undefined ? length : size;\n\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n array[rand] = array[index];\n array[index] = value;\n }\n\n array.length = size;\n return array;\n }\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n\n\n var stringToPath = memoizeCapped(function (string) {\n var result = [];\n\n if (string.charCodeAt(0) === 46\n /* . */\n ) {\n result.push('');\n }\n\n string.replace(rePropName, function (match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : number || match);\n });\n return result;\n });\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n\n var result = value + '';\n return result == '0' && 1 / value == -INFINITY ? '-0' : result;\n }\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n\n\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n\n try {\n return func + '';\n } catch (e) {}\n }\n\n return '';\n }\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n\n\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function (pair) {\n var value = '_.' + pair[0];\n\n if (bitmask & pair[1] && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n\n\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n\n\n function chunk(array, size, guard) {\n if (guard ? isIterateeCall(array, size, guard) : size === undefined) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n\n var length = array == null ? 0 : array.length;\n\n if (!length || size < 1) {\n return [];\n }\n\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, index += size);\n }\n\n return result;\n }\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n\n\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n\n if (value) {\n result[resIndex++] = value;\n }\n }\n\n return result;\n }\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n\n\n function concat() {\n var length = arguments.length;\n\n if (!length) {\n return [];\n }\n\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n\n\n var difference = baseRest(function (array, values) {\n return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true)) : [];\n });\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n\n var differenceBy = baseRest(function (array, values) {\n var iteratee = last(values);\n\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n\n return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)) : [];\n });\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n\n var differenceWith = baseRest(function (array, values) {\n var comparator = last(values);\n\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n\n return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator) : [];\n });\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\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 * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n\n if (!length) {\n return [];\n }\n\n n = guard || n === undefined ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\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 * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n\n\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n\n if (!length) {\n return [];\n }\n\n n = guard || n === undefined ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n\n\n function dropRightWhile(array, predicate) {\n return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true, true) : [];\n }\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n\n\n function dropWhile(array, predicate) {\n return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true) : [];\n }\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n\n\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n\n if (!length) {\n return [];\n }\n\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n\n return baseFill(array, value, start, end);\n }\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n\n\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n\n if (!length) {\n return -1;\n }\n\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n\n\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n\n if (!length) {\n return -1;\n }\n\n var index = length - 1;\n\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n\n\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n\n\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n\n\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n\n if (!length) {\n return [];\n }\n\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n\n\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n\n return result;\n }\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n\n\n function head(array) {\n return array && array.length ? array[0] : undefined;\n }\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n\n\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n\n if (!length) {\n return -1;\n }\n\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n\n return baseIndexOf(array, value, index);\n }\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n\n\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n\n\n var intersection = baseRest(function (arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped) : [];\n });\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n\n var intersectionBy = baseRest(function (arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n\n return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, getIteratee(iteratee, 2)) : [];\n });\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n\n var intersectionWith = baseRest(function (arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n\n if (comparator) {\n mapped.pop();\n }\n\n return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, undefined, comparator) : [];\n });\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n\n\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n\n\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n\n if (!length) {\n return -1;\n }\n\n var index = length;\n\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n\n return value === value ? strictLastIndexOf(array, value, index) : baseFindIndex(array, baseIsNaN, index, true);\n }\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n\n\n function nth(array, n) {\n return array && array.length ? baseNth(array, toInteger(n)) : undefined;\n }\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n\n\n var pull = baseRest(pullAll);\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n\n function pullAll(array, values) {\n return array && array.length && values && values.length ? basePullAll(array, values) : array;\n }\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n\n\n function pullAllBy(array, values, iteratee) {\n return array && array.length && values && values.length ? basePullAll(array, values, getIteratee(iteratee, 2)) : array;\n }\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n\n\n function pullAllWith(array, values, comparator) {\n return array && array.length && values && values.length ? basePullAll(array, values, undefined, comparator) : array;\n }\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n\n\n var pullAt = flatRest(function (array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n basePullAt(array, arrayMap(indexes, function (index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n return result;\n });\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n\n function remove(array, predicate) {\n var result = [];\n\n if (!(array && array.length)) {\n return result;\n }\n\n var index = -1,\n indexes = [],\n length = array.length;\n predicate = getIteratee(predicate, 3);\n\n while (++index < length) {\n var value = array[index];\n\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n\n basePullAt(array, indexes);\n return result;\n }\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n\n\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\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 */\n\n\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n\n if (!length) {\n return [];\n }\n\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n } else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n\n return baseSlice(array, start, end);\n }\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n\n\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n\n\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n\n\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n\n if (length) {\n var index = baseSortedIndex(array, value);\n\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n\n return -1;\n }\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n\n\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n\n\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n\n\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n\n if (eq(array[index], value)) {\n return index;\n }\n }\n\n return -1;\n }\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n\n\n function sortedUniq(array) {\n return array && array.length ? baseSortedUniq(array) : [];\n }\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n\n\n function sortedUniqBy(array, iteratee) {\n return array && array.length ? baseSortedUniq(array, getIteratee(iteratee, 2)) : [];\n }\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n\n\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\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 */\n\n\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n\n n = guard || n === undefined ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.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 * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n\n\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n\n if (!length) {\n return [];\n }\n\n n = guard || n === undefined ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n\n\n function takeRightWhile(array, predicate) {\n return array && array.length ? baseWhile(array, getIteratee(predicate, 3), false, true) : [];\n }\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n\n\n function takeWhile(array, predicate) {\n return array && array.length ? baseWhile(array, getIteratee(predicate, 3)) : [];\n }\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n\n\n var union = baseRest(function (arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n\n var unionBy = baseRest(function (arrays) {\n var iteratee = last(arrays);\n\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n\n var unionWith = baseRest(function (arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n\n function uniq(array) {\n return array && array.length ? baseUniq(array) : [];\n }\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n\n\n function uniqBy(array, iteratee) {\n return array && array.length ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n\n\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return array && array.length ? baseUniq(array, undefined, comparator) : [];\n }\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n\n\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n\n var length = 0;\n array = arrayFilter(array, function (group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function (index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n\n\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n\n var result = unzip(array);\n\n if (iteratee == null) {\n return result;\n }\n\n return arrayMap(result, function (group) {\n return apply(iteratee, undefined, group);\n });\n }\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n\n\n var without = baseRest(function (array, values) {\n return isArrayLikeObject(array) ? baseDifference(array, values) : [];\n });\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n\n var xor = baseRest(function (arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n\n var xorBy = baseRest(function (arrays) {\n var iteratee = last(arrays);\n\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n\n var xorWith = baseRest(function (arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n\n var zip = baseRest(unzip);\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n\n\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n\n\n var zipWith = baseRest(function (arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n\n\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n\n\n function thru(value, interceptor) {\n return interceptor(value);\n }\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n\n\n var wrapperAt = flatRest(function (paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function interceptor(object) {\n return baseAt(object, paths);\n };\n\n if (length > 1 || this.__actions__.length || !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n\n value = value.slice(start, +start + (length ? 1 : 0));\n\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n\n return new LodashWrapper(value, this.__chain__).thru(function (array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n\n return array;\n });\n });\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n\n function wrapperChain() {\n return chain(this);\n }\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n\n\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n\n\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n return {\n 'done': done,\n 'value': value\n };\n }\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n\n\n function wrapperToIterator() {\n return this;\n }\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n\n\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n\n var previous = clone;\n parent = parent.__wrapped__;\n }\n\n previous.__wrapped__ = value;\n return result;\n }\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n\n\n function wrapperReverse() {\n var value = this.__wrapped__;\n\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n\n wrapped = wrapped.reverse();\n\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n\n return new LodashWrapper(wrapped, this.__chain__);\n }\n\n return this.thru(reverse);\n }\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n\n\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n\n\n var countBy = createAggregator(function (result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\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 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n\n return func(collection, getIteratee(predicate, 3));\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\n\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n\n\n var find = createFind(findIndex);\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n\n var findLast = createFind(findLastIndex);\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n\n\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n\n\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n\n\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n\n\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is 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} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n\n\n var groupBy = createAggregator(function (result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = fromIndex && !guard ? toInteger(fromIndex) : 0;\n var length = collection.length;\n\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n\n return isString(collection) ? fromIndex <= length && collection.indexOf(value, fromIndex) > -1 : !!length && baseIndexOf(collection, value, fromIndex) > -1;\n }\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n\n\n var invokeMap = baseRest(function (collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n baseEach(collection, function (value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n\n var keyBy = createAggregator(function (result, value, key) {\n baseAssignValue(result, key, value);\n });\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\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} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n\n\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n\n orders = guard ? undefined : orders;\n\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n\n return baseOrderBy(collection, iteratees, orders);\n }\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.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 array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n\n\n var partition = createAggregator(function (result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function () {\n return [[], []];\n });\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\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} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\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} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n\n\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\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 _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n\n\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n\n\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n\n\n function sampleSize(collection, n, guard) {\n if (guard ? isIterateeCall(collection, n, guard) : n === undefined) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n\n\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n\n\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n\n var tag = getTag(collection);\n\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n\n return baseKeys(collection).length;\n }\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\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 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n\n\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n\n return func(collection, getIteratee(predicate, 3));\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': 40 },\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', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n */\n\n\n var sortBy = baseRest(function (collection, iteratees) {\n if (collection == null) {\n return [];\n }\n\n var length = iteratees.length;\n\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\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n\n var now = ctxNow || function () {\n return root.Date.now();\n };\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n\n\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n\n n = toInteger(n);\n return function () {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n\n\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = func && n == null ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n\n\n function before(n, func) {\n var result;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n\n n = toInteger(n);\n return function () {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n\n if (n <= 1) {\n func = undefined;\n }\n\n return result;\n };\n }\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n\n\n var bind = baseRest(function (func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n\n var bindKey = baseRest(function (object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n\n return createWrap(key, bitmask, object, partials, holders);\n });\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n\n\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n\n\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n\n wait = toNumber(wait) || 0;\n\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time; // Start the timer for the trailing edge.\n\n timerId = setTimeout(timerExpired, wait); // Invoke the leading edge.\n\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime; // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n\n return lastCallTime === undefined || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n }\n\n function timerExpired() {\n var time = now();\n\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n } // Restart the timer.\n\n\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined; // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n\n return result;\n }\n\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n\n\n var defer = baseRest(function (func, args) {\n return baseDelay(func, 1, args);\n });\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n\n var delay = baseRest(function (func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n\n\n function memoize(func, resolver) {\n if (typeof func != 'function' || resolver != null && typeof resolver != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n\n var memoized = function memoized() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n\n memoized.cache = new (memoize.Cache || MapCache)();\n return memoized;\n } // Expose `MapCache`.\n\n\n memoize.Cache = MapCache;\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n\n return function () {\n var args = arguments;\n\n switch (args.length) {\n case 0:\n return !predicate.call(this);\n\n case 1:\n return !predicate.call(this, args[0]);\n\n case 2:\n return !predicate.call(this, args[0], args[1]);\n\n case 3:\n return !predicate.call(this, args[0], args[1], args[2]);\n }\n\n return !predicate.apply(this, args);\n };\n }\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n\n\n function once(func) {\n return before(2, func);\n }\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n\n\n var overArgs = castRest(function (func, transforms) {\n transforms = transforms.length == 1 && isArray(transforms[0]) ? arrayMap(transforms[0], baseUnary(getIteratee())) : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n var funcsLength = transforms.length;\n return baseRest(function (args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n\n return apply(func, this, args);\n });\n });\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n\n var partial = baseRest(function (func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n\n var partialRight = baseRest(function (func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n\n var rearg = flatRest(function (func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n\n\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function (args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n\n return apply(func, this, otherArgs);\n });\n }\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n\n\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n\n\n function unary(func) {\n return ary(func, 1);\n }\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

fred, barney, & pebbles

'\n */\n\n\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n\n\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n\n\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n\n\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n\n\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n\n\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n\n\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n\n\n function eq(value, other) {\n return value === other || value !== value && other !== other;\n }\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n\n\n var gt = createRelationalOperation(baseGt);\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n\n var gte = createRelationalOperation(function (value, other) {\n return value >= other;\n });\n /**\n * Checks if `value` is likely an `arguments` object.\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 an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n\n var isArguments = baseIsArguments(function () {\n return arguments;\n }()) ? baseIsArguments : function (value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n };\n /**\n * Checks if `value` is classified as an `Array` object.\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 an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n\n var isArray = Array.isArray;\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n\n\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n /**\n * Checks if `value` is classified as a boolean primitive or object.\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 a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n\n\n function isBoolean(value) {\n return value === true || value === false || isObjectLike(value) && baseGetTag(value) == boolTag;\n }\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n\n\n var isBuffer = nativeIsBuffer || stubFalse;\n /**\n * Checks if `value` is classified as a `Date` object.\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 a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n /**\n * Checks if `value` is likely a DOM element.\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 a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\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 */\n\n\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n\n if (isArrayLike(value) && (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n\n var tag = getTag(value);\n\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n\n return true;\n }\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n\n\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n\n\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n\n\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag || typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value);\n }\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\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 a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n\n\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n /**\n * Checks if `value` is classified as a `Function` object.\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 a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n\n\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n } // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n\n\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n\n\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n\n\n function isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\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 an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n\n\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n\n\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n\n\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n\n\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\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 `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n\n\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n\n\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n\n return baseIsNative(value);\n }\n /**\n * Checks if `value` is `null`.\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 `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n\n\n function isNull(value) {\n return value === null;\n }\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n\n\n function isNil(value) {\n return value == null;\n }\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\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 a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n\n\n function isNumber(value) {\n return typeof value == 'number' || isObjectLike(value) && baseGetTag(value) == numberTag;\n }\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n\n\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n\n var proto = getPrototype(value);\n\n if (proto === null) {\n return true;\n }\n\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;\n }\n /**\n * Checks if `value` is classified as a `RegExp` object.\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 a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n\n\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n\n\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n\n function isString(value) {\n return typeof value == 'string' || !isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag;\n }\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n\n\n function isSymbol(value) {\n return typeof value == 'symbol' || isObjectLike(value) && baseGetTag(value) == symbolTag;\n }\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n\n\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n\n function isUndefined(value) {\n return value === undefined;\n }\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n\n\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n\n\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n\n\n var lt = createRelationalOperation(baseLt);\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n\n var lte = createRelationalOperation(function (value, other) {\n return value <= other;\n });\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n\n function toArray(value) {\n if (!value) {\n return [];\n }\n\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : tag == setTag ? setToArray : values;\n return func(value);\n }\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n\n\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n\n value = toNumber(value);\n\n if (value === INFINITY || value === -INFINITY) {\n var sign = value < 0 ? -1 : 1;\n return sign * MAX_INTEGER;\n }\n\n return value === value ? value : 0;\n }\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n\n\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n return result === result ? remainder ? result - remainder : result : 0;\n }\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n\n\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n\n\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n\n if (isSymbol(value)) {\n return NAN;\n }\n\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? other + '' : other;\n }\n\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n }\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n\n\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n\n\n function toSafeInteger(value) {\n return value ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) : value === 0 ? value : 0;\n }\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n\n\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n\n\n var assign = createAssigner(function (object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n\n var assignIn = createAssigner(function (object, source) {\n copyObject(source, keysIn(source), object);\n });\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n\n var assignInWith = createAssigner(function (object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n\n var assignWith = createAssigner(function (object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n\n var at = flatRest(baseAt);\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n\n\n var defaults = baseRest(function (object, sources) {\n object = Object(object);\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined || eq(value, objectProto[key]) && !hasOwnProperty.call(object, key)) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n\n var defaultsDeep = baseRest(function (args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n\n\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n\n\n function forIn(object, iteratee) {\n return object == null ? object : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n\n\n function forInRight(object, iteratee) {\n return object == null ? object : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n\n\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n\n\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n\n\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n\n\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n\n\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n\n\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n\n\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n\n\n var invert = createInverter(function (result, value, key) {\n if (value != null && typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n\n var invertBy = createInverter(function (result, value, key) {\n if (value != null && typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n\n var invoke = baseRest(baseInvoke);\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n\n\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n\n\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n baseForOwn(object, function (value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n\n\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n baseForOwn(object, function (value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n\n\n var merge = createAssigner(function (object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n\n var mergeWith = createAssigner(function (object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n\n var omit = flatRest(function (object, paths) {\n var result = {};\n\n if (object == null) {\n return result;\n }\n\n var isDeep = false;\n paths = arrayMap(paths, function (path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n\n var length = paths.length;\n\n while (length--) {\n baseUnset(result, paths[length]);\n }\n\n return result;\n });\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n\n\n var pick = flatRest(function (object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n\n var props = arrayMap(getAllKeysIn(object), function (prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function (value, path) {\n return predicate(value, path[0]);\n });\n }\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n\n\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n var index = -1,\n length = path.length; // Ensure the loop is entered when path is empty.\n\n if (!length) {\n length = 1;\n object = undefined;\n }\n\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n\n object = isFunction(value) ? value.call(object) : value;\n }\n\n return object;\n }\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n\n\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n\n\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n\n\n var toPairs = createToPairs(keys);\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n\n var toPairsIn = createToPairs(keysIn);\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n iteratee = getIteratee(iteratee, 4);\n\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n\n if (isArrLike) {\n accumulator = isArr ? new Ctor() : [];\n } else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n } else {\n accumulator = {};\n }\n }\n\n (isArrLike ? arrayEach : baseForOwn)(object, function (value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n\n\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n\n\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n\n\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n\n\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n\n\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n\n\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n\n return baseClamp(toNumber(number), lower, upper);\n }\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n\n\n function inRange(number, start, end) {\n start = toFinite(start);\n\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n\n\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n } else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n } else {\n lower = toFinite(lower);\n\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1))), upper);\n }\n\n return baseRandom(lower, upper);\n }\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n\n\n var camelCase = createCompounder(function (result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n\n\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n\n\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n var length = string.length;\n position = position === undefined ? length : baseClamp(toInteger(position), 0, length);\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n\n\n function escape(string) {\n string = toString(string);\n return string && reHasUnescapedHtml.test(string) ? string.replace(reUnescapedHtml, escapeHtmlChar) : string;\n }\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n\n\n function escapeRegExp(string) {\n string = toString(string);\n return string && reHasRegExpChar.test(string) ? string.replace(reRegExpChar, '\\\\$&') : string;\n }\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n\n\n var kebabCase = createCompounder(function (result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n\n var lowerCase = createCompounder(function (result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n\n var lowerFirst = createCaseFirst('toLowerCase');\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n var strLength = length ? stringSize(string) : 0;\n\n if (!length || strLength >= length) {\n return string;\n }\n\n var mid = (length - strLength) / 2;\n return createPadding(nativeFloor(mid), chars) + string + createPadding(nativeCeil(mid), chars);\n }\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n\n\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n var strLength = length ? stringSize(string) : 0;\n return length && strLength < length ? string + createPadding(length - strLength, chars) : string;\n }\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n\n\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n var strLength = length ? stringSize(string) : 0;\n return length && strLength < length ? createPadding(length - strLength, chars) + string : string;\n }\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n\n\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n\n\n function repeat(string, n, guard) {\n if (guard ? isIterateeCall(string, n, guard) : n === undefined) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n\n return baseRepeat(toString(string), n);\n }\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n\n\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n\n\n var snakeCase = createCompounder(function (result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n\n if (!limit) {\n return [];\n }\n\n string = toString(string);\n\n if (string && (typeof separator == 'string' || separator != null && !isRegExp(separator))) {\n separator = baseToString(separator);\n\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n\n return string.split(separator, limit);\n }\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n\n\n var startCase = createCompounder(function (result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null ? 0 : baseClamp(toInteger(position), 0, string.length);\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '`;\n // If the inner JS formatter removes the parens, the expression might change its meaning:\n // f((a + b) / 2) vs f(a + b / 2)\n if (node.extra && node.extra.parenthesized && /^PRETTIER_HTML_PLACEHOLDER_\\d+_\\d+_IN_JS$/.test(node.name)) {\n return true;\n }\n\n return false;\n }\n\n if (parent.type === \"ParenthesizedExpression\") {\n return false;\n } // Add parens around the extends clause of a class. It is needed for almost\n // all expressions.\n\n\n if ((parent.type === \"ClassDeclaration\" || parent.type === \"ClassExpression\") && parent.superClass === node && (node.type === \"ArrowFunctionExpression\" || node.type === \"AssignmentExpression\" || node.type === \"AwaitExpression\" || node.type === \"BinaryExpression\" || node.type === \"ConditionalExpression\" || node.type === \"LogicalExpression\" || node.type === \"NewExpression\" || node.type === \"ObjectExpression\" || node.type === \"ParenthesizedExpression\" || node.type === \"SequenceExpression\" || node.type === \"TaggedTemplateExpression\" || node.type === \"UnaryExpression\" || node.type === \"UpdateExpression\" || node.type === \"YieldExpression\")) {\n return true;\n } // `export default function` or `export default class` can't be followed by\n // anything after. So an expression like `export default (function(){}).toString()`\n // needs to be followed by a parentheses\n\n\n if (parent.type === \"ExportDefaultDeclaration\") {\n return shouldWrapFunctionForExportDefault(path, options);\n }\n\n if (parent.type === \"Decorator\" && parent.expression === node) {\n var hasCallExpression = false;\n var hasMemberExpression = false;\n var current = node;\n\n while (current) {\n switch (current.type) {\n case \"MemberExpression\":\n hasMemberExpression = true;\n current = current.object;\n break;\n\n case \"CallExpression\":\n if (\n /** @(x().y) */\n hasMemberExpression ||\n /** @(x().y()) */\n hasCallExpression) {\n return true;\n }\n\n hasCallExpression = true;\n current = current.callee;\n break;\n\n case \"Identifier\":\n return false;\n\n default:\n return true;\n }\n }\n\n return true;\n }\n\n if (parent.type === \"ArrowFunctionExpression\" && parent.body === node && node.type !== \"SequenceExpression\" && // these have parens added anyway\n util.startsWithNoLookaheadToken(node,\n /* forbidFunctionClassAndDoExpr */\n false) || parent.type === \"ExpressionStatement\" && util.startsWithNoLookaheadToken(node,\n /* forbidFunctionClassAndDoExpr */\n true)) {\n return true;\n }\n\n switch (node.type) {\n case \"SpreadElement\":\n case \"SpreadProperty\":\n return parent.type === \"MemberExpression\" && name === \"object\" && parent.object === node;\n\n case \"UpdateExpression\":\n if (parent.type === \"UnaryExpression\") {\n return node.prefix && (node.operator === \"++\" && parent.operator === \"+\" || node.operator === \"--\" && parent.operator === \"-\");\n }\n\n // else fallthrough\n\n case \"UnaryExpression\":\n switch (parent.type) {\n case \"UnaryExpression\":\n return node.operator === parent.operator && (node.operator === \"+\" || node.operator === \"-\");\n\n case \"BindExpression\":\n return true;\n\n case \"MemberExpression\":\n case \"OptionalMemberExpression\":\n return name === \"object\";\n\n case \"TaggedTemplateExpression\":\n return true;\n\n case \"NewExpression\":\n case \"CallExpression\":\n case \"OptionalCallExpression\":\n return name === \"callee\";\n\n case \"BinaryExpression\":\n return parent.operator === \"**\" && name === \"left\";\n\n case \"TSNonNullExpression\":\n return true;\n\n default:\n return false;\n }\n\n case \"BinaryExpression\":\n {\n if (parent.type === \"UpdateExpression\") {\n return true;\n }\n\n var isLeftOfAForStatement = function isLeftOfAForStatement(node) {\n var i = 0;\n\n while (node) {\n var _parent = path.getParentNode(i++);\n\n if (!_parent) {\n return false;\n }\n\n if (_parent.type === \"ForStatement\" && _parent.init === node) {\n return true;\n }\n\n node = _parent;\n }\n\n return false;\n };\n\n if (node.operator === \"in\" && isLeftOfAForStatement(node)) {\n return true;\n }\n }\n // fallthrough\n\n case \"TSTypeAssertion\":\n case \"TSAsExpression\":\n case \"LogicalExpression\":\n switch (parent.type) {\n case \"ConditionalExpression\":\n return node.type === \"TSAsExpression\";\n\n case \"CallExpression\":\n case \"NewExpression\":\n case \"OptionalCallExpression\":\n return name === \"callee\";\n\n case \"ClassExpression\":\n case \"ClassDeclaration\":\n return name === \"superClass\" && parent.superClass === node;\n\n case \"TSTypeAssertion\":\n case \"TaggedTemplateExpression\":\n case \"UnaryExpression\":\n case \"JSXSpreadAttribute\":\n case \"SpreadElement\":\n case \"SpreadProperty\":\n case \"BindExpression\":\n case \"AwaitExpression\":\n case \"TSAsExpression\":\n case \"TSNonNullExpression\":\n case \"UpdateExpression\":\n return true;\n\n case \"MemberExpression\":\n case \"OptionalMemberExpression\":\n return name === \"object\";\n\n case \"AssignmentExpression\":\n return parent.left === node && (node.type === \"TSTypeAssertion\" || node.type === \"TSAsExpression\");\n\n case \"LogicalExpression\":\n if (node.type === \"LogicalExpression\") {\n return parent.operator !== node.operator;\n }\n\n // else fallthrough\n\n case \"BinaryExpression\":\n {\n if (!node.operator && node.type !== \"TSTypeAssertion\") {\n return true;\n }\n\n var po = parent.operator;\n var pp = util.getPrecedence(po);\n var no = node.operator;\n var np = util.getPrecedence(no);\n\n if (pp > np) {\n return true;\n }\n\n if (pp === np && name === \"right\") {\n assert.strictEqual(parent.right, node);\n return true;\n }\n\n if (pp === np && !util.shouldFlatten(po, no)) {\n return true;\n }\n\n if (pp < np && no === \"%\") {\n return po === \"+\" || po === \"-\";\n } // Add parenthesis when working with bitwise operators\n // It's not strictly needed but helps with code understanding\n\n\n if (util.isBitwiseOperator(po)) {\n return true;\n }\n\n return false;\n }\n\n default:\n return false;\n }\n\n case \"SequenceExpression\":\n switch (parent.type) {\n case \"ReturnStatement\":\n return false;\n\n case \"ForStatement\":\n // Although parentheses wouldn't hurt around sequence\n // expressions in the head of for loops, traditional style\n // dictates that e.g. i++, j++ should not be wrapped with\n // parentheses.\n return false;\n\n case \"ExpressionStatement\":\n return name !== \"expression\";\n\n case \"ArrowFunctionExpression\":\n // We do need parentheses, but SequenceExpressions are handled\n // specially when printing bodies of arrow functions.\n return name !== \"body\";\n\n default:\n // Otherwise err on the side of overparenthesization, adding\n // explicit exceptions above if this proves overzealous.\n return true;\n }\n\n case \"YieldExpression\":\n if (parent.type === \"UnaryExpression\" || parent.type === \"AwaitExpression\" || parent.type === \"TSAsExpression\" || parent.type === \"TSNonNullExpression\") {\n return true;\n }\n\n // else fallthrough\n\n case \"AwaitExpression\":\n switch (parent.type) {\n case \"TaggedTemplateExpression\":\n case \"UnaryExpression\":\n case \"BinaryExpression\":\n case \"LogicalExpression\":\n case \"SpreadElement\":\n case \"SpreadProperty\":\n case \"TSAsExpression\":\n case \"TSNonNullExpression\":\n case \"BindExpression\":\n return true;\n\n case \"MemberExpression\":\n case \"OptionalMemberExpression\":\n return name === \"object\";\n\n case \"NewExpression\":\n case \"CallExpression\":\n case \"OptionalCallExpression\":\n return name === \"callee\";\n\n case \"ConditionalExpression\":\n return parent.test === node;\n\n default:\n return false;\n }\n\n case \"TSConditionalType\":\n if (parent.type === \"TSConditionalType\" && node === parent.extendsType) {\n return true;\n }\n\n // fallthrough\n\n case \"TSFunctionType\":\n case \"TSConstructorType\":\n if (parent.type === \"TSConditionalType\" && node === parent.checkType) {\n return true;\n }\n\n // fallthrough\n\n case \"TSUnionType\":\n case \"TSIntersectionType\":\n if (parent.type === \"TSUnionType\" || parent.type === \"TSIntersectionType\") {\n return true;\n }\n\n // fallthrough\n\n case \"TSTypeOperator\":\n case \"TSInferType\":\n return parent.type === \"TSArrayType\" || parent.type === \"TSOptionalType\" || parent.type === \"TSRestType\" || parent.type === \"TSIndexedAccessType\" && node === parent.objectType || parent.type === \"TSTypeOperator\";\n\n case \"ArrayTypeAnnotation\":\n return parent.type === \"NullableTypeAnnotation\";\n\n case \"IntersectionTypeAnnotation\":\n case \"UnionTypeAnnotation\":\n return parent.type === \"ArrayTypeAnnotation\" || parent.type === \"NullableTypeAnnotation\" || parent.type === \"IntersectionTypeAnnotation\" || parent.type === \"UnionTypeAnnotation\";\n\n case \"NullableTypeAnnotation\":\n return parent.type === \"ArrayTypeAnnotation\";\n\n case \"FunctionTypeAnnotation\":\n {\n var ancestor = parent.type === \"NullableTypeAnnotation\" ? path.getParentNode(1) : parent;\n return ancestor.type === \"UnionTypeAnnotation\" || ancestor.type === \"IntersectionTypeAnnotation\" || ancestor.type === \"ArrayTypeAnnotation\" || // We should check ancestor's parent to know whether the parentheses\n // are really needed, but since ??T doesn't make sense this check\n // will almost never be true.\n ancestor.type === \"NullableTypeAnnotation\";\n }\n\n case \"StringLiteral\":\n case \"NumericLiteral\":\n case \"Literal\":\n if (typeof node.value === \"string\" && parent.type === \"ExpressionStatement\" && ( // TypeScript workaround for https://github.com/JamesHenry/typescript-estree/issues/2\n // See corresponding workaround in printer.js case: \"Literal\"\n options.parser !== \"typescript\" && !parent.directive || options.parser === \"typescript\" && options.originalText.substr(options.locStart(node) - 1, 1) === \"(\")) {\n // To avoid becoming a directive\n var grandParent = path.getParentNode(1);\n return grandParent.type === \"Program\" || grandParent.type === \"BlockStatement\";\n }\n\n return parent.type === \"MemberExpression\" && typeof node.value === \"number\" && name === \"object\" && parent.object === node;\n\n case \"AssignmentExpression\":\n {\n var _grandParent = path.getParentNode(1);\n\n if (parent.type === \"ArrowFunctionExpression\" && parent.body === node) {\n return true;\n } else if (parent.type === \"ClassProperty\" && parent.key === node && parent.computed) {\n return false;\n } else if (parent.type === \"TSPropertySignature\" && parent.name === node) {\n return false;\n } else if (parent.type === \"ForStatement\" && (parent.init === node || parent.update === node)) {\n return false;\n } else if (parent.type === \"ExpressionStatement\") {\n return node.left.type === \"ObjectPattern\";\n } else if (parent.type === \"TSPropertySignature\" && parent.key === node) {\n return false;\n } else if (parent.type === \"AssignmentExpression\") {\n return false;\n } else if (parent.type === \"SequenceExpression\" && _grandParent && _grandParent.type === \"ForStatement\" && (_grandParent.init === parent || _grandParent.update === parent)) {\n return false;\n } else if (parent.type === \"Property\" && parent.value === node) {\n return false;\n } else if (parent.type === \"NGChainedExpression\") {\n return false;\n }\n\n return true;\n }\n\n case \"ConditionalExpression\":\n switch (parent.type) {\n case \"TaggedTemplateExpression\":\n case \"UnaryExpression\":\n case \"SpreadElement\":\n case \"SpreadProperty\":\n case \"BinaryExpression\":\n case \"LogicalExpression\":\n case \"NGPipeExpression\":\n case \"ExportDefaultDeclaration\":\n case \"AwaitExpression\":\n case \"JSXSpreadAttribute\":\n case \"TSTypeAssertion\":\n case \"TypeCastExpression\":\n case \"TSAsExpression\":\n case \"TSNonNullExpression\":\n return true;\n\n case \"NewExpression\":\n case \"CallExpression\":\n case \"OptionalCallExpression\":\n return name === \"callee\";\n\n case \"ConditionalExpression\":\n return name === \"test\" && parent.test === node;\n\n case \"MemberExpression\":\n case \"OptionalMemberExpression\":\n return name === \"object\";\n\n default:\n return false;\n }\n\n case \"FunctionExpression\":\n switch (parent.type) {\n case \"NewExpression\":\n case \"CallExpression\":\n case \"OptionalCallExpression\":\n // Not always necessary, but it's clearer to the reader if IIFEs are wrapped in parentheses.\n // Is necessary if it is `expression` of `ExpressionStatement`.\n return name === \"callee\";\n\n case \"TaggedTemplateExpression\":\n return true;\n // This is basically a kind of IIFE.\n\n default:\n return false;\n }\n\n case \"ArrowFunctionExpression\":\n switch (parent.type) {\n case \"NewExpression\":\n case \"CallExpression\":\n case \"OptionalCallExpression\":\n return name === \"callee\";\n\n case \"MemberExpression\":\n case \"OptionalMemberExpression\":\n return name === \"object\";\n\n case \"TSAsExpression\":\n case \"BindExpression\":\n case \"TaggedTemplateExpression\":\n case \"UnaryExpression\":\n case \"LogicalExpression\":\n case \"BinaryExpression\":\n case \"AwaitExpression\":\n case \"TSTypeAssertion\":\n return true;\n\n case \"ConditionalExpression\":\n return name === \"test\";\n\n default:\n return false;\n }\n\n case \"ClassExpression\":\n switch (parent.type) {\n case \"NewExpression\":\n return name === \"callee\" && parent.callee === node;\n\n default:\n return false;\n }\n\n case \"OptionalMemberExpression\":\n case \"OptionalCallExpression\":\n if ((parent.type === \"MemberExpression\" && name === \"object\" || parent.type === \"CallExpression\" && name === \"callee\") && // workaround for https://github.com/facebook/flow/issues/8159\n !(options.parser === \"flow\" && parent.range[0] === node.range[0])) {\n return true;\n }\n\n // fallthrough\n\n case \"CallExpression\":\n case \"MemberExpression\":\n case \"TaggedTemplateExpression\":\n case \"TSNonNullExpression\":\n if ((parent.type === \"BindExpression\" || parent.type === \"NewExpression\") && name === \"callee\") {\n var object = node;\n\n while (object) {\n switch (object.type) {\n case \"CallExpression\":\n case \"OptionalCallExpression\":\n return true;\n\n case \"MemberExpression\":\n case \"OptionalMemberExpression\":\n case \"BindExpression\":\n object = object.object;\n break;\n // tagged templates are basically member expressions from a grammar perspective\n // see https://tc39.github.io/ecma262/#prod-MemberExpression\n\n case \"TaggedTemplateExpression\":\n object = object.tag;\n break;\n\n case \"TSNonNullExpression\":\n object = object.expression;\n break;\n\n default:\n return false;\n }\n }\n }\n\n return false;\n\n case \"BindExpression\":\n return (parent.type === \"BindExpression\" || parent.type === \"NewExpression\") && name === \"callee\" || (parent.type === \"MemberExpression\" || parent.type === \"OptionalMemberExpression\") && name === \"object\";\n\n case \"NGPipeExpression\":\n if (parent.type === \"NGRoot\" || parent.type === \"NGMicrosyntaxExpression\" || parent.type === \"ObjectProperty\" || parent.type === \"ArrayExpression\" || (parent.type === \"CallExpression\" || parent.type === \"OptionalCallExpression\") && parent.arguments[name] === node || parent.type === \"NGPipeExpression\" && name === \"right\" || parent.type === \"MemberExpression\" && name === \"property\" || parent.type === \"AssignmentExpression\") {\n return false;\n }\n\n return true;\n\n case \"JSXFragment\":\n case \"JSXElement\":\n return name === \"callee\" || parent.type !== \"ArrayExpression\" && parent.type !== \"ArrowFunctionExpression\" && parent.type !== \"AssignmentExpression\" && parent.type !== \"AssignmentPattern\" && parent.type !== \"BinaryExpression\" && parent.type !== \"CallExpression\" && parent.type !== \"ConditionalExpression\" && parent.type !== \"ExpressionStatement\" && parent.type !== \"JsExpressionRoot\" && parent.type !== \"JSXAttribute\" && parent.type !== \"JSXElement\" && parent.type !== \"JSXExpressionContainer\" && parent.type !== \"JSXFragment\" && parent.type !== \"LogicalExpression\" && parent.type !== \"ObjectProperty\" && parent.type !== \"OptionalCallExpression\" && parent.type !== \"Property\" && parent.type !== \"ReturnStatement\" && parent.type !== \"TypeCastExpression\" && parent.type !== \"VariableDeclarator\";\n\n case \"TypeAnnotation\":\n return name === \"returnType\" && parent.type === \"ArrowFunctionExpression\" && includesFunctionTypeInObjectType(node);\n }\n\n return false;\n }\n\n function isStatement(node) {\n return node.type === \"BlockStatement\" || node.type === \"BreakStatement\" || node.type === \"ClassBody\" || node.type === \"ClassDeclaration\" || node.type === \"ClassMethod\" || node.type === \"ClassProperty\" || node.type === \"ClassPrivateProperty\" || node.type === \"ContinueStatement\" || node.type === \"DebuggerStatement\" || node.type === \"DeclareClass\" || node.type === \"DeclareExportAllDeclaration\" || node.type === \"DeclareExportDeclaration\" || node.type === \"DeclareFunction\" || node.type === \"DeclareInterface\" || node.type === \"DeclareModule\" || node.type === \"DeclareModuleExports\" || node.type === \"DeclareVariable\" || node.type === \"DoWhileStatement\" || node.type === \"EnumDeclaration\" || node.type === \"ExportAllDeclaration\" || node.type === \"ExportDefaultDeclaration\" || node.type === \"ExportNamedDeclaration\" || node.type === \"ExpressionStatement\" || node.type === \"ForAwaitStatement\" || node.type === \"ForInStatement\" || node.type === \"ForOfStatement\" || node.type === \"ForStatement\" || node.type === \"FunctionDeclaration\" || node.type === \"IfStatement\" || node.type === \"ImportDeclaration\" || node.type === \"InterfaceDeclaration\" || node.type === \"LabeledStatement\" || node.type === \"MethodDefinition\" || node.type === \"ReturnStatement\" || node.type === \"SwitchStatement\" || node.type === \"ThrowStatement\" || node.type === \"TryStatement\" || node.type === \"TSDeclareFunction\" || node.type === \"TSEnumDeclaration\" || node.type === \"TSImportEqualsDeclaration\" || node.type === \"TSInterfaceDeclaration\" || node.type === \"TSModuleDeclaration\" || node.type === \"TSNamespaceExportDeclaration\" || node.type === \"TypeAlias\" || node.type === \"VariableDeclaration\" || node.type === \"WhileStatement\" || node.type === \"WithStatement\";\n }\n\n function includesFunctionTypeInObjectType(node) {\n return hasNode$1(node, function (n1) {\n return n1.type === \"ObjectTypeAnnotation\" && hasNode$1(n1, function (n2) {\n return n2.type === \"FunctionTypeAnnotation\" || undefined;\n }) || undefined;\n });\n }\n\n function endsWithRightBracket(node) {\n switch (node.type) {\n case \"ObjectExpression\":\n return true;\n\n default:\n return false;\n }\n }\n\n function isFollowedByRightBracket(path) {\n var node = path.getValue();\n var parent = path.getParentNode();\n var name = path.getName();\n\n switch (parent.type) {\n case \"NGPipeExpression\":\n if (typeof name === \"number\" && parent.arguments[name] === node && parent.arguments.length - 1 === name) {\n return path.callParent(isFollowedByRightBracket);\n }\n\n break;\n\n case \"ObjectProperty\":\n if (name === \"value\") {\n var parentParent = path.getParentNode(1);\n return parentParent.properties[parentParent.properties.length - 1] === parent;\n }\n\n break;\n\n case \"BinaryExpression\":\n case \"LogicalExpression\":\n if (name === \"right\") {\n return path.callParent(isFollowedByRightBracket);\n }\n\n break;\n\n case \"ConditionalExpression\":\n if (name === \"alternate\") {\n return path.callParent(isFollowedByRightBracket);\n }\n\n break;\n\n case \"UnaryExpression\":\n if (parent.prefix) {\n return path.callParent(isFollowedByRightBracket);\n }\n\n break;\n }\n\n return false;\n }\n\n function shouldWrapFunctionForExportDefault(path, options) {\n var node = path.getValue();\n var parent = path.getParentNode();\n\n if (node.type === \"FunctionExpression\" || node.type === \"ClassExpression\") {\n return parent.type === \"ExportDefaultDeclaration\" || // in some cases the function is already wrapped\n // (e.g. `export default (function() {})();`)\n // in this case we don't need to add extra parens\n !needsParens(path, options);\n }\n\n if (!hasNakedLeftSide$1(node) || parent.type !== \"ExportDefaultDeclaration\" && needsParens(path, options)) {\n return false;\n }\n\n return path.call.apply(path, [function (childPath) {\n return shouldWrapFunctionForExportDefault(childPath, options);\n }].concat(getLeftSidePathName$1(path, node)));\n }\n\n var needsParens_1 = needsParens;\n var _require$$0$builders$6 = doc.builders,\n concat$c = _require$$0$builders$6.concat,\n join$8 = _require$$0$builders$6.join,\n line$6 = _require$$0$builders$6.line;\n\n function printHtmlBinding(path, options, print) {\n var node = path.getValue();\n\n if (options.__onHtmlBindingRoot && path.getName() === null) {\n options.__onHtmlBindingRoot(node);\n }\n\n if (node.type !== \"File\") {\n return;\n }\n\n if (options.__isVueForBindingLeft) {\n return path.call(function (functionDeclarationPath) {\n var _functionDeclarationP = functionDeclarationPath.getValue(),\n params = _functionDeclarationP.params;\n\n return concat$c([params.length > 1 ? \"(\" : \"\", join$8(concat$c([\",\", line$6]), functionDeclarationPath.map(print, \"params\")), params.length > 1 ? \")\" : \"\"]);\n }, \"program\", \"body\", 0);\n }\n\n if (options.__isVueSlotScope) {\n return path.call(function (functionDeclarationPath) {\n return join$8(concat$c([\",\", line$6]), functionDeclarationPath.map(print, \"params\"));\n }, \"program\", \"body\", 0);\n }\n } // based on https://github.com/prettier/prettier/blob/master/src/language-html/syntax-vue.js isVueEventBindingExpression()\n\n\n function isVueEventBindingExpression$2(node) {\n switch (node.type) {\n case \"MemberExpression\":\n switch (node.property.type) {\n case \"Identifier\":\n case \"NumericLiteral\":\n case \"StringLiteral\":\n return isVueEventBindingExpression$2(node.object);\n }\n\n return false;\n\n case \"Identifier\":\n return true;\n\n default:\n return false;\n }\n }\n\n var htmlBinding = {\n isVueEventBindingExpression: isVueEventBindingExpression$2,\n printHtmlBinding: printHtmlBinding\n };\n\n function preprocess$1(ast, options) {\n switch (options.parser) {\n case \"json\":\n case \"json5\":\n case \"json-stringify\":\n case \"__js_expression\":\n case \"__vue_expression\":\n return Object.assign({}, ast, {\n type: options.parser.startsWith(\"__\") ? \"JsExpressionRoot\" : \"JsonRoot\",\n node: ast,\n comments: []\n });\n\n default:\n return ast;\n }\n }\n\n var preprocess_1$1 = preprocess$1;\n var getParentExportDeclaration$1 = util.getParentExportDeclaration,\n isExportDeclaration$1 = util.isExportDeclaration,\n shouldFlatten$1 = util.shouldFlatten,\n getNextNonSpaceNonCommentCharacter$1 = util.getNextNonSpaceNonCommentCharacter,\n hasNewline$4 = util.hasNewline,\n hasNewlineInRange$2 = util.hasNewlineInRange,\n getLast$2 = util.getLast,\n getStringWidth$2 = util.getStringWidth,\n printString$2 = util.printString,\n printNumber$2 = util.printNumber,\n hasIgnoreComment$4 = util.hasIgnoreComment,\n hasNodeIgnoreComment$2 = util.hasNodeIgnoreComment,\n getPenultimate$1 = util.getPenultimate,\n startsWithNoLookaheadToken$1 = util.startsWithNoLookaheadToken,\n getIndentSize$1 = util.getIndentSize,\n matchAncestorTypes$1 = util.matchAncestorTypes,\n getPreferredQuote$1 = util.getPreferredQuote;\n var isNextLineEmpty$4 = utilShared.isNextLineEmpty,\n isNextLineEmptyAfterIndex$1 = utilShared.isNextLineEmptyAfterIndex,\n getNextNonSpaceNonCommentCharacterIndex$2 = utilShared.getNextNonSpaceNonCommentCharacterIndex;\n var insertPragma$7 = pragma.insertPragma;\n var printHtmlBinding$1 = htmlBinding.printHtmlBinding,\n isVueEventBindingExpression$3 = htmlBinding.isVueEventBindingExpression;\n var classChildNeedsASIProtection$1 = utils$4.classChildNeedsASIProtection,\n classPropMayCauseASIProblems$1 = utils$4.classPropMayCauseASIProblems,\n conditionalExpressionChainContainsJSX$1 = utils$4.conditionalExpressionChainContainsJSX,\n getFlowVariance$1 = utils$4.getFlowVariance,\n getLeftSidePathName$2 = utils$4.getLeftSidePathName,\n getTypeScriptMappedTypeModifier$1 = utils$4.getTypeScriptMappedTypeModifier,\n hasDanglingComments$1 = utils$4.hasDanglingComments,\n hasFlowAnnotationComment$1 = utils$4.hasFlowAnnotationComment,\n hasFlowShorthandAnnotationComment$2 = utils$4.hasFlowShorthandAnnotationComment,\n hasLeadingComment$3 = utils$4.hasLeadingComment,\n hasLeadingOwnLineComment$1 = utils$4.hasLeadingOwnLineComment,\n hasNakedLeftSide$2 = utils$4.hasNakedLeftSide,\n hasNewlineBetweenOrAfterDecorators$1 = utils$4.hasNewlineBetweenOrAfterDecorators,\n hasNgSideEffect$1 = utils$4.hasNgSideEffect,\n hasPrettierIgnore$3 = utils$4.hasPrettierIgnore,\n hasTrailingComment$1 = utils$4.hasTrailingComment,\n identity$2 = utils$4.identity,\n isBinaryish$1 = utils$4.isBinaryish,\n isCallOrOptionalCallExpression$1 = utils$4.isCallOrOptionalCallExpression,\n isEmptyJSXElement$1 = utils$4.isEmptyJSXElement,\n isFlowAnnotationComment$1 = utils$4.isFlowAnnotationComment,\n isFunctionCompositionArgs$1 = utils$4.isFunctionCompositionArgs,\n isFunctionNotation$1 = utils$4.isFunctionNotation,\n isFunctionOrArrowExpression$1 = utils$4.isFunctionOrArrowExpression,\n isGetterOrSetter$1 = utils$4.isGetterOrSetter,\n isJestEachTemplateLiteral$1 = utils$4.isJestEachTemplateLiteral,\n isJSXNode$1 = utils$4.isJSXNode,\n isJSXWhitespaceExpression$1 = utils$4.isJSXWhitespaceExpression,\n isLastStatement$1 = utils$4.isLastStatement,\n isLiteral$1 = utils$4.isLiteral,\n isLongCurriedCallExpression$1 = utils$4.isLongCurriedCallExpression,\n isMeaningfulJSXText$1 = utils$4.isMeaningfulJSXText,\n isMemberExpressionChain$1 = utils$4.isMemberExpressionChain,\n isMemberish$1 = utils$4.isMemberish,\n isNgForOf$1 = utils$4.isNgForOf,\n isNumericLiteral$1 = utils$4.isNumericLiteral,\n isObjectType$1 = utils$4.isObjectType,\n isObjectTypePropertyAFunction$1 = utils$4.isObjectTypePropertyAFunction,\n isSimpleFlowType$1 = utils$4.isSimpleFlowType,\n isSimpleTemplateLiteral$1 = utils$4.isSimpleTemplateLiteral,\n isStringLiteral$1 = utils$4.isStringLiteral,\n isStringPropSafeToCoerceToIdentifier$1 = utils$4.isStringPropSafeToCoerceToIdentifier,\n isTemplateOnItsOwnLine$1 = utils$4.isTemplateOnItsOwnLine,\n isTestCall$1 = utils$4.isTestCall,\n isTheOnlyJSXElementInMarkdown$1 = utils$4.isTheOnlyJSXElementInMarkdown,\n isTSXFile$1 = utils$4.isTSXFile,\n isTypeAnnotationAFunction$1 = utils$4.isTypeAnnotationAFunction,\n matchJsxWhitespaceRegex$1 = utils$4.matchJsxWhitespaceRegex,\n needsHardlineAfterDanglingComment$1 = utils$4.needsHardlineAfterDanglingComment,\n rawText$1 = utils$4.rawText,\n returnArgumentHasLeadingComment$1 = utils$4.returnArgumentHasLeadingComment;\n var needsQuoteProps = new WeakMap();\n var _require$$5$builders = doc.builders,\n concat$d = _require$$5$builders.concat,\n join$9 = _require$$5$builders.join,\n line$7 = _require$$5$builders.line,\n hardline$9 = _require$$5$builders.hardline,\n softline$6 = _require$$5$builders.softline,\n literalline$4 = _require$$5$builders.literalline,\n group$b = _require$$5$builders.group,\n indent$7 = _require$$5$builders.indent,\n align$1 = _require$$5$builders.align,\n conditionalGroup$1 = _require$$5$builders.conditionalGroup,\n fill$4 = _require$$5$builders.fill,\n ifBreak$6 = _require$$5$builders.ifBreak,\n breakParent$3 = _require$$5$builders.breakParent,\n lineSuffixBoundary$1 = _require$$5$builders.lineSuffixBoundary,\n addAlignmentToDoc$2 = _require$$5$builders.addAlignmentToDoc,\n dedent$2 = _require$$5$builders.dedent,\n _require$$5$utils = doc.utils,\n willBreak$1 = _require$$5$utils.willBreak,\n isLineNext$1 = _require$$5$utils.isLineNext,\n isEmpty$1 = _require$$5$utils.isEmpty,\n removeLines$2 = _require$$5$utils.removeLines,\n printDocToString$1 = doc.printer.printDocToString;\n var uid = 0;\n\n function shouldPrintComma$1(options, level) {\n level = level || \"es5\";\n\n switch (options.trailingComma) {\n case \"all\":\n if (level === \"all\") {\n return true;\n }\n\n // fallthrough\n\n case \"es5\":\n if (level === \"es5\") {\n return true;\n }\n\n // fallthrough\n\n case \"none\":\n default:\n return false;\n }\n }\n\n function genericPrint$3(path, options, printPath, args) {\n var node = path.getValue();\n var needsParens = false;\n var linesWithoutParens = printPathNoParens(path, options, printPath, args);\n\n if (!node || isEmpty$1(linesWithoutParens)) {\n return linesWithoutParens;\n }\n\n var parentExportDecl = getParentExportDeclaration$1(path);\n var decorators = [];\n if (node.type === \"ClassMethod\" || node.type === \"ClassPrivateMethod\" || node.type === \"ClassProperty\" || node.type === \"TSAbstractClassProperty\" || node.type === \"ClassPrivateProperty\" || node.type === \"MethodDefinition\" || node.type === \"TSAbstractMethodDefinition\") ;else if (node.decorators && node.decorators.length > 0 && // If the parent node is an export declaration and the decorator\n // was written before the export, the export will be responsible\n // for printing the decorators.\n !(parentExportDecl && options.locStart(parentExportDecl, {\n ignoreDecorators: true\n }) > options.locStart(node.decorators[0]))) {\n var shouldBreak = node.type === \"ClassExpression\" || node.type === \"ClassDeclaration\" || hasNewlineBetweenOrAfterDecorators$1(node, options);\n var separator = shouldBreak ? hardline$9 : line$7;\n path.each(function (decoratorPath) {\n var decorator = decoratorPath.getValue();\n\n if (decorator.expression) {\n decorator = decorator.expression;\n } else {\n decorator = decorator.callee;\n }\n\n decorators.push(printPath(decoratorPath), separator);\n }, \"decorators\");\n\n if (parentExportDecl) {\n decorators.unshift(hardline$9);\n }\n } else if (isExportDeclaration$1(node) && node.declaration && node.declaration.decorators && node.declaration.decorators.length > 0 && // Only print decorators here if they were written before the export,\n // otherwise they are printed by the node.declaration\n options.locStart(node, {\n ignoreDecorators: true\n }) > options.locStart(node.declaration.decorators[0])) {\n // Export declarations are responsible for printing any decorators\n // that logically apply to node.declaration.\n path.each(function (decoratorPath) {\n var decorator = decoratorPath.getValue();\n var prefix = decorator.type === \"Decorator\" ? \"\" : \"@\";\n decorators.push(prefix, printPath(decoratorPath), hardline$9);\n }, \"declaration\", \"decorators\");\n } else {\n // Nodes with decorators can't have parentheses, so we can avoid\n // computing pathNeedsParens() except in this case.\n needsParens = needsParens_1(path, options);\n }\n var parts = [];\n\n if (needsParens) {\n parts.unshift(\"(\");\n }\n\n parts.push(linesWithoutParens);\n\n if (needsParens) {\n var _node = path.getValue();\n\n if (hasFlowShorthandAnnotationComment$2(_node)) {\n parts.push(\" /*\");\n parts.push(_node.trailingComments[0].value.trimLeft());\n parts.push(\"*/\");\n _node.trailingComments[0].printed = true;\n }\n\n parts.push(\")\");\n }\n\n if (decorators.length > 0) {\n return group$b(concat$d(decorators.concat(parts)));\n }\n\n return concat$d(parts);\n }\n\n function printDecorators(path, options, print) {\n var node = path.getValue();\n return group$b(concat$d([join$9(line$7, path.map(print, \"decorators\")), hasNewlineBetweenOrAfterDecorators$1(node, options) ? hardline$9 : line$7]));\n }\n /**\n * The following is the shared logic for\n * ternary operators, namely ConditionalExpression\n * and TSConditionalType\n * @typedef {Object} OperatorOptions\n * @property {() => Array} beforeParts - Parts to print before the `?`.\n * @property {(breakClosingParen: boolean) => Array} afterParts - Parts to print after the conditional expression.\n * @property {boolean} shouldCheckJsx - Whether to check for and print in JSX mode.\n * @property {string} conditionalNodeType - The type of the conditional expression node, ie \"ConditionalExpression\" or \"TSConditionalType\".\n * @property {string} consequentNodePropertyName - The property at which the consequent node can be found on the main node, eg \"consequent\".\n * @property {string} alternateNodePropertyName - The property at which the alternate node can be found on the main node, eg \"alternate\".\n * @property {string} testNodePropertyName - The property at which the test node can be found on the main node, eg \"test\".\n * @property {boolean} breakNested - Whether to break all nested ternaries when one breaks.\n * @param {FastPath} path - The path to the ConditionalExpression/TSConditionalType node.\n * @param {Options} options - Prettier options\n * @param {Function} print - Print function to call recursively\n * @param {OperatorOptions} operatorOptions\n * @returns Doc\n */\n\n\n function printTernaryOperator(path, options, print, operatorOptions) {\n var node = path.getValue();\n var testNode = node[operatorOptions.testNodePropertyName];\n var consequentNode = node[operatorOptions.consequentNodePropertyName];\n var alternateNode = node[operatorOptions.alternateNodePropertyName];\n var parts = []; // We print a ConditionalExpression in either \"JSX mode\" or \"normal mode\".\n // See tests/jsx/conditional-expression.js for more info.\n\n var jsxMode = false;\n var parent = path.getParentNode();\n var forceNoIndent = parent.type === operatorOptions.conditionalNodeType; // Find the outermost non-ConditionalExpression parent, and the outermost\n // ConditionalExpression parent. We'll use these to determine if we should\n // print in JSX mode.\n\n var currentParent;\n var previousParent;\n var i = 0;\n\n do {\n previousParent = currentParent || node;\n currentParent = path.getParentNode(i);\n i++;\n } while (currentParent && currentParent.type === operatorOptions.conditionalNodeType);\n\n var firstNonConditionalParent = currentParent || parent;\n var lastConditionalParent = previousParent;\n\n if (operatorOptions.shouldCheckJsx && (isJSXNode$1(testNode) || isJSXNode$1(consequentNode) || isJSXNode$1(alternateNode) || conditionalExpressionChainContainsJSX$1(lastConditionalParent))) {\n jsxMode = true;\n forceNoIndent = true; // Even though they don't need parens, we wrap (almost) everything in\n // parens when using ?: within JSX, because the parens are analogous to\n // curly braces in an if statement.\n\n var wrap = function wrap(doc) {\n return concat$d([ifBreak$6(\"(\", \"\"), indent$7(concat$d([softline$6, doc])), softline$6, ifBreak$6(\")\", \"\")]);\n }; // The only things we don't wrap are:\n // * Nested conditional expressions in alternates\n // * null\n\n\n var isNull = function isNull(node) {\n return node.type === \"NullLiteral\" || node.type === \"Literal\" && node.value === null;\n };\n\n parts.push(\" ? \", isNull(consequentNode) ? path.call(print, operatorOptions.consequentNodePropertyName) : wrap(path.call(print, operatorOptions.consequentNodePropertyName)), \" : \", alternateNode.type === operatorOptions.conditionalNodeType || isNull(alternateNode) ? path.call(print, operatorOptions.alternateNodePropertyName) : wrap(path.call(print, operatorOptions.alternateNodePropertyName)));\n } else {\n // normal mode\n var part = concat$d([line$7, \"? \", consequentNode.type === operatorOptions.conditionalNodeType ? ifBreak$6(\"\", \"(\") : \"\", align$1(2, path.call(print, operatorOptions.consequentNodePropertyName)), consequentNode.type === operatorOptions.conditionalNodeType ? ifBreak$6(\"\", \")\") : \"\", line$7, \": \", alternateNode.type === operatorOptions.conditionalNodeType ? path.call(print, operatorOptions.alternateNodePropertyName) : align$1(2, path.call(print, operatorOptions.alternateNodePropertyName))]);\n parts.push(parent.type !== operatorOptions.conditionalNodeType || parent[operatorOptions.alternateNodePropertyName] === node ? part : options.useTabs ? dedent$2(indent$7(part)) : align$1(Math.max(0, options.tabWidth - 2), part));\n } // We want a whole chain of ConditionalExpressions to all\n // break if any of them break. That means we should only group around the\n // outer-most ConditionalExpression.\n\n\n var maybeGroup = function maybeGroup(doc) {\n return operatorOptions.breakNested ? parent === firstNonConditionalParent ? group$b(doc) : doc : group$b(doc);\n }; // Break the closing paren to keep the chain right after it:\n // (a\n // ? b\n // : c\n // ).call()\n\n\n var breakClosingParen = !jsxMode && (parent.type === \"MemberExpression\" || parent.type === \"OptionalMemberExpression\" || parent.type === \"NGPipeExpression\" && parent.left === node && operatorOptions.breakNested) && !parent.computed;\n return maybeGroup(concat$d([].concat(function (testDoc) {\n return (\n /**\n * a\n * ? b\n * : multiline\n * test\n * node\n * ^^ align(2)\n * ? d\n * : e\n */\n parent.type === operatorOptions.conditionalNodeType && parent[operatorOptions.alternateNodePropertyName] === node ? align$1(2, testDoc) : testDoc\n );\n }(concat$d(operatorOptions.beforeParts())), forceNoIndent ? concat$d(parts) : indent$7(concat$d(parts)), operatorOptions.afterParts(breakClosingParen))));\n }\n\n function printPathNoParens(path, options, print, args) {\n var n = path.getValue();\n var semi = options.semi ? \";\" : \"\";\n\n if (!n) {\n return \"\";\n }\n\n if (typeof n === \"string\") {\n return n;\n }\n\n var htmlBinding = printHtmlBinding$1(path, options, print);\n\n if (htmlBinding) {\n return htmlBinding;\n }\n\n var parts = [];\n\n switch (n.type) {\n case \"JsExpressionRoot\":\n return path.call(print, \"node\");\n\n case \"JsonRoot\":\n return concat$d([path.call(print, \"node\"), hardline$9]);\n\n case \"File\":\n // Print @babel/parser's InterpreterDirective here so that\n // leading comments on the `Program` node get printed after the hashbang.\n if (n.program && n.program.interpreter) {\n parts.push(path.call(function (programPath) {\n return programPath.call(print, \"interpreter\");\n }, \"program\"));\n }\n\n parts.push(path.call(print, \"program\"));\n return concat$d(parts);\n\n case \"Program\":\n // Babel 6\n if (n.directives) {\n path.each(function (childPath) {\n parts.push(print(childPath), semi, hardline$9);\n\n if (isNextLineEmpty$4(options.originalText, childPath.getValue(), options)) {\n parts.push(hardline$9);\n }\n }, \"directives\");\n }\n\n parts.push(path.call(function (bodyPath) {\n return printStatementSequence(bodyPath, options, print);\n }, \"body\"));\n parts.push(comments.printDanglingComments(path, options,\n /* sameIndent */\n true)); // Only force a trailing newline if there were any contents.\n\n if (n.body.length || n.comments) {\n parts.push(hardline$9);\n }\n\n return concat$d(parts);\n // Babel extension.\n\n case \"EmptyStatement\":\n return \"\";\n\n case \"ExpressionStatement\":\n // Detect Flow-parsed directives\n if (n.directive) {\n return concat$d([nodeStr(n.expression, options, true), semi]);\n }\n\n if (options.parser === \"__vue_event_binding\") {\n var parent = path.getParentNode();\n\n if (parent.type === \"Program\" && parent.body.length === 1 && parent.body[0] === n) {\n return concat$d([path.call(print, \"expression\"), isVueEventBindingExpression$3(n.expression) ? \";\" : \"\"]);\n }\n } // Do not append semicolon after the only JSX element in a program\n\n\n return concat$d([path.call(print, \"expression\"), isTheOnlyJSXElementInMarkdown$1(options, path) ? \"\" : semi]);\n // Babel extension.\n\n case \"ParenthesizedExpression\":\n return concat$d([\"(\", path.call(print, \"expression\"), \")\"]);\n\n case \"AssignmentExpression\":\n return printAssignment(n.left, path.call(print, \"left\"), concat$d([\" \", n.operator]), n.right, path.call(print, \"right\"), options);\n\n case \"BinaryExpression\":\n case \"LogicalExpression\":\n case \"NGPipeExpression\":\n {\n var _parent = path.getParentNode();\n\n var parentParent = path.getParentNode(1);\n var isInsideParenthesis = n !== _parent.body && (_parent.type === \"IfStatement\" || _parent.type === \"WhileStatement\" || _parent.type === \"SwitchStatement\" || _parent.type === \"DoWhileStatement\");\n\n var _parts = printBinaryishExpressions(path, print, options,\n /* isNested */\n false, isInsideParenthesis); // if (\n // this.hasPlugin(\"dynamicImports\") && this.lookahead().type === tt.parenLeft\n // ) {\n //\n // looks super weird, we want to break the children if the parent breaks\n //\n // if (\n // this.hasPlugin(\"dynamicImports\") &&\n // this.lookahead().type === tt.parenLeft\n // ) {\n\n\n if (isInsideParenthesis) {\n return concat$d(_parts);\n } // Break between the parens in\n // unaries or in a member or specific call expression, i.e.\n //\n // (\n // a &&\n // b &&\n // c\n // ).call()\n\n\n if ((_parent.type === \"CallExpression\" || _parent.type === \"OptionalCallExpression\") && _parent.callee === n || _parent.type === \"UnaryExpression\" || (_parent.type === \"MemberExpression\" || _parent.type === \"OptionalMemberExpression\") && !_parent.computed) {\n return group$b(concat$d([indent$7(concat$d([softline$6, concat$d(_parts)])), softline$6]));\n } // Avoid indenting sub-expressions in some cases where the first sub-expression is already\n // indented accordingly. We should indent sub-expressions where the first case isn't indented.\n\n\n var shouldNotIndent = _parent.type === \"ReturnStatement\" || _parent.type === \"JSXExpressionContainer\" && parentParent.type === \"JSXAttribute\" || n.type !== \"NGPipeExpression\" && (_parent.type === \"NGRoot\" && options.parser === \"__ng_binding\" || _parent.type === \"NGMicrosyntaxExpression\" && parentParent.type === \"NGMicrosyntax\" && parentParent.body.length === 1) || n === _parent.body && _parent.type === \"ArrowFunctionExpression\" || n !== _parent.body && _parent.type === \"ForStatement\" || _parent.type === \"ConditionalExpression\" && parentParent.type !== \"ReturnStatement\" && parentParent.type !== \"CallExpression\" && parentParent.type !== \"OptionalCallExpression\";\n var shouldIndentIfInlining = _parent.type === \"AssignmentExpression\" || _parent.type === \"VariableDeclarator\" || _parent.type === \"ClassProperty\" || _parent.type === \"TSAbstractClassProperty\" || _parent.type === \"ClassPrivateProperty\" || _parent.type === \"ObjectProperty\" || _parent.type === \"Property\";\n var samePrecedenceSubExpression = isBinaryish$1(n.left) && shouldFlatten$1(n.operator, n.left.operator);\n\n if (shouldNotIndent || shouldInlineLogicalExpression(n) && !samePrecedenceSubExpression || !shouldInlineLogicalExpression(n) && shouldIndentIfInlining) {\n return group$b(concat$d(_parts));\n }\n\n if (_parts.length === 0) {\n return \"\";\n } // If the right part is a JSX node, we include it in a separate group to\n // prevent it breaking the whole chain, so we can print the expression like:\n //\n // foo && bar && (\n // \n // \n // \n // )\n\n\n var hasJSX = isJSXNode$1(n.right);\n var rest = concat$d(hasJSX ? _parts.slice(1, -1) : _parts.slice(1));\n var groupId = Symbol(\"logicalChain-\" + ++uid);\n var chain = group$b(concat$d([// Don't include the initial expression in the indentation\n // level. The first item is guaranteed to be the first\n // left-most expression.\n _parts.length > 0 ? _parts[0] : \"\", indent$7(rest)]), {\n id: groupId\n });\n\n if (!hasJSX) {\n return chain;\n }\n\n var jsxPart = getLast$2(_parts);\n return group$b(concat$d([chain, ifBreak$6(indent$7(jsxPart), jsxPart, {\n groupId: groupId\n })]));\n }\n\n case \"AssignmentPattern\":\n return concat$d([path.call(print, \"left\"), \" = \", path.call(print, \"right\")]);\n\n case \"TSTypeAssertion\":\n {\n var shouldBreakAfterCast = !(n.expression.type === \"ArrayExpression\" || n.expression.type === \"ObjectExpression\");\n var castGroup = group$b(concat$d([\"<\", indent$7(concat$d([softline$6, path.call(print, \"typeAnnotation\")])), softline$6, \">\"]));\n var exprContents = concat$d([ifBreak$6(\"(\"), indent$7(concat$d([softline$6, path.call(print, \"expression\")])), softline$6, ifBreak$6(\")\")]);\n\n if (shouldBreakAfterCast) {\n return conditionalGroup$1([concat$d([castGroup, path.call(print, \"expression\")]), concat$d([castGroup, group$b(exprContents, {\n shouldBreak: true\n })]), concat$d([castGroup, path.call(print, \"expression\")])]);\n }\n\n return group$b(concat$d([castGroup, path.call(print, \"expression\")]));\n }\n\n case \"OptionalMemberExpression\":\n case \"MemberExpression\":\n {\n var _parent2 = path.getParentNode();\n\n var firstNonMemberParent;\n var i = 0;\n\n do {\n firstNonMemberParent = path.getParentNode(i);\n i++;\n } while (firstNonMemberParent && (firstNonMemberParent.type === \"MemberExpression\" || firstNonMemberParent.type === \"OptionalMemberExpression\" || firstNonMemberParent.type === \"TSNonNullExpression\"));\n\n var shouldInline = firstNonMemberParent && (firstNonMemberParent.type === \"NewExpression\" || firstNonMemberParent.type === \"BindExpression\" || firstNonMemberParent.type === \"VariableDeclarator\" && firstNonMemberParent.id.type !== \"Identifier\" || firstNonMemberParent.type === \"AssignmentExpression\" && firstNonMemberParent.left.type !== \"Identifier\") || n.computed || n.object.type === \"Identifier\" && n.property.type === \"Identifier\" && _parent2.type !== \"MemberExpression\" && _parent2.type !== \"OptionalMemberExpression\";\n return concat$d([path.call(print, \"object\"), shouldInline ? printMemberLookup(path, options, print) : group$b(indent$7(concat$d([softline$6, printMemberLookup(path, options, print)])))]);\n }\n\n case \"MetaProperty\":\n return concat$d([path.call(print, \"meta\"), \".\", path.call(print, \"property\")]);\n\n case \"BindExpression\":\n if (n.object) {\n parts.push(path.call(print, \"object\"));\n }\n\n parts.push(group$b(indent$7(concat$d([softline$6, printBindExpressionCallee(path, options, print)]))));\n return concat$d(parts);\n\n case \"Identifier\":\n {\n return concat$d([n.name, printOptionalToken(path), printTypeAnnotation(path, options, print)]);\n }\n\n case \"V8IntrinsicIdentifier\":\n return concat$d([\"%\", n.name]);\n\n case \"SpreadElement\":\n case \"SpreadElementPattern\":\n case \"RestProperty\":\n case \"SpreadProperty\":\n case \"SpreadPropertyPattern\":\n case \"RestElement\":\n case \"ObjectTypeSpreadProperty\":\n return concat$d([\"...\", path.call(print, \"argument\"), printTypeAnnotation(path, options, print)]);\n\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n parts.push(printFunctionDeclaration(path, print, options));\n\n if (!n.body) {\n parts.push(semi);\n }\n\n return concat$d(parts);\n\n case \"ArrowFunctionExpression\":\n {\n if (n.async) {\n parts.push(\"async \");\n }\n\n if (shouldPrintParamsWithoutParens(path, options)) {\n parts.push(path.call(print, \"params\", 0));\n } else {\n parts.push(group$b(concat$d([printFunctionParams(path, print, options,\n /* expandLast */\n args && (args.expandLastArg || args.expandFirstArg),\n /* printTypeParams */\n true), printReturnType(path, print, options)])));\n }\n\n var dangling = comments.printDanglingComments(path, options,\n /* sameIndent */\n true, function (comment) {\n var nextCharacter = getNextNonSpaceNonCommentCharacterIndex$2(options.originalText, comment, options);\n return options.originalText.substr(nextCharacter, 2) === \"=>\";\n });\n\n if (dangling) {\n parts.push(\" \", dangling);\n }\n\n parts.push(\" =>\");\n var body = path.call(function (bodyPath) {\n return print(bodyPath, args);\n }, \"body\"); // We want to always keep these types of nodes on the same line\n // as the arrow.\n\n if (!hasLeadingOwnLineComment$1(options.originalText, n.body, options) && (n.body.type === \"ArrayExpression\" || n.body.type === \"ObjectExpression\" || n.body.type === \"BlockStatement\" || isJSXNode$1(n.body) || isTemplateOnItsOwnLine$1(n.body, options.originalText, options) || n.body.type === \"ArrowFunctionExpression\" || n.body.type === \"DoExpression\")) {\n return group$b(concat$d([concat$d(parts), \" \", body]));\n } // We handle sequence expressions as the body of arrows specially,\n // so that the required parentheses end up on their own lines.\n\n\n if (n.body.type === \"SequenceExpression\") {\n return group$b(concat$d([concat$d(parts), group$b(concat$d([\" (\", indent$7(concat$d([softline$6, body])), softline$6, \")\"]))]));\n } // if the arrow function is expanded as last argument, we are adding a\n // level of indentation and need to add a softline to align the closing )\n // with the opening (, or if it's inside a JSXExpression (e.g. an attribute)\n // we should align the expression's closing } with the line with the opening {.\n\n\n var shouldAddSoftLine = (args && args.expandLastArg || path.getParentNode().type === \"JSXExpressionContainer\") && !(n.comments && n.comments.length);\n var printTrailingComma = args && args.expandLastArg && shouldPrintComma$1(options, \"all\"); // In order to avoid confusion between\n // a => a ? a : a\n // a <= a ? a : a\n\n var shouldAddParens = n.body.type === \"ConditionalExpression\" && !startsWithNoLookaheadToken$1(n.body,\n /* forbidFunctionAndClass */\n false);\n return group$b(concat$d([concat$d(parts), group$b(concat$d([indent$7(concat$d([line$7, shouldAddParens ? ifBreak$6(\"\", \"(\") : \"\", body, shouldAddParens ? ifBreak$6(\"\", \")\") : \"\"])), shouldAddSoftLine ? concat$d([ifBreak$6(printTrailingComma ? \",\" : \"\"), softline$6]) : \"\"]))]));\n }\n\n case \"YieldExpression\":\n parts.push(\"yield\");\n\n if (n.delegate) {\n parts.push(\"*\");\n }\n\n if (n.argument) {\n parts.push(\" \", path.call(print, \"argument\"));\n }\n\n return concat$d(parts);\n\n case \"AwaitExpression\":\n {\n parts.push(\"await \", path.call(print, \"argument\"));\n\n var _parent3 = path.getParentNode();\n\n if ((_parent3.type === \"CallExpression\" || _parent3.type === \"OptionalCallExpression\") && _parent3.callee === n || (_parent3.type === \"MemberExpression\" || _parent3.type === \"OptionalMemberExpression\") && _parent3.object === n) {\n return group$b(concat$d([indent$7(concat$d([softline$6, concat$d(parts)])), softline$6]));\n }\n\n return concat$d(parts);\n }\n\n case \"ImportSpecifier\":\n if (n.importKind) {\n parts.push(path.call(print, \"importKind\"), \" \");\n }\n\n parts.push(path.call(print, \"imported\"));\n\n if (n.local && n.local.name !== n.imported.name) {\n parts.push(\" as \", path.call(print, \"local\"));\n }\n\n return concat$d(parts);\n\n case \"ExportSpecifier\":\n parts.push(path.call(print, \"local\"));\n\n if (n.exported && n.exported.name !== n.local.name) {\n parts.push(\" as \", path.call(print, \"exported\"));\n }\n\n return concat$d(parts);\n\n case \"ImportNamespaceSpecifier\":\n parts.push(\"* as \");\n parts.push(path.call(print, \"local\"));\n return concat$d(parts);\n\n case \"ImportDefaultSpecifier\":\n return path.call(print, \"local\");\n\n case \"TSExportAssignment\":\n return concat$d([\"export = \", path.call(print, \"expression\"), semi]);\n\n case \"ExportDefaultDeclaration\":\n case \"ExportNamedDeclaration\":\n return printExportDeclaration(path, options, print);\n\n case \"ExportAllDeclaration\":\n parts.push(\"export \");\n\n if (n.exportKind === \"type\") {\n parts.push(\"type \");\n }\n\n parts.push(\"* from \", path.call(print, \"source\"), semi);\n return concat$d(parts);\n\n case \"ExportNamespaceSpecifier\":\n case \"ExportDefaultSpecifier\":\n return path.call(print, \"exported\");\n\n case \"ImportDeclaration\":\n {\n parts.push(\"import \");\n\n if (n.importKind && n.importKind !== \"value\") {\n parts.push(n.importKind + \" \");\n }\n\n var standalones = [];\n var grouped = [];\n\n if (n.specifiers && n.specifiers.length > 0) {\n path.each(function (specifierPath) {\n var value = specifierPath.getValue();\n\n if (value.type === \"ImportDefaultSpecifier\" || value.type === \"ImportNamespaceSpecifier\") {\n standalones.push(print(specifierPath));\n } else {\n grouped.push(print(specifierPath));\n }\n }, \"specifiers\");\n\n if (standalones.length > 0) {\n parts.push(join$9(\", \", standalones));\n }\n\n if (standalones.length > 0 && grouped.length > 0) {\n parts.push(\", \");\n }\n\n if (grouped.length === 1 && standalones.length === 0 && n.specifiers && !n.specifiers.some(function (node) {\n return node.comments;\n })) {\n parts.push(concat$d([\"{\", options.bracketSpacing ? \" \" : \"\", concat$d(grouped), options.bracketSpacing ? \" \" : \"\", \"}\"]));\n } else if (grouped.length >= 1) {\n parts.push(group$b(concat$d([\"{\", indent$7(concat$d([options.bracketSpacing ? line$7 : softline$6, join$9(concat$d([\",\", line$7]), grouped)])), ifBreak$6(shouldPrintComma$1(options) ? \",\" : \"\"), options.bracketSpacing ? line$7 : softline$6, \"}\"])));\n }\n\n parts.push(\" from \");\n } else if (n.importKind && n.importKind === \"type\" || // import {} from 'x'\n /{\\s*}/.test(options.originalText.slice(options.locStart(n), options.locStart(n.source)))) {\n parts.push(\"{} from \");\n }\n\n parts.push(path.call(print, \"source\"), semi);\n return concat$d(parts);\n }\n\n case \"Import\":\n return \"import\";\n\n case \"TSModuleBlock\":\n case \"BlockStatement\":\n {\n var naked = path.call(function (bodyPath) {\n return printStatementSequence(bodyPath, options, print);\n }, \"body\");\n var hasContent = n.body.find(function (node) {\n return node.type !== \"EmptyStatement\";\n });\n var hasDirectives = n.directives && n.directives.length > 0;\n\n var _parent4 = path.getParentNode();\n\n var _parentParent = path.getParentNode(1);\n\n if (!hasContent && !hasDirectives && !hasDanglingComments$1(n) && (_parent4.type === \"ArrowFunctionExpression\" || _parent4.type === \"FunctionExpression\" || _parent4.type === \"FunctionDeclaration\" || _parent4.type === \"ObjectMethod\" || _parent4.type === \"ClassMethod\" || _parent4.type === \"ClassPrivateMethod\" || _parent4.type === \"ForStatement\" || _parent4.type === \"WhileStatement\" || _parent4.type === \"DoWhileStatement\" || _parent4.type === \"DoExpression\" || _parent4.type === \"CatchClause\" && !_parentParent.finalizer || _parent4.type === \"TSModuleDeclaration\")) {\n return \"{}\";\n }\n\n parts.push(\"{\"); // Babel 6\n\n if (hasDirectives) {\n path.each(function (childPath) {\n parts.push(indent$7(concat$d([hardline$9, print(childPath), semi])));\n\n if (isNextLineEmpty$4(options.originalText, childPath.getValue(), options)) {\n parts.push(hardline$9);\n }\n }, \"directives\");\n }\n\n if (hasContent) {\n parts.push(indent$7(concat$d([hardline$9, naked])));\n }\n\n parts.push(comments.printDanglingComments(path, options));\n parts.push(hardline$9, \"}\");\n return concat$d(parts);\n }\n\n case \"ReturnStatement\":\n parts.push(\"return\");\n\n if (n.argument) {\n if (returnArgumentHasLeadingComment$1(options, n.argument)) {\n parts.push(concat$d([\" (\", indent$7(concat$d([hardline$9, path.call(print, \"argument\")])), hardline$9, \")\"]));\n } else if (n.argument.type === \"LogicalExpression\" || n.argument.type === \"BinaryExpression\" || n.argument.type === \"SequenceExpression\") {\n parts.push(group$b(concat$d([ifBreak$6(\" (\", \" \"), indent$7(concat$d([softline$6, path.call(print, \"argument\")])), softline$6, ifBreak$6(\")\")])));\n } else {\n parts.push(\" \", path.call(print, \"argument\"));\n }\n }\n\n if (hasDanglingComments$1(n)) {\n parts.push(\" \", comments.printDanglingComments(path, options,\n /* sameIndent */\n true));\n }\n\n parts.push(semi);\n return concat$d(parts);\n\n case \"NewExpression\":\n case \"OptionalCallExpression\":\n case \"CallExpression\":\n {\n var isNew = n.type === \"NewExpression\";\n var optional = printOptionalToken(path);\n\n if ( // We want to keep CommonJS- and AMD-style require calls, and AMD-style\n // define calls, as a unit.\n // e.g. `define([\"some/lib\", (lib) => {`\n !isNew && n.callee.type === \"Identifier\" && (n.callee.name === \"require\" || n.callee.name === \"define\") || // Template literals as single arguments\n n.arguments.length === 1 && isTemplateOnItsOwnLine$1(n.arguments[0], options.originalText, options) || // Keep test declarations on a single line\n // e.g. `it('long name', () => {`\n !isNew && isTestCall$1(n, path.getParentNode())) {\n return concat$d([isNew ? \"new \" : \"\", path.call(print, \"callee\"), optional, printFunctionTypeParameters(path, options, print), concat$d([\"(\", join$9(\", \", path.map(print, \"arguments\")), \")\"])]);\n } // Inline Flow annotation comments following Identifiers in Call nodes need to\n // stay with the Identifier. For example:\n //\n // foo /*:: */(bar);\n //\n // Here, we ensure that such comments stay between the Identifier and the Callee.\n\n\n var isIdentifierWithFlowAnnotation = n.callee.type === \"Identifier\" && hasFlowAnnotationComment$1(n.callee.trailingComments);\n\n if (isIdentifierWithFlowAnnotation) {\n n.callee.trailingComments[0].printed = true;\n } // We detect calls on member lookups and possibly print them in a\n // special chain format. See `printMemberChain` for more info.\n\n\n if (!isNew && isMemberish$1(n.callee)) {\n return printMemberChain(path, options, print);\n }\n\n var contents = concat$d([isNew ? \"new \" : \"\", path.call(print, \"callee\"), optional, isIdentifierWithFlowAnnotation ? \"/*:: \".concat(n.callee.trailingComments[0].value.substring(2).trim(), \" */\") : \"\", printFunctionTypeParameters(path, options, print), printArgumentsList(path, options, print)]); // We group here when the callee is itself a call expression.\n // See `isLongCurriedCallExpression` for more info.\n\n if (isCallOrOptionalCallExpression$1(n.callee)) {\n return group$b(contents);\n }\n\n return contents;\n }\n\n case \"TSInterfaceDeclaration\":\n if (n.declare) {\n parts.push(\"declare \");\n }\n\n parts.push(n.abstract ? \"abstract \" : \"\", printTypeScriptModifiers(path, options, print), \"interface \", path.call(print, \"id\"), n.typeParameters ? path.call(print, \"typeParameters\") : \"\", \" \");\n\n if (n.extends && n.extends.length) {\n parts.push(group$b(indent$7(concat$d([softline$6, \"extends \", (n.extends.length === 1 ? identity$2 : indent$7)(join$9(concat$d([\",\", line$7]), path.map(print, \"extends\"))), \" \"]))));\n }\n\n parts.push(path.call(print, \"body\"));\n return concat$d(parts);\n\n case \"ObjectTypeInternalSlot\":\n return concat$d([n.static ? \"static \" : \"\", \"[[\", path.call(print, \"id\"), \"]]\", printOptionalToken(path), n.method ? \"\" : \": \", path.call(print, \"value\")]);\n\n case \"ObjectExpression\":\n case \"ObjectPattern\":\n case \"ObjectTypeAnnotation\":\n case \"TSInterfaceBody\":\n case \"TSTypeLiteral\":\n {\n var propertiesField;\n\n if (n.type === \"TSTypeLiteral\") {\n propertiesField = \"members\";\n } else if (n.type === \"TSInterfaceBody\") {\n propertiesField = \"body\";\n } else {\n propertiesField = \"properties\";\n }\n\n var isTypeAnnotation = n.type === \"ObjectTypeAnnotation\";\n var fields = [];\n\n if (isTypeAnnotation) {\n fields.push(\"indexers\", \"callProperties\", \"internalSlots\");\n }\n\n fields.push(propertiesField);\n var firstProperty = fields.map(function (field) {\n return n[field][0];\n }).sort(function (a, b) {\n return options.locStart(a) - options.locStart(b);\n })[0];\n\n var _parent5 = path.getParentNode(0);\n\n var isFlowInterfaceLikeBody = isTypeAnnotation && _parent5 && (_parent5.type === \"InterfaceDeclaration\" || _parent5.type === \"DeclareInterface\" || _parent5.type === \"DeclareClass\") && path.getName() === \"body\";\n var shouldBreak = n.type === \"TSInterfaceBody\" || isFlowInterfaceLikeBody || n.type === \"ObjectPattern\" && _parent5.type !== \"FunctionDeclaration\" && _parent5.type !== \"FunctionExpression\" && _parent5.type !== \"ArrowFunctionExpression\" && _parent5.type !== \"ObjectMethod\" && _parent5.type !== \"ClassMethod\" && _parent5.type !== \"ClassPrivateMethod\" && _parent5.type !== \"AssignmentPattern\" && _parent5.type !== \"CatchClause\" && n.properties.some(function (property) {\n return property.value && (property.value.type === \"ObjectPattern\" || property.value.type === \"ArrayPattern\");\n }) || n.type !== \"ObjectPattern\" && firstProperty && hasNewlineInRange$2(options.originalText, options.locStart(n), options.locStart(firstProperty));\n var separator = isFlowInterfaceLikeBody ? \";\" : n.type === \"TSInterfaceBody\" || n.type === \"TSTypeLiteral\" ? ifBreak$6(semi, \";\") : \",\";\n var leftBrace = n.exact ? \"{|\" : \"{\";\n var rightBrace = n.exact ? \"|}\" : \"}\"; // Unfortunately, things are grouped together in the ast can be\n // interleaved in the source code. So we need to reorder them before\n // printing them.\n\n var propsAndLoc = [];\n fields.forEach(function (field) {\n path.each(function (childPath) {\n var node = childPath.getValue();\n propsAndLoc.push({\n node: node,\n printed: print(childPath),\n loc: options.locStart(node)\n });\n }, field);\n });\n var separatorParts = [];\n var props = propsAndLoc.sort(function (a, b) {\n return a.loc - b.loc;\n }).map(function (prop) {\n var result = concat$d(separatorParts.concat(group$b(prop.printed)));\n separatorParts = [separator, line$7];\n\n if ((prop.node.type === \"TSPropertySignature\" || prop.node.type === \"TSMethodSignature\" || prop.node.type === \"TSConstructSignatureDeclaration\") && hasNodeIgnoreComment$2(prop.node)) {\n separatorParts.shift();\n }\n\n if (isNextLineEmpty$4(options.originalText, prop.node, options)) {\n separatorParts.push(hardline$9);\n }\n\n return result;\n });\n\n if (n.inexact) {\n props.push(concat$d(separatorParts.concat(group$b(\"...\"))));\n }\n\n var lastElem = getLast$2(n[propertiesField]);\n var canHaveTrailingSeparator = !(lastElem && (lastElem.type === \"RestProperty\" || lastElem.type === \"RestElement\" || hasNodeIgnoreComment$2(lastElem) || n.inexact));\n var content;\n\n if (props.length === 0) {\n if (!hasDanglingComments$1(n)) {\n return concat$d([leftBrace, rightBrace, printTypeAnnotation(path, options, print)]);\n }\n\n content = group$b(concat$d([leftBrace, comments.printDanglingComments(path, options), softline$6, rightBrace, printOptionalToken(path), printTypeAnnotation(path, options, print)]));\n } else {\n content = concat$d([leftBrace, indent$7(concat$d([options.bracketSpacing ? line$7 : softline$6, concat$d(props)])), ifBreak$6(canHaveTrailingSeparator && (separator !== \",\" || shouldPrintComma$1(options)) ? separator : \"\"), concat$d([options.bracketSpacing ? line$7 : softline$6, rightBrace]), printOptionalToken(path), printTypeAnnotation(path, options, print)]);\n } // If we inline the object as first argument of the parent, we don't want\n // to create another group so that the object breaks before the return\n // type\n\n\n var parentParentParent = path.getParentNode(2);\n\n if (n.type === \"ObjectPattern\" && _parent5 && shouldHugArguments(_parent5) && !n.decorators && _parent5.params[0] === n || shouldHugType(n) && parentParentParent && shouldHugArguments(parentParentParent) && parentParentParent.params[0].typeAnnotation && parentParentParent.params[0].typeAnnotation.typeAnnotation === n) {\n return content;\n }\n\n return group$b(content, {\n shouldBreak: shouldBreak\n });\n }\n // Babel 6\n\n case \"ObjectProperty\": // Non-standard AST node type.\n\n case \"Property\":\n if (n.method || n.kind === \"get\" || n.kind === \"set\") {\n return printMethod(path, options, print);\n }\n\n if (n.shorthand) {\n parts.push(path.call(print, \"value\"));\n } else {\n parts.push(printAssignment(n.key, printPropertyKey(path, options, print), \":\", n.value, path.call(print, \"value\"), options));\n }\n\n return concat$d(parts);\n // Babel 6\n\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n case \"MethodDefinition\":\n case \"TSAbstractMethodDefinition\":\n if (n.decorators && n.decorators.length !== 0) {\n parts.push(printDecorators(path, options, print));\n }\n\n if (n.accessibility) {\n parts.push(n.accessibility + \" \");\n }\n\n if (n.static) {\n parts.push(\"static \");\n }\n\n if (n.type === \"TSAbstractMethodDefinition\") {\n parts.push(\"abstract \");\n }\n\n parts.push(printMethod(path, options, print));\n return concat$d(parts);\n\n case \"ObjectMethod\":\n return printMethod(path, options, print);\n\n case \"Decorator\":\n return concat$d([\"@\", path.call(print, \"expression\"), path.call(print, \"callee\")]);\n\n case \"ArrayExpression\":\n case \"ArrayPattern\":\n if (n.elements.length === 0) {\n if (!hasDanglingComments$1(n)) {\n parts.push(\"[]\");\n } else {\n parts.push(group$b(concat$d([\"[\", comments.printDanglingComments(path, options), softline$6, \"]\"])));\n }\n } else {\n var _lastElem = getLast$2(n.elements);\n\n var canHaveTrailingComma = !(_lastElem && _lastElem.type === \"RestElement\"); // JavaScript allows you to have empty elements in an array which\n // changes its length based on the number of commas. The algorithm\n // is that if the last argument is null, we need to force insert\n // a comma to ensure JavaScript recognizes it.\n // [,].length === 1\n // [1,].length === 1\n // [1,,].length === 2\n //\n // Note that getLast returns null if the array is empty, but\n // we already check for an empty array just above so we are safe\n\n var needsForcedTrailingComma = canHaveTrailingComma && _lastElem === null;\n\n var _shouldBreak = n.elements.length > 1 && n.elements.every(function (element, i, elements) {\n var elementType = element && element.type;\n\n if (elementType !== \"ArrayExpression\" && elementType !== \"ObjectExpression\") {\n return false;\n }\n\n var nextElement = elements[i + 1];\n\n if (nextElement && elementType !== nextElement.type) {\n return false;\n }\n\n var itemsKey = elementType === \"ArrayExpression\" ? \"elements\" : \"properties\";\n return element[itemsKey] && element[itemsKey].length > 1;\n });\n\n parts.push(group$b(concat$d([\"[\", indent$7(concat$d([softline$6, printArrayItems(path, options, \"elements\", print)])), needsForcedTrailingComma ? \",\" : \"\", ifBreak$6(canHaveTrailingComma && !needsForcedTrailingComma && shouldPrintComma$1(options) ? \",\" : \"\"), comments.printDanglingComments(path, options,\n /* sameIndent */\n true), softline$6, \"]\"]), {\n shouldBreak: _shouldBreak\n }));\n }\n\n parts.push(printOptionalToken(path), printTypeAnnotation(path, options, print));\n return concat$d(parts);\n\n case \"SequenceExpression\":\n {\n var _parent6 = path.getParentNode(0);\n\n if (_parent6.type === \"ExpressionStatement\" || _parent6.type === \"ForStatement\") {\n // For ExpressionStatements and for-loop heads, which are among\n // the few places a SequenceExpression appears unparenthesized, we want\n // to indent expressions after the first.\n var _parts2 = [];\n path.each(function (p) {\n if (p.getName() === 0) {\n _parts2.push(print(p));\n } else {\n _parts2.push(\",\", indent$7(concat$d([line$7, print(p)])));\n }\n }, \"expressions\");\n return group$b(concat$d(_parts2));\n }\n\n return group$b(concat$d([join$9(concat$d([\",\", line$7]), path.map(print, \"expressions\"))]));\n }\n\n case \"ThisExpression\":\n return \"this\";\n\n case \"Super\":\n return \"super\";\n\n case \"NullLiteral\":\n // Babel 6 Literal split\n return \"null\";\n\n case \"RegExpLiteral\":\n // Babel 6 Literal split\n return printRegex(n);\n\n case \"NumericLiteral\":\n // Babel 6 Literal split\n return printNumber$2(n.extra.raw);\n\n case \"BigIntLiteral\":\n // babel: n.extra.raw, typescript: n.raw, flow: n.bigint\n return (n.bigint || (n.extra ? n.extra.raw : n.raw)).toLowerCase();\n\n case \"BooleanLiteral\": // Babel 6 Literal split\n\n case \"StringLiteral\": // Babel 6 Literal split\n\n case \"Literal\":\n {\n if (n.regex) {\n return printRegex(n.regex);\n }\n\n if (typeof n.value === \"number\") {\n return printNumber$2(n.raw);\n }\n\n if (typeof n.value !== \"string\") {\n return \"\" + n.value;\n } // TypeScript workaround for https://github.com/JamesHenry/typescript-estree/issues/2\n // See corresponding workaround in needs-parens.js\n\n\n var grandParent = path.getParentNode(1);\n var isTypeScriptDirective = options.parser === \"typescript\" && typeof n.value === \"string\" && grandParent && (grandParent.type === \"Program\" || grandParent.type === \"BlockStatement\");\n return nodeStr(n, options, isTypeScriptDirective);\n }\n\n case \"Directive\":\n return path.call(print, \"value\");\n // Babel 6\n\n case \"DirectiveLiteral\":\n return nodeStr(n, options);\n\n case \"UnaryExpression\":\n parts.push(n.operator);\n\n if (/[a-z]$/.test(n.operator)) {\n parts.push(\" \");\n }\n\n if (n.argument.comments && n.argument.comments.length > 0) {\n parts.push(group$b(concat$d([\"(\", indent$7(concat$d([softline$6, path.call(print, \"argument\")])), softline$6, \")\"])));\n } else {\n parts.push(path.call(print, \"argument\"));\n }\n\n return concat$d(parts);\n\n case \"UpdateExpression\":\n parts.push(path.call(print, \"argument\"), n.operator);\n\n if (n.prefix) {\n parts.reverse();\n }\n\n return concat$d(parts);\n\n case \"ConditionalExpression\":\n return printTernaryOperator(path, options, print, {\n beforeParts: function beforeParts() {\n return [path.call(print, \"test\")];\n },\n afterParts: function afterParts(breakClosingParen) {\n return [breakClosingParen ? softline$6 : \"\"];\n },\n shouldCheckJsx: true,\n conditionalNodeType: \"ConditionalExpression\",\n consequentNodePropertyName: \"consequent\",\n alternateNodePropertyName: \"alternate\",\n testNodePropertyName: \"test\",\n breakNested: true\n });\n\n case \"VariableDeclaration\":\n {\n var printed = path.map(function (childPath) {\n return print(childPath);\n }, \"declarations\"); // We generally want to terminate all variable declarations with a\n // semicolon, except when they in the () part of for loops.\n\n var parentNode = path.getParentNode();\n var isParentForLoop = parentNode.type === \"ForStatement\" || parentNode.type === \"ForInStatement\" || parentNode.type === \"ForOfStatement\" || parentNode.type === \"ForAwaitStatement\";\n var hasValue = n.declarations.some(function (decl) {\n return decl.init;\n });\n var firstVariable;\n\n if (printed.length === 1 && !n.declarations[0].comments) {\n firstVariable = printed[0];\n } else if (printed.length > 0) {\n // Indent first var to comply with eslint one-var rule\n firstVariable = indent$7(printed[0]);\n }\n\n parts = [n.declare ? \"declare \" : \"\", n.kind, firstVariable ? concat$d([\" \", firstVariable]) : \"\", indent$7(concat$d(printed.slice(1).map(function (p) {\n return concat$d([\",\", hasValue && !isParentForLoop ? hardline$9 : line$7, p]);\n })))];\n\n if (!(isParentForLoop && parentNode.body !== n)) {\n parts.push(semi);\n }\n\n return group$b(concat$d(parts));\n }\n\n case \"TSTypeAliasDeclaration\":\n {\n if (n.declare) {\n parts.push(\"declare \");\n }\n\n var _printed = printAssignmentRight(n.id, n.typeAnnotation, n.typeAnnotation && path.call(print, \"typeAnnotation\"), options);\n\n parts.push(\"type \", path.call(print, \"id\"), path.call(print, \"typeParameters\"), \" =\", _printed, semi);\n return group$b(concat$d(parts));\n }\n\n case \"VariableDeclarator\":\n return printAssignment(n.id, path.call(print, \"id\"), \" =\", n.init, n.init && path.call(print, \"init\"), options);\n\n case \"WithStatement\":\n return group$b(concat$d([\"with (\", path.call(print, \"object\"), \")\", adjustClause(n.body, path.call(print, \"body\"))]));\n\n case \"IfStatement\":\n {\n var con = adjustClause(n.consequent, path.call(print, \"consequent\"));\n var opening = group$b(concat$d([\"if (\", group$b(concat$d([indent$7(concat$d([softline$6, path.call(print, \"test\")])), softline$6])), \")\", con]));\n parts.push(opening);\n\n if (n.alternate) {\n var commentOnOwnLine = hasTrailingComment$1(n.consequent) && n.consequent.comments.some(function (comment) {\n return comment.trailing && !comments$1.isBlockComment(comment);\n }) || needsHardlineAfterDanglingComment$1(n);\n var elseOnSameLine = n.consequent.type === \"BlockStatement\" && !commentOnOwnLine;\n parts.push(elseOnSameLine ? \" \" : hardline$9);\n\n if (hasDanglingComments$1(n)) {\n parts.push(comments.printDanglingComments(path, options, true), commentOnOwnLine ? hardline$9 : \" \");\n }\n\n parts.push(\"else\", group$b(adjustClause(n.alternate, path.call(print, \"alternate\"), n.alternate.type === \"IfStatement\")));\n }\n\n return concat$d(parts);\n }\n\n case \"ForStatement\":\n {\n var _body = adjustClause(n.body, path.call(print, \"body\")); // We want to keep dangling comments above the loop to stay consistent.\n // Any comment positioned between the for statement and the parentheses\n // is going to be printed before the statement.\n\n\n var _dangling = comments.printDanglingComments(path, options,\n /* sameLine */\n true);\n\n var printedComments = _dangling ? concat$d([_dangling, softline$6]) : \"\";\n\n if (!n.init && !n.test && !n.update) {\n return concat$d([printedComments, group$b(concat$d([\"for (;;)\", _body]))]);\n }\n\n return concat$d([printedComments, group$b(concat$d([\"for (\", group$b(concat$d([indent$7(concat$d([softline$6, path.call(print, \"init\"), \";\", line$7, path.call(print, \"test\"), \";\", line$7, path.call(print, \"update\")])), softline$6])), \")\", _body]))]);\n }\n\n case \"WhileStatement\":\n return group$b(concat$d([\"while (\", group$b(concat$d([indent$7(concat$d([softline$6, path.call(print, \"test\")])), softline$6])), \")\", adjustClause(n.body, path.call(print, \"body\"))]));\n\n case \"ForInStatement\":\n // Note: esprima can't actually parse \"for each (\".\n return group$b(concat$d([n.each ? \"for each (\" : \"for (\", path.call(print, \"left\"), \" in \", path.call(print, \"right\"), \")\", adjustClause(n.body, path.call(print, \"body\"))]));\n\n case \"ForOfStatement\":\n case \"ForAwaitStatement\":\n {\n // Babel 7 removed ForAwaitStatement in favor of ForOfStatement\n // with `\"await\": true`:\n // https://github.com/estree/estree/pull/138\n var isAwait = n.type === \"ForAwaitStatement\" || n.await;\n return group$b(concat$d([\"for\", isAwait ? \" await\" : \"\", \" (\", path.call(print, \"left\"), \" of \", path.call(print, \"right\"), \")\", adjustClause(n.body, path.call(print, \"body\"))]));\n }\n\n case \"DoWhileStatement\":\n {\n var clause = adjustClause(n.body, path.call(print, \"body\"));\n var doBody = group$b(concat$d([\"do\", clause]));\n parts = [doBody];\n\n if (n.body.type === \"BlockStatement\") {\n parts.push(\" \");\n } else {\n parts.push(hardline$9);\n }\n\n parts.push(\"while (\");\n parts.push(group$b(concat$d([indent$7(concat$d([softline$6, path.call(print, \"test\")])), softline$6])), \")\", semi);\n return concat$d(parts);\n }\n\n case \"DoExpression\":\n return concat$d([\"do \", path.call(print, \"body\")]);\n\n case \"BreakStatement\":\n parts.push(\"break\");\n\n if (n.label) {\n parts.push(\" \", path.call(print, \"label\"));\n }\n\n parts.push(semi);\n return concat$d(parts);\n\n case \"ContinueStatement\":\n parts.push(\"continue\");\n\n if (n.label) {\n parts.push(\" \", path.call(print, \"label\"));\n }\n\n parts.push(semi);\n return concat$d(parts);\n\n case \"LabeledStatement\":\n if (n.body.type === \"EmptyStatement\") {\n return concat$d([path.call(print, \"label\"), \":;\"]);\n }\n\n return concat$d([path.call(print, \"label\"), \": \", path.call(print, \"body\")]);\n\n case \"TryStatement\":\n return concat$d([\"try \", path.call(print, \"block\"), n.handler ? concat$d([\" \", path.call(print, \"handler\")]) : \"\", n.finalizer ? concat$d([\" finally \", path.call(print, \"finalizer\")]) : \"\"]);\n\n case \"CatchClause\":\n if (n.param) {\n var hasComments = n.param.comments && n.param.comments.some(function (comment) {\n return !comments$1.isBlockComment(comment) || comment.leading && hasNewline$4(options.originalText, options.locEnd(comment)) || comment.trailing && hasNewline$4(options.originalText, options.locStart(comment), {\n backwards: true\n });\n });\n var param = path.call(print, \"param\");\n return concat$d([\"catch \", hasComments ? concat$d([\"(\", indent$7(concat$d([softline$6, param])), softline$6, \") \"]) : concat$d([\"(\", param, \") \"]), path.call(print, \"body\")]);\n }\n\n return concat$d([\"catch \", path.call(print, \"body\")]);\n\n case \"ThrowStatement\":\n return concat$d([\"throw \", path.call(print, \"argument\"), semi]);\n // Note: ignoring n.lexical because it has no printing consequences.\n\n case \"SwitchStatement\":\n return concat$d([group$b(concat$d([\"switch (\", indent$7(concat$d([softline$6, path.call(print, \"discriminant\")])), softline$6, \")\"])), \" {\", n.cases.length > 0 ? indent$7(concat$d([hardline$9, join$9(hardline$9, path.map(function (casePath) {\n var caseNode = casePath.getValue();\n return concat$d([casePath.call(print), n.cases.indexOf(caseNode) !== n.cases.length - 1 && isNextLineEmpty$4(options.originalText, caseNode, options) ? hardline$9 : \"\"]);\n }, \"cases\"))])) : \"\", hardline$9, \"}\"]);\n\n case \"SwitchCase\":\n {\n if (n.test) {\n parts.push(\"case \", path.call(print, \"test\"), \":\");\n } else {\n parts.push(\"default:\");\n }\n\n var consequent = n.consequent.filter(function (node) {\n return node.type !== \"EmptyStatement\";\n });\n\n if (consequent.length > 0) {\n var cons = path.call(function (consequentPath) {\n return printStatementSequence(consequentPath, options, print);\n }, \"consequent\");\n parts.push(consequent.length === 1 && consequent[0].type === \"BlockStatement\" ? concat$d([\" \", cons]) : indent$7(concat$d([hardline$9, cons])));\n }\n\n return concat$d(parts);\n }\n // JSX extensions below.\n\n case \"DebuggerStatement\":\n return concat$d([\"debugger\", semi]);\n\n case \"JSXAttribute\":\n parts.push(path.call(print, \"name\"));\n\n if (n.value) {\n var res;\n\n if (isStringLiteral$1(n.value)) {\n var raw = rawText$1(n.value); // Unescape all quotes so we get an accurate preferred quote\n\n var final = raw.replace(/'/g, \"'\").replace(/"/g, '\"');\n var quote = getPreferredQuote$1(final, options.jsxSingleQuote ? \"'\" : '\"');\n\n var _escape = quote === \"'\" ? \"'\" : \""\";\n\n final = final.slice(1, -1).replace(new RegExp(quote, \"g\"), _escape);\n res = concat$d([quote, final, quote]);\n } else {\n res = path.call(print, \"value\");\n }\n\n parts.push(\"=\", res);\n }\n\n return concat$d(parts);\n\n case \"JSXIdentifier\":\n return \"\" + n.name;\n\n case \"JSXNamespacedName\":\n return join$9(\":\", [path.call(print, \"namespace\"), path.call(print, \"name\")]);\n\n case \"JSXMemberExpression\":\n return join$9(\".\", [path.call(print, \"object\"), path.call(print, \"property\")]);\n\n case \"TSQualifiedName\":\n return join$9(\".\", [path.call(print, \"left\"), path.call(print, \"right\")]);\n\n case \"JSXSpreadAttribute\":\n case \"JSXSpreadChild\":\n {\n return concat$d([\"{\", path.call(function (p) {\n var printed = concat$d([\"...\", print(p)]);\n var n = p.getValue();\n\n if (!n.comments || !n.comments.length) {\n return printed;\n }\n\n return concat$d([indent$7(concat$d([softline$6, comments.printComments(p, function () {\n return printed;\n }, options)])), softline$6]);\n }, n.type === \"JSXSpreadAttribute\" ? \"argument\" : \"expression\"), \"}\"]);\n }\n\n case \"JSXExpressionContainer\":\n {\n var _parent7 = path.getParentNode(0);\n\n var preventInline = _parent7.type === \"JSXAttribute\" && n.expression.comments && n.expression.comments.length > 0;\n\n var _shouldInline = !preventInline && (n.expression.type === \"ArrayExpression\" || n.expression.type === \"ObjectExpression\" || n.expression.type === \"ArrowFunctionExpression\" || n.expression.type === \"CallExpression\" || n.expression.type === \"OptionalCallExpression\" || n.expression.type === \"FunctionExpression\" || n.expression.type === \"JSXEmptyExpression\" || n.expression.type === \"TemplateLiteral\" || n.expression.type === \"TaggedTemplateExpression\" || n.expression.type === \"DoExpression\" || isJSXNode$1(_parent7) && (n.expression.type === \"ConditionalExpression\" || isBinaryish$1(n.expression)));\n\n if (_shouldInline) {\n return group$b(concat$d([\"{\", path.call(print, \"expression\"), lineSuffixBoundary$1, \"}\"]));\n }\n\n return group$b(concat$d([\"{\", indent$7(concat$d([softline$6, path.call(print, \"expression\")])), softline$6, lineSuffixBoundary$1, \"}\"]));\n }\n\n case \"JSXFragment\":\n case \"JSXElement\":\n {\n var elem = comments.printComments(path, function () {\n return printJSXElement(path, options, print);\n }, options);\n return maybeWrapJSXElementInParens(path, elem, options);\n }\n\n case \"JSXOpeningElement\":\n {\n var _n = path.getValue();\n\n var nameHasComments = _n.name && _n.name.comments && _n.name.comments.length > 0 || _n.typeParameters && _n.typeParameters.comments && _n.typeParameters.comments.length > 0; // Don't break self-closing elements with no attributes and no comments\n\n if (_n.selfClosing && !_n.attributes.length && !nameHasComments) {\n return concat$d([\"<\", path.call(print, \"name\"), path.call(print, \"typeParameters\"), \" />\"]);\n } // don't break up opening elements with a single long text attribute\n\n\n if (_n.attributes && _n.attributes.length === 1 && _n.attributes[0].value && isStringLiteral$1(_n.attributes[0].value) && !_n.attributes[0].value.value.includes(\"\\n\") && // We should break for the following cases:\n // \n // \n !nameHasComments && (!_n.attributes[0].comments || !_n.attributes[0].comments.length)) {\n return group$b(concat$d([\"<\", path.call(print, \"name\"), path.call(print, \"typeParameters\"), \" \", concat$d(path.map(print, \"attributes\")), _n.selfClosing ? \" />\" : \">\"]));\n }\n\n var lastAttrHasTrailingComments = _n.attributes.length && hasTrailingComment$1(getLast$2(_n.attributes));\n var bracketSameLine = // Simple tags (no attributes and no comment in tag name) should be\n // kept unbroken regardless of `jsxBracketSameLine`\n !_n.attributes.length && !nameHasComments || options.jsxBracketSameLine && ( // We should print the bracket in a new line for the following cases:\n // \n // \n !nameHasComments || _n.attributes.length) && !lastAttrHasTrailingComments; // We should print the opening element expanded if any prop value is a\n // string literal with newlines\n\n var _shouldBreak2 = _n.attributes && _n.attributes.some(function (attr) {\n return attr.value && isStringLiteral$1(attr.value) && attr.value.value.includes(\"\\n\");\n });\n\n return group$b(concat$d([\"<\", path.call(print, \"name\"), path.call(print, \"typeParameters\"), concat$d([indent$7(concat$d(path.map(function (attr) {\n return concat$d([line$7, print(attr)]);\n }, \"attributes\"))), _n.selfClosing ? line$7 : bracketSameLine ? \">\" : softline$6]), _n.selfClosing ? \"/>\" : bracketSameLine ? \"\" : \">\"]), {\n shouldBreak: _shouldBreak2\n });\n }\n\n case \"JSXClosingElement\":\n return concat$d([\"\"]);\n\n case \"JSXOpeningFragment\":\n case \"JSXClosingFragment\":\n {\n var hasComment = n.comments && n.comments.length;\n var hasOwnLineComment = hasComment && !n.comments.every(comments$1.isBlockComment);\n var isOpeningFragment = n.type === \"JSXOpeningFragment\";\n return concat$d([isOpeningFragment ? \"<\" : \"\"]);\n }\n\n case \"JSXText\":\n /* istanbul ignore next */\n throw new Error(\"JSXTest should be handled by JSXElement\");\n\n case \"JSXEmptyExpression\":\n {\n var requiresHardline = n.comments && !n.comments.every(comments$1.isBlockComment);\n return concat$d([comments.printDanglingComments(path, options,\n /* sameIndent */\n !requiresHardline), requiresHardline ? hardline$9 : \"\"]);\n }\n\n case \"ClassBody\":\n if (!n.comments && n.body.length === 0) {\n return \"{}\";\n }\n\n return concat$d([\"{\", n.body.length > 0 ? indent$7(concat$d([hardline$9, path.call(function (bodyPath) {\n return printStatementSequence(bodyPath, options, print);\n }, \"body\")])) : comments.printDanglingComments(path, options), hardline$9, \"}\"]);\n\n case \"ClassProperty\":\n case \"TSAbstractClassProperty\":\n case \"ClassPrivateProperty\":\n {\n if (n.decorators && n.decorators.length !== 0) {\n parts.push(printDecorators(path, options, print));\n }\n\n if (n.accessibility) {\n parts.push(n.accessibility + \" \");\n }\n\n if (n.declare) {\n parts.push(\"declare \");\n }\n\n if (n.static) {\n parts.push(\"static \");\n }\n\n if (n.type === \"TSAbstractClassProperty\") {\n parts.push(\"abstract \");\n }\n\n if (n.readonly) {\n parts.push(\"readonly \");\n }\n\n var variance = getFlowVariance$1(n);\n\n if (variance) {\n parts.push(variance);\n }\n\n parts.push(printPropertyKey(path, options, print), printOptionalToken(path), printTypeAnnotation(path, options, print));\n\n if (n.value) {\n parts.push(\" =\", printAssignmentRight(n.key, n.value, path.call(print, \"value\"), options));\n }\n\n parts.push(semi);\n return group$b(concat$d(parts));\n }\n\n case \"ClassDeclaration\":\n case \"ClassExpression\":\n if (n.declare) {\n parts.push(\"declare \");\n }\n\n parts.push(concat$d(printClass(path, options, print)));\n return concat$d(parts);\n\n case \"TSInterfaceHeritage\":\n parts.push(path.call(print, \"expression\"));\n\n if (n.typeParameters) {\n parts.push(path.call(print, \"typeParameters\"));\n }\n\n return concat$d(parts);\n\n case \"TemplateElement\":\n return join$9(literalline$4, n.value.raw.split(/\\r?\\n/g));\n\n case \"TemplateLiteral\":\n {\n var expressions = path.map(print, \"expressions\");\n\n var _parentNode = path.getParentNode();\n\n if (isJestEachTemplateLiteral$1(n, _parentNode)) {\n var _printed2 = printJestEachTemplateLiteral(n, expressions, options);\n\n if (_printed2) {\n return _printed2;\n }\n }\n\n var isSimple = isSimpleTemplateLiteral$1(n);\n\n if (isSimple) {\n expressions = expressions.map(function (doc) {\n return printDocToString$1(doc, Object.assign({}, options, {\n printWidth: Infinity\n })).formatted;\n });\n }\n\n parts.push(lineSuffixBoundary$1, \"`\");\n path.each(function (childPath) {\n var i = childPath.getName();\n parts.push(print(childPath));\n\n if (i < expressions.length) {\n // For a template literal of the following form:\n // `someQuery {\n // ${call({\n // a,\n // b,\n // })}\n // }`\n // the expression is on its own line (there is a \\n in the previous\n // quasi literal), therefore we want to indent the JavaScript\n // expression inside at the beginning of ${ instead of the beginning\n // of the `.\n var tabWidth = options.tabWidth;\n var quasi = childPath.getValue();\n var indentSize = getIndentSize$1(quasi.value.raw, tabWidth);\n var _printed3 = expressions[i];\n\n if (!isSimple) {\n // Breaks at the template element boundaries (${ and }) are preferred to breaking\n // in the middle of a MemberExpression\n if (n.expressions[i].comments && n.expressions[i].comments.length || n.expressions[i].type === \"MemberExpression\" || n.expressions[i].type === \"OptionalMemberExpression\" || n.expressions[i].type === \"ConditionalExpression\") {\n _printed3 = concat$d([indent$7(concat$d([softline$6, _printed3])), softline$6]);\n }\n }\n\n var aligned = indentSize === 0 && quasi.value.raw.endsWith(\"\\n\") ? align$1(-Infinity, _printed3) : addAlignmentToDoc$2(_printed3, indentSize, tabWidth);\n parts.push(group$b(concat$d([\"${\", aligned, lineSuffixBoundary$1, \"}\"])));\n }\n }, \"quasis\");\n parts.push(\"`\");\n return concat$d(parts);\n }\n // These types are unprintable because they serve as abstract\n // supertypes for other (printable) types.\n\n case \"TaggedTemplateExpression\":\n return concat$d([path.call(print, \"tag\"), path.call(print, \"typeParameters\"), path.call(print, \"quasi\")]);\n\n case \"Node\":\n case \"Printable\":\n case \"SourceLocation\":\n case \"Position\":\n case \"Statement\":\n case \"Function\":\n case \"Pattern\":\n case \"Expression\":\n case \"Declaration\":\n case \"Specifier\":\n case \"NamedSpecifier\":\n case \"Comment\":\n case \"MemberTypeAnnotation\": // Flow\n\n case \"Type\":\n /* istanbul ignore next */\n throw new Error(\"unprintable type: \" + JSON.stringify(n.type));\n // Type Annotations for Facebook Flow, typically stripped out or\n // transformed away before printing.\n\n case \"TypeAnnotation\":\n case \"TSTypeAnnotation\":\n if (n.typeAnnotation) {\n return path.call(print, \"typeAnnotation\");\n }\n /* istanbul ignore next */\n\n\n return \"\";\n\n case \"TSTupleType\":\n case \"TupleTypeAnnotation\":\n {\n var typesField = n.type === \"TSTupleType\" ? \"elementTypes\" : \"types\";\n return group$b(concat$d([\"[\", indent$7(concat$d([softline$6, printArrayItems(path, options, typesField, print)])), ifBreak$6(shouldPrintComma$1(options, \"all\") ? \",\" : \"\"), comments.printDanglingComments(path, options,\n /* sameIndent */\n true), softline$6, \"]\"]));\n }\n\n case \"ExistsTypeAnnotation\":\n return \"*\";\n\n case \"EmptyTypeAnnotation\":\n return \"empty\";\n\n case \"AnyTypeAnnotation\":\n return \"any\";\n\n case \"MixedTypeAnnotation\":\n return \"mixed\";\n\n case \"ArrayTypeAnnotation\":\n return concat$d([path.call(print, \"elementType\"), \"[]\"]);\n\n case \"BooleanTypeAnnotation\":\n return \"boolean\";\n\n case \"BooleanLiteralTypeAnnotation\":\n return \"\" + n.value;\n\n case \"DeclareClass\":\n return printFlowDeclaration(path, printClass(path, options, print));\n\n case \"TSDeclareFunction\":\n // For TypeScript the TSDeclareFunction node shares the AST\n // structure with FunctionDeclaration\n return concat$d([n.declare ? \"declare \" : \"\", printFunctionDeclaration(path, print, options), semi]);\n\n case \"DeclareFunction\":\n return printFlowDeclaration(path, [\"function \", path.call(print, \"id\"), n.predicate ? \" \" : \"\", path.call(print, \"predicate\"), semi]);\n\n case \"DeclareModule\":\n return printFlowDeclaration(path, [\"module \", path.call(print, \"id\"), \" \", path.call(print, \"body\")]);\n\n case \"DeclareModuleExports\":\n return printFlowDeclaration(path, [\"module.exports\", \": \", path.call(print, \"typeAnnotation\"), semi]);\n\n case \"DeclareVariable\":\n return printFlowDeclaration(path, [\"var \", path.call(print, \"id\"), semi]);\n\n case \"DeclareExportAllDeclaration\":\n return concat$d([\"declare export * from \", path.call(print, \"source\")]);\n\n case \"DeclareExportDeclaration\":\n return concat$d([\"declare \", printExportDeclaration(path, options, print)]);\n\n case \"DeclareOpaqueType\":\n case \"OpaqueType\":\n {\n parts.push(\"opaque type \", path.call(print, \"id\"), path.call(print, \"typeParameters\"));\n\n if (n.supertype) {\n parts.push(\": \", path.call(print, \"supertype\"));\n }\n\n if (n.impltype) {\n parts.push(\" = \", path.call(print, \"impltype\"));\n }\n\n parts.push(semi);\n\n if (n.type === \"DeclareOpaqueType\") {\n return printFlowDeclaration(path, parts);\n }\n\n return concat$d(parts);\n }\n\n case \"EnumDeclaration\":\n return concat$d([\"enum \", path.call(print, \"id\"), \" \", path.call(print, \"body\")]);\n\n case \"EnumBooleanBody\":\n case \"EnumNumberBody\":\n case \"EnumStringBody\":\n case \"EnumSymbolBody\":\n {\n if (n.type === \"EnumSymbolBody\" || n.explicitType) {\n var type = null;\n\n switch (n.type) {\n case \"EnumBooleanBody\":\n type = \"boolean\";\n break;\n\n case \"EnumNumberBody\":\n type = \"number\";\n break;\n\n case \"EnumStringBody\":\n type = \"string\";\n break;\n\n case \"EnumSymbolBody\":\n type = \"symbol\";\n break;\n }\n\n parts.push(\"of \", type, \" \");\n }\n\n if (n.members.length === 0) {\n parts.push(group$b(concat$d([\"{\", comments.printDanglingComments(path, options), softline$6, \"}\"])));\n } else {\n parts.push(group$b(concat$d([\"{\", indent$7(concat$d([hardline$9, printArrayItems(path, options, \"members\", print), shouldPrintComma$1(options) ? \",\" : \"\"])), comments.printDanglingComments(path, options,\n /* sameIndent */\n true), hardline$9, \"}\"])));\n }\n\n return concat$d(parts);\n }\n\n case \"EnumBooleanMember\":\n case \"EnumNumberMember\":\n case \"EnumStringMember\":\n return concat$d([path.call(print, \"id\"), \" = \", _typeof(n.init) === \"object\" ? path.call(print, \"init\") : String(n.init)]);\n\n case \"EnumDefaultedMember\":\n return path.call(print, \"id\");\n\n case \"FunctionTypeAnnotation\":\n case \"TSFunctionType\":\n {\n // FunctionTypeAnnotation is ambiguous:\n // declare function foo(a: B): void; OR\n // var A: (a: B) => void;\n var _parent8 = path.getParentNode(0);\n\n var _parentParent2 = path.getParentNode(1);\n\n var _parentParentParent = path.getParentNode(2);\n\n var isArrowFunctionTypeAnnotation = n.type === \"TSFunctionType\" || !((_parent8.type === \"ObjectTypeProperty\" || _parent8.type === \"ObjectTypeInternalSlot\") && !getFlowVariance$1(_parent8) && !_parent8.optional && options.locStart(_parent8) === options.locStart(n) || _parent8.type === \"ObjectTypeCallProperty\" || _parentParentParent && _parentParentParent.type === \"DeclareFunction\");\n var needsColon = isArrowFunctionTypeAnnotation && (_parent8.type === \"TypeAnnotation\" || _parent8.type === \"TSTypeAnnotation\"); // Sadly we can't put it inside of FastPath::needsColon because we are\n // printing \":\" as part of the expression and it would put parenthesis\n // around :(\n\n var needsParens = needsColon && isArrowFunctionTypeAnnotation && (_parent8.type === \"TypeAnnotation\" || _parent8.type === \"TSTypeAnnotation\") && _parentParent2.type === \"ArrowFunctionExpression\";\n\n if (isObjectTypePropertyAFunction$1(_parent8, options)) {\n isArrowFunctionTypeAnnotation = true;\n needsColon = true;\n }\n\n if (needsParens) {\n parts.push(\"(\");\n }\n\n parts.push(printFunctionParams(path, print, options,\n /* expandArg */\n false,\n /* printTypeParams */\n true)); // The returnType is not wrapped in a TypeAnnotation, so the colon\n // needs to be added separately.\n\n if (n.returnType || n.predicate || n.typeAnnotation) {\n parts.push(isArrowFunctionTypeAnnotation ? \" => \" : \": \", path.call(print, \"returnType\"), path.call(print, \"predicate\"), path.call(print, \"typeAnnotation\"));\n }\n\n if (needsParens) {\n parts.push(\")\");\n }\n\n return group$b(concat$d(parts));\n }\n\n case \"TSRestType\":\n return concat$d([\"...\", path.call(print, \"typeAnnotation\")]);\n\n case \"TSOptionalType\":\n return concat$d([path.call(print, \"typeAnnotation\"), \"?\"]);\n\n case \"FunctionTypeParam\":\n return concat$d([path.call(print, \"name\"), printOptionalToken(path), n.name ? \": \" : \"\", path.call(print, \"typeAnnotation\")]);\n\n case \"GenericTypeAnnotation\":\n return concat$d([path.call(print, \"id\"), path.call(print, \"typeParameters\")]);\n\n case \"DeclareInterface\":\n case \"InterfaceDeclaration\":\n case \"InterfaceTypeAnnotation\":\n {\n if (n.type === \"DeclareInterface\" || n.declare) {\n parts.push(\"declare \");\n }\n\n parts.push(\"interface\");\n\n if (n.type === \"DeclareInterface\" || n.type === \"InterfaceDeclaration\") {\n parts.push(\" \", path.call(print, \"id\"), path.call(print, \"typeParameters\"));\n }\n\n if (n[\"extends\"].length > 0) {\n parts.push(group$b(indent$7(concat$d([line$7, \"extends \", (n.extends.length === 1 ? identity$2 : indent$7)(join$9(concat$d([\",\", line$7]), path.map(print, \"extends\")))]))));\n }\n\n parts.push(\" \", path.call(print, \"body\"));\n return group$b(concat$d(parts));\n }\n\n case \"ClassImplements\":\n case \"InterfaceExtends\":\n return concat$d([path.call(print, \"id\"), path.call(print, \"typeParameters\")]);\n\n case \"TSClassImplements\":\n return concat$d([path.call(print, \"expression\"), path.call(print, \"typeParameters\")]);\n\n case \"TSIntersectionType\":\n case \"IntersectionTypeAnnotation\":\n {\n var types = path.map(print, \"types\");\n var result = [];\n var wasIndented = false;\n\n for (var _i = 0; _i < types.length; ++_i) {\n if (_i === 0) {\n result.push(types[_i]);\n } else if (isObjectType$1(n.types[_i - 1]) && isObjectType$1(n.types[_i])) {\n // If both are objects, don't indent\n result.push(concat$d([\" & \", wasIndented ? indent$7(types[_i]) : types[_i]]));\n } else if (!isObjectType$1(n.types[_i - 1]) && !isObjectType$1(n.types[_i])) {\n // If no object is involved, go to the next line if it breaks\n result.push(indent$7(concat$d([\" &\", line$7, types[_i]])));\n } else {\n // If you go from object to non-object or vis-versa, then inline it\n if (_i > 1) {\n wasIndented = true;\n }\n\n result.push(\" & \", _i > 1 ? indent$7(types[_i]) : types[_i]);\n }\n }\n\n return group$b(concat$d(result));\n }\n\n case \"TSUnionType\":\n case \"UnionTypeAnnotation\":\n {\n // single-line variation\n // A | B | C\n // multi-line variation\n // | A\n // | B\n // | C\n var _parent9 = path.getParentNode(); // If there's a leading comment, the parent is doing the indentation\n\n\n var shouldIndent = _parent9.type !== \"TypeParameterInstantiation\" && _parent9.type !== \"TSTypeParameterInstantiation\" && _parent9.type !== \"GenericTypeAnnotation\" && _parent9.type !== \"TSTypeReference\" && _parent9.type !== \"TSTypeAssertion\" && _parent9.type !== \"TupleTypeAnnotation\" && _parent9.type !== \"TSTupleType\" && !(_parent9.type === \"FunctionTypeParam\" && !_parent9.name) && !((_parent9.type === \"TypeAlias\" || _parent9.type === \"VariableDeclarator\" || _parent9.type === \"TSTypeAliasDeclaration\") && hasLeadingOwnLineComment$1(options.originalText, n, options)); // {\n // a: string\n // } | null | void\n // should be inlined and not be printed in the multi-line variant\n\n var shouldHug = shouldHugType(n); // We want to align the children but without its comment, so it looks like\n // | child1\n // // comment\n // | child2\n\n var _printed4 = path.map(function (typePath) {\n var printedType = typePath.call(print);\n\n if (!shouldHug) {\n printedType = align$1(2, printedType);\n }\n\n return comments.printComments(typePath, function () {\n return printedType;\n }, options);\n }, \"types\");\n\n if (shouldHug) {\n return join$9(\" | \", _printed4);\n }\n\n var shouldAddStartLine = shouldIndent && !hasLeadingOwnLineComment$1(options.originalText, n, options);\n var code = concat$d([ifBreak$6(concat$d([shouldAddStartLine ? line$7 : \"\", \"| \"])), join$9(concat$d([line$7, \"| \"]), _printed4)]);\n\n if (needsParens_1(path, options)) {\n return group$b(concat$d([indent$7(code), softline$6]));\n }\n\n if (_parent9.type === \"TupleTypeAnnotation\" && _parent9.types.length > 1 || _parent9.type === \"TSTupleType\" && _parent9.elementTypes.length > 1) {\n return group$b(concat$d([indent$7(concat$d([ifBreak$6(concat$d([\"(\", softline$6])), code])), softline$6, ifBreak$6(\")\")]));\n }\n\n return group$b(shouldIndent ? indent$7(code) : code);\n }\n\n case \"NullableTypeAnnotation\":\n return concat$d([\"?\", path.call(print, \"typeAnnotation\")]);\n\n case \"TSNullKeyword\":\n case \"NullLiteralTypeAnnotation\":\n return \"null\";\n\n case \"ThisTypeAnnotation\":\n return \"this\";\n\n case \"NumberTypeAnnotation\":\n return \"number\";\n\n case \"ObjectTypeCallProperty\":\n if (n.static) {\n parts.push(\"static \");\n }\n\n parts.push(path.call(print, \"value\"));\n return concat$d(parts);\n\n case \"ObjectTypeIndexer\":\n {\n var _variance = getFlowVariance$1(n);\n\n return concat$d([_variance || \"\", \"[\", path.call(print, \"id\"), n.id ? \": \" : \"\", path.call(print, \"key\"), \"]: \", path.call(print, \"value\")]);\n }\n\n case \"ObjectTypeProperty\":\n {\n var _variance2 = getFlowVariance$1(n);\n\n var modifier = \"\";\n\n if (n.proto) {\n modifier = \"proto \";\n } else if (n.static) {\n modifier = \"static \";\n }\n\n return concat$d([modifier, isGetterOrSetter$1(n) ? n.kind + \" \" : \"\", _variance2 || \"\", printPropertyKey(path, options, print), printOptionalToken(path), isFunctionNotation$1(n, options) ? \"\" : \": \", path.call(print, \"value\")]);\n }\n\n case \"QualifiedTypeIdentifier\":\n return concat$d([path.call(print, \"qualification\"), \".\", path.call(print, \"id\")]);\n\n case \"StringLiteralTypeAnnotation\":\n return nodeStr(n, options);\n\n case \"NumberLiteralTypeAnnotation\":\n assert.strictEqual(_typeof(n.value), \"number\");\n\n if (n.extra != null) {\n return printNumber$2(n.extra.raw);\n }\n\n return printNumber$2(n.raw);\n\n case \"StringTypeAnnotation\":\n return \"string\";\n\n case \"DeclareTypeAlias\":\n case \"TypeAlias\":\n {\n if (n.type === \"DeclareTypeAlias\" || n.declare) {\n parts.push(\"declare \");\n }\n\n var _printed5 = printAssignmentRight(n.id, n.right, path.call(print, \"right\"), options);\n\n parts.push(\"type \", path.call(print, \"id\"), path.call(print, \"typeParameters\"), \" =\", _printed5, semi);\n return group$b(concat$d(parts));\n }\n\n case \"TypeCastExpression\":\n {\n var value = path.getValue(); // Flow supports a comment syntax for specifying type annotations: https://flow.org/en/docs/types/comments/.\n // Unfortunately, its parser doesn't differentiate between comment annotations and regular\n // annotations when producing an AST. So to preserve parentheses around type casts that use\n // the comment syntax, we need to hackily read the source itself to see if the code contains\n // a type annotation comment.\n //\n // Note that we're able to use the normal whitespace regex here because the Flow parser has\n // already deemed this AST node to be a type cast. Only the Babel parser needs the\n // non-line-break whitespace regex, which is why hasFlowShorthandAnnotationComment() is\n // implemented differently.\n\n var commentSyntax = value && value.typeAnnotation && value.typeAnnotation.range && options.originalText.substring(value.typeAnnotation.range[0]).match(/^\\/\\*\\s*:/);\n return concat$d([\"(\", path.call(print, \"expression\"), commentSyntax ? \" /*\" : \"\", \": \", path.call(print, \"typeAnnotation\"), commentSyntax ? \" */\" : \"\", \")\"]);\n }\n\n case \"TypeParameterDeclaration\":\n case \"TypeParameterInstantiation\":\n {\n var _value = path.getValue();\n\n var commentStart = _value.range ? options.originalText.substring(0, _value.range[0]).lastIndexOf(\"/*\") : -1; // As noted in the TypeCastExpression comments above, we're able to use a normal whitespace regex here\n // because we know for sure that this is a type definition.\n\n var _commentSyntax = commentStart >= 0 && options.originalText.substring(commentStart).match(/^\\/\\*\\s*::/);\n\n if (_commentSyntax) {\n return concat$d([\"/*:: \", printTypeParameters(path, options, print, \"params\"), \" */\"]);\n }\n\n return printTypeParameters(path, options, print, \"params\");\n }\n\n case \"TSTypeParameterDeclaration\":\n case \"TSTypeParameterInstantiation\":\n return printTypeParameters(path, options, print, \"params\");\n\n case \"TSTypeParameter\":\n case \"TypeParameter\":\n {\n var _parent10 = path.getParentNode();\n\n if (_parent10.type === \"TSMappedType\") {\n parts.push(\"[\", path.call(print, \"name\"));\n\n if (n.constraint) {\n parts.push(\" in \", path.call(print, \"constraint\"));\n }\n\n parts.push(\"]\");\n return concat$d(parts);\n }\n\n var _variance3 = getFlowVariance$1(n);\n\n if (_variance3) {\n parts.push(_variance3);\n }\n\n parts.push(path.call(print, \"name\"));\n\n if (n.bound) {\n parts.push(\": \");\n parts.push(path.call(print, \"bound\"));\n }\n\n if (n.constraint) {\n parts.push(\" extends \", path.call(print, \"constraint\"));\n }\n\n if (n[\"default\"]) {\n parts.push(\" = \", path.call(print, \"default\"));\n } // Keep comma if the file extension is .tsx and\n // has one type parameter that isn't extend with any types.\n // Because, otherwise formatted result will be invalid as tsx.\n\n\n var _grandParent = path.getNode(2);\n\n if (_parent10.params && _parent10.params.length === 1 && isTSXFile$1(options) && !n.constraint && _grandParent.type === \"ArrowFunctionExpression\") {\n parts.push(\",\");\n }\n\n return concat$d(parts);\n }\n\n case \"TypeofTypeAnnotation\":\n return concat$d([\"typeof \", path.call(print, \"argument\")]);\n\n case \"VoidTypeAnnotation\":\n return \"void\";\n\n case \"InferredPredicate\":\n return \"%checks\";\n // Unhandled types below. If encountered, nodes of these types should\n // be either left alone or desugared into AST types that are fully\n // supported by the pretty-printer.\n\n case \"DeclaredPredicate\":\n return concat$d([\"%checks(\", path.call(print, \"value\"), \")\"]);\n\n case \"TSAbstractKeyword\":\n return \"abstract\";\n\n case \"TSAnyKeyword\":\n return \"any\";\n\n case \"TSAsyncKeyword\":\n return \"async\";\n\n case \"TSBooleanKeyword\":\n return \"boolean\";\n\n case \"TSBigIntKeyword\":\n return \"bigint\";\n\n case \"TSConstKeyword\":\n return \"const\";\n\n case \"TSDeclareKeyword\":\n return \"declare\";\n\n case \"TSExportKeyword\":\n return \"export\";\n\n case \"TSNeverKeyword\":\n return \"never\";\n\n case \"TSNumberKeyword\":\n return \"number\";\n\n case \"TSObjectKeyword\":\n return \"object\";\n\n case \"TSProtectedKeyword\":\n return \"protected\";\n\n case \"TSPrivateKeyword\":\n return \"private\";\n\n case \"TSPublicKeyword\":\n return \"public\";\n\n case \"TSReadonlyKeyword\":\n return \"readonly\";\n\n case \"TSSymbolKeyword\":\n return \"symbol\";\n\n case \"TSStaticKeyword\":\n return \"static\";\n\n case \"TSStringKeyword\":\n return \"string\";\n\n case \"TSUndefinedKeyword\":\n return \"undefined\";\n\n case \"TSUnknownKeyword\":\n return \"unknown\";\n\n case \"TSVoidKeyword\":\n return \"void\";\n\n case \"TSAsExpression\":\n return concat$d([path.call(print, \"expression\"), \" as \", path.call(print, \"typeAnnotation\")]);\n\n case \"TSArrayType\":\n return concat$d([path.call(print, \"elementType\"), \"[]\"]);\n\n case \"TSPropertySignature\":\n {\n if (n.export) {\n parts.push(\"export \");\n }\n\n if (n.accessibility) {\n parts.push(n.accessibility + \" \");\n }\n\n if (n.static) {\n parts.push(\"static \");\n }\n\n if (n.readonly) {\n parts.push(\"readonly \");\n }\n\n parts.push(printPropertyKey(path, options, print), printOptionalToken(path));\n\n if (n.typeAnnotation) {\n parts.push(\": \");\n parts.push(path.call(print, \"typeAnnotation\"));\n } // This isn't valid semantically, but it's in the AST so we can print it.\n\n\n if (n.initializer) {\n parts.push(\" = \", path.call(print, \"initializer\"));\n }\n\n return concat$d(parts);\n }\n\n case \"TSParameterProperty\":\n if (n.accessibility) {\n parts.push(n.accessibility + \" \");\n }\n\n if (n.export) {\n parts.push(\"export \");\n }\n\n if (n.static) {\n parts.push(\"static \");\n }\n\n if (n.readonly) {\n parts.push(\"readonly \");\n }\n\n parts.push(path.call(print, \"parameter\"));\n return concat$d(parts);\n\n case \"TSTypeReference\":\n return concat$d([path.call(print, \"typeName\"), printTypeParameters(path, options, print, \"typeParameters\")]);\n\n case \"TSTypeQuery\":\n return concat$d([\"typeof \", path.call(print, \"exprName\")]);\n\n case \"TSIndexSignature\":\n {\n var _parent11 = path.getParentNode();\n\n return concat$d([n.export ? \"export \" : \"\", n.accessibility ? concat$d([n.accessibility, \" \"]) : \"\", n.static ? \"static \" : \"\", n.readonly ? \"readonly \" : \"\", \"[\", n.parameters ? concat$d(path.map(print, \"parameters\")) : \"\", \"]: \", path.call(print, \"typeAnnotation\"), _parent11.type === \"ClassBody\" ? semi : \"\"]);\n }\n\n case \"TSTypePredicate\":\n return concat$d([n.asserts ? \"asserts \" : \"\", path.call(print, \"parameterName\"), n.typeAnnotation ? concat$d([\" is \", path.call(print, \"typeAnnotation\")]) : \"\"]);\n\n case \"TSNonNullExpression\":\n return concat$d([path.call(print, \"expression\"), \"!\"]);\n\n case \"TSThisType\":\n return \"this\";\n\n case \"TSImportType\":\n return concat$d([!n.isTypeOf ? \"\" : \"typeof \", \"import(\", path.call(print, \"parameter\"), \")\", !n.qualifier ? \"\" : concat$d([\".\", path.call(print, \"qualifier\")]), printTypeParameters(path, options, print, \"typeParameters\")]);\n\n case \"TSLiteralType\":\n return path.call(print, \"literal\");\n\n case \"TSIndexedAccessType\":\n return concat$d([path.call(print, \"objectType\"), \"[\", path.call(print, \"indexType\"), \"]\"]);\n\n case \"TSConstructSignatureDeclaration\":\n case \"TSCallSignatureDeclaration\":\n case \"TSConstructorType\":\n {\n if (n.type !== \"TSCallSignatureDeclaration\") {\n parts.push(\"new \");\n }\n\n parts.push(group$b(printFunctionParams(path, print, options,\n /* expandArg */\n false,\n /* printTypeParams */\n true)));\n\n if (n.returnType) {\n var isType = n.type === \"TSConstructorType\";\n parts.push(isType ? \" => \" : \": \", path.call(print, \"returnType\"));\n }\n\n return concat$d(parts);\n }\n\n case \"TSTypeOperator\":\n return concat$d([n.operator, \" \", path.call(print, \"typeAnnotation\")]);\n\n case \"TSMappedType\":\n {\n var _shouldBreak3 = hasNewlineInRange$2(options.originalText, options.locStart(n), options.locEnd(n));\n\n return group$b(concat$d([\"{\", indent$7(concat$d([options.bracketSpacing ? line$7 : softline$6, n.readonly ? concat$d([getTypeScriptMappedTypeModifier$1(n.readonly, \"readonly\"), \" \"]) : \"\", printTypeScriptModifiers(path, options, print), path.call(print, \"typeParameter\"), n.optional ? getTypeScriptMappedTypeModifier$1(n.optional, \"?\") : \"\", \": \", path.call(print, \"typeAnnotation\"), ifBreak$6(semi, \"\")])), comments.printDanglingComments(path, options,\n /* sameIndent */\n true), options.bracketSpacing ? line$7 : softline$6, \"}\"]), {\n shouldBreak: _shouldBreak3\n });\n }\n\n case \"TSMethodSignature\":\n parts.push(n.accessibility ? concat$d([n.accessibility, \" \"]) : \"\", n.export ? \"export \" : \"\", n.static ? \"static \" : \"\", n.readonly ? \"readonly \" : \"\", n.computed ? \"[\" : \"\", path.call(print, \"key\"), n.computed ? \"]\" : \"\", printOptionalToken(path), printFunctionParams(path, print, options,\n /* expandArg */\n false,\n /* printTypeParams */\n true));\n\n if (n.returnType) {\n parts.push(\": \", path.call(print, \"returnType\"));\n }\n\n return group$b(concat$d(parts));\n\n case \"TSNamespaceExportDeclaration\":\n parts.push(\"export as namespace \", path.call(print, \"id\"));\n\n if (options.semi) {\n parts.push(\";\");\n }\n\n return group$b(concat$d(parts));\n\n case \"TSEnumDeclaration\":\n if (n.declare) {\n parts.push(\"declare \");\n }\n\n if (n.modifiers) {\n parts.push(printTypeScriptModifiers(path, options, print));\n }\n\n if (n.const) {\n parts.push(\"const \");\n }\n\n parts.push(\"enum \", path.call(print, \"id\"), \" \");\n\n if (n.members.length === 0) {\n parts.push(group$b(concat$d([\"{\", comments.printDanglingComments(path, options), softline$6, \"}\"])));\n } else {\n parts.push(group$b(concat$d([\"{\", indent$7(concat$d([hardline$9, printArrayItems(path, options, \"members\", print), shouldPrintComma$1(options, \"es5\") ? \",\" : \"\"])), comments.printDanglingComments(path, options,\n /* sameIndent */\n true), hardline$9, \"}\"])));\n }\n\n return concat$d(parts);\n\n case \"TSEnumMember\":\n parts.push(path.call(print, \"id\"));\n\n if (n.initializer) {\n parts.push(\" = \", path.call(print, \"initializer\"));\n }\n\n return concat$d(parts);\n\n case \"TSImportEqualsDeclaration\":\n if (n.isExport) {\n parts.push(\"export \");\n }\n\n parts.push(\"import \", path.call(print, \"id\"), \" = \", path.call(print, \"moduleReference\"));\n\n if (options.semi) {\n parts.push(\";\");\n }\n\n return group$b(concat$d(parts));\n\n case \"TSExternalModuleReference\":\n return concat$d([\"require(\", path.call(print, \"expression\"), \")\"]);\n\n case \"TSModuleDeclaration\":\n {\n var _parent12 = path.getParentNode();\n\n var isExternalModule = isLiteral$1(n.id);\n var parentIsDeclaration = _parent12.type === \"TSModuleDeclaration\";\n var bodyIsDeclaration = n.body && n.body.type === \"TSModuleDeclaration\";\n\n if (parentIsDeclaration) {\n parts.push(\".\");\n } else {\n if (n.declare) {\n parts.push(\"declare \");\n }\n\n parts.push(printTypeScriptModifiers(path, options, print));\n var textBetweenNodeAndItsId = options.originalText.slice(options.locStart(n), options.locStart(n.id)); // Global declaration looks like this:\n // (declare)? global { ... }\n\n var isGlobalDeclaration = n.id.type === \"Identifier\" && n.id.name === \"global\" && !/namespace|module/.test(textBetweenNodeAndItsId);\n\n if (!isGlobalDeclaration) {\n parts.push(isExternalModule || /(^|\\s)module(\\s|$)/.test(textBetweenNodeAndItsId) ? \"module \" : \"namespace \");\n }\n }\n\n parts.push(path.call(print, \"id\"));\n\n if (bodyIsDeclaration) {\n parts.push(path.call(print, \"body\"));\n } else if (n.body) {\n parts.push(\" \", group$b(path.call(print, \"body\")));\n } else {\n parts.push(semi);\n }\n\n return concat$d(parts);\n }\n\n case \"PrivateName\":\n return concat$d([\"#\", path.call(print, \"id\")]);\n\n case \"TSConditionalType\":\n return printTernaryOperator(path, options, print, {\n beforeParts: function beforeParts() {\n return [path.call(print, \"checkType\"), \" \", \"extends\", \" \", path.call(print, \"extendsType\")];\n },\n afterParts: function afterParts() {\n return [];\n },\n shouldCheckJsx: false,\n conditionalNodeType: \"TSConditionalType\",\n consequentNodePropertyName: \"trueType\",\n alternateNodePropertyName: \"falseType\",\n testNodePropertyName: \"checkType\",\n breakNested: true\n });\n\n case \"TSInferType\":\n return concat$d([\"infer\", \" \", path.call(print, \"typeParameter\")]);\n\n case \"InterpreterDirective\":\n parts.push(\"#!\", n.value, hardline$9);\n\n if (isNextLineEmpty$4(options.originalText, n, options)) {\n parts.push(hardline$9);\n }\n\n return concat$d(parts);\n\n case \"NGRoot\":\n return concat$d([].concat(path.call(print, \"node\"), !n.node.comments || n.node.comments.length === 0 ? [] : concat$d([\" //\", n.node.comments[0].value.trimRight()])));\n\n case \"NGChainedExpression\":\n return group$b(join$9(concat$d([\";\", line$7]), path.map(function (childPath) {\n return hasNgSideEffect$1(childPath) ? print(childPath) : concat$d([\"(\", print(childPath), \")\"]);\n }, \"expressions\")));\n\n case \"NGEmptyExpression\":\n return \"\";\n\n case \"NGQuotedExpression\":\n return concat$d([n.prefix, \":\", n.value]);\n\n case \"NGMicrosyntax\":\n return concat$d(path.map(function (childPath, index) {\n return concat$d([index === 0 ? \"\" : isNgForOf$1(childPath.getValue(), index, n) ? \" \" : concat$d([\";\", line$7]), print(childPath)]);\n }, \"body\"));\n\n case \"NGMicrosyntaxKey\":\n return /^[a-z_$][a-z0-9_$]*(-[a-z_$][a-z0-9_$])*$/i.test(n.name) ? n.name : JSON.stringify(n.name);\n\n case \"NGMicrosyntaxExpression\":\n return concat$d([path.call(print, \"expression\"), n.alias === null ? \"\" : concat$d([\" as \", path.call(print, \"alias\")])]);\n\n case \"NGMicrosyntaxKeyedExpression\":\n {\n var index = path.getName();\n\n var _parentNode2 = path.getParentNode();\n\n var shouldNotPrintColon = isNgForOf$1(n, index, _parentNode2) || (index === 1 && (n.key.name === \"then\" || n.key.name === \"else\") || index === 2 && n.key.name === \"else\" && _parentNode2.body[index - 1].type === \"NGMicrosyntaxKeyedExpression\" && _parentNode2.body[index - 1].key.name === \"then\") && _parentNode2.body[0].type === \"NGMicrosyntaxExpression\";\n return concat$d([path.call(print, \"key\"), shouldNotPrintColon ? \" \" : \": \", path.call(print, \"expression\")]);\n }\n\n case \"NGMicrosyntaxLet\":\n return concat$d([\"let \", path.call(print, \"key\"), n.value === null ? \"\" : concat$d([\" = \", path.call(print, \"value\")])]);\n\n case \"NGMicrosyntaxAs\":\n return concat$d([path.call(print, \"key\"), \" as \", path.call(print, \"alias\")]);\n\n case \"ArgumentPlaceholder\":\n return \"?\";\n\n default:\n /* istanbul ignore next */\n throw new Error(\"unknown type: \" + JSON.stringify(n.type));\n }\n }\n\n function printStatementSequence(path, options, print) {\n var printed = [];\n var bodyNode = path.getNode();\n var isClass = bodyNode.type === \"ClassBody\";\n path.map(function (stmtPath, i) {\n var stmt = stmtPath.getValue(); // Just in case the AST has been modified to contain falsy\n // \"statements,\" it's safer simply to skip them.\n\n /* istanbul ignore if */\n\n if (!stmt) {\n return;\n } // Skip printing EmptyStatement nodes to avoid leaving stray\n // semicolons lying around.\n\n\n if (stmt.type === \"EmptyStatement\") {\n return;\n }\n\n var stmtPrinted = print(stmtPath);\n var text = options.originalText;\n var parts = []; // in no-semi mode, prepend statement with semicolon if it might break ASI\n // don't prepend the only JSX element in a program with semicolon\n\n if (!options.semi && !isClass && !isTheOnlyJSXElementInMarkdown$1(options, stmtPath) && stmtNeedsASIProtection(stmtPath, options)) {\n if (stmt.comments && stmt.comments.some(function (comment) {\n return comment.leading;\n })) {\n parts.push(print(stmtPath, {\n needsSemi: true\n }));\n } else {\n parts.push(\";\", stmtPrinted);\n }\n } else {\n parts.push(stmtPrinted);\n }\n\n if (!options.semi && isClass) {\n if (classPropMayCauseASIProblems$1(stmtPath)) {\n parts.push(\";\");\n } else if (stmt.type === \"ClassProperty\") {\n var nextChild = bodyNode.body[i + 1];\n\n if (classChildNeedsASIProtection$1(nextChild)) {\n parts.push(\";\");\n }\n }\n }\n\n if (isNextLineEmpty$4(text, stmt, options) && !isLastStatement$1(stmtPath)) {\n parts.push(hardline$9);\n }\n\n printed.push(concat$d(parts));\n });\n return join$9(hardline$9, printed);\n }\n\n function printPropertyKey(path, options, print) {\n var node = path.getNode();\n\n if (node.computed) {\n return concat$d([\"[\", path.call(print, \"key\"), \"]\"]);\n }\n\n var parent = path.getParentNode();\n var key = node.key;\n\n if (options.quoteProps === \"consistent\" && !needsQuoteProps.has(parent)) {\n var objectHasStringProp = (parent.properties || parent.body || parent.members).some(function (prop) {\n return !prop.computed && prop.key && isStringLiteral$1(prop.key) && !isStringPropSafeToCoerceToIdentifier$1(prop, options);\n });\n needsQuoteProps.set(parent, objectHasStringProp);\n }\n\n if (key.type === \"Identifier\" && (options.parser === \"json\" || options.quoteProps === \"consistent\" && needsQuoteProps.get(parent))) {\n // a -> \"a\"\n var prop = printString$2(JSON.stringify(key.name), options);\n return path.call(function (keyPath) {\n return comments.printComments(keyPath, function () {\n return prop;\n }, options);\n }, \"key\");\n }\n\n if (isStringPropSafeToCoerceToIdentifier$1(node, options) && (options.quoteProps === \"as-needed\" || options.quoteProps === \"consistent\" && !needsQuoteProps.get(parent))) {\n // 'a' -> a\n return path.call(function (keyPath) {\n return comments.printComments(keyPath, function () {\n return key.value;\n }, options);\n }, \"key\");\n }\n\n return path.call(print, \"key\");\n }\n\n function printMethod(path, options, print) {\n var node = path.getNode();\n var kind = node.kind;\n var value = node.value || node;\n var parts = [];\n\n if (!kind || kind === \"init\" || kind === \"method\" || kind === \"constructor\") {\n if (value.async) {\n parts.push(\"async \");\n }\n\n if (value.generator) {\n parts.push(\"*\");\n }\n } else {\n assert.ok(kind === \"get\" || kind === \"set\");\n parts.push(kind, \" \");\n }\n\n parts.push(printPropertyKey(path, options, print), node.optional || node.key.optional ? \"?\" : \"\", node === value ? printMethodInternal(path, options, print) : path.call(function (path) {\n return printMethodInternal(path, options, print);\n }, \"value\"));\n return concat$d(parts);\n }\n\n function printMethodInternal(path, options, print) {\n var parts = [printFunctionTypeParameters(path, options, print), group$b(concat$d([printFunctionParams(path, print, options), printReturnType(path, print, options)]))];\n\n if (path.getNode().body) {\n parts.push(\" \", path.call(print, \"body\"));\n } else {\n parts.push(options.semi ? \";\" : \"\");\n }\n\n return concat$d(parts);\n }\n\n function couldGroupArg(arg) {\n return arg.type === \"ObjectExpression\" && (arg.properties.length > 0 || arg.comments) || arg.type === \"ArrayExpression\" && (arg.elements.length > 0 || arg.comments) || arg.type === \"TSTypeAssertion\" && couldGroupArg(arg.expression) || arg.type === \"TSAsExpression\" && couldGroupArg(arg.expression) || arg.type === \"FunctionExpression\" || arg.type === \"ArrowFunctionExpression\" && ( // we want to avoid breaking inside composite return types but not simple keywords\n // https://github.com/prettier/prettier/issues/4070\n // export class Thing implements OtherThing {\n // do: (type: Type) => Provider = memoize(\n // (type: ObjectType): Provider => {}\n // );\n // }\n // https://github.com/prettier/prettier/issues/6099\n // app.get(\"/\", (req, res): void => {\n // res.send(\"Hello World!\");\n // });\n !arg.returnType || !arg.returnType.typeAnnotation || arg.returnType.typeAnnotation.type !== \"TSTypeReference\") && (arg.body.type === \"BlockStatement\" || arg.body.type === \"ArrowFunctionExpression\" || arg.body.type === \"ObjectExpression\" || arg.body.type === \"ArrayExpression\" || arg.body.type === \"CallExpression\" || arg.body.type === \"OptionalCallExpression\" || arg.body.type === \"ConditionalExpression\" || isJSXNode$1(arg.body));\n }\n\n function shouldGroupLastArg(args) {\n var lastArg = getLast$2(args);\n var penultimateArg = getPenultimate$1(args);\n return !hasLeadingComment$3(lastArg) && !hasTrailingComment$1(lastArg) && couldGroupArg(lastArg) && ( // If the last two arguments are of the same type,\n // disable last element expansion.\n !penultimateArg || penultimateArg.type !== lastArg.type);\n }\n\n function shouldGroupFirstArg(args) {\n if (args.length !== 2) {\n return false;\n }\n\n var firstArg = args[0];\n var secondArg = args[1];\n return (!firstArg.comments || !firstArg.comments.length) && (firstArg.type === \"FunctionExpression\" || firstArg.type === \"ArrowFunctionExpression\" && firstArg.body.type === \"BlockStatement\") && secondArg.type !== \"FunctionExpression\" && secondArg.type !== \"ArrowFunctionExpression\" && secondArg.type !== \"ConditionalExpression\" && !couldGroupArg(secondArg);\n }\n\n function printJestEachTemplateLiteral(node, expressions, options) {\n /**\n * a | b | expected\n * ${1} | ${1} | ${2}\n * ${1} | ${2} | ${3}\n * ${2} | ${1} | ${3}\n */\n var headerNames = node.quasis[0].value.raw.trim().split(/\\s*\\|\\s*/);\n\n if (headerNames.length > 1 || headerNames.some(function (headerName) {\n return headerName.length !== 0;\n })) {\n var parts = [];\n var stringifiedExpressions = expressions.map(function (doc) {\n return \"${\" + printDocToString$1(doc, Object.assign({}, options, {\n printWidth: Infinity,\n endOfLine: \"lf\"\n })).formatted + \"}\";\n });\n var tableBody = [{\n hasLineBreak: false,\n cells: []\n }];\n\n for (var i = 1; i < node.quasis.length; i++) {\n var row = tableBody[tableBody.length - 1];\n var correspondingExpression = stringifiedExpressions[i - 1];\n row.cells.push(correspondingExpression);\n\n if (correspondingExpression.indexOf(\"\\n\") !== -1) {\n row.hasLineBreak = true;\n }\n\n if (node.quasis[i].value.raw.indexOf(\"\\n\") !== -1) {\n tableBody.push({\n hasLineBreak: false,\n cells: []\n });\n }\n }\n\n var maxColumnCount = tableBody.reduce(function (maxColumnCount, row) {\n return Math.max(maxColumnCount, row.cells.length);\n }, headerNames.length);\n var maxColumnWidths = Array.from(new Array(maxColumnCount), function () {\n return 0;\n });\n var table = [{\n cells: headerNames\n }].concat(tableBody.filter(function (row) {\n return row.cells.length !== 0;\n }));\n table.filter(function (row) {\n return !row.hasLineBreak;\n }).forEach(function (row) {\n row.cells.forEach(function (cell, index) {\n maxColumnWidths[index] = Math.max(maxColumnWidths[index], getStringWidth$2(cell));\n });\n });\n parts.push(lineSuffixBoundary$1, \"`\", indent$7(concat$d([hardline$9, join$9(hardline$9, table.map(function (row) {\n return join$9(\" | \", row.cells.map(function (cell, index) {\n return row.hasLineBreak ? cell : cell + \" \".repeat(maxColumnWidths[index] - getStringWidth$2(cell));\n }));\n }))])), hardline$9, \"`\");\n return concat$d(parts);\n }\n }\n\n function printArgumentsList(path, options, print) {\n var node = path.getValue();\n var args = node.arguments;\n\n if (args.length === 0) {\n return concat$d([\"(\", comments.printDanglingComments(path, options,\n /* sameIndent */\n true), \")\"]);\n } // useEffect(() => { ... }, [foo, bar, baz])\n\n\n if (args.length === 2 && args[0].type === \"ArrowFunctionExpression\" && args[0].params.length === 0 && args[0].body.type === \"BlockStatement\" && args[1].type === \"ArrayExpression\" && !args.find(function (arg) {\n return arg.comments;\n })) {\n return concat$d([\"(\", path.call(print, \"arguments\", 0), \", \", path.call(print, \"arguments\", 1), \")\"]);\n } // func(\n // ({\n // a,\n // b\n // }) => {}\n // );\n\n\n function shouldBreakForArrowFunctionInArguments(arg, argPath) {\n if (!arg || arg.type !== \"ArrowFunctionExpression\" || !arg.body || arg.body.type !== \"BlockStatement\" || !arg.params || arg.params.length < 1) {\n return false;\n }\n\n var shouldBreak = false;\n argPath.each(function (paramPath) {\n var printed = concat$d([print(paramPath)]);\n shouldBreak = shouldBreak || willBreak$1(printed);\n }, \"params\");\n return shouldBreak;\n }\n\n var anyArgEmptyLine = false;\n var shouldBreakForArrowFunction = false;\n var hasEmptyLineFollowingFirstArg = false;\n var lastArgIndex = args.length - 1;\n var printedArguments = path.map(function (argPath, index) {\n var arg = argPath.getNode();\n var parts = [print(argPath)];\n if (index === lastArgIndex) ;else if (isNextLineEmpty$4(options.originalText, arg, options)) {\n if (index === 0) {\n hasEmptyLineFollowingFirstArg = true;\n }\n\n anyArgEmptyLine = true;\n parts.push(\",\", hardline$9, hardline$9);\n } else {\n parts.push(\",\", line$7);\n }\n shouldBreakForArrowFunction = shouldBreakForArrowFunctionInArguments(arg, argPath);\n return concat$d(parts);\n }, \"arguments\");\n var maybeTrailingComma = // Dynamic imports cannot have trailing commas\n !(node.callee && node.callee.type === \"Import\") && shouldPrintComma$1(options, \"all\") ? \",\" : \"\";\n\n function allArgsBrokenOut() {\n return group$b(concat$d([\"(\", indent$7(concat$d([line$7, concat$d(printedArguments)])), maybeTrailingComma, line$7, \")\"]), {\n shouldBreak: true\n });\n }\n\n if (isFunctionCompositionArgs$1(args)) {\n return allArgsBrokenOut();\n }\n\n var shouldGroupFirst = shouldGroupFirstArg(args);\n var shouldGroupLast = shouldGroupLastArg(args);\n\n if (shouldGroupFirst || shouldGroupLast) {\n var shouldBreak = (shouldGroupFirst ? printedArguments.slice(1).some(willBreak$1) : printedArguments.slice(0, -1).some(willBreak$1)) || anyArgEmptyLine || shouldBreakForArrowFunction; // We want to print the last argument with a special flag\n\n var printedExpanded;\n var i = 0;\n path.each(function (argPath) {\n if (shouldGroupFirst && i === 0) {\n printedExpanded = [concat$d([argPath.call(function (p) {\n return print(p, {\n expandFirstArg: true\n });\n }), printedArguments.length > 1 ? \",\" : \"\", hasEmptyLineFollowingFirstArg ? hardline$9 : line$7, hasEmptyLineFollowingFirstArg ? hardline$9 : \"\"])].concat(printedArguments.slice(1));\n }\n\n if (shouldGroupLast && i === args.length - 1) {\n printedExpanded = printedArguments.slice(0, -1).concat(argPath.call(function (p) {\n return print(p, {\n expandLastArg: true\n });\n }));\n }\n\n i++;\n }, \"arguments\");\n var somePrintedArgumentsWillBreak = printedArguments.some(willBreak$1);\n var simpleConcat = concat$d([\"(\", concat$d(printedExpanded), \")\"]);\n return concat$d([somePrintedArgumentsWillBreak ? breakParent$3 : \"\", conditionalGroup$1([!somePrintedArgumentsWillBreak && !node.typeArguments && !node.typeParameters ? simpleConcat : ifBreak$6(allArgsBrokenOut(), simpleConcat), shouldGroupFirst ? concat$d([\"(\", group$b(printedExpanded[0], {\n shouldBreak: true\n }), concat$d(printedExpanded.slice(1)), \")\"]) : concat$d([\"(\", concat$d(printedArguments.slice(0, -1)), group$b(getLast$2(printedExpanded), {\n shouldBreak: true\n }), \")\"]), allArgsBrokenOut()], {\n shouldBreak: shouldBreak\n })]);\n }\n\n var contents = concat$d([\"(\", indent$7(concat$d([softline$6, concat$d(printedArguments)])), ifBreak$6(maybeTrailingComma), softline$6, \")\"]);\n\n if (isLongCurriedCallExpression$1(path)) {\n // By not wrapping the arguments in a group, the printer prioritizes\n // breaking up these arguments rather than the args of the parent call.\n return contents;\n }\n\n return group$b(contents, {\n shouldBreak: printedArguments.some(willBreak$1) || anyArgEmptyLine\n });\n }\n\n function printTypeAnnotation(path, options, print) {\n var node = path.getValue();\n\n if (!node.typeAnnotation) {\n return \"\";\n }\n\n var parentNode = path.getParentNode();\n var isDefinite = node.definite || parentNode && parentNode.type === \"VariableDeclarator\" && parentNode.definite;\n var isFunctionDeclarationIdentifier = parentNode.type === \"DeclareFunction\" && parentNode.id === node;\n\n if (isFlowAnnotationComment$1(options.originalText, node.typeAnnotation, options)) {\n return concat$d([\" /*: \", path.call(print, \"typeAnnotation\"), \" */\"]);\n }\n\n return concat$d([isFunctionDeclarationIdentifier ? \"\" : isDefinite ? \"!: \" : \": \", path.call(print, \"typeAnnotation\")]);\n }\n\n function printFunctionTypeParameters(path, options, print) {\n var fun = path.getValue();\n\n if (fun.typeArguments) {\n return path.call(print, \"typeArguments\");\n }\n\n if (fun.typeParameters) {\n return path.call(print, \"typeParameters\");\n }\n\n return \"\";\n }\n\n function printFunctionParams(path, print, options, expandArg, printTypeParams) {\n var fun = path.getValue();\n var parent = path.getParentNode();\n var paramsField = fun.parameters ? \"parameters\" : \"params\";\n var isParametersInTestCall = isTestCall$1(parent);\n var shouldHugParameters = shouldHugArguments(fun);\n var shouldExpandParameters = expandArg && !(fun[paramsField] && fun[paramsField].some(function (n) {\n return n.comments;\n }));\n var typeParams = printTypeParams ? printFunctionTypeParameters(path, options, print) : \"\";\n var printed = [];\n\n if (fun[paramsField]) {\n var lastArgIndex = fun[paramsField].length - 1;\n printed = path.map(function (childPath, index) {\n var parts = [];\n var param = childPath.getValue();\n parts.push(print(childPath));\n\n if (index === lastArgIndex) {\n if (fun.rest) {\n parts.push(\",\", line$7);\n }\n } else if (isParametersInTestCall || shouldHugParameters || shouldExpandParameters) {\n parts.push(\", \");\n } else if (isNextLineEmpty$4(options.originalText, param, options)) {\n parts.push(\",\", hardline$9, hardline$9);\n } else {\n parts.push(\",\", line$7);\n }\n\n return concat$d(parts);\n }, paramsField);\n }\n\n if (fun.rest) {\n printed.push(concat$d([\"...\", path.call(print, \"rest\")]));\n }\n\n if (printed.length === 0) {\n return concat$d([typeParams, \"(\", comments.printDanglingComments(path, options,\n /* sameIndent */\n true, function (comment) {\n return getNextNonSpaceNonCommentCharacter$1(options.originalText, comment, options.locEnd) === \")\";\n }), \")\"]);\n }\n\n var lastParam = getLast$2(fun[paramsField]); // If the parent is a call with the first/last argument expansion and this is the\n // params of the first/last argument, we don't want the arguments to break and instead\n // want the whole expression to be on a new line.\n //\n // Good: Bad:\n // verylongcall( verylongcall((\n // (a, b) => { a,\n // } b,\n // }) ) => {\n // })\n\n if (shouldExpandParameters) {\n return group$b(concat$d([removeLines$2(typeParams), \"(\", concat$d(printed.map(removeLines$2)), \")\"]));\n } // Single object destructuring should hug\n //\n // function({\n // a,\n // b,\n // c\n // }) {}\n\n\n var hasNotParameterDecorator = fun[paramsField].every(function (param) {\n return !param.decorators;\n });\n\n if (shouldHugParameters && hasNotParameterDecorator) {\n return concat$d([typeParams, \"(\", concat$d(printed), \")\"]);\n } // don't break in specs, eg; `it(\"should maintain parens around done even when long\", (done) => {})`\n\n\n if (isParametersInTestCall) {\n return concat$d([typeParams, \"(\", concat$d(printed), \")\"]);\n }\n\n var isFlowShorthandWithOneArg = (isObjectTypePropertyAFunction$1(parent, options) || isTypeAnnotationAFunction$1(parent, options) || parent.type === \"TypeAlias\" || parent.type === \"UnionTypeAnnotation\" || parent.type === \"TSUnionType\" || parent.type === \"IntersectionTypeAnnotation\" || parent.type === \"FunctionTypeAnnotation\" && parent.returnType === fun) && fun[paramsField].length === 1 && fun[paramsField][0].name === null && fun[paramsField][0].typeAnnotation && fun.typeParameters === null && isSimpleFlowType$1(fun[paramsField][0].typeAnnotation) && !fun.rest;\n\n if (isFlowShorthandWithOneArg) {\n if (options.arrowParens === \"always\") {\n return concat$d([\"(\", concat$d(printed), \")\"]);\n }\n\n return concat$d(printed);\n }\n\n var canHaveTrailingComma = !(lastParam && lastParam.type === \"RestElement\") && !fun.rest;\n return concat$d([typeParams, \"(\", indent$7(concat$d([softline$6, concat$d(printed)])), ifBreak$6(canHaveTrailingComma && shouldPrintComma$1(options, \"all\") ? \",\" : \"\"), softline$6, \")\"]);\n }\n\n function shouldPrintParamsWithoutParens(path, options) {\n if (options.arrowParens === \"always\") {\n return false;\n }\n\n if (options.arrowParens === \"avoid\") {\n var node = path.getValue();\n return canPrintParamsWithoutParens(node);\n } // Fallback default; should be unreachable\n\n\n return false;\n }\n\n function canPrintParamsWithoutParens(node) {\n return node.params.length === 1 && !node.rest && !node.typeParameters && !hasDanglingComments$1(node) && node.params[0].type === \"Identifier\" && !node.params[0].typeAnnotation && !node.params[0].comments && !node.params[0].optional && !node.predicate && !node.returnType;\n }\n\n function printFunctionDeclaration(path, print, options) {\n var n = path.getValue();\n var parts = [];\n\n if (n.async) {\n parts.push(\"async \");\n }\n\n parts.push(\"function\");\n\n if (n.generator) {\n parts.push(\"*\");\n }\n\n if (n.id) {\n parts.push(\" \", path.call(print, \"id\"));\n }\n\n parts.push(printFunctionTypeParameters(path, options, print), group$b(concat$d([printFunctionParams(path, print, options), printReturnType(path, print, options)])), n.body ? \" \" : \"\", path.call(print, \"body\"));\n return concat$d(parts);\n }\n\n function printReturnType(path, print, options) {\n var n = path.getValue();\n var returnType = path.call(print, \"returnType\");\n\n if (n.returnType && isFlowAnnotationComment$1(options.originalText, n.returnType, options)) {\n return concat$d([\" /*: \", returnType, \" */\"]);\n }\n\n var parts = [returnType]; // prepend colon to TypeScript type annotation\n\n if (n.returnType && n.returnType.typeAnnotation) {\n parts.unshift(\": \");\n }\n\n if (n.predicate) {\n // The return type will already add the colon, but otherwise we\n // need to do it ourselves\n parts.push(n.returnType ? \" \" : \": \", path.call(print, \"predicate\"));\n }\n\n return concat$d(parts);\n }\n\n function printExportDeclaration(path, options, print) {\n var decl = path.getValue();\n var semi = options.semi ? \";\" : \"\";\n var parts = [\"export \"];\n var isDefault = decl[\"default\"] || decl.type === \"ExportDefaultDeclaration\";\n\n if (isDefault) {\n parts.push(\"default \");\n }\n\n parts.push(comments.printDanglingComments(path, options,\n /* sameIndent */\n true));\n\n if (needsHardlineAfterDanglingComment$1(decl)) {\n parts.push(hardline$9);\n }\n\n if (decl.declaration) {\n parts.push(path.call(print, \"declaration\"));\n\n if (isDefault && decl.declaration.type !== \"ClassDeclaration\" && decl.declaration.type !== \"FunctionDeclaration\" && decl.declaration.type !== \"TSInterfaceDeclaration\" && decl.declaration.type !== \"DeclareClass\" && decl.declaration.type !== \"DeclareFunction\" && decl.declaration.type !== \"TSDeclareFunction\") {\n parts.push(semi);\n }\n } else {\n if (decl.specifiers && decl.specifiers.length > 0) {\n var specifiers = [];\n var defaultSpecifiers = [];\n var namespaceSpecifiers = [];\n path.each(function (specifierPath) {\n var specifierType = path.getValue().type;\n\n if (specifierType === \"ExportSpecifier\") {\n specifiers.push(print(specifierPath));\n } else if (specifierType === \"ExportDefaultSpecifier\") {\n defaultSpecifiers.push(print(specifierPath));\n } else if (specifierType === \"ExportNamespaceSpecifier\") {\n namespaceSpecifiers.push(concat$d([\"* as \", print(specifierPath)]));\n }\n }, \"specifiers\");\n var isNamespaceFollowed = namespaceSpecifiers.length !== 0 && specifiers.length !== 0;\n var isDefaultFollowed = defaultSpecifiers.length !== 0 && (namespaceSpecifiers.length !== 0 || specifiers.length !== 0);\n var canBreak = specifiers.length > 1 || defaultSpecifiers.length > 0 || decl.specifiers && decl.specifiers.some(function (node) {\n return node.comments;\n });\n var printed = \"\";\n\n if (specifiers.length !== 0) {\n if (canBreak) {\n printed = group$b(concat$d([\"{\", indent$7(concat$d([options.bracketSpacing ? line$7 : softline$6, join$9(concat$d([\",\", line$7]), specifiers)])), ifBreak$6(shouldPrintComma$1(options) ? \",\" : \"\"), options.bracketSpacing ? line$7 : softline$6, \"}\"]));\n } else {\n printed = concat$d([\"{\", options.bracketSpacing ? \" \" : \"\", concat$d(specifiers), options.bracketSpacing ? \" \" : \"\", \"}\"]);\n }\n }\n\n parts.push(decl.exportKind === \"type\" ? \"type \" : \"\", concat$d(defaultSpecifiers), concat$d([isDefaultFollowed ? \", \" : \"\"]), concat$d(namespaceSpecifiers), concat$d([isNamespaceFollowed ? \", \" : \"\"]), printed);\n } else {\n parts.push(\"{}\");\n }\n\n if (decl.source) {\n parts.push(\" from \", path.call(print, \"source\"));\n }\n\n parts.push(semi);\n }\n\n return concat$d(parts);\n }\n\n function printFlowDeclaration(path, parts) {\n var parentExportDecl = getParentExportDeclaration$1(path);\n\n if (parentExportDecl) {\n assert.strictEqual(parentExportDecl.type, \"DeclareExportDeclaration\");\n } else {\n // If the parent node has type DeclareExportDeclaration, then it\n // will be responsible for printing the \"declare\" token. Otherwise\n // it needs to be printed with this non-exported declaration node.\n parts.unshift(\"declare \");\n }\n\n return concat$d(parts);\n }\n\n function printTypeScriptModifiers(path, options, print) {\n var n = path.getValue();\n\n if (!n.modifiers || !n.modifiers.length) {\n return \"\";\n }\n\n return concat$d([join$9(\" \", path.map(print, \"modifiers\")), \" \"]);\n }\n\n function printTypeParameters(path, options, print, paramsKey) {\n var n = path.getValue();\n\n if (!n[paramsKey]) {\n return \"\";\n } // for TypeParameterDeclaration typeParameters is a single node\n\n\n if (!Array.isArray(n[paramsKey])) {\n return path.call(print, paramsKey);\n }\n\n var grandparent = path.getNode(2);\n var greatGreatGrandParent = path.getNode(4);\n var isParameterInTestCall = grandparent != null && isTestCall$1(grandparent);\n var shouldInline = isParameterInTestCall || n[paramsKey].length === 0 || n[paramsKey].length === 1 && (shouldHugType(n[paramsKey][0]) || n[paramsKey][0].type === \"GenericTypeAnnotation\" && shouldHugType(n[paramsKey][0].id) || n[paramsKey][0].type === \"TSTypeReference\" && shouldHugType(n[paramsKey][0].typeName) || n[paramsKey][0].type === \"NullableTypeAnnotation\" || // See https://github.com/prettier/prettier/pull/6467 for the context.\n greatGreatGrandParent && greatGreatGrandParent.type === \"VariableDeclarator\" && grandparent && grandparent.type === \"TSTypeAnnotation\" && n[paramsKey][0].type !== \"TSUnionType\" && n[paramsKey][0].type !== \"UnionTypeAnnotation\" && n[paramsKey][0].type !== \"TSConditionalType\" && n[paramsKey][0].type !== \"TSMappedType\");\n\n if (shouldInline) {\n return concat$d([\"<\", join$9(\", \", path.map(print, paramsKey)), \">\"]);\n }\n\n return group$b(concat$d([\"<\", indent$7(concat$d([softline$6, join$9(concat$d([\",\", line$7]), path.map(print, paramsKey))])), ifBreak$6(options.parser !== \"typescript\" && shouldPrintComma$1(options, \"all\") ? \",\" : \"\"), softline$6, \">\"]));\n }\n\n function printClass(path, options, print) {\n var n = path.getValue();\n var parts = [];\n\n if (n.abstract) {\n parts.push(\"abstract \");\n }\n\n parts.push(\"class\");\n\n if (n.id) {\n parts.push(\" \", path.call(print, \"id\"));\n }\n\n parts.push(path.call(print, \"typeParameters\"));\n var partsGroup = [];\n\n if (n.superClass) {\n var printed = concat$d([\"extends \", path.call(print, \"superClass\"), path.call(print, \"superTypeParameters\")]); // Keep old behaviour of extends in same line\n // If there is only on extends and there are not comments\n\n if ((!n.implements || n.implements.length === 0) && (!n.superClass.comments || n.superClass.comments.length === 0)) {\n parts.push(concat$d([\" \", path.call(function (superClass) {\n return comments.printComments(superClass, function () {\n return printed;\n }, options);\n }, \"superClass\")]));\n } else {\n partsGroup.push(group$b(concat$d([line$7, path.call(function (superClass) {\n return comments.printComments(superClass, function () {\n return printed;\n }, options);\n }, \"superClass\")])));\n }\n } else if (n.extends && n.extends.length > 0) {\n parts.push(\" extends \", join$9(\", \", path.map(print, \"extends\")));\n }\n\n if (n[\"mixins\"] && n[\"mixins\"].length > 0) {\n partsGroup.push(line$7, \"mixins \", group$b(indent$7(join$9(concat$d([\",\", line$7]), path.map(print, \"mixins\")))));\n }\n\n if (n[\"implements\"] && n[\"implements\"].length > 0) {\n partsGroup.push(line$7, \"implements\", group$b(indent$7(concat$d([line$7, join$9(concat$d([\",\", line$7]), path.map(print, \"implements\"))]))));\n }\n\n if (partsGroup.length > 0) {\n parts.push(group$b(indent$7(concat$d(partsGroup))));\n }\n\n if (n.body && n.body.comments && hasLeadingOwnLineComment$1(options.originalText, n.body, options)) {\n parts.push(hardline$9);\n } else {\n parts.push(\" \");\n }\n\n parts.push(path.call(print, \"body\"));\n return parts;\n }\n\n function printOptionalToken(path) {\n var node = path.getValue();\n\n if (!node.optional || // It's an optional computed method parsed by typescript-estree.\n // \"?\" is printed in `printMethod`.\n node.type === \"Identifier\" && node === path.getParentNode().key) {\n return \"\";\n }\n\n if (node.type === \"OptionalCallExpression\" || node.type === \"OptionalMemberExpression\" && node.computed) {\n return \"?.\";\n }\n\n return \"?\";\n }\n\n function printMemberLookup(path, options, print) {\n var property = path.call(print, \"property\");\n var n = path.getValue();\n var optional = printOptionalToken(path);\n\n if (!n.computed) {\n return concat$d([optional, \".\", property]);\n }\n\n if (!n.property || isNumericLiteral$1(n.property)) {\n return concat$d([optional, \"[\", property, \"]\"]);\n }\n\n return group$b(concat$d([optional, \"[\", indent$7(concat$d([softline$6, property])), softline$6, \"]\"]));\n }\n\n function printBindExpressionCallee(path, options, print) {\n return concat$d([\"::\", path.call(print, \"callee\")]);\n } // We detect calls on member expressions specially to format a\n // common pattern better. The pattern we are looking for is this:\n //\n // arr\n // .map(x => x + 1)\n // .filter(x => x > 10)\n // .some(x => x % 2)\n //\n // The way it is structured in the AST is via a nested sequence of\n // MemberExpression and CallExpression. We need to traverse the AST\n // and make groups out of it to print it in the desired way.\n\n\n function printMemberChain(path, options, print) {\n // The first phase is to linearize the AST by traversing it down.\n //\n // a().b()\n // has the following AST structure:\n // CallExpression(MemberExpression(CallExpression(Identifier)))\n // and we transform it into\n // [Identifier, CallExpression, MemberExpression, CallExpression]\n var printedNodes = []; // Here we try to retain one typed empty line after each call expression or\n // the first group whether it is in parentheses or not\n\n function shouldInsertEmptyLineAfter(node) {\n var originalText = options.originalText;\n var nextCharIndex = getNextNonSpaceNonCommentCharacterIndex$2(originalText, node, options);\n var nextChar = originalText.charAt(nextCharIndex); // if it is cut off by a parenthesis, we only account for one typed empty\n // line after that parenthesis\n\n if (nextChar == \")\") {\n return isNextLineEmptyAfterIndex$1(originalText, nextCharIndex + 1, options);\n }\n\n return isNextLineEmpty$4(originalText, node, options);\n }\n\n function rec(path) {\n var node = path.getValue();\n\n if ((node.type === \"CallExpression\" || node.type === \"OptionalCallExpression\") && (isMemberish$1(node.callee) || node.callee.type === \"CallExpression\" || node.callee.type === \"OptionalCallExpression\")) {\n printedNodes.unshift({\n node: node,\n printed: concat$d([comments.printComments(path, function () {\n return concat$d([printOptionalToken(path), printFunctionTypeParameters(path, options, print), printArgumentsList(path, options, print)]);\n }, options), shouldInsertEmptyLineAfter(node) ? hardline$9 : \"\"])\n });\n path.call(function (callee) {\n return rec(callee);\n }, \"callee\");\n } else if (isMemberish$1(node)) {\n printedNodes.unshift({\n node: node,\n needsParens: needsParens_1(path, options),\n printed: comments.printComments(path, function () {\n return node.type === \"OptionalMemberExpression\" || node.type === \"MemberExpression\" ? printMemberLookup(path, options, print) : printBindExpressionCallee(path, options, print);\n }, options)\n });\n path.call(function (object) {\n return rec(object);\n }, \"object\");\n } else if (node.type === \"TSNonNullExpression\") {\n printedNodes.unshift({\n node: node,\n printed: comments.printComments(path, function () {\n return \"!\";\n }, options)\n });\n path.call(function (expression) {\n return rec(expression);\n }, \"expression\");\n } else {\n printedNodes.unshift({\n node: node,\n printed: path.call(print)\n });\n }\n } // Note: the comments of the root node have already been printed, so we\n // need to extract this first call without printing them as they would\n // if handled inside of the recursive call.\n\n\n var node = path.getValue();\n printedNodes.unshift({\n node: node,\n printed: concat$d([printOptionalToken(path), printFunctionTypeParameters(path, options, print), printArgumentsList(path, options, print)])\n });\n path.call(function (callee) {\n return rec(callee);\n }, \"callee\"); // Once we have a linear list of printed nodes, we want to create groups out\n // of it.\n //\n // a().b.c().d().e\n // will be grouped as\n // [\n // [Identifier, CallExpression],\n // [MemberExpression, MemberExpression, CallExpression],\n // [MemberExpression, CallExpression],\n // [MemberExpression],\n // ]\n // so that we can print it as\n // a()\n // .b.c()\n // .d()\n // .e\n // The first group is the first node followed by\n // - as many CallExpression as possible\n // < fn()()() >.something()\n // - as many array accessors as possible\n // < fn()[0][1][2] >.something()\n // - then, as many MemberExpression as possible but the last one\n // < this.items >.something()\n\n var groups = [];\n var currentGroup = [printedNodes[0]];\n var i = 1;\n\n for (; i < printedNodes.length; ++i) {\n if (printedNodes[i].node.type === \"TSNonNullExpression\" || printedNodes[i].node.type === \"OptionalCallExpression\" || printedNodes[i].node.type === \"CallExpression\" || (printedNodes[i].node.type === \"MemberExpression\" || printedNodes[i].node.type === \"OptionalMemberExpression\") && printedNodes[i].node.computed && isNumericLiteral$1(printedNodes[i].node.property)) {\n currentGroup.push(printedNodes[i]);\n } else {\n break;\n }\n }\n\n if (printedNodes[0].node.type !== \"CallExpression\" && printedNodes[0].node.type !== \"OptionalCallExpression\") {\n for (; i + 1 < printedNodes.length; ++i) {\n if (isMemberish$1(printedNodes[i].node) && isMemberish$1(printedNodes[i + 1].node)) {\n currentGroup.push(printedNodes[i]);\n } else {\n break;\n }\n }\n }\n\n groups.push(currentGroup);\n currentGroup = []; // Then, each following group is a sequence of MemberExpression followed by\n // a sequence of CallExpression. To compute it, we keep adding things to the\n // group until we has seen a CallExpression in the past and reach a\n // MemberExpression\n\n var hasSeenCallExpression = false;\n\n for (; i < printedNodes.length; ++i) {\n if (hasSeenCallExpression && isMemberish$1(printedNodes[i].node)) {\n // [0] should be appended at the end of the group instead of the\n // beginning of the next one\n if (printedNodes[i].node.computed && isNumericLiteral$1(printedNodes[i].node.property)) {\n currentGroup.push(printedNodes[i]);\n continue;\n }\n\n groups.push(currentGroup);\n currentGroup = [];\n hasSeenCallExpression = false;\n }\n\n if (printedNodes[i].node.type === \"CallExpression\" || printedNodes[i].node.type === \"OptionalCallExpression\") {\n hasSeenCallExpression = true;\n }\n\n currentGroup.push(printedNodes[i]);\n\n if (printedNodes[i].node.comments && printedNodes[i].node.comments.some(function (comment) {\n return comment.trailing;\n })) {\n groups.push(currentGroup);\n currentGroup = [];\n hasSeenCallExpression = false;\n }\n }\n\n if (currentGroup.length > 0) {\n groups.push(currentGroup);\n } // There are cases like Object.keys(), Observable.of(), _.values() where\n // they are the subject of all the chained calls and therefore should\n // be kept on the same line:\n //\n // Object.keys(items)\n // .filter(x => x)\n // .map(x => x)\n //\n // In order to detect those cases, we use an heuristic: if the first\n // node is an identifier with the name starting with a capital\n // letter or just a sequence of _$. The rationale is that they are\n // likely to be factories.\n\n\n function isFactory(name) {\n return /^[A-Z]|^[_$]+$/.test(name);\n } // In case the Identifier is shorter than tab width, we can keep the\n // first call in a single line, if it's an ExpressionStatement.\n //\n // d3.scaleLinear()\n // .domain([0, 100])\n // .range([0, width]);\n //\n\n\n function isShort(name) {\n return name.length <= options.tabWidth;\n }\n\n function shouldNotWrap(groups) {\n var parent = path.getParentNode();\n var isExpression = parent && parent.type === \"ExpressionStatement\";\n var hasComputed = groups[1].length && groups[1][0].node.computed;\n\n if (groups[0].length === 1) {\n var firstNode = groups[0][0].node;\n return firstNode.type === \"ThisExpression\" || firstNode.type === \"Identifier\" && (isFactory(firstNode.name) || isExpression && isShort(firstNode.name) || hasComputed);\n }\n\n var lastNode = getLast$2(groups[0]).node;\n return (lastNode.type === \"MemberExpression\" || lastNode.type === \"OptionalMemberExpression\") && lastNode.property.type === \"Identifier\" && (isFactory(lastNode.property.name) || hasComputed);\n }\n\n var shouldMerge = groups.length >= 2 && !groups[1][0].node.comments && shouldNotWrap(groups);\n\n function printGroup(printedGroup) {\n var printed = printedGroup.map(function (tuple) {\n return tuple.printed;\n }); // Checks if the last node (i.e. the parent node) needs parens and print\n // accordingly\n\n if (printedGroup.length > 0 && printedGroup[printedGroup.length - 1].needsParens) {\n return concat$d([\"(\"].concat(_toConsumableArray(printed), [\")\"]));\n }\n\n return concat$d(printed);\n }\n\n function printIndentedGroup(groups) {\n if (groups.length === 0) {\n return \"\";\n }\n\n return indent$7(group$b(concat$d([hardline$9, join$9(hardline$9, groups.map(printGroup))])));\n }\n\n var printedGroups = groups.map(printGroup);\n var oneLine = concat$d(printedGroups);\n var cutoff = shouldMerge ? 3 : 2;\n var flatGroups = groups.slice(0, cutoff).reduce(function (res, group) {\n return res.concat(group);\n }, []);\n var hasComment = flatGroups.slice(1, -1).some(function (node) {\n return hasLeadingComment$3(node.node);\n }) || flatGroups.slice(0, -1).some(function (node) {\n return hasTrailingComment$1(node.node);\n }) || groups[cutoff] && hasLeadingComment$3(groups[cutoff][0].node); // If we only have a single `.`, we shouldn't do anything fancy and just\n // render everything concatenated together.\n\n if (groups.length <= cutoff && !hasComment) {\n if (isLongCurriedCallExpression$1(path)) {\n return oneLine;\n }\n\n return group$b(oneLine);\n } // Find out the last node in the first group and check if it has an\n // empty line after\n\n\n var lastNodeBeforeIndent = getLast$2(shouldMerge ? groups.slice(1, 2)[0] : groups[0]).node;\n var shouldHaveEmptyLineBeforeIndent = lastNodeBeforeIndent.type !== \"CallExpression\" && lastNodeBeforeIndent.type !== \"OptionalCallExpression\" && shouldInsertEmptyLineAfter(lastNodeBeforeIndent);\n var expanded = concat$d([printGroup(groups[0]), shouldMerge ? concat$d(groups.slice(1, 2).map(printGroup)) : \"\", shouldHaveEmptyLineBeforeIndent ? hardline$9 : \"\", printIndentedGroup(groups.slice(shouldMerge ? 2 : 1))]);\n var callExpressions = printedNodes.map(function (_ref) {\n var node = _ref.node;\n return node;\n }).filter(isCallOrOptionalCallExpression$1); // We don't want to print in one line if there's:\n // * A comment.\n // * 3 or more chained calls.\n // * Any group but the last one has a hard line.\n // If the last group is a function it's okay to inline if it fits.\n\n if (hasComment || callExpressions.length >= 3 || printedGroups.slice(0, -1).some(willBreak$1) ||\n /**\n * scopes.filter(scope => scope.value !== '').map((scope, i) => {\n * // multi line content\n * })\n */\n function (lastGroupDoc, lastGroupNode) {\n return isCallOrOptionalCallExpression$1(lastGroupNode) && willBreak$1(lastGroupDoc);\n }(getLast$2(printedGroups), getLast$2(getLast$2(groups)).node) && callExpressions.slice(0, -1).some(function (n) {\n return n.arguments.some(isFunctionOrArrowExpression$1);\n })) {\n return group$b(expanded);\n }\n\n return concat$d([// We only need to check `oneLine` because if `expanded` is chosen\n // that means that the parent group has already been broken\n // naturally\n willBreak$1(oneLine) || shouldHaveEmptyLineBeforeIndent ? breakParent$3 : \"\", conditionalGroup$1([oneLine, expanded])]);\n }\n\n function separatorNoWhitespace(isFacebookTranslationTag, child, childNode, nextNode) {\n if (isFacebookTranslationTag) {\n return \"\";\n }\n\n if (childNode.type === \"JSXElement\" && !childNode.closingElement || nextNode && nextNode.type === \"JSXElement\" && !nextNode.closingElement) {\n return child.length === 1 ? softline$6 : hardline$9;\n }\n\n return softline$6;\n }\n\n function separatorWithWhitespace(isFacebookTranslationTag, child, childNode, nextNode) {\n if (isFacebookTranslationTag) {\n return hardline$9;\n }\n\n if (child.length === 1) {\n return childNode.type === \"JSXElement\" && !childNode.closingElement || nextNode && nextNode.type === \"JSXElement\" && !nextNode.closingElement ? hardline$9 : softline$6;\n }\n\n return hardline$9;\n } // JSX Children are strange, mostly for two reasons:\n // 1. JSX reads newlines into string values, instead of skipping them like JS\n // 2. up to one whitespace between elements within a line is significant,\n // but not between lines.\n //\n // Leading, trailing, and lone whitespace all need to\n // turn themselves into the rather ugly `{' '}` when breaking.\n //\n // We print JSX using the `fill` doc primitive.\n // This requires that we give it an array of alternating\n // content and whitespace elements.\n // To ensure this we add dummy `\"\"` content elements as needed.\n\n\n function printJSXChildren(path, options, print, jsxWhitespace, isFacebookTranslationTag) {\n var n = path.getValue();\n var children = []; // using `map` instead of `each` because it provides `i`\n\n path.map(function (childPath, i) {\n var child = childPath.getValue();\n\n if (isLiteral$1(child)) {\n var text = rawText$1(child); // Contains a non-whitespace character\n\n if (isMeaningfulJSXText$1(child)) {\n var words = text.split(matchJsxWhitespaceRegex$1); // Starts with whitespace\n\n if (words[0] === \"\") {\n children.push(\"\");\n words.shift();\n\n if (/\\n/.test(words[0])) {\n var next = n.children[i + 1];\n children.push(separatorWithWhitespace(isFacebookTranslationTag, words[1], child, next));\n } else {\n children.push(jsxWhitespace);\n }\n\n words.shift();\n }\n\n var endWhitespace; // Ends with whitespace\n\n if (getLast$2(words) === \"\") {\n words.pop();\n endWhitespace = words.pop();\n } // This was whitespace only without a new line.\n\n\n if (words.length === 0) {\n return;\n }\n\n words.forEach(function (word, i) {\n if (i % 2 === 1) {\n children.push(line$7);\n } else {\n children.push(word);\n }\n });\n\n if (endWhitespace !== undefined) {\n if (/\\n/.test(endWhitespace)) {\n var _next = n.children[i + 1];\n children.push(separatorWithWhitespace(isFacebookTranslationTag, getLast$2(children), child, _next));\n } else {\n children.push(jsxWhitespace);\n }\n } else {\n var _next2 = n.children[i + 1];\n children.push(separatorNoWhitespace(isFacebookTranslationTag, getLast$2(children), child, _next2));\n }\n } else if (/\\n/.test(text)) {\n // Keep (up to one) blank line between tags/expressions/text.\n // Note: We don't keep blank lines between text elements.\n if (text.match(/\\n/g).length > 1) {\n children.push(\"\");\n children.push(hardline$9);\n }\n } else {\n children.push(\"\");\n children.push(jsxWhitespace);\n }\n } else {\n var printedChild = print(childPath);\n children.push(printedChild);\n var _next3 = n.children[i + 1];\n\n var directlyFollowedByMeaningfulText = _next3 && isMeaningfulJSXText$1(_next3);\n\n if (directlyFollowedByMeaningfulText) {\n var firstWord = rawText$1(_next3).trim().split(matchJsxWhitespaceRegex$1)[0];\n children.push(separatorNoWhitespace(isFacebookTranslationTag, firstWord, child, _next3));\n } else {\n children.push(hardline$9);\n }\n }\n }, \"children\");\n return children;\n } // JSX expands children from the inside-out, instead of the outside-in.\n // This is both to break children before attributes,\n // and to ensure that when children break, their parents do as well.\n //\n // Any element that is written without any newlines and fits on a single line\n // is left that way.\n // Not only that, any user-written-line containing multiple JSX siblings\n // should also be kept on one line if possible,\n // so each user-written-line is wrapped in its own group.\n //\n // Elements that contain newlines or don't fit on a single line (recursively)\n // are fully-split, using hardline and shouldBreak: true.\n //\n // To support that case properly, all leading and trailing spaces\n // are stripped from the list of children, and replaced with a single hardline.\n\n\n function printJSXElement(path, options, print) {\n var n = path.getValue();\n\n if (n.type === \"JSXElement\" && isEmptyJSXElement$1(n)) {\n return concat$d([path.call(print, \"openingElement\"), path.call(print, \"closingElement\")]);\n }\n\n var openingLines = n.type === \"JSXElement\" ? path.call(print, \"openingElement\") : path.call(print, \"openingFragment\");\n var closingLines = n.type === \"JSXElement\" ? path.call(print, \"closingElement\") : path.call(print, \"closingFragment\");\n\n if (n.children.length === 1 && n.children[0].type === \"JSXExpressionContainer\" && (n.children[0].expression.type === \"TemplateLiteral\" || n.children[0].expression.type === \"TaggedTemplateExpression\")) {\n return concat$d([openingLines, concat$d(path.map(print, \"children\")), closingLines]);\n } // Convert `{\" \"}` to text nodes containing a space.\n // This makes it easy to turn them into `jsxWhitespace` which\n // can then print as either a space or `{\" \"}` when breaking.\n\n\n n.children = n.children.map(function (child) {\n if (isJSXWhitespaceExpression$1(child)) {\n return {\n type: \"JSXText\",\n value: \" \",\n raw: \" \"\n };\n }\n\n return child;\n });\n var containsTag = n.children.filter(isJSXNode$1).length > 0;\n var containsMultipleExpressions = n.children.filter(function (child) {\n return child.type === \"JSXExpressionContainer\";\n }).length > 1;\n var containsMultipleAttributes = n.type === \"JSXElement\" && n.openingElement.attributes.length > 1; // Record any breaks. Should never go from true to false, only false to true.\n\n var forcedBreak = willBreak$1(openingLines) || containsTag || containsMultipleAttributes || containsMultipleExpressions;\n var rawJsxWhitespace = options.singleQuote ? \"{' '}\" : '{\" \"}';\n var jsxWhitespace = ifBreak$6(concat$d([rawJsxWhitespace, softline$6]), \" \");\n var isFacebookTranslationTag = n.openingElement && n.openingElement.name && n.openingElement.name.name === \"fbt\";\n var children = printJSXChildren(path, options, print, jsxWhitespace, isFacebookTranslationTag);\n var containsText = n.children.filter(function (child) {\n return isMeaningfulJSXText$1(child);\n }).length > 0; // We can end up we multiple whitespace elements with empty string\n // content between them.\n // We need to remove empty whitespace and softlines before JSX whitespace\n // to get the correct output.\n\n for (var i = children.length - 2; i >= 0; i--) {\n var isPairOfEmptyStrings = children[i] === \"\" && children[i + 1] === \"\";\n var isPairOfHardlines = children[i] === hardline$9 && children[i + 1] === \"\" && children[i + 2] === hardline$9;\n var isLineFollowedByJSXWhitespace = (children[i] === softline$6 || children[i] === hardline$9) && children[i + 1] === \"\" && children[i + 2] === jsxWhitespace;\n var isJSXWhitespaceFollowedByLine = children[i] === jsxWhitespace && children[i + 1] === \"\" && (children[i + 2] === softline$6 || children[i + 2] === hardline$9);\n var isDoubleJSXWhitespace = children[i] === jsxWhitespace && children[i + 1] === \"\" && children[i + 2] === jsxWhitespace;\n var isPairOfHardOrSoftLines = children[i] === softline$6 && children[i + 1] === \"\" && children[i + 2] === hardline$9 || children[i] === hardline$9 && children[i + 1] === \"\" && children[i + 2] === softline$6;\n\n if (isPairOfHardlines && containsText || isPairOfEmptyStrings || isLineFollowedByJSXWhitespace || isDoubleJSXWhitespace || isPairOfHardOrSoftLines) {\n children.splice(i, 2);\n } else if (isJSXWhitespaceFollowedByLine) {\n children.splice(i + 1, 2);\n }\n } // Trim trailing lines (or empty strings)\n\n\n while (children.length && (isLineNext$1(getLast$2(children)) || isEmpty$1(getLast$2(children)))) {\n children.pop();\n } // Trim leading lines (or empty strings)\n\n\n while (children.length && (isLineNext$1(children[0]) || isEmpty$1(children[0])) && (isLineNext$1(children[1]) || isEmpty$1(children[1]))) {\n children.shift();\n children.shift();\n } // Tweak how we format children if outputting this element over multiple lines.\n // Also detect whether we will force this element to output over multiple lines.\n\n\n var multilineChildren = [];\n children.forEach(function (child, i) {\n // There are a number of situations where we need to ensure we display\n // whitespace as `{\" \"}` when outputting this element over multiple lines.\n if (child === jsxWhitespace) {\n if (i === 1 && children[i - 1] === \"\") {\n if (children.length === 2) {\n // Solitary whitespace\n multilineChildren.push(rawJsxWhitespace);\n return;\n } // Leading whitespace\n\n\n multilineChildren.push(concat$d([rawJsxWhitespace, hardline$9]));\n return;\n } else if (i === children.length - 1) {\n // Trailing whitespace\n multilineChildren.push(rawJsxWhitespace);\n return;\n } else if (children[i - 1] === \"\" && children[i - 2] === hardline$9) {\n // Whitespace after line break\n multilineChildren.push(rawJsxWhitespace);\n return;\n }\n }\n\n multilineChildren.push(child);\n\n if (willBreak$1(child)) {\n forcedBreak = true;\n }\n }); // If there is text we use `fill` to fit as much onto each line as possible.\n // When there is no text (just tags and expressions) we use `group`\n // to output each on a separate line.\n\n var content = containsText ? fill$4(multilineChildren) : group$b(concat$d(multilineChildren), {\n shouldBreak: true\n });\n var multiLineElem = group$b(concat$d([openingLines, indent$7(concat$d([hardline$9, content])), hardline$9, closingLines]));\n\n if (forcedBreak) {\n return multiLineElem;\n }\n\n return conditionalGroup$1([group$b(concat$d([openingLines, concat$d(children), closingLines])), multiLineElem]);\n }\n\n function maybeWrapJSXElementInParens(path, elem, options) {\n var parent = path.getParentNode();\n\n if (!parent) {\n return elem;\n }\n\n var NO_WRAP_PARENTS = {\n ArrayExpression: true,\n JSXAttribute: true,\n JSXElement: true,\n JSXExpressionContainer: true,\n JSXFragment: true,\n ExpressionStatement: true,\n CallExpression: true,\n OptionalCallExpression: true,\n ConditionalExpression: true,\n JsExpressionRoot: true\n };\n\n if (NO_WRAP_PARENTS[parent.type]) {\n return elem;\n }\n\n var shouldBreak = matchAncestorTypes$1(path, [\"ArrowFunctionExpression\", \"CallExpression\", \"JSXExpressionContainer\"]) || matchAncestorTypes$1(path, [\"ArrowFunctionExpression\", \"OptionalCallExpression\", \"JSXExpressionContainer\"]);\n var needsParens = needsParens_1(path, options);\n return group$b(concat$d([needsParens ? \"\" : ifBreak$6(\"(\"), indent$7(concat$d([softline$6, elem])), softline$6, needsParens ? \"\" : ifBreak$6(\")\")]), {\n shouldBreak: shouldBreak\n });\n }\n\n function shouldInlineLogicalExpression(node) {\n if (node.type !== \"LogicalExpression\") {\n return false;\n }\n\n if (node.right.type === \"ObjectExpression\" && node.right.properties.length !== 0) {\n return true;\n }\n\n if (node.right.type === \"ArrayExpression\" && node.right.elements.length !== 0) {\n return true;\n }\n\n if (isJSXNode$1(node.right)) {\n return true;\n }\n\n return false;\n } // For binary expressions to be consistent, we need to group\n // subsequent operators with the same precedence level under a single\n // group. Otherwise they will be nested such that some of them break\n // onto new lines but not all. Operators with the same precedence\n // level should either all break or not. Because we group them by\n // precedence level and the AST is structured based on precedence\n // level, things are naturally broken up correctly, i.e. `&&` is\n // broken before `+`.\n\n\n function printBinaryishExpressions(path, print, options, isNested, isInsideParenthesis) {\n var parts = [];\n var node = path.getValue(); // We treat BinaryExpression and LogicalExpression nodes the same.\n\n if (isBinaryish$1(node)) {\n // Put all operators with the same precedence level in the same\n // group. The reason we only need to do this with the `left`\n // expression is because given an expression like `1 + 2 - 3`, it\n // is always parsed like `((1 + 2) - 3)`, meaning the `left` side\n // is where the rest of the expression will exist. Binary\n // expressions on the right side mean they have a difference\n // precedence level and should be treated as a separate group, so\n // print them normally. (This doesn't hold for the `**` operator,\n // which is unique in that it is right-associative.)\n if (shouldFlatten$1(node.operator, node.left.operator)) {\n // Flatten them out by recursively calling this function.\n parts = parts.concat(path.call(function (left) {\n return printBinaryishExpressions(left, print, options,\n /* isNested */\n true, isInsideParenthesis);\n }, \"left\"));\n } else {\n parts.push(path.call(print, \"left\"));\n }\n\n var shouldInline = shouldInlineLogicalExpression(node);\n var lineBeforeOperator = (node.operator === \"|>\" || node.type === \"NGPipeExpression\" || node.operator === \"|\" && options.parser === \"__vue_expression\") && !hasLeadingOwnLineComment$1(options.originalText, node.right, options);\n var operator = node.type === \"NGPipeExpression\" ? \"|\" : node.operator;\n var rightSuffix = node.type === \"NGPipeExpression\" && node.arguments.length !== 0 ? group$b(indent$7(concat$d([softline$6, \": \", join$9(concat$d([softline$6, \":\", ifBreak$6(\" \")]), path.map(print, \"arguments\").map(function (arg) {\n return align$1(2, group$b(arg));\n }))]))) : \"\";\n var right = shouldInline ? concat$d([operator, \" \", path.call(print, \"right\"), rightSuffix]) : concat$d([lineBeforeOperator ? softline$6 : \"\", operator, lineBeforeOperator ? \" \" : line$7, path.call(print, \"right\"), rightSuffix]); // If there's only a single binary expression, we want to create a group\n // in order to avoid having a small right part like -1 be on its own line.\n\n var parent = path.getParentNode();\n var shouldGroup = !(isInsideParenthesis && node.type === \"LogicalExpression\") && parent.type !== node.type && node.left.type !== node.type && node.right.type !== node.type;\n parts.push(\" \", shouldGroup ? group$b(right) : right); // The root comments are already printed, but we need to manually print\n // the other ones since we don't call the normal print on BinaryExpression,\n // only for the left and right parts\n\n if (isNested && node.comments) {\n parts = comments.printComments(path, function () {\n return concat$d(parts);\n }, options);\n }\n } else {\n // Our stopping case. Simply print the node normally.\n parts.push(path.call(print));\n }\n\n return parts;\n }\n\n function printAssignmentRight(leftNode, rightNode, printedRight, options) {\n if (hasLeadingOwnLineComment$1(options.originalText, rightNode, options)) {\n return indent$7(concat$d([hardline$9, printedRight]));\n }\n\n var canBreak = isBinaryish$1(rightNode) && !shouldInlineLogicalExpression(rightNode) || rightNode.type === \"ConditionalExpression\" && isBinaryish$1(rightNode.test) && !shouldInlineLogicalExpression(rightNode.test) || rightNode.type === \"StringLiteralTypeAnnotation\" || rightNode.type === \"ClassExpression\" && rightNode.decorators && rightNode.decorators.length || (leftNode.type === \"Identifier\" || isStringLiteral$1(leftNode) || leftNode.type === \"MemberExpression\") && (isStringLiteral$1(rightNode) || isMemberExpressionChain$1(rightNode)) && // do not put values on a separate line from the key in json\n options.parser !== \"json\" && options.parser !== \"json5\" || rightNode.type === \"SequenceExpression\";\n\n if (canBreak) {\n return group$b(indent$7(concat$d([line$7, printedRight])));\n }\n\n return concat$d([\" \", printedRight]);\n }\n\n function printAssignment(leftNode, printedLeft, operator, rightNode, printedRight, options) {\n if (!rightNode) {\n return printedLeft;\n }\n\n var printed = printAssignmentRight(leftNode, rightNode, printedRight, options);\n return group$b(concat$d([printedLeft, operator, printed]));\n }\n\n function adjustClause(node, clause, forceSpace) {\n if (node.type === \"EmptyStatement\") {\n return \";\";\n }\n\n if (node.type === \"BlockStatement\" || forceSpace) {\n return concat$d([\" \", clause]);\n }\n\n return indent$7(concat$d([line$7, clause]));\n }\n\n function nodeStr(node, options, isFlowOrTypeScriptDirectiveLiteral) {\n var raw = rawText$1(node);\n var isDirectiveLiteral = isFlowOrTypeScriptDirectiveLiteral || node.type === \"DirectiveLiteral\";\n return printString$2(raw, options, isDirectiveLiteral);\n }\n\n function printRegex(node) {\n var flags = node.flags.split(\"\").sort().join(\"\");\n return \"/\".concat(node.pattern, \"/\").concat(flags);\n }\n\n function exprNeedsASIProtection(path, options) {\n var node = path.getValue();\n var maybeASIProblem = needsParens_1(path, options) || node.type === \"ParenthesizedExpression\" || node.type === \"TypeCastExpression\" || node.type === \"ArrowFunctionExpression\" && !shouldPrintParamsWithoutParens(path, options) || node.type === \"ArrayExpression\" || node.type === \"ArrayPattern\" || node.type === \"UnaryExpression\" && node.prefix && (node.operator === \"+\" || node.operator === \"-\") || node.type === \"TemplateLiteral\" || node.type === \"TemplateElement\" || isJSXNode$1(node) || node.type === \"BindExpression\" && !node.object || node.type === \"RegExpLiteral\" || node.type === \"Literal\" && node.pattern || node.type === \"Literal\" && node.regex;\n\n if (maybeASIProblem) {\n return true;\n }\n\n if (!hasNakedLeftSide$2(node)) {\n return false;\n }\n\n return path.call.apply(path, [function (childPath) {\n return exprNeedsASIProtection(childPath, options);\n }].concat(getLeftSidePathName$2(path, node)));\n }\n\n function stmtNeedsASIProtection(path, options) {\n var node = path.getNode();\n\n if (node.type !== \"ExpressionStatement\") {\n return false;\n }\n\n return path.call(function (childPath) {\n return exprNeedsASIProtection(childPath, options);\n }, \"expression\");\n }\n\n function shouldHugType(node) {\n if (isSimpleFlowType$1(node) || isObjectType$1(node)) {\n return true;\n }\n\n if (node.type === \"UnionTypeAnnotation\" || node.type === \"TSUnionType\") {\n var voidCount = node.types.filter(function (n) {\n return n.type === \"VoidTypeAnnotation\" || n.type === \"TSVoidKeyword\" || n.type === \"NullLiteralTypeAnnotation\" || n.type === \"TSNullKeyword\";\n }).length;\n var objectCount = node.types.filter(function (n) {\n return n.type === \"ObjectTypeAnnotation\" || n.type === \"TSTypeLiteral\" || // This is a bit aggressive but captures Array<{x}>\n n.type === \"GenericTypeAnnotation\" || n.type === \"TSTypeReference\";\n }).length;\n\n if (node.types.length - 1 === voidCount && objectCount > 0) {\n return true;\n }\n }\n\n return false;\n }\n\n function shouldHugArguments(fun) {\n return fun && fun.params && fun.params.length === 1 && !fun.params[0].comments && (fun.params[0].type === \"ObjectPattern\" || fun.params[0].type === \"ArrayPattern\" || fun.params[0].type === \"Identifier\" && fun.params[0].typeAnnotation && (fun.params[0].typeAnnotation.type === \"TypeAnnotation\" || fun.params[0].typeAnnotation.type === \"TSTypeAnnotation\") && isObjectType$1(fun.params[0].typeAnnotation.typeAnnotation) || fun.params[0].type === \"FunctionTypeParam\" && isObjectType$1(fun.params[0].typeAnnotation) || fun.params[0].type === \"AssignmentPattern\" && (fun.params[0].left.type === \"ObjectPattern\" || fun.params[0].left.type === \"ArrayPattern\") && (fun.params[0].right.type === \"Identifier\" || fun.params[0].right.type === \"ObjectExpression\" && fun.params[0].right.properties.length === 0 || fun.params[0].right.type === \"ArrayExpression\" && fun.params[0].right.elements.length === 0)) && !fun.rest;\n }\n\n function printArrayItems(path, options, printPath, print) {\n var printedElements = [];\n var separatorParts = [];\n path.each(function (childPath) {\n printedElements.push(concat$d(separatorParts));\n printedElements.push(group$b(print(childPath)));\n separatorParts = [\",\", line$7];\n\n if (childPath.getValue() && isNextLineEmpty$4(options.originalText, childPath.getValue(), options)) {\n separatorParts.push(softline$6);\n }\n }, printPath);\n return concat$d(printedElements);\n }\n\n function willPrintOwnComments(path\n /*, options */\n ) {\n var node = path.getValue();\n var parent = path.getParentNode();\n return (node && (isJSXNode$1(node) || hasFlowShorthandAnnotationComment$2(node) || parent && (parent.type === \"CallExpression\" || parent.type === \"OptionalCallExpression\") && (hasFlowAnnotationComment$1(node.leadingComments) || hasFlowAnnotationComment$1(node.trailingComments))) || parent && (parent.type === \"JSXSpreadAttribute\" || parent.type === \"JSXSpreadChild\" || parent.type === \"UnionTypeAnnotation\" || parent.type === \"TSUnionType\" || (parent.type === \"ClassDeclaration\" || parent.type === \"ClassExpression\") && parent.superClass === node)) && !hasIgnoreComment$4(path);\n }\n\n function canAttachComment$1(node) {\n return node.type && node.type !== \"CommentBlock\" && node.type !== \"CommentLine\" && node.type !== \"Line\" && node.type !== \"Block\" && node.type !== \"EmptyStatement\" && node.type !== \"TemplateElement\" && node.type !== \"Import\";\n }\n\n function printComment$2(commentPath, options) {\n var comment = commentPath.getValue();\n\n switch (comment.type) {\n case \"CommentBlock\":\n case \"Block\":\n {\n if (isIndentableBlockComment(comment)) {\n var printed = printIndentableBlockComment(comment); // We need to prevent an edge case of a previous trailing comment\n // printed as a `lineSuffix` which causes the comments to be\n // interleaved. See https://github.com/prettier/prettier/issues/4412\n\n if (comment.trailing && !hasNewline$4(options.originalText, options.locStart(comment), {\n backwards: true\n })) {\n return concat$d([hardline$9, printed]);\n }\n\n return printed;\n }\n\n var isInsideFlowComment = options.originalText.substr(options.locEnd(comment) - 3, 3) === \"*-/\";\n return \"/*\" + comment.value + (isInsideFlowComment ? \"*-/\" : \"*/\");\n }\n\n case \"CommentLine\":\n case \"Line\":\n // Print shebangs with the proper comment characters\n if (options.originalText.slice(options.locStart(comment)).startsWith(\"#!\")) {\n return \"#!\" + comment.value.trimRight();\n }\n\n return \"//\" + comment.value.trimRight();\n\n default:\n throw new Error(\"Not a comment: \" + JSON.stringify(comment));\n }\n }\n\n function isIndentableBlockComment(comment) {\n // If the comment has multiple lines and every line starts with a star\n // we can fix the indentation of each line. The stars in the `/*` and\n // `*/` delimiters are not included in the comment value, so add them\n // back first.\n var lines = \"*\".concat(comment.value, \"*\").split(\"\\n\");\n return lines.length > 1 && lines.every(function (line) {\n return line.trim()[0] === \"*\";\n });\n }\n\n function printIndentableBlockComment(comment) {\n var lines = comment.value.split(\"\\n\");\n return concat$d([\"/*\", join$9(hardline$9, lines.map(function (line, index) {\n return index === 0 ? line.trimRight() : \" \" + (index < lines.length - 1 ? line.trim() : line.trimLeft());\n })), \"*/\"]);\n }\n\n var printerEstree = {\n preprocess: preprocess_1$1,\n print: genericPrint$3,\n embed: embed_1$1,\n insertPragma: insertPragma$7,\n massageAstNode: clean_1$1,\n hasPrettierIgnore: hasPrettierIgnore$3,\n willPrintOwnComments: willPrintOwnComments,\n canAttachComment: canAttachComment$1,\n printComment: printComment$2,\n isBlockComment: comments$1.isBlockComment,\n handleComments: {\n ownLine: comments$1.handleOwnLineComment,\n endOfLine: comments$1.handleEndOfLineComment,\n remaining: comments$1.handleRemainingComment\n }\n };\n var _require$$0$builders$7 = doc.builders,\n concat$e = _require$$0$builders$7.concat,\n hardline$a = _require$$0$builders$7.hardline,\n indent$8 = _require$$0$builders$7.indent,\n join$a = _require$$0$builders$7.join;\n\n function genericPrint$4(path, options, print) {\n var node = path.getValue();\n\n switch (node.type) {\n case \"JsonRoot\":\n return concat$e([path.call(print, \"node\"), hardline$a]);\n\n case \"ArrayExpression\":\n return node.elements.length === 0 ? \"[]\" : concat$e([\"[\", indent$8(concat$e([hardline$a, join$a(concat$e([\",\", hardline$a]), path.map(print, \"elements\"))])), hardline$a, \"]\"]);\n\n case \"ObjectExpression\":\n return node.properties.length === 0 ? \"{}\" : concat$e([\"{\", indent$8(concat$e([hardline$a, join$a(concat$e([\",\", hardline$a]), path.map(print, \"properties\"))])), hardline$a, \"}\"]);\n\n case \"ObjectProperty\":\n return concat$e([path.call(print, \"key\"), \": \", path.call(print, \"value\")]);\n\n case \"UnaryExpression\":\n return concat$e([node.operator === \"+\" ? \"\" : node.operator, path.call(print, \"argument\")]);\n\n case \"NullLiteral\":\n return \"null\";\n\n case \"BooleanLiteral\":\n return node.value ? \"true\" : \"false\";\n\n case \"StringLiteral\":\n case \"NumericLiteral\":\n return JSON.stringify(node.value);\n\n case \"Identifier\":\n return JSON.stringify(node.name);\n\n default:\n /* istanbul ignore next */\n throw new Error(\"unknown type: \" + JSON.stringify(node.type));\n }\n }\n\n function clean$5(node, newNode\n /*, parent*/\n ) {\n delete newNode.start;\n delete newNode.end;\n delete newNode.extra;\n delete newNode.loc;\n delete newNode.comments;\n delete newNode.errors;\n\n if (node.type === \"Identifier\") {\n return {\n type: \"StringLiteral\",\n value: node.name\n };\n }\n\n if (node.type === \"UnaryExpression\" && node.operator === \"+\") {\n return newNode.argument;\n }\n }\n\n var printerEstreeJson = {\n preprocess: preprocess_1$1,\n print: genericPrint$4,\n massageAstNode: clean$5\n };\n var CATEGORY_JAVASCRIPT = \"JavaScript\"; // format based on https://github.com/prettier/prettier/blob/master/src/main/core-options.js\n\n var options$5 = {\n arrowParens: {\n since: \"1.9.0\",\n category: CATEGORY_JAVASCRIPT,\n type: \"choice\",\n default: \"avoid\",\n description: \"Include parentheses around a sole arrow function parameter.\",\n choices: [{\n value: \"avoid\",\n description: \"Omit parens when possible. Example: `x => x`\"\n }, {\n value: \"always\",\n description: \"Always include parens. Example: `(x) => x`\"\n }]\n },\n bracketSpacing: commonOptions.bracketSpacing,\n jsxBracketSameLine: {\n since: \"0.17.0\",\n category: CATEGORY_JAVASCRIPT,\n type: \"boolean\",\n default: false,\n description: \"Put > on the last line instead of at a new line.\"\n },\n semi: {\n since: \"1.0.0\",\n category: CATEGORY_JAVASCRIPT,\n type: \"boolean\",\n default: true,\n description: \"Print semicolons.\",\n oppositeDescription: \"Do not print semicolons, except at the beginning of lines which may need them.\"\n },\n singleQuote: commonOptions.singleQuote,\n jsxSingleQuote: {\n since: \"1.15.0\",\n category: CATEGORY_JAVASCRIPT,\n type: \"boolean\",\n default: false,\n description: \"Use single quotes in JSX.\"\n },\n quoteProps: {\n since: \"1.17.0\",\n category: CATEGORY_JAVASCRIPT,\n type: \"choice\",\n default: \"as-needed\",\n description: \"Change when properties in objects are quoted.\",\n choices: [{\n value: \"as-needed\",\n description: \"Only add quotes around object properties where required.\"\n }, {\n value: \"consistent\",\n description: \"If at least one property in an object requires quotes, quote all properties.\"\n }, {\n value: \"preserve\",\n description: \"Respect the input use of quotes in object properties.\"\n }]\n },\n trailingComma: {\n since: \"0.0.0\",\n category: CATEGORY_JAVASCRIPT,\n type: \"choice\",\n default: [{\n since: \"0.0.0\",\n value: false\n }, {\n since: \"0.19.0\",\n value: \"none\"\n }],\n description: \"Print trailing commas wherever possible when multi-line.\",\n choices: [{\n value: \"none\",\n description: \"No trailing commas.\"\n }, {\n value: \"es5\",\n description: \"Trailing commas where valid in ES5 (objects, arrays, etc.)\"\n }, {\n value: \"all\",\n description: \"Trailing commas wherever possible (including function arguments).\"\n }, {\n value: true,\n deprecated: \"0.19.0\",\n redirect: \"es5\"\n }, {\n value: false,\n deprecated: \"0.19.0\",\n redirect: \"none\"\n }]\n }\n };\n var name$9 = \"JavaScript\";\n var type$8 = \"programming\";\n var tmScope$8 = \"source.js\";\n var aceMode$8 = \"javascript\";\n var codemirrorMode$4 = \"javascript\";\n var codemirrorMimeType$4 = \"text/javascript\";\n var color$3 = \"#f1e05a\";\n var aliases$2 = [\"js\", \"node\"];\n var extensions$8 = [\".js\", \"._js\", \".bones\", \".es\", \".es6\", \".frag\", \".gs\", \".jake\", \".jsb\", \".jscad\", \".jsfl\", \".jsm\", \".jss\", \".mjs\", \".njs\", \".pac\", \".sjs\", \".ssjs\", \".xsjs\", \".xsjslib\"];\n var filenames = [\"Jakefile\"];\n var interpreters = [\"chakra\", \"d8\", \"js\", \"node\", \"rhino\", \"v8\", \"v8-shell\"];\n var languageId$8 = 183;\n var JavaScript = {\n name: name$9,\n type: type$8,\n tmScope: tmScope$8,\n aceMode: aceMode$8,\n codemirrorMode: codemirrorMode$4,\n codemirrorMimeType: codemirrorMimeType$4,\n color: color$3,\n aliases: aliases$2,\n extensions: extensions$8,\n filenames: filenames,\n interpreters: interpreters,\n languageId: languageId$8\n };\n var JavaScript$1 =\n /*#__PURE__*/\n Object.freeze({\n __proto__: null,\n name: name$9,\n type: type$8,\n tmScope: tmScope$8,\n aceMode: aceMode$8,\n codemirrorMode: codemirrorMode$4,\n codemirrorMimeType: codemirrorMimeType$4,\n color: color$3,\n aliases: aliases$2,\n extensions: extensions$8,\n filenames: filenames,\n interpreters: interpreters,\n languageId: languageId$8,\n 'default': JavaScript\n });\n var name$a = \"JSX\";\n var type$9 = \"programming\";\n var group$c = \"JavaScript\";\n var extensions$9 = [\".jsx\"];\n var tmScope$9 = \"source.js.jsx\";\n var aceMode$9 = \"javascript\";\n var codemirrorMode$5 = \"jsx\";\n var codemirrorMimeType$5 = \"text/jsx\";\n var languageId$9 = 178;\n var JSX = {\n name: name$a,\n type: type$9,\n group: group$c,\n extensions: extensions$9,\n tmScope: tmScope$9,\n aceMode: aceMode$9,\n codemirrorMode: codemirrorMode$5,\n codemirrorMimeType: codemirrorMimeType$5,\n languageId: languageId$9\n };\n var JSX$1 =\n /*#__PURE__*/\n Object.freeze({\n __proto__: null,\n name: name$a,\n type: type$9,\n group: group$c,\n extensions: extensions$9,\n tmScope: tmScope$9,\n aceMode: aceMode$9,\n codemirrorMode: codemirrorMode$5,\n codemirrorMimeType: codemirrorMimeType$5,\n languageId: languageId$9,\n 'default': JSX\n });\n var name$b = \"TypeScript\";\n var type$a = \"programming\";\n var color$4 = \"#2b7489\";\n var aliases$3 = [\"ts\"];\n var interpreters$1 = [\"deno\", \"ts-node\"];\n var extensions$a = [\".ts\"];\n var tmScope$a = \"source.ts\";\n var aceMode$a = \"typescript\";\n var codemirrorMode$6 = \"javascript\";\n var codemirrorMimeType$6 = \"application/typescript\";\n var languageId$a = 378;\n var TypeScript = {\n name: name$b,\n type: type$a,\n color: color$4,\n aliases: aliases$3,\n interpreters: interpreters$1,\n extensions: extensions$a,\n tmScope: tmScope$a,\n aceMode: aceMode$a,\n codemirrorMode: codemirrorMode$6,\n codemirrorMimeType: codemirrorMimeType$6,\n languageId: languageId$a\n };\n var TypeScript$1 =\n /*#__PURE__*/\n Object.freeze({\n __proto__: null,\n name: name$b,\n type: type$a,\n color: color$4,\n aliases: aliases$3,\n interpreters: interpreters$1,\n extensions: extensions$a,\n tmScope: tmScope$a,\n aceMode: aceMode$a,\n codemirrorMode: codemirrorMode$6,\n codemirrorMimeType: codemirrorMimeType$6,\n languageId: languageId$a,\n 'default': TypeScript\n });\n var name$c = \"TSX\";\n var type$b = \"programming\";\n var group$d = \"TypeScript\";\n var extensions$b = [\".tsx\"];\n var tmScope$b = \"source.tsx\";\n var aceMode$b = \"javascript\";\n var codemirrorMode$7 = \"jsx\";\n var codemirrorMimeType$7 = \"text/jsx\";\n var languageId$b = 94901924;\n var TSX = {\n name: name$c,\n type: type$b,\n group: group$d,\n extensions: extensions$b,\n tmScope: tmScope$b,\n aceMode: aceMode$b,\n codemirrorMode: codemirrorMode$7,\n codemirrorMimeType: codemirrorMimeType$7,\n languageId: languageId$b\n };\n var TSX$1 =\n /*#__PURE__*/\n Object.freeze({\n __proto__: null,\n name: name$c,\n type: type$b,\n group: group$d,\n extensions: extensions$b,\n tmScope: tmScope$b,\n aceMode: aceMode$b,\n codemirrorMode: codemirrorMode$7,\n codemirrorMimeType: codemirrorMimeType$7,\n languageId: languageId$b,\n 'default': TSX\n });\n var name$d = \"JSON\";\n var type$c = \"data\";\n var tmScope$c = \"source.json\";\n var aceMode$c = \"json\";\n var codemirrorMode$8 = \"javascript\";\n var codemirrorMimeType$8 = \"application/json\";\n var searchable = false;\n var extensions$c = [\".json\", \".avsc\", \".geojson\", \".gltf\", \".har\", \".ice\", \".JSON-tmLanguage\", \".jsonl\", \".mcmeta\", \".tfstate\", \".tfstate.backup\", \".topojson\", \".webapp\", \".webmanifest\", \".yy\", \".yyp\"];\n var filenames$1 = [\".arcconfig\", \".htmlhintrc\", \".tern-config\", \".tern-project\", \".watchmanconfig\", \"composer.lock\", \"mcmod.info\"];\n var languageId$c = 174;\n var _JSON = {\n name: name$d,\n type: type$c,\n tmScope: tmScope$c,\n aceMode: aceMode$c,\n codemirrorMode: codemirrorMode$8,\n codemirrorMimeType: codemirrorMimeType$8,\n searchable: searchable,\n extensions: extensions$c,\n filenames: filenames$1,\n languageId: languageId$c\n };\n\n var _JSON$1 =\n /*#__PURE__*/\n Object.freeze({\n __proto__: null,\n name: name$d,\n type: type$c,\n tmScope: tmScope$c,\n aceMode: aceMode$c,\n codemirrorMode: codemirrorMode$8,\n codemirrorMimeType: codemirrorMimeType$8,\n searchable: searchable,\n extensions: extensions$c,\n filenames: filenames$1,\n languageId: languageId$c,\n 'default': _JSON\n });\n\n var name$e = \"JSON with Comments\";\n var type$d = \"data\";\n var group$e = \"JSON\";\n var tmScope$d = \"source.js\";\n var aceMode$d = \"javascript\";\n var codemirrorMode$9 = \"javascript\";\n var codemirrorMimeType$9 = \"text/javascript\";\n var aliases$4 = [\"jsonc\"];\n var extensions$d = [\".sublime-build\", \".sublime-commands\", \".sublime-completions\", \".sublime-keymap\", \".sublime-macro\", \".sublime-menu\", \".sublime-mousemap\", \".sublime-project\", \".sublime-settings\", \".sublime-theme\", \".sublime-workspace\", \".sublime_metrics\", \".sublime_session\"];\n var filenames$2 = [\".babelrc\", \".eslintrc.json\", \".jscsrc\", \".jshintrc\", \".jslintrc\", \"jsconfig.json\", \"language-configuration.json\", \"tsconfig.json\"];\n var languageId$d = 423;\n var JSON_with_Comments = {\n name: name$e,\n type: type$d,\n group: group$e,\n tmScope: tmScope$d,\n aceMode: aceMode$d,\n codemirrorMode: codemirrorMode$9,\n codemirrorMimeType: codemirrorMimeType$9,\n aliases: aliases$4,\n extensions: extensions$d,\n filenames: filenames$2,\n languageId: languageId$d\n };\n var JSON_with_Comments$1 =\n /*#__PURE__*/\n Object.freeze({\n __proto__: null,\n name: name$e,\n type: type$d,\n group: group$e,\n tmScope: tmScope$d,\n aceMode: aceMode$d,\n codemirrorMode: codemirrorMode$9,\n codemirrorMimeType: codemirrorMimeType$9,\n aliases: aliases$4,\n extensions: extensions$d,\n filenames: filenames$2,\n languageId: languageId$d,\n 'default': JSON_with_Comments\n });\n var name$f = \"JSON5\";\n var type$e = \"data\";\n var extensions$e = [\".json5\"];\n var tmScope$e = \"source.js\";\n var aceMode$e = \"javascript\";\n var codemirrorMode$a = \"javascript\";\n var codemirrorMimeType$a = \"application/json\";\n var languageId$e = 175;\n var JSON5 = {\n name: name$f,\n type: type$e,\n extensions: extensions$e,\n tmScope: tmScope$e,\n aceMode: aceMode$e,\n codemirrorMode: codemirrorMode$a,\n codemirrorMimeType: codemirrorMimeType$a,\n languageId: languageId$e\n };\n var JSON5$1 =\n /*#__PURE__*/\n Object.freeze({\n __proto__: null,\n name: name$f,\n type: type$e,\n extensions: extensions$e,\n tmScope: tmScope$e,\n aceMode: aceMode$e,\n codemirrorMode: codemirrorMode$a,\n codemirrorMimeType: codemirrorMimeType$a,\n languageId: languageId$e,\n 'default': JSON5\n });\n var require$$0$6 = getCjsExportFromNamespace(JavaScript$1);\n var require$$1$2 = getCjsExportFromNamespace(JSX$1);\n var require$$2$1 = getCjsExportFromNamespace(TypeScript$1);\n var require$$3$1 = getCjsExportFromNamespace(TSX$1);\n var require$$4 = getCjsExportFromNamespace(_JSON$1);\n var require$$5 = getCjsExportFromNamespace(JSON_with_Comments$1);\n var require$$6 = getCjsExportFromNamespace(JSON5$1);\n var languages$4 = [createLanguage(require$$0$6, function (data) {\n return Object.assign(data, {\n since: \"0.0.0\",\n parsers: [\"babel\", \"flow\"],\n vscodeLanguageIds: [\"javascript\", \"mongo\"],\n interpreters: data.interpreters.concat([\"nodejs\"])\n });\n }), createLanguage(require$$0$6, function (data) {\n return Object.assign(data, {\n name: \"Flow\",\n since: \"0.0.0\",\n parsers: [\"babel\", \"flow\"],\n vscodeLanguageIds: [\"javascript\"],\n aliases: [],\n filenames: [],\n extensions: [\".js.flow\"]\n });\n }), createLanguage(require$$1$2, function (data) {\n return Object.assign(data, {\n since: \"0.0.0\",\n parsers: [\"babel\", \"flow\"],\n vscodeLanguageIds: [\"javascriptreact\"]\n });\n }), createLanguage(require$$2$1, function (data) {\n return Object.assign(data, {\n since: \"1.4.0\",\n parsers: [\"typescript\"],\n vscodeLanguageIds: [\"typescript\"]\n });\n }), createLanguage(require$$3$1, function (data) {\n return Object.assign(data, {\n since: \"1.4.0\",\n parsers: [\"typescript\"],\n vscodeLanguageIds: [\"typescriptreact\"]\n });\n }), createLanguage(require$$4, function (data) {\n return Object.assign(data, {\n name: \"JSON.stringify\",\n since: \"1.13.0\",\n parsers: [\"json-stringify\"],\n vscodeLanguageIds: [\"json\"],\n extensions: [],\n // .json file defaults to json instead of json-stringify\n filenames: [\"package.json\", \"package-lock.json\", \"composer.json\"]\n });\n }), createLanguage(require$$4, function (data) {\n return Object.assign(data, {\n since: \"1.5.0\",\n parsers: [\"json\"],\n vscodeLanguageIds: [\"json\"],\n filenames: data.filenames.concat([\".prettierrc\"])\n });\n }), createLanguage(require$$5, function (data) {\n return Object.assign(data, {\n since: \"1.5.0\",\n parsers: [\"json\"],\n vscodeLanguageIds: [\"jsonc\"],\n filenames: data.filenames.concat([\".eslintrc\"])\n });\n }), createLanguage(require$$6, function (data) {\n return Object.assign(data, {\n since: \"1.13.0\",\n parsers: [\"json5\"],\n vscodeLanguageIds: [\"json5\"]\n });\n })];\n var printers$4 = {\n estree: printerEstree,\n \"estree-json\": printerEstreeJson\n };\n var languageJs = {\n languages: languages$4,\n options: options$5,\n printers: printers$4\n };\n var json$1 = {\n \"cjkPattern\": \"[\\\\u02ea-\\\\u02eb\\\\u1100-\\\\u11ff\\\\u2e80-\\\\u2e99\\\\u2e9b-\\\\u2ef3\\\\u2f00-\\\\u2fd5\\\\u3000-\\\\u303f\\\\u3041-\\\\u3096\\\\u3099-\\\\u309f\\\\u30a1-\\\\u30fa\\\\u30fc-\\\\u30ff\\\\u3105-\\\\u312f\\\\u3131-\\\\u318e\\\\u3190-\\\\u3191\\\\u3196-\\\\u31ba\\\\u31c0-\\\\u31e3\\\\u31f0-\\\\u321e\\\\u322a-\\\\u3247\\\\u3260-\\\\u327e\\\\u328a-\\\\u32b0\\\\u32c0-\\\\u32cb\\\\u32d0-\\\\u3370\\\\u337b-\\\\u337f\\\\u33e0-\\\\u33fe\\\\u3400-\\\\u4db5\\\\u4e00-\\\\u9fef\\\\ua960-\\\\ua97c\\\\uac00-\\\\ud7a3\\\\ud7b0-\\\\ud7c6\\\\ud7cb-\\\\ud7fb\\\\uf900-\\\\ufa6d\\\\ufa70-\\\\ufad9\\\\ufe10-\\\\ufe1f\\\\ufe30-\\\\ufe6f\\\\uff00-\\\\uffef]|[\\\\ud840-\\\\ud868\\\\ud86a-\\\\ud86c\\\\ud86f-\\\\ud872\\\\ud874-\\\\ud879][\\\\udc00-\\\\udfff]|\\\\ud82c[\\\\udc00-\\\\udd1e\\\\udd50-\\\\udd52\\\\udd64-\\\\udd67]|\\\\ud83c[\\\\ude00\\\\ude50-\\\\ude51]|\\\\ud869[\\\\udc00-\\\\uded6\\\\udf00-\\\\udfff]|\\\\ud86d[\\\\udc00-\\\\udf34\\\\udf40-\\\\udfff]|\\\\ud86e[\\\\udc00-\\\\udc1d\\\\udc20-\\\\udfff]|\\\\ud873[\\\\udc00-\\\\udea1\\\\udeb0-\\\\udfff]|\\\\ud87a[\\\\udc00-\\\\udfe0]|\\\\ud87e[\\\\udc00-\\\\ude1d]\",\n \"kPattern\": \"[\\\\u1100-\\\\u11ff\\\\u3001-\\\\u3003\\\\u3008-\\\\u3011\\\\u3013-\\\\u301f\\\\u302e-\\\\u3030\\\\u3037\\\\u30fb\\\\u3131-\\\\u318e\\\\u3200-\\\\u321e\\\\u3260-\\\\u327e\\\\ua960-\\\\ua97c\\\\uac00-\\\\ud7a3\\\\ud7b0-\\\\ud7c6\\\\ud7cb-\\\\ud7fb\\\\ufe45-\\\\ufe46\\\\uff61-\\\\uff65\\\\uffa0-\\\\uffbe\\\\uffc2-\\\\uffc7\\\\uffca-\\\\uffcf\\\\uffd2-\\\\uffd7\\\\uffda-\\\\uffdc]\",\n \"punctuationPattern\": \"[\\\\u0021-\\\\u002f\\\\u003a-\\\\u0040\\\\u005b-\\\\u0060\\\\u007b-\\\\u007e\\\\u00a1\\\\u00a7\\\\u00ab\\\\u00b6-\\\\u00b7\\\\u00bb\\\\u00bf\\\\u037e\\\\u0387\\\\u055a-\\\\u055f\\\\u0589-\\\\u058a\\\\u05be\\\\u05c0\\\\u05c3\\\\u05c6\\\\u05f3-\\\\u05f4\\\\u0609-\\\\u060a\\\\u060c-\\\\u060d\\\\u061b\\\\u061e-\\\\u061f\\\\u066a-\\\\u066d\\\\u06d4\\\\u0700-\\\\u070d\\\\u07f7-\\\\u07f9\\\\u0830-\\\\u083e\\\\u085e\\\\u0964-\\\\u0965\\\\u0970\\\\u09fd\\\\u0a76\\\\u0af0\\\\u0c77\\\\u0c84\\\\u0df4\\\\u0e4f\\\\u0e5a-\\\\u0e5b\\\\u0f04-\\\\u0f12\\\\u0f14\\\\u0f3a-\\\\u0f3d\\\\u0f85\\\\u0fd0-\\\\u0fd4\\\\u0fd9-\\\\u0fda\\\\u104a-\\\\u104f\\\\u10fb\\\\u1360-\\\\u1368\\\\u1400\\\\u166e\\\\u169b-\\\\u169c\\\\u16eb-\\\\u16ed\\\\u1735-\\\\u1736\\\\u17d4-\\\\u17d6\\\\u17d8-\\\\u17da\\\\u1800-\\\\u180a\\\\u1944-\\\\u1945\\\\u1a1e-\\\\u1a1f\\\\u1aa0-\\\\u1aa6\\\\u1aa8-\\\\u1aad\\\\u1b5a-\\\\u1b60\\\\u1bfc-\\\\u1bff\\\\u1c3b-\\\\u1c3f\\\\u1c7e-\\\\u1c7f\\\\u1cc0-\\\\u1cc7\\\\u1cd3\\\\u2010-\\\\u2027\\\\u2030-\\\\u2043\\\\u2045-\\\\u2051\\\\u2053-\\\\u205e\\\\u207d-\\\\u207e\\\\u208d-\\\\u208e\\\\u2308-\\\\u230b\\\\u2329-\\\\u232a\\\\u2768-\\\\u2775\\\\u27c5-\\\\u27c6\\\\u27e6-\\\\u27ef\\\\u2983-\\\\u2998\\\\u29d8-\\\\u29db\\\\u29fc-\\\\u29fd\\\\u2cf9-\\\\u2cfc\\\\u2cfe-\\\\u2cff\\\\u2d70\\\\u2e00-\\\\u2e2e\\\\u2e30-\\\\u2e4f\\\\u3001-\\\\u3003\\\\u3008-\\\\u3011\\\\u3014-\\\\u301f\\\\u3030\\\\u303d\\\\u30a0\\\\u30fb\\\\ua4fe-\\\\ua4ff\\\\ua60d-\\\\ua60f\\\\ua673\\\\ua67e\\\\ua6f2-\\\\ua6f7\\\\ua874-\\\\ua877\\\\ua8ce-\\\\ua8cf\\\\ua8f8-\\\\ua8fa\\\\ua8fc\\\\ua92e-\\\\ua92f\\\\ua95f\\\\ua9c1-\\\\ua9cd\\\\ua9de-\\\\ua9df\\\\uaa5c-\\\\uaa5f\\\\uaade-\\\\uaadf\\\\uaaf0-\\\\uaaf1\\\\uabeb\\\\ufd3e-\\\\ufd3f\\\\ufe10-\\\\ufe19\\\\ufe30-\\\\ufe52\\\\ufe54-\\\\ufe61\\\\ufe63\\\\ufe68\\\\ufe6a-\\\\ufe6b\\\\uff01-\\\\uff03\\\\uff05-\\\\uff0a\\\\uff0c-\\\\uff0f\\\\uff1a-\\\\uff1b\\\\uff1f-\\\\uff20\\\\uff3b-\\\\uff3d\\\\uff3f\\\\uff5b\\\\uff5d\\\\uff5f-\\\\uff65]|\\\\ud800[\\\\udd00-\\\\udd02\\\\udf9f\\\\udfd0]|\\\\ud801[\\\\udd6f]|\\\\ud802[\\\\udc57\\\\udd1f\\\\udd3f\\\\ude50-\\\\ude58\\\\ude7f\\\\udef0-\\\\udef6\\\\udf39-\\\\udf3f\\\\udf99-\\\\udf9c]|\\\\ud803[\\\\udf55-\\\\udf59]|\\\\ud804[\\\\udc47-\\\\udc4d\\\\udcbb-\\\\udcbc\\\\udcbe-\\\\udcc1\\\\udd40-\\\\udd43\\\\udd74-\\\\udd75\\\\uddc5-\\\\uddc8\\\\uddcd\\\\udddb\\\\udddd-\\\\udddf\\\\ude38-\\\\ude3d\\\\udea9]|\\\\ud805[\\\\udc4b-\\\\udc4f\\\\udc5b\\\\udc5d\\\\udcc6\\\\uddc1-\\\\uddd7\\\\ude41-\\\\ude43\\\\ude60-\\\\ude6c\\\\udf3c-\\\\udf3e]|\\\\ud806[\\\\udc3b\\\\udde2\\\\ude3f-\\\\ude46\\\\ude9a-\\\\ude9c\\\\ude9e-\\\\udea2]|\\\\ud807[\\\\udc41-\\\\udc45\\\\udc70-\\\\udc71\\\\udef7-\\\\udef8\\\\udfff]|\\\\ud809[\\\\udc70-\\\\udc74]|\\\\ud81a[\\\\ude6e-\\\\ude6f\\\\udef5\\\\udf37-\\\\udf3b\\\\udf44]|\\\\ud81b[\\\\ude97-\\\\ude9a\\\\udfe2]|\\\\ud82f[\\\\udc9f]|\\\\ud836[\\\\ude87-\\\\ude8b]|\\\\ud83a[\\\\udd5e-\\\\udd5f]\"\n };\n var cjkPattern = json$1.cjkPattern,\n kPattern = json$1.kPattern,\n punctuationPattern = json$1.punctuationPattern;\n var getLast$3 = util.getLast;\n var INLINE_NODE_TYPES = [\"liquidNode\", \"inlineCode\", \"emphasis\", \"strong\", \"delete\", \"link\", \"linkReference\", \"image\", \"imageReference\", \"footnote\", \"footnoteReference\", \"sentence\", \"whitespace\", \"word\", \"break\", \"inlineMath\"];\n var INLINE_NODE_WRAPPER_TYPES = INLINE_NODE_TYPES.concat([\"tableCell\", \"paragraph\", \"heading\"]);\n var kRegex = new RegExp(kPattern);\n var punctuationRegex = new RegExp(punctuationPattern);\n /**\n * split text into whitespaces and words\n * @param {string} text\n * @return {Array<{ type: \"whitespace\", value: \" \" | \"\\n\" | \"\" } | { type: \"word\", value: string }>}\n */\n\n function splitText(text, options) {\n var KIND_NON_CJK = \"non-cjk\";\n var KIND_CJ_LETTER = \"cj-letter\";\n var KIND_K_LETTER = \"k-letter\";\n var KIND_CJK_PUNCTUATION = \"cjk-punctuation\";\n var nodes = [];\n (options.proseWrap === \"preserve\" ? text : text.replace(new RegExp(\"(\".concat(cjkPattern, \")\\n(\").concat(cjkPattern, \")\"), \"g\"), \"$1$2\")).split(/([ \\t\\n]+)/).forEach(function (token, index, tokens) {\n // whitespace\n if (index % 2 === 1) {\n nodes.push({\n type: \"whitespace\",\n value: /\\n/.test(token) ? \"\\n\" : \" \"\n });\n return;\n } // word separated by whitespace\n\n\n if ((index === 0 || index === tokens.length - 1) && token === \"\") {\n return;\n }\n\n token.split(new RegExp(\"(\".concat(cjkPattern, \")\"))).forEach(function (innerToken, innerIndex, innerTokens) {\n if ((innerIndex === 0 || innerIndex === innerTokens.length - 1) && innerToken === \"\") {\n return;\n } // non-CJK word\n\n\n if (innerIndex % 2 === 0) {\n if (innerToken !== \"\") {\n appendNode({\n type: \"word\",\n value: innerToken,\n kind: KIND_NON_CJK,\n hasLeadingPunctuation: punctuationRegex.test(innerToken[0]),\n hasTrailingPunctuation: punctuationRegex.test(getLast$3(innerToken))\n });\n }\n\n return;\n } // CJK character\n\n\n appendNode(punctuationRegex.test(innerToken) ? {\n type: \"word\",\n value: innerToken,\n kind: KIND_CJK_PUNCTUATION,\n hasLeadingPunctuation: true,\n hasTrailingPunctuation: true\n } : {\n type: \"word\",\n value: innerToken,\n kind: kRegex.test(innerToken) ? KIND_K_LETTER : KIND_CJ_LETTER,\n hasLeadingPunctuation: false,\n hasTrailingPunctuation: false\n });\n });\n });\n return nodes;\n\n function appendNode(node) {\n var lastNode = getLast$3(nodes);\n\n if (lastNode && lastNode.type === \"word\") {\n if (lastNode.kind === KIND_NON_CJK && node.kind === KIND_CJ_LETTER && !lastNode.hasTrailingPunctuation || lastNode.kind === KIND_CJ_LETTER && node.kind === KIND_NON_CJK && !node.hasLeadingPunctuation) {\n nodes.push({\n type: \"whitespace\",\n value: \" \"\n });\n } else if (!isBetween(KIND_NON_CJK, KIND_CJK_PUNCTUATION) && // disallow leading/trailing full-width whitespace\n ![lastNode.value, node.value].some(function (value) {\n return /\\u3000/.test(value);\n })) {\n nodes.push({\n type: \"whitespace\",\n value: \"\"\n });\n }\n }\n\n nodes.push(node);\n\n function isBetween(kind1, kind2) {\n return lastNode.kind === kind1 && node.kind === kind2 || lastNode.kind === kind2 && node.kind === kind1;\n }\n }\n }\n\n function getOrderedListItemInfo(orderListItem, originalText) {\n var _originalText$slice$m = originalText.slice(orderListItem.position.start.offset, orderListItem.position.end.offset).match(/^\\s*(\\d+)(\\.|\\))(\\s*)/),\n _originalText$slice$m2 = _slicedToArray(_originalText$slice$m, 4),\n numberText = _originalText$slice$m2[1],\n marker = _originalText$slice$m2[2],\n leadingSpaces = _originalText$slice$m2[3];\n\n return {\n numberText: numberText,\n marker: marker,\n leadingSpaces: leadingSpaces\n };\n } // workaround for https://github.com/remarkjs/remark/issues/351\n // leading and trailing newlines are stripped by remark\n\n\n function getFencedCodeBlockValue(node, originalText) {\n var text = originalText.slice(node.position.start.offset, node.position.end.offset);\n var leadingSpaceCount = text.match(/^\\s*/)[0].length;\n var replaceRegex = new RegExp(\"^\\\\s{0,\".concat(leadingSpaceCount, \"}\"));\n var lineContents = text.split(\"\\n\");\n var markerStyle = text[leadingSpaceCount]; // ` or ~\n\n var marker = text.slice(leadingSpaceCount).match(new RegExp(\"^[\".concat(markerStyle, \"]+\")))[0]; // https://spec.commonmark.org/0.28/#example-104: Closing fences may be indented by 0-3 spaces\n // https://spec.commonmark.org/0.28/#example-93: The closing code fence must be at least as long as the opening fence\n\n var hasEndMarker = new RegExp(\"^\\\\s{0,3}\".concat(marker)).test(lineContents[lineContents.length - 1].slice(getIndent(lineContents.length - 1)));\n return lineContents.slice(1, hasEndMarker ? -1 : undefined).map(function (x, i) {\n return x.slice(getIndent(i + 1)).replace(replaceRegex, \"\");\n }).join(\"\\n\");\n\n function getIndent(lineIndex) {\n return node.position.indent[lineIndex - 1] - 1;\n }\n }\n\n function mapAst(ast, handler) {\n return function preorder(node, index, parentStack) {\n parentStack = parentStack || [];\n var newNode = handler(node, index, parentStack);\n\n if (Array.isArray(newNode)) {\n return newNode;\n }\n\n newNode = Object.assign({}, newNode);\n\n if (newNode.children) {\n newNode.children = newNode.children.reduce(function (nodes, child, index) {\n var newNodes = preorder(child, index, [newNode].concat(parentStack));\n\n if (!Array.isArray(newNodes)) {\n newNodes = [newNodes];\n }\n\n nodes.push.apply(nodes, newNodes);\n return nodes;\n }, []);\n }\n\n return newNode;\n }(ast, null, null);\n }\n\n var utils$5 = {\n mapAst: mapAst,\n splitText: splitText,\n punctuationPattern: punctuationPattern,\n getFencedCodeBlockValue: getFencedCodeBlockValue,\n getOrderedListItemInfo: getOrderedListItemInfo,\n INLINE_NODE_TYPES: INLINE_NODE_TYPES,\n INLINE_NODE_WRAPPER_TYPES: INLINE_NODE_WRAPPER_TYPES\n };\n var _require$$0$builders$8 = doc.builders,\n hardline$b = _require$$0$builders$8.hardline,\n literalline$5 = _require$$0$builders$8.literalline,\n concat$f = _require$$0$builders$8.concat,\n markAsRoot$3 = _require$$0$builders$8.markAsRoot,\n mapDoc$6 = doc.utils.mapDoc;\n var getFencedCodeBlockValue$1 = utils$5.getFencedCodeBlockValue;\n\n function embed$4(path, print, textToDoc, options) {\n var node = path.getValue();\n\n if (node.type === \"code\" && node.lang !== null) {\n // only look for the first string so as to support [markdown-preview-enhanced](https://shd101wyy.github.io/markdown-preview-enhanced/#/code-chunk)\n var langMatch = node.lang.match(/^[A-Za-z0-9_-]+/);\n var lang = langMatch ? langMatch[0] : \"\";\n var parser = getParserName(lang);\n\n if (parser) {\n var styleUnit = options.__inJsTemplate ? \"~\" : \"`\";\n var style = styleUnit.repeat(Math.max(3, util.getMaxContinuousCount(node.value, styleUnit) + 1));\n var doc = textToDoc(getFencedCodeBlockValue$1(node, options.originalText), {\n parser: parser\n });\n return markAsRoot$3(concat$f([style, node.lang, hardline$b, replaceNewlinesWithLiterallines(doc), style]));\n }\n }\n\n if (node.type === \"yaml\") {\n return markAsRoot$3(concat$f([\"---\", hardline$b, node.value && node.value.trim() ? replaceNewlinesWithLiterallines(textToDoc(node.value, {\n parser: \"yaml\"\n })) : \"\", \"---\"]));\n } // MDX\n\n\n switch (node.type) {\n case \"importExport\":\n return textToDoc(node.value, {\n parser: \"babel\"\n });\n\n case \"jsx\":\n return textToDoc(node.value, {\n parser: \"__js_expression\"\n });\n }\n\n return null;\n\n function getParserName(lang) {\n var supportInfo = support.getSupportInfo(null, {\n plugins: options.plugins\n });\n var language = supportInfo.languages.find(function (language) {\n return language.name.toLowerCase() === lang || language.aliases && language.aliases.indexOf(lang) !== -1 || language.extensions && language.extensions.find(function (ext) {\n return ext.substring(1) === lang;\n });\n });\n\n if (language) {\n return language.parsers[0];\n }\n\n return null;\n }\n\n function replaceNewlinesWithLiterallines(doc) {\n return mapDoc$6(doc, function (currentDoc) {\n return typeof currentDoc === \"string\" && currentDoc.includes(\"\\n\") ? concat$f(currentDoc.split(/(\\n)/g).map(function (v, i) {\n return i % 2 === 0 ? v : literalline$5;\n })) : currentDoc;\n });\n }\n }\n\n var embed_1$2 = embed$4;\n var pragmas = [\"format\", \"prettier\"];\n\n function startWithPragma(text) {\n var pragma = \"@(\".concat(pragmas.join(\"|\"), \")\");\n var regex = new RegExp([\"\"), \"\")].join(\"|\"), \"m\");\n var matched = text.match(regex);\n return matched && matched.index === 0;\n }\n\n var pragma$4 = {\n startWithPragma: startWithPragma,\n hasPragma: function hasPragma(text) {\n return startWithPragma(frontMatter(text).content.trimLeft());\n },\n insertPragma: function insertPragma(text) {\n var extracted = frontMatter(text);\n var pragma = \"\");\n return extracted.frontMatter ? \"\".concat(extracted.frontMatter.raw, \"\\n\\n\").concat(pragma, \"\\n\\n\").concat(extracted.content) : \"\".concat(pragma, \"\\n\\n\").concat(extracted.content);\n }\n };\n var getOrderedListItemInfo$1 = utils$5.getOrderedListItemInfo,\n mapAst$1 = utils$5.mapAst,\n splitText$1 = utils$5.splitText; // 0x0 ~ 0x10ffff\n // eslint-disable-next-line no-control-regex\n\n var isSingleCharRegex = /^([\\u0000-\\uffff]|[\\ud800-\\udbff][\\udc00-\\udfff])$/;\n\n function preprocess$2(ast, options) {\n ast = restoreUnescapedCharacter(ast, options);\n ast = mergeContinuousTexts(ast);\n ast = transformInlineCode(ast);\n ast = transformIndentedCodeblockAndMarkItsParentList(ast, options);\n ast = markAlignedList(ast, options);\n ast = splitTextIntoSentences(ast, options);\n ast = transformImportExport(ast);\n ast = mergeContinuousImportExport(ast);\n return ast;\n }\n\n function transformImportExport(ast) {\n return mapAst$1(ast, function (node) {\n if (node.type !== \"import\" && node.type !== \"export\") {\n return node;\n }\n\n return Object.assign({}, node, {\n type: \"importExport\"\n });\n });\n }\n\n function transformInlineCode(ast) {\n return mapAst$1(ast, function (node) {\n if (node.type !== \"inlineCode\") {\n return node;\n }\n\n return Object.assign({}, node, {\n value: node.value.replace(/\\s+/g, \" \")\n });\n });\n }\n\n function restoreUnescapedCharacter(ast, options) {\n return mapAst$1(ast, function (node) {\n return node.type !== \"text\" ? node : Object.assign({}, node, {\n value: node.value !== \"*\" && node.value !== \"_\" && node.value !== \"$\" && // handle these cases in printer\n isSingleCharRegex.test(node.value) && node.position.end.offset - node.position.start.offset !== node.value.length ? options.originalText.slice(node.position.start.offset, node.position.end.offset) : node.value\n });\n });\n }\n\n function mergeContinuousImportExport(ast) {\n return mergeChildren(ast, function (prevNode, node) {\n return prevNode.type === \"importExport\" && node.type === \"importExport\";\n }, function (prevNode, node) {\n return {\n type: \"importExport\",\n value: prevNode.value + \"\\n\\n\" + node.value,\n position: {\n start: prevNode.position.start,\n end: node.position.end\n }\n };\n });\n }\n\n function mergeChildren(ast, shouldMerge, mergeNode) {\n return mapAst$1(ast, function (node) {\n if (!node.children) {\n return node;\n }\n\n var children = node.children.reduce(function (current, child) {\n var lastChild = current[current.length - 1];\n\n if (lastChild && shouldMerge(lastChild, child)) {\n current.splice(-1, 1, mergeNode(lastChild, child));\n } else {\n current.push(child);\n }\n\n return current;\n }, []);\n return Object.assign({}, node, {\n children: children\n });\n });\n }\n\n function mergeContinuousTexts(ast) {\n return mergeChildren(ast, function (prevNode, node) {\n return prevNode.type === \"text\" && node.type === \"text\";\n }, function (prevNode, node) {\n return {\n type: \"text\",\n value: prevNode.value + node.value,\n position: {\n start: prevNode.position.start,\n end: node.position.end\n }\n };\n });\n }\n\n function splitTextIntoSentences(ast, options) {\n return mapAst$1(ast, function (node, index, _ref) {\n var _ref2 = _slicedToArray(_ref, 1),\n parentNode = _ref2[0];\n\n if (node.type !== \"text\") {\n return node;\n }\n\n var value = node.value;\n\n if (parentNode.type === \"paragraph\") {\n if (index === 0) {\n value = value.trimLeft();\n }\n\n if (index === parentNode.children.length - 1) {\n value = value.trimRight();\n }\n }\n\n return {\n type: \"sentence\",\n position: node.position,\n children: splitText$1(value, options)\n };\n });\n }\n\n function transformIndentedCodeblockAndMarkItsParentList(ast, options) {\n return mapAst$1(ast, function (node, index, parentStack) {\n if (node.type === \"code\") {\n // the first char may point to `\\n`, e.g. `\\n\\t\\tbar`, just ignore it\n var isIndented = /^\\n?( {4,}|\\t)/.test(options.originalText.slice(node.position.start.offset, node.position.end.offset));\n node.isIndented = isIndented;\n\n if (isIndented) {\n for (var i = 0; i < parentStack.length; i++) {\n var parent = parentStack[i]; // no need to check checked items\n\n if (parent.hasIndentedCodeblock) {\n break;\n }\n\n if (parent.type === \"list\") {\n parent.hasIndentedCodeblock = true;\n }\n }\n }\n }\n\n return node;\n });\n }\n\n function markAlignedList(ast, options) {\n return mapAst$1(ast, function (node, index, parentStack) {\n if (node.type === \"list\" && node.children.length !== 0) {\n // if one of its parents is not aligned, it's not possible to be aligned in sub-lists\n for (var i = 0; i < parentStack.length; i++) {\n var parent = parentStack[i];\n\n if (parent.type === \"list\" && !parent.isAligned) {\n node.isAligned = false;\n return node;\n }\n }\n\n node.isAligned = isAligned(node);\n }\n\n return node;\n });\n\n function getListItemStart(listItem) {\n return listItem.children.length === 0 ? -1 : listItem.children[0].position.start.column - 1;\n }\n\n function isAligned(list) {\n if (!list.ordered) {\n /**\n * - 123\n * - 123\n */\n return true;\n }\n\n var _list$children = _slicedToArray(list.children, 2),\n firstItem = _list$children[0],\n secondItem = _list$children[1];\n\n var firstInfo = getOrderedListItemInfo$1(firstItem, options.originalText);\n\n if (firstInfo.leadingSpaces.length > 1) {\n /**\n * 1. 123\n *\n * 1. 123\n * 1. 123\n */\n return true;\n }\n\n var firstStart = getListItemStart(firstItem);\n\n if (firstStart === -1) {\n /**\n * 1.\n *\n * 1.\n * 1.\n */\n return false;\n }\n\n if (list.children.length === 1) {\n /**\n * aligned:\n *\n * 11. 123\n *\n * not aligned:\n *\n * 1. 123\n */\n return firstStart % options.tabWidth === 0;\n }\n\n var secondStart = getListItemStart(secondItem);\n\n if (firstStart !== secondStart) {\n /**\n * 11. 123\n * 1. 123\n *\n * 1. 123\n * 11. 123\n */\n return false;\n }\n\n if (firstStart % options.tabWidth === 0) {\n /**\n * 11. 123\n * 12. 123\n */\n return true;\n }\n /**\n * aligned:\n *\n * 11. 123\n * 1. 123\n *\n * not aligned:\n *\n * 1. 123\n * 2. 123\n */\n\n\n var secondInfo = getOrderedListItemInfo$1(secondItem, options.originalText);\n return secondInfo.leadingSpaces.length > 1;\n }\n }\n\n var preprocess_1$2 = preprocess$2;\n var _require$$0$builders$9 = doc.builders,\n breakParent$4 = _require$$0$builders$9.breakParent,\n concat$g = _require$$0$builders$9.concat,\n join$b = _require$$0$builders$9.join,\n line$8 = _require$$0$builders$9.line,\n literalline$6 = _require$$0$builders$9.literalline,\n markAsRoot$4 = _require$$0$builders$9.markAsRoot,\n hardline$c = _require$$0$builders$9.hardline,\n softline$7 = _require$$0$builders$9.softline,\n ifBreak$7 = _require$$0$builders$9.ifBreak,\n fill$5 = _require$$0$builders$9.fill,\n align$2 = _require$$0$builders$9.align,\n indent$9 = _require$$0$builders$9.indent,\n group$f = _require$$0$builders$9.group,\n mapDoc$7 = doc.utils.mapDoc,\n printDocToString$2 = doc.printer.printDocToString;\n var getFencedCodeBlockValue$2 = utils$5.getFencedCodeBlockValue,\n getOrderedListItemInfo$2 = utils$5.getOrderedListItemInfo,\n splitText$2 = utils$5.splitText,\n punctuationPattern$1 = utils$5.punctuationPattern,\n INLINE_NODE_TYPES$1 = utils$5.INLINE_NODE_TYPES,\n INLINE_NODE_WRAPPER_TYPES$1 = utils$5.INLINE_NODE_WRAPPER_TYPES;\n var replaceEndOfLineWith$2 = util.replaceEndOfLineWith;\n var TRAILING_HARDLINE_NODES = [\"importExport\"];\n var SINGLE_LINE_NODE_TYPES = [\"heading\", \"tableCell\", \"link\"];\n var SIBLING_NODE_TYPES = [\"listItem\", \"definition\", \"footnoteDefinition\", \"jsx\"];\n\n function genericPrint$5(path, options, print) {\n var node = path.getValue();\n\n if (shouldRemainTheSameContent(path)) {\n return concat$g(splitText$2(options.originalText.slice(node.position.start.offset, node.position.end.offset), options).map(function (node) {\n return node.type === \"word\" ? node.value : node.value === \"\" ? \"\" : printLine(path, node.value, options);\n }));\n }\n\n switch (node.type) {\n case \"root\":\n if (node.children.length === 0) {\n return \"\";\n }\n\n return concat$g([normalizeDoc(printRoot(path, options, print)), TRAILING_HARDLINE_NODES.indexOf(getLastDescendantNode(node).type) === -1 ? hardline$c : \"\"]);\n\n case \"paragraph\":\n return printChildren$2(path, options, print, {\n postprocessor: fill$5\n });\n\n case \"sentence\":\n return printChildren$2(path, options, print);\n\n case \"word\":\n return node.value.replace(/[*$]/g, \"\\\\$&\") // escape all `*` and `$` (math)\n .replace(new RegExp([\"(^|\".concat(punctuationPattern$1, \")(_+)\"), \"(_+)(\".concat(punctuationPattern$1, \"|$)\")].join(\"|\"), \"g\"), function (_, text1, underscore1, underscore2, text2) {\n return (underscore1 ? \"\".concat(text1).concat(underscore1) : \"\".concat(underscore2).concat(text2)).replace(/_/g, \"\\\\_\");\n });\n // escape all `_` except concating with non-punctuation, e.g. `1_2_3` is not considered emphasis\n\n case \"whitespace\":\n {\n var parentNode = path.getParentNode();\n var index = parentNode.children.indexOf(node);\n var nextNode = parentNode.children[index + 1];\n var proseWrap = // leading char that may cause different syntax\n nextNode && /^>|^([-+*]|#{1,6}|[0-9]+[.)])$/.test(nextNode.value) ? \"never\" : options.proseWrap;\n return printLine(path, node.value, {\n proseWrap: proseWrap\n });\n }\n\n case \"emphasis\":\n {\n var _parentNode = path.getParentNode();\n\n var _index = _parentNode.children.indexOf(node);\n\n var prevNode = _parentNode.children[_index - 1];\n var _nextNode = _parentNode.children[_index + 1];\n var hasPrevOrNextWord = // `1*2*3` is considered emphasis but `1_2_3` is not\n prevNode && prevNode.type === \"sentence\" && prevNode.children.length > 0 && util.getLast(prevNode.children).type === \"word\" && !util.getLast(prevNode.children).hasTrailingPunctuation || _nextNode && _nextNode.type === \"sentence\" && _nextNode.children.length > 0 && _nextNode.children[0].type === \"word\" && !_nextNode.children[0].hasLeadingPunctuation;\n var style = hasPrevOrNextWord || getAncestorNode$2(path, \"emphasis\") ? \"*\" : \"_\";\n return concat$g([style, printChildren$2(path, options, print), style]);\n }\n\n case \"strong\":\n return concat$g([\"**\", printChildren$2(path, options, print), \"**\"]);\n\n case \"delete\":\n return concat$g([\"~~\", printChildren$2(path, options, print), \"~~\"]);\n\n case \"inlineCode\":\n {\n var backtickCount = util.getMinNotPresentContinuousCount(node.value, \"`\");\n\n var _style = \"`\".repeat(backtickCount || 1);\n\n var gap = backtickCount ? \" \" : \"\";\n return concat$g([_style, gap, node.value, gap, _style]);\n }\n\n case \"link\":\n switch (options.originalText[node.position.start.offset]) {\n case \"<\":\n {\n var mailto = \"mailto:\";\n var url = // is parsed as { url: \"mailto:hello@example.com\" }\n node.url.startsWith(mailto) && options.originalText.slice(node.position.start.offset + 1, node.position.start.offset + 1 + mailto.length) !== mailto ? node.url.slice(mailto.length) : node.url;\n return concat$g([\"<\", url, \">\"]);\n }\n\n case \"[\":\n return concat$g([\"[\", printChildren$2(path, options, print), \"](\", printUrl(node.url, \")\"), printTitle(node.title, options), \")\"]);\n\n default:\n return options.originalText.slice(node.position.start.offset, node.position.end.offset);\n }\n\n case \"image\":\n return concat$g([\"![\", node.alt || \"\", \"](\", printUrl(node.url, \")\"), printTitle(node.title, options), \")\"]);\n\n case \"blockquote\":\n return concat$g([\"> \", align$2(\"> \", printChildren$2(path, options, print))]);\n\n case \"heading\":\n return concat$g([\"#\".repeat(node.depth) + \" \", printChildren$2(path, options, print)]);\n\n case \"code\":\n {\n if (node.isIndented) {\n // indented code block\n var alignment = \" \".repeat(4);\n return align$2(alignment, concat$g([alignment, concat$g(replaceEndOfLineWith$2(node.value, hardline$c))]));\n } // fenced code block\n\n\n var styleUnit = options.__inJsTemplate ? \"~\" : \"`\";\n\n var _style2 = styleUnit.repeat(Math.max(3, util.getMaxContinuousCount(node.value, styleUnit) + 1));\n\n return concat$g([_style2, node.lang || \"\", hardline$c, concat$g(replaceEndOfLineWith$2(getFencedCodeBlockValue$2(node, options.originalText), hardline$c)), hardline$c, _style2]);\n }\n\n case \"yaml\":\n case \"toml\":\n return options.originalText.slice(node.position.start.offset, node.position.end.offset);\n\n case \"html\":\n {\n var _parentNode2 = path.getParentNode();\n\n var value = _parentNode2.type === \"root\" && util.getLast(_parentNode2.children) === node ? node.value.trimRight() : node.value;\n var isHtmlComment = /^$/.test(value);\n return concat$g(replaceEndOfLineWith$2(value, isHtmlComment ? hardline$c : markAsRoot$4(literalline$6)));\n }\n\n case \"list\":\n {\n var nthSiblingIndex = getNthListSiblingIndex(node, path.getParentNode());\n var isGitDiffFriendlyOrderedList = node.ordered && node.children.length > 1 && +getOrderedListItemInfo$2(node.children[1], options.originalText).numberText === 1;\n return printChildren$2(path, options, print, {\n processor: function processor(childPath, index) {\n var prefix = getPrefix();\n return concat$g([prefix, align$2(\" \".repeat(prefix.length), printListItem(childPath, options, print, prefix))]);\n\n function getPrefix() {\n var rawPrefix = node.ordered ? (index === 0 ? node.start : isGitDiffFriendlyOrderedList ? 1 : node.start + index) + (nthSiblingIndex % 2 === 0 ? \". \" : \") \") : nthSiblingIndex % 2 === 0 ? \"- \" : \"* \";\n return node.isAligned ||\n /* workaround for https://github.com/remarkjs/remark/issues/315 */\n node.hasIndentedCodeblock ? alignListPrefix(rawPrefix, options) : rawPrefix;\n }\n }\n });\n }\n\n case \"thematicBreak\":\n {\n var counter = getAncestorCounter$1(path, \"list\");\n\n if (counter === -1) {\n return \"---\";\n }\n\n var _nthSiblingIndex = getNthListSiblingIndex(path.getParentNode(counter), path.getParentNode(counter + 1));\n\n return _nthSiblingIndex % 2 === 0 ? \"***\" : \"---\";\n }\n\n case \"linkReference\":\n return concat$g([\"[\", printChildren$2(path, options, print), \"]\", node.referenceType === \"full\" ? concat$g([\"[\", node.identifier, \"]\"]) : node.referenceType === \"collapsed\" ? \"[]\" : \"\"]);\n\n case \"imageReference\":\n switch (node.referenceType) {\n case \"full\":\n return concat$g([\"![\", node.alt || \"\", \"][\", node.identifier, \"]\"]);\n\n default:\n return concat$g([\"![\", node.alt, \"]\", node.referenceType === \"collapsed\" ? \"[]\" : \"\"]);\n }\n\n case \"definition\":\n {\n var lineOrSpace = options.proseWrap === \"always\" ? line$8 : \" \";\n return group$f(concat$g([concat$g([\"[\", node.identifier, \"]:\"]), indent$9(concat$g([lineOrSpace, printUrl(node.url), node.title === null ? \"\" : concat$g([lineOrSpace, printTitle(node.title, options, false)])]))]));\n }\n\n case \"footnote\":\n return concat$g([\"[^\", printChildren$2(path, options, print), \"]\"]);\n\n case \"footnoteReference\":\n return concat$g([\"[^\", node.identifier, \"]\"]);\n\n case \"footnoteDefinition\":\n {\n var _nextNode2 = path.getParentNode().children[path.getName() + 1];\n var shouldInlineFootnote = node.children.length === 1 && node.children[0].type === \"paragraph\" && (options.proseWrap === \"never\" || options.proseWrap === \"preserve\" && node.children[0].position.start.line === node.children[0].position.end.line);\n return concat$g([\"[^\", node.identifier, \"]: \", shouldInlineFootnote ? printChildren$2(path, options, print) : group$f(concat$g([align$2(\" \".repeat(options.tabWidth), printChildren$2(path, options, print, {\n processor: function processor(childPath, index) {\n return index === 0 ? group$f(concat$g([softline$7, softline$7, childPath.call(print)])) : childPath.call(print);\n }\n })), _nextNode2 && _nextNode2.type === \"footnoteDefinition\" ? softline$7 : \"\"]))]);\n }\n\n case \"table\":\n return printTable(path, options, print);\n\n case \"tableCell\":\n return printChildren$2(path, options, print);\n\n case \"break\":\n return /\\s/.test(options.originalText[node.position.start.offset]) ? concat$g([\" \", markAsRoot$4(literalline$6)]) : concat$g([\"\\\\\", hardline$c]);\n\n case \"liquidNode\":\n return concat$g(replaceEndOfLineWith$2(node.value, hardline$c));\n // MDX\n\n case \"importExport\":\n case \"jsx\":\n return node.value;\n // fallback to the original text if multiparser failed\n\n case \"math\":\n return concat$g([\"$$\", hardline$c, node.value ? concat$g([concat$g(replaceEndOfLineWith$2(node.value, hardline$c)), hardline$c]) : \"\", \"$$\"]);\n\n case \"inlineMath\":\n {\n // remark-math trims content but we don't want to remove whitespaces\n // since it's very possible that it's recognized as math accidentally\n return options.originalText.slice(options.locStart(node), options.locEnd(node));\n }\n\n case \"tableRow\": // handled in \"table\"\n\n case \"listItem\": // handled in \"list\"\n\n default:\n throw new Error(\"Unknown markdown type \".concat(JSON.stringify(node.type)));\n }\n }\n\n function printListItem(path, options, print, listPrefix) {\n var node = path.getValue();\n var prefix = node.checked === null ? \"\" : node.checked ? \"[x] \" : \"[ ] \";\n return concat$g([prefix, printChildren$2(path, options, print, {\n processor: function processor(childPath, index) {\n if (index === 0 && childPath.getValue().type !== \"list\") {\n return align$2(\" \".repeat(prefix.length), childPath.call(print));\n }\n\n var alignment = \" \".repeat(clamp(options.tabWidth - listPrefix.length, 0, 3) // 4+ will cause indented code block\n );\n return concat$g([alignment, align$2(alignment, childPath.call(print))]);\n }\n })]);\n }\n\n function alignListPrefix(prefix, options) {\n var additionalSpaces = getAdditionalSpaces();\n return prefix + \" \".repeat(additionalSpaces >= 4 ? 0 : additionalSpaces // 4+ will cause indented code block\n );\n\n function getAdditionalSpaces() {\n var restSpaces = prefix.length % options.tabWidth;\n return restSpaces === 0 ? 0 : options.tabWidth - restSpaces;\n }\n }\n\n function getNthListSiblingIndex(node, parentNode) {\n return getNthSiblingIndex(node, parentNode, function (siblingNode) {\n return siblingNode.ordered === node.ordered;\n });\n }\n\n function getNthSiblingIndex(node, parentNode, condition) {\n condition = condition || function () {\n return true;\n };\n\n var index = -1;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = parentNode.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var childNode = _step.value;\n\n if (childNode.type === node.type && condition(childNode)) {\n index++;\n } else {\n index = -1;\n }\n\n if (childNode === node) {\n return index;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n\n function getAncestorCounter$1(path, typeOrTypes) {\n var types = [].concat(typeOrTypes);\n var counter = -1;\n var ancestorNode;\n\n while (ancestorNode = path.getParentNode(++counter)) {\n if (types.indexOf(ancestorNode.type) !== -1) {\n return counter;\n }\n }\n\n return -1;\n }\n\n function getAncestorNode$2(path, typeOrTypes) {\n var counter = getAncestorCounter$1(path, typeOrTypes);\n return counter === -1 ? null : path.getParentNode(counter);\n }\n\n function printLine(path, value, options) {\n if (options.proseWrap === \"preserve\" && value === \"\\n\") {\n return hardline$c;\n }\n\n var isBreakable = options.proseWrap === \"always\" && !getAncestorNode$2(path, SINGLE_LINE_NODE_TYPES);\n return value !== \"\" ? isBreakable ? line$8 : \" \" : isBreakable ? softline$7 : \"\";\n }\n\n function printTable(path, options, print) {\n var hardlineWithoutBreakParent = hardline$c.parts[0];\n var node = path.getValue();\n var contents = []; // { [rowIndex: number]: { [columnIndex: number]: string } }\n\n path.map(function (rowPath) {\n var rowContents = [];\n rowPath.map(function (cellPath) {\n rowContents.push(printDocToString$2(cellPath.call(print), options).formatted);\n }, \"children\");\n contents.push(rowContents);\n }, \"children\"); // Get the width of each column\n\n var columnMaxWidths = contents.reduce(function (currentWidths, rowContents) {\n return currentWidths.map(function (width, columnIndex) {\n return Math.max(width, util.getStringWidth(rowContents[columnIndex]));\n });\n }, contents[0].map(function () {\n return 3;\n }) // minimum width = 3 (---, :--, :-:, --:)\n );\n var alignedTable = join$b(hardlineWithoutBreakParent, [printRow(contents[0]), printSeparator(), join$b(hardlineWithoutBreakParent, contents.slice(1).map(function (rowContents) {\n return printRow(rowContents);\n }))]);\n\n if (options.proseWrap !== \"never\") {\n return concat$g([breakParent$4, alignedTable]);\n } // Only if the --prose-wrap never is set and it exceeds the print width.\n\n\n var compactTable = join$b(hardlineWithoutBreakParent, [printRow(contents[0],\n /* isCompact */\n true), printSeparator(\n /* isCompact */\n true), join$b(hardlineWithoutBreakParent, contents.slice(1).map(function (rowContents) {\n return printRow(rowContents,\n /* isCompact */\n true);\n }))]);\n return concat$g([breakParent$4, group$f(ifBreak$7(compactTable, alignedTable))]);\n\n function printSeparator(isCompact) {\n return concat$g([\"| \", join$b(\" | \", columnMaxWidths.map(function (width, index) {\n var spaces = isCompact ? 3 : width;\n\n switch (node.align[index]) {\n case \"left\":\n return \":\" + \"-\".repeat(spaces - 1);\n\n case \"right\":\n return \"-\".repeat(spaces - 1) + \":\";\n\n case \"center\":\n return \":\" + \"-\".repeat(spaces - 2) + \":\";\n\n default:\n return \"-\".repeat(spaces);\n }\n })), \" |\"]);\n }\n\n function printRow(rowContents, isCompact) {\n return concat$g([\"| \", join$b(\" | \", isCompact ? rowContents : rowContents.map(function (rowContent, columnIndex) {\n switch (node.align[columnIndex]) {\n case \"right\":\n return alignRight(rowContent, columnMaxWidths[columnIndex]);\n\n case \"center\":\n return alignCenter(rowContent, columnMaxWidths[columnIndex]);\n\n default:\n return alignLeft(rowContent, columnMaxWidths[columnIndex]);\n }\n })), \" |\"]);\n }\n\n function alignLeft(text, width) {\n var spaces = width - util.getStringWidth(text);\n return concat$g([text, \" \".repeat(spaces)]);\n }\n\n function alignRight(text, width) {\n var spaces = width - util.getStringWidth(text);\n return concat$g([\" \".repeat(spaces), text]);\n }\n\n function alignCenter(text, width) {\n var spaces = width - util.getStringWidth(text);\n var left = Math.floor(spaces / 2);\n var right = spaces - left;\n return concat$g([\" \".repeat(left), text, \" \".repeat(right)]);\n }\n }\n\n function printRoot(path, options, print) {\n /** @typedef {{ index: number, offset: number }} IgnorePosition */\n\n /** @type {Array<{start: IgnorePosition, end: IgnorePosition}>} */\n var ignoreRanges = [];\n /** @type {IgnorePosition | null} */\n\n var ignoreStart = null;\n var children = path.getValue().children;\n children.forEach(function (childNode, index) {\n switch (isPrettierIgnore$1(childNode)) {\n case \"start\":\n if (ignoreStart === null) {\n ignoreStart = {\n index: index,\n offset: childNode.position.end.offset\n };\n }\n\n break;\n\n case \"end\":\n if (ignoreStart !== null) {\n ignoreRanges.push({\n start: ignoreStart,\n end: {\n index: index,\n offset: childNode.position.start.offset\n }\n });\n ignoreStart = null;\n }\n\n break;\n }\n });\n return printChildren$2(path, options, print, {\n processor: function processor(childPath, index) {\n if (ignoreRanges.length !== 0) {\n var ignoreRange = ignoreRanges[0];\n\n if (index === ignoreRange.start.index) {\n return concat$g([children[ignoreRange.start.index].value, options.originalText.slice(ignoreRange.start.offset, ignoreRange.end.offset), children[ignoreRange.end.index].value]);\n }\n\n if (ignoreRange.start.index < index && index < ignoreRange.end.index) {\n return false;\n }\n\n if (index === ignoreRange.end.index) {\n ignoreRanges.shift();\n return false;\n }\n }\n\n return childPath.call(print);\n }\n });\n }\n\n function printChildren$2(path, options, print, events) {\n events = events || {};\n var postprocessor = events.postprocessor || concat$g;\n\n var processor = events.processor || function (childPath) {\n return childPath.call(print);\n };\n\n var node = path.getValue();\n var parts = [];\n var lastChildNode;\n path.map(function (childPath, index) {\n var childNode = childPath.getValue();\n var result = processor(childPath, index);\n\n if (result !== false) {\n var data = {\n parts: parts,\n prevNode: lastChildNode,\n parentNode: node,\n options: options\n };\n\n if (!shouldNotPrePrintHardline(childNode, data)) {\n parts.push(hardline$c);\n\n if (lastChildNode && TRAILING_HARDLINE_NODES.indexOf(lastChildNode.type) !== -1) {\n if (shouldPrePrintTripleHardline(childNode, data)) {\n parts.push(hardline$c);\n }\n } else {\n if (shouldPrePrintDoubleHardline(childNode, data) || shouldPrePrintTripleHardline(childNode, data)) {\n parts.push(hardline$c);\n }\n\n if (shouldPrePrintTripleHardline(childNode, data)) {\n parts.push(hardline$c);\n }\n }\n }\n\n parts.push(result);\n lastChildNode = childNode;\n }\n }, \"children\");\n return postprocessor(parts);\n }\n\n function getLastDescendantNode(node) {\n var current = node;\n\n while (current.children && current.children.length !== 0) {\n current = current.children[current.children.length - 1];\n }\n\n return current;\n }\n /** @return {false | 'next' | 'start' | 'end'} */\n\n\n function isPrettierIgnore$1(node) {\n if (node.type !== \"html\") {\n return false;\n }\n\n var match = node.value.match(/^$/);\n return match === null ? false : match[1] ? match[1] : \"next\";\n }\n\n function isInlineNode(node) {\n return node && INLINE_NODE_TYPES$1.indexOf(node.type) !== -1;\n }\n\n function isEndsWithHardLine(node) {\n return node && /\\n+$/.test(node.value);\n }\n\n function last(nodes) {\n return nodes && nodes[nodes.length - 1];\n }\n\n function shouldNotPrePrintHardline(node, _ref) {\n var parentNode = _ref.parentNode,\n parts = _ref.parts,\n prevNode = _ref.prevNode;\n var isFirstNode = parts.length === 0;\n var isInlineHTML = node.type === \"html\" && INLINE_NODE_WRAPPER_TYPES$1.indexOf(parentNode.type) !== -1;\n var isAfterHardlineNode = prevNode && (isEndsWithHardLine(prevNode) || isEndsWithHardLine(last(prevNode.children)));\n return isFirstNode || isInlineNode(node) || isInlineHTML || isAfterHardlineNode;\n }\n\n function shouldPrePrintDoubleHardline(node, _ref2) {\n var parentNode = _ref2.parentNode,\n prevNode = _ref2.prevNode;\n var prevNodeType = prevNode && prevNode.type;\n var nodeType = node.type;\n var isSequence = prevNodeType === nodeType;\n var isSiblingNode = isSequence && SIBLING_NODE_TYPES.indexOf(nodeType) !== -1;\n var isInTightListItem = parentNode.type === \"listItem\" && !parentNode.loose;\n var isPrevNodeLooseListItem = prevNodeType === \"listItem\" && prevNode.loose;\n var isPrevNodePrettierIgnore = isPrettierIgnore$1(prevNode) === \"next\";\n var isBlockHtmlWithoutBlankLineBetweenPrevHtml = nodeType === \"html\" && prevNodeType === \"html\" && prevNode.position.end.line + 1 === node.position.start.line;\n var isJsxInlineSibling = prevNodeType === \"jsx\" && isInlineNode(node) || nodeType === \"jsx\" && isInlineNode(prevNode);\n return isPrevNodeLooseListItem || !(isSiblingNode || isInTightListItem || isPrevNodePrettierIgnore || isBlockHtmlWithoutBlankLineBetweenPrevHtml || isJsxInlineSibling);\n }\n\n function shouldPrePrintTripleHardline(node, data) {\n var isPrevNodeList = data.prevNode && data.prevNode.type === \"list\";\n var isIndentedCode = node.type === \"code\" && node.isIndented;\n return isPrevNodeList && isIndentedCode;\n }\n\n function shouldRemainTheSameContent(path) {\n var ancestorNode = getAncestorNode$2(path, [\"linkReference\", \"imageReference\"]);\n return ancestorNode && (ancestorNode.type !== \"linkReference\" || ancestorNode.referenceType !== \"full\");\n }\n\n function normalizeDoc(doc) {\n return mapDoc$7(doc, function (currentDoc) {\n if (!currentDoc.parts) {\n return currentDoc;\n }\n\n if (currentDoc.type === \"concat\" && currentDoc.parts.length === 1) {\n return currentDoc.parts[0];\n }\n\n var parts = [];\n currentDoc.parts.forEach(function (part) {\n if (part.type === \"concat\") {\n parts.push.apply(parts, part.parts);\n } else if (part !== \"\") {\n parts.push(part);\n }\n });\n return Object.assign({}, currentDoc, {\n parts: normalizeParts$2(parts)\n });\n });\n }\n\n function printUrl(url, dangerousCharOrChars) {\n var dangerousChars = [\" \"].concat(dangerousCharOrChars || []);\n return new RegExp(dangerousChars.map(function (x) {\n return \"\\\\\".concat(x);\n }).join(\"|\")).test(url) ? \"<\".concat(url, \">\") : url;\n }\n\n function printTitle(title, options, printSpace) {\n if (printSpace == null) {\n printSpace = true;\n }\n\n if (!title) {\n return \"\";\n }\n\n if (printSpace) {\n return \" \" + printTitle(title, options, false);\n }\n\n if (title.includes('\"') && title.includes(\"'\") && !title.includes(\")\")) {\n return \"(\".concat(title, \")\"); // avoid escaped quotes\n } // faster than using RegExps: https://jsperf.com/performance-of-match-vs-split\n\n\n var singleCount = title.split(\"'\").length - 1;\n var doubleCount = title.split('\"').length - 1;\n var quote = singleCount > doubleCount ? '\"' : doubleCount > singleCount ? \"'\" : options.singleQuote ? \"'\" : '\"';\n title = title.replace(new RegExp(\"(\".concat(quote, \")\"), \"g\"), \"\\\\$1\");\n return \"\".concat(quote).concat(title).concat(quote);\n }\n\n function normalizeParts$2(parts) {\n return parts.reduce(function (current, part) {\n var lastPart = util.getLast(current);\n\n if (typeof lastPart === \"string\" && typeof part === \"string\") {\n current.splice(-1, 1, lastPart + part);\n } else {\n current.push(part);\n }\n\n return current;\n }, []);\n }\n\n function clamp(value, min, max) {\n return value < min ? min : value > max ? max : value;\n }\n\n function clean$6(ast, newObj, parent) {\n delete newObj.position;\n delete newObj.raw; // front-matter\n // for codeblock\n\n if (ast.type === \"code\" || ast.type === \"yaml\" || ast.type === \"import\" || ast.type === \"export\" || ast.type === \"jsx\") {\n delete newObj.value;\n }\n\n if (ast.type === \"list\") {\n delete newObj.isAligned;\n } // texts can be splitted or merged\n\n\n if (ast.type === \"text\") {\n return null;\n }\n\n if (ast.type === \"inlineCode\") {\n newObj.value = ast.value.replace(/[ \\t\\n]+/g, \" \");\n } // for insert pragma\n\n\n if (parent && parent.type === \"root\" && parent.children.length > 0 && (parent.children[0] === ast || (parent.children[0].type === \"yaml\" || parent.children[0].type === \"toml\") && parent.children[1] === ast) && ast.type === \"html\" && pragma$4.startWithPragma(ast.value)) {\n return null;\n }\n }\n\n function hasPrettierIgnore$4(path) {\n var index = +path.getName();\n\n if (index === 0) {\n return false;\n }\n\n var prevNode = path.getParentNode().children[index - 1];\n return isPrettierIgnore$1(prevNode) === \"next\";\n }\n\n var printerMarkdown = {\n preprocess: preprocess_1$2,\n print: genericPrint$5,\n embed: embed_1$2,\n massageAstNode: clean$6,\n hasPrettierIgnore: hasPrettierIgnore$4,\n insertPragma: pragma$4.insertPragma\n };\n var options$6 = {\n proseWrap: commonOptions.proseWrap,\n singleQuote: commonOptions.singleQuote\n };\n var name$g = \"Markdown\";\n var type$f = \"prose\";\n var aliases$5 = [\"pandoc\"];\n var aceMode$f = \"markdown\";\n var codemirrorMode$b = \"gfm\";\n var codemirrorMimeType$b = \"text/x-gfm\";\n var wrap = true;\n var extensions$f = [\".md\", \".markdown\", \".mdown\", \".mdwn\", \".mdx\", \".mkd\", \".mkdn\", \".mkdown\", \".ronn\", \".workbook\"];\n var filenames$3 = [\"contents.lr\"];\n var tmScope$f = \"source.gfm\";\n var languageId$f = 222;\n var Markdown = {\n name: name$g,\n type: type$f,\n aliases: aliases$5,\n aceMode: aceMode$f,\n codemirrorMode: codemirrorMode$b,\n codemirrorMimeType: codemirrorMimeType$b,\n wrap: wrap,\n extensions: extensions$f,\n filenames: filenames$3,\n tmScope: tmScope$f,\n languageId: languageId$f\n };\n var Markdown$1 =\n /*#__PURE__*/\n Object.freeze({\n __proto__: null,\n name: name$g,\n type: type$f,\n aliases: aliases$5,\n aceMode: aceMode$f,\n codemirrorMode: codemirrorMode$b,\n codemirrorMimeType: codemirrorMimeType$b,\n wrap: wrap,\n extensions: extensions$f,\n filenames: filenames$3,\n tmScope: tmScope$f,\n languageId: languageId$f,\n 'default': Markdown\n });\n var require$$0$7 = getCjsExportFromNamespace(Markdown$1);\n var languages$5 = [createLanguage(require$$0$7, function (data) {\n return Object.assign(data, {\n since: \"1.8.0\",\n parsers: [\"remark\"],\n vscodeLanguageIds: [\"markdown\"],\n filenames: data.filenames.concat([\"README\"]),\n extensions: data.extensions.filter(function (extension) {\n return extension !== \".mdx\";\n })\n });\n }), createLanguage(require$$0$7, function (data) {\n return Object.assign(data, {\n name: \"MDX\",\n since: \"1.15.0\",\n parsers: [\"mdx\"],\n vscodeLanguageIds: [\"mdx\"],\n filenames: [],\n extensions: [\".mdx\"]\n });\n })];\n var printers$5 = {\n mdast: printerMarkdown\n };\n var languageMarkdown = {\n languages: languages$5,\n options: options$6,\n printers: printers$5\n };\n\n function isPragma(text) {\n return /^\\s*@(prettier|format)\\s*$/.test(text);\n }\n\n function hasPragma$4(text) {\n return /^\\s*#[^\\n\\S]*@(prettier|format)\\s*?(\\n|$)/.test(text);\n }\n\n function insertPragma$8(text) {\n return \"# @format\\n\\n\".concat(text);\n }\n\n var pragma$5 = {\n isPragma: isPragma,\n hasPragma: hasPragma$4,\n insertPragma: insertPragma$8\n };\n var getLast$4 = util.getLast;\n\n function getAncestorCount(path, filter) {\n var counter = 0;\n var pathStackLength = path.stack.length - 1;\n\n for (var i = 0; i < pathStackLength; i++) {\n var value = path.stack[i];\n\n if (isNode(value) && filter(value)) {\n counter++;\n }\n }\n\n return counter;\n }\n /**\n * @param {any} value\n * @param {string[]=} types\n */\n\n\n function isNode(value, types) {\n return value && typeof value.type === \"string\" && (!types || types.indexOf(value.type) !== -1);\n }\n\n function mapNode(node, callback, parent) {\n return callback(\"children\" in node ? Object.assign({}, node, {\n children: node.children.map(function (childNode) {\n return mapNode(childNode, callback, node);\n })\n }) : node, parent);\n }\n\n function defineShortcut(x, key, getter) {\n Object.defineProperty(x, key, {\n get: getter,\n enumerable: false\n });\n }\n\n function isNextLineEmpty$5(node, text) {\n var newlineCount = 0;\n var textLength = text.length;\n\n for (var i = node.position.end.offset - 1; i < textLength; i++) {\n var char = text[i];\n\n if (char === \"\\n\") {\n newlineCount++;\n }\n\n if (newlineCount === 1 && /\\S/.test(char)) {\n return false;\n }\n\n if (newlineCount === 2) {\n return true;\n }\n }\n\n return false;\n }\n\n function isLastDescendantNode(path) {\n var node = path.getValue();\n\n switch (node.type) {\n case \"tag\":\n case \"anchor\":\n case \"comment\":\n return false;\n }\n\n var pathStackLength = path.stack.length;\n\n for (var i = 1; i < pathStackLength; i++) {\n var item = path.stack[i];\n var parentItem = path.stack[i - 1];\n\n if (Array.isArray(parentItem) && typeof item === \"number\" && item !== parentItem.length - 1) {\n return false;\n }\n }\n\n return true;\n }\n\n function getLastDescendantNode$1(node) {\n return \"children\" in node && node.children.length !== 0 ? getLastDescendantNode$1(getLast$4(node.children)) : node;\n }\n\n function isPrettierIgnore$2(comment) {\n return comment.value.trim() === \"prettier-ignore\";\n }\n\n function hasPrettierIgnore$5(path) {\n var node = path.getValue();\n\n if (node.type === \"documentBody\") {\n var document = path.getParentNode();\n return hasEndComments(document.head) && isPrettierIgnore$2(getLast$4(document.head.endComments));\n }\n\n return hasLeadingComments(node) && isPrettierIgnore$2(getLast$4(node.leadingComments));\n }\n\n function isEmptyNode(node) {\n return (!node.children || node.children.length === 0) && !hasComments(node);\n }\n\n function hasComments(node) {\n return hasLeadingComments(node) || hasMiddleComments(node) || hasIndicatorComment(node) || hasTrailingComment$2(node) || hasEndComments(node);\n }\n\n function hasLeadingComments(node) {\n return node && node.leadingComments && node.leadingComments.length !== 0;\n }\n\n function hasMiddleComments(node) {\n return node && node.middleComments && node.middleComments.length !== 0;\n }\n\n function hasIndicatorComment(node) {\n return node && node.indicatorComment;\n }\n\n function hasTrailingComment$2(node) {\n return node && node.trailingComment;\n }\n\n function hasEndComments(node) {\n return node && node.endComments && node.endComments.length !== 0;\n }\n /**\n * \" a b c d e f \" -> [\" a b\", \"c d\", \"e f \"]\n */\n\n\n function splitWithSingleSpace(text) {\n var parts = [];\n var lastPart = undefined;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = text.split(/( +)/g)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var part = _step.value;\n\n if (part !== \" \") {\n if (lastPart === \" \") {\n parts.push(part);\n } else {\n parts.push((parts.pop() || \"\") + part);\n }\n } else if (lastPart === undefined) {\n parts.unshift(\"\");\n }\n\n lastPart = part;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n if (lastPart === \" \") {\n parts.push((parts.pop() || \"\") + \" \");\n }\n\n if (parts[0] === \"\") {\n parts.shift();\n parts.unshift(\" \" + (parts.shift() || \"\"));\n }\n\n return parts;\n }\n\n function getFlowScalarLineContents(nodeType, content, options) {\n var rawLineContents = content.split(\"\\n\").map(function (lineContent, index, lineContents) {\n return index === 0 && index === lineContents.length - 1 ? lineContent : index !== 0 && index !== lineContents.length - 1 ? lineContent.trim() : index === 0 ? lineContent.trimRight() : lineContent.trimLeft();\n });\n\n if (options.proseWrap === \"preserve\") {\n return rawLineContents.map(function (lineContent) {\n return lineContent.length === 0 ? [] : [lineContent];\n });\n }\n\n return rawLineContents.map(function (lineContent) {\n return lineContent.length === 0 ? [] : splitWithSingleSpace(lineContent);\n }).reduce(function (reduced, lineContentWords, index) {\n return index !== 0 && rawLineContents[index - 1].length !== 0 && lineContentWords.length !== 0 && !( // trailing backslash in quoteDouble should be preserved\n nodeType === \"quoteDouble\" && getLast$4(getLast$4(reduced)).endsWith(\"\\\\\")) ? reduced.concat([reduced.pop().concat(lineContentWords)]) : reduced.concat([lineContentWords]);\n }, []).map(function (lineContentWords) {\n return options.proseWrap === \"never\" ? [lineContentWords.join(\" \")] : lineContentWords;\n });\n }\n\n function getBlockValueLineContents(node, _ref) {\n var parentIndent = _ref.parentIndent,\n isLastDescendant = _ref.isLastDescendant,\n options = _ref.options;\n var content = node.position.start.line === node.position.end.line ? \"\" : options.originalText.slice(node.position.start.offset, node.position.end.offset) // exclude open line `>` or `|`\n .match(/^[^\\n]*?\\n([\\s\\S]*)$/)[1];\n var leadingSpaceCount = node.indent === null ? function (match) {\n return match ? match[1].length : Infinity;\n }(content.match(/^( *)\\S/m)) : node.indent - 1 + parentIndent;\n var rawLineContents = content.split(\"\\n\").map(function (lineContent) {\n return lineContent.slice(leadingSpaceCount);\n });\n\n if (options.proseWrap === \"preserve\" || node.type === \"blockLiteral\") {\n return removeUnnecessaryTrailingNewlines(rawLineContents.map(function (lineContent) {\n return lineContent.length === 0 ? [] : [lineContent];\n }));\n }\n\n return removeUnnecessaryTrailingNewlines(rawLineContents.map(function (lineContent) {\n return lineContent.length === 0 ? [] : splitWithSingleSpace(lineContent);\n }).reduce(function (reduced, lineContentWords, index) {\n return index !== 0 && rawLineContents[index - 1].length !== 0 && lineContentWords.length !== 0 && !/^\\s/.test(lineContentWords[0]) && !/^\\s|\\s$/.test(getLast$4(reduced)) ? reduced.concat([reduced.pop().concat(lineContentWords)]) : reduced.concat([lineContentWords]);\n }, []).map(function (lineContentWords) {\n return lineContentWords.reduce(function (reduced, word) {\n return (// disallow trailing spaces\n reduced.length !== 0 && /\\s$/.test(getLast$4(reduced)) ? reduced.concat(reduced.pop() + \" \" + word) : reduced.concat(word)\n );\n }, []);\n }).map(function (lineContentWords) {\n return options.proseWrap === \"never\" ? [lineContentWords.join(\" \")] : lineContentWords;\n }));\n\n function removeUnnecessaryTrailingNewlines(lineContents) {\n if (node.chomping === \"keep\") {\n return getLast$4(lineContents).length === 0 ? lineContents.slice(0, -1) : lineContents;\n }\n\n var trailingNewlineCount = 0;\n\n for (var i = lineContents.length - 1; i >= 0; i--) {\n if (lineContents[i].length === 0) {\n trailingNewlineCount++;\n } else {\n break;\n }\n }\n\n return trailingNewlineCount === 0 ? lineContents : trailingNewlineCount >= 2 && !isLastDescendant ? // next empty line\n lineContents.slice(0, -(trailingNewlineCount - 1)) : lineContents.slice(0, -trailingNewlineCount);\n }\n }\n\n var utils$6 = {\n getLast: getLast$4,\n getAncestorCount: getAncestorCount,\n isNode: isNode,\n isEmptyNode: isEmptyNode,\n mapNode: mapNode,\n defineShortcut: defineShortcut,\n isNextLineEmpty: isNextLineEmpty$5,\n isLastDescendantNode: isLastDescendantNode,\n getBlockValueLineContents: getBlockValueLineContents,\n getFlowScalarLineContents: getFlowScalarLineContents,\n getLastDescendantNode: getLastDescendantNode$1,\n hasPrettierIgnore: hasPrettierIgnore$5,\n hasLeadingComments: hasLeadingComments,\n hasMiddleComments: hasMiddleComments,\n hasIndicatorComment: hasIndicatorComment,\n hasTrailingComment: hasTrailingComment$2,\n hasEndComments: hasEndComments\n };\n var insertPragma$9 = pragma$5.insertPragma,\n isPragma$1 = pragma$5.isPragma;\n var getAncestorCount$1 = utils$6.getAncestorCount,\n getBlockValueLineContents$1 = utils$6.getBlockValueLineContents,\n getFlowScalarLineContents$1 = utils$6.getFlowScalarLineContents,\n getLast$5 = utils$6.getLast,\n getLastDescendantNode$2 = utils$6.getLastDescendantNode,\n hasLeadingComments$1 = utils$6.hasLeadingComments,\n hasMiddleComments$1 = utils$6.hasMiddleComments,\n hasIndicatorComment$1 = utils$6.hasIndicatorComment,\n hasTrailingComment$3 = utils$6.hasTrailingComment,\n hasEndComments$1 = utils$6.hasEndComments,\n hasPrettierIgnore$6 = utils$6.hasPrettierIgnore,\n isLastDescendantNode$1 = utils$6.isLastDescendantNode,\n isNextLineEmpty$6 = utils$6.isNextLineEmpty,\n isNode$1 = utils$6.isNode,\n isEmptyNode$1 = utils$6.isEmptyNode,\n defineShortcut$1 = utils$6.defineShortcut,\n mapNode$1 = utils$6.mapNode;\n var docBuilders$2 = doc.builders;\n var conditionalGroup$2 = docBuilders$2.conditionalGroup,\n breakParent$5 = docBuilders$2.breakParent,\n concat$h = docBuilders$2.concat,\n dedent$3 = docBuilders$2.dedent,\n dedentToRoot$3 = docBuilders$2.dedentToRoot,\n fill$6 = docBuilders$2.fill,\n group$g = docBuilders$2.group,\n hardline$d = docBuilders$2.hardline,\n ifBreak$8 = docBuilders$2.ifBreak,\n join$c = docBuilders$2.join,\n line$9 = docBuilders$2.line,\n lineSuffix$2 = docBuilders$2.lineSuffix,\n literalline$7 = docBuilders$2.literalline,\n markAsRoot$5 = docBuilders$2.markAsRoot,\n softline$8 = docBuilders$2.softline;\n var replaceEndOfLineWith$3 = util.replaceEndOfLineWith;\n\n function preprocess$3(ast) {\n return mapNode$1(ast, defineShortcuts);\n }\n\n function defineShortcuts(node) {\n switch (node.type) {\n case \"document\":\n defineShortcut$1(node, \"head\", function () {\n return node.children[0];\n });\n defineShortcut$1(node, \"body\", function () {\n return node.children[1];\n });\n break;\n\n case \"documentBody\":\n case \"sequenceItem\":\n case \"flowSequenceItem\":\n case \"mappingKey\":\n case \"mappingValue\":\n defineShortcut$1(node, \"content\", function () {\n return node.children[0];\n });\n break;\n\n case \"mappingItem\":\n case \"flowMappingItem\":\n defineShortcut$1(node, \"key\", function () {\n return node.children[0];\n });\n defineShortcut$1(node, \"value\", function () {\n return node.children[1];\n });\n break;\n }\n\n return node;\n }\n\n function genericPrint$6(path, options, print) {\n var node = path.getValue();\n var parentNode = path.getParentNode();\n var tag = !node.tag ? \"\" : path.call(print, \"tag\");\n var anchor = !node.anchor ? \"\" : path.call(print, \"anchor\");\n var nextEmptyLine = isNode$1(node, [\"mapping\", \"sequence\", \"comment\", \"directive\", \"mappingItem\", \"sequenceItem\"]) && !isLastDescendantNode$1(path) ? printNextEmptyLine(path, options.originalText) : \"\";\n return concat$h([node.type !== \"mappingValue\" && hasLeadingComments$1(node) ? concat$h([join$c(hardline$d, path.map(print, \"leadingComments\")), hardline$d]) : \"\", tag, tag && anchor ? \" \" : \"\", anchor, tag || anchor ? isNode$1(node, [\"sequence\", \"mapping\"]) && !hasMiddleComments$1(node) ? hardline$d : \" \" : \"\", hasMiddleComments$1(node) ? concat$h([node.middleComments.length === 1 ? \"\" : hardline$d, join$c(hardline$d, path.map(print, \"middleComments\")), hardline$d]) : \"\", hasPrettierIgnore$6(path) ? concat$h(replaceEndOfLineWith$3(options.originalText.slice(node.position.start.offset, node.position.end.offset), literalline$7)) : group$g(_print(node, parentNode, path, options, print)), hasTrailingComment$3(node) && !isNode$1(node, [\"document\", \"documentHead\"]) ? lineSuffix$2(concat$h([node.type === \"mappingValue\" && !node.content ? \"\" : \" \", parentNode.type === \"mappingKey\" && path.getParentNode(2).type === \"mapping\" && isInlineNode$1(node) ? \"\" : breakParent$5, path.call(print, \"trailingComment\")])) : \"\", nextEmptyLine, hasEndComments$1(node) && !isNode$1(node, [\"documentHead\", \"documentBody\"]) ? align$3(node.type === \"sequenceItem\" ? 2 : 0, concat$h([hardline$d, join$c(hardline$d, path.map(print, \"endComments\"))])) : \"\"]);\n }\n\n function _print(node, parentNode, path, options, print) {\n switch (node.type) {\n case \"root\":\n return concat$h([join$c(hardline$d, path.map(function (childPath, index) {\n var document = node.children[index];\n var nextDocument = node.children[index + 1];\n return concat$h([print(childPath), shouldPrintDocumentEndMarker(document, nextDocument) ? concat$h([hardline$d, \"...\", hasTrailingComment$3(document) ? concat$h([\" \", path.call(print, \"trailingComment\")]) : \"\"]) : !nextDocument || hasTrailingComment$3(nextDocument.head) ? \"\" : concat$h([hardline$d, \"---\"])]);\n }, \"children\")), node.children.length === 0 || function (lastDescendantNode) {\n return isNode$1(lastDescendantNode, [\"blockLiteral\", \"blockFolded\"]) && lastDescendantNode.chomping === \"keep\";\n }(getLastDescendantNode$2(node)) ? \"\" : hardline$d]);\n\n case \"document\":\n {\n var nextDocument = parentNode.children[path.getName() + 1];\n return join$c(hardline$d, [shouldPrintDocumentHeadEndMarker(node, nextDocument, parentNode, options) === \"head\" ? join$c(hardline$d, [node.head.children.length === 0 && node.head.endComments.length === 0 ? \"\" : path.call(print, \"head\"), concat$h([\"---\", hasTrailingComment$3(node.head) ? concat$h([\" \", path.call(print, \"head\", \"trailingComment\")]) : \"\"])].filter(Boolean)) : \"\", shouldPrintDocumentBody(node) ? path.call(print, \"body\") : \"\"].filter(Boolean));\n }\n\n case \"documentHead\":\n return join$c(hardline$d, [].concat(path.map(print, \"children\"), path.map(print, \"endComments\")));\n\n case \"documentBody\":\n {\n var children = join$c(hardline$d, path.map(print, \"children\")).parts;\n var endComments = join$c(hardline$d, path.map(print, \"endComments\")).parts;\n var separator = children.length === 0 || endComments.length === 0 ? \"\" : function (lastDescendantNode) {\n return isNode$1(lastDescendantNode, [\"blockFolded\", \"blockLiteral\"]) ? lastDescendantNode.chomping === \"keep\" ? // there's already a newline printed at the end of blockValue (chomping=keep, lastDescendant=true)\n \"\" : // an extra newline for better readability\n concat$h([hardline$d, hardline$d]) : hardline$d;\n }(getLastDescendantNode$2(node));\n return concat$h([].concat(children, separator, endComments));\n }\n\n case \"directive\":\n return concat$h([\"%\", join$c(\" \", [node.name].concat(node.parameters))]);\n\n case \"comment\":\n return concat$h([\"#\", node.value]);\n\n case \"alias\":\n return concat$h([\"*\", node.value]);\n\n case \"tag\":\n return options.originalText.slice(node.position.start.offset, node.position.end.offset);\n\n case \"anchor\":\n return concat$h([\"&\", node.value]);\n\n case \"plain\":\n return printFlowScalarContent(node.type, options.originalText.slice(node.position.start.offset, node.position.end.offset), options);\n\n case \"quoteDouble\":\n case \"quoteSingle\":\n {\n var singleQuote = \"'\";\n var doubleQuote = '\"';\n var raw = options.originalText.slice(node.position.start.offset + 1, node.position.end.offset - 1);\n\n if (node.type === \"quoteSingle\" && raw.includes(\"\\\\\") || node.type === \"quoteDouble\" && /\\\\[^\"]/.test(raw)) {\n // only quoteDouble can use escape chars\n // and quoteSingle do not need to escape backslashes\n var originalQuote = node.type === \"quoteDouble\" ? doubleQuote : singleQuote;\n return concat$h([originalQuote, printFlowScalarContent(node.type, raw, options), originalQuote]);\n } else if (raw.includes(doubleQuote)) {\n return concat$h([singleQuote, printFlowScalarContent(node.type, node.type === \"quoteDouble\" ? raw // double quote needs to be escaped by backslash in quoteDouble\n .replace(/\\\\\"/g, doubleQuote).replace(/'/g, singleQuote.repeat(2)) : raw, options), singleQuote]);\n }\n\n if (raw.includes(singleQuote)) {\n return concat$h([doubleQuote, printFlowScalarContent(node.type, node.type === \"quoteSingle\" ? // single quote needs to be escaped by 2 single quotes in quoteSingle\n raw.replace(/''/g, singleQuote) : raw, options), doubleQuote]);\n }\n\n var quote = options.singleQuote ? singleQuote : doubleQuote;\n return concat$h([quote, printFlowScalarContent(node.type, raw, options), quote]);\n }\n\n case \"blockFolded\":\n case \"blockLiteral\":\n {\n var parentIndent = getAncestorCount$1(path, function (ancestorNode) {\n return isNode$1(ancestorNode, [\"sequence\", \"mapping\"]);\n });\n var isLastDescendant = isLastDescendantNode$1(path);\n return concat$h([node.type === \"blockFolded\" ? \">\" : \"|\", node.indent === null ? \"\" : node.indent.toString(), node.chomping === \"clip\" ? \"\" : node.chomping === \"keep\" ? \"+\" : \"-\", hasIndicatorComment$1(node) ? concat$h([\" \", path.call(print, \"indicatorComment\")]) : \"\", (node.indent === null ? dedent$3 : dedentToRoot$3)(align$3(node.indent === null ? options.tabWidth : node.indent - 1 + parentIndent, concat$h(getBlockValueLineContents$1(node, {\n parentIndent: parentIndent,\n isLastDescendant: isLastDescendant,\n options: options\n }).reduce(function (reduced, lineWords, index, lineContents) {\n return reduced.concat(index === 0 ? hardline$d : \"\", fill$6(join$c(line$9, lineWords).parts), index !== lineContents.length - 1 ? lineWords.length === 0 ? hardline$d : markAsRoot$5(literalline$7) : node.chomping === \"keep\" && isLastDescendant ? lineWords.length === 0 ? dedentToRoot$3(hardline$d) : dedentToRoot$3(literalline$7) : \"\");\n }, []))))]);\n }\n\n case \"sequence\":\n return join$c(hardline$d, path.map(print, \"children\"));\n\n case \"sequenceItem\":\n return concat$h([\"- \", align$3(2, !node.content ? \"\" : path.call(print, \"content\"))]);\n\n case \"mappingKey\":\n return !node.content ? \"\" : path.call(print, \"content\");\n\n case \"mappingValue\":\n return !node.content ? \"\" : path.call(print, \"content\");\n\n case \"mapping\":\n return join$c(hardline$d, path.map(print, \"children\"));\n\n case \"mappingItem\":\n case \"flowMappingItem\":\n {\n var isEmptyMappingKey = isEmptyNode$1(node.key);\n var isEmptyMappingValue = isEmptyNode$1(node.value);\n\n if (isEmptyMappingKey && isEmptyMappingValue) {\n return concat$h([\": \"]);\n }\n\n var key = path.call(print, \"key\");\n var value = path.call(print, \"value\");\n\n if (isEmptyMappingValue) {\n return node.type === \"flowMappingItem\" && parentNode.type === \"flowMapping\" ? key : node.type === \"mappingItem\" && isAbsolutelyPrintedAsSingleLineNode(node.key.content, options) && !hasTrailingComment$3(node.key.content) && (!parentNode.tag || parentNode.tag.value !== \"tag:yaml.org,2002:set\") ? concat$h([key, needsSpaceInFrontOfMappingValue(node) ? \" \" : \"\", \":\"]) : concat$h([\"? \", align$3(2, key)]);\n }\n\n if (isEmptyMappingKey) {\n return concat$h([\": \", align$3(2, value)]);\n }\n\n var groupId = Symbol(\"mappingKey\");\n var forceExplicitKey = hasLeadingComments$1(node.value) || !isInlineNode$1(node.key.content);\n return forceExplicitKey ? concat$h([\"? \", align$3(2, key), hardline$d, join$c(\"\", path.map(print, \"value\", \"leadingComments\").map(function (comment) {\n return concat$h([comment, hardline$d]);\n })), \": \", align$3(2, value)]) : // force singleline\n isSingleLineNode(node.key.content) && !hasLeadingComments$1(node.key.content) && !hasMiddleComments$1(node.key.content) && !hasTrailingComment$3(node.key.content) && !hasEndComments$1(node.key) && !hasLeadingComments$1(node.value.content) && !hasMiddleComments$1(node.value.content) && !hasEndComments$1(node.value) && isAbsolutelyPrintedAsSingleLineNode(node.value.content, options) ? concat$h([key, needsSpaceInFrontOfMappingValue(node) ? \" \" : \"\", \": \", value]) : conditionalGroup$2([concat$h([group$g(concat$h([ifBreak$8(\"? \"), group$g(align$3(2, key), {\n id: groupId\n })])), ifBreak$8(concat$h([hardline$d, \": \", align$3(2, value)]), indent(concat$h([needsSpaceInFrontOfMappingValue(node) ? \" \" : \"\", \":\", hasLeadingComments$1(node.value.content) || hasEndComments$1(node.value) && node.value.content && !isNode$1(node.value.content, [\"mapping\", \"sequence\"]) || parentNode.type === \"mapping\" && hasTrailingComment$3(node.key.content) && isInlineNode$1(node.value.content) || isNode$1(node.value.content, [\"mapping\", \"sequence\"]) && node.value.content.tag === null && node.value.content.anchor === null ? hardline$d : !node.value.content ? \"\" : line$9, value])), {\n groupId: groupId\n })])]);\n }\n\n case \"flowMapping\":\n case \"flowSequence\":\n {\n var openMarker = node.type === \"flowMapping\" ? \"{\" : \"[\";\n var closeMarker = node.type === \"flowMapping\" ? \"}\" : \"]\";\n var bracketSpacing = node.type === \"flowMapping\" && node.children.length !== 0 && options.bracketSpacing ? line$9 : softline$8;\n\n var isLastItemEmptyMappingItem = node.children.length !== 0 && function (lastItem) {\n return lastItem.type === \"flowMappingItem\" && isEmptyNode$1(lastItem.key) && isEmptyNode$1(lastItem.value);\n }(getLast$5(node.children));\n\n return concat$h([openMarker, indent(concat$h([bracketSpacing, concat$h(path.map(function (childPath, index) {\n return concat$h([print(childPath), index === node.children.length - 1 ? \"\" : concat$h([\",\", line$9, node.children[index].position.start.line !== node.children[index + 1].position.start.line ? printNextEmptyLine(childPath, options.originalText) : \"\"])]);\n }, \"children\")), ifBreak$8(\",\", \"\")])), isLastItemEmptyMappingItem ? \"\" : bracketSpacing, closeMarker]);\n }\n\n case \"flowSequenceItem\":\n return path.call(print, \"content\");\n // istanbul ignore next\n\n default:\n throw new Error(\"Unexpected node type \".concat(node.type));\n }\n\n function indent(doc) {\n return docBuilders$2.align(\" \".repeat(options.tabWidth), doc);\n }\n }\n\n function align$3(n, doc) {\n return typeof n === \"number\" && n > 0 ? docBuilders$2.align(\" \".repeat(n), doc) : docBuilders$2.align(n, doc);\n }\n\n function isInlineNode$1(node) {\n if (!node) {\n return true;\n }\n\n switch (node.type) {\n case \"plain\":\n case \"quoteDouble\":\n case \"quoteSingle\":\n case \"alias\":\n case \"flowMapping\":\n case \"flowSequence\":\n return true;\n\n default:\n return false;\n }\n }\n\n function isSingleLineNode(node) {\n if (!node) {\n return true;\n }\n\n switch (node.type) {\n case \"plain\":\n case \"quoteDouble\":\n case \"quoteSingle\":\n return node.position.start.line === node.position.end.line;\n\n case \"alias\":\n return true;\n\n default:\n return false;\n }\n }\n\n function shouldPrintDocumentBody(document) {\n return document.body.children.length !== 0 || hasEndComments$1(document.body);\n }\n\n function shouldPrintDocumentEndMarker(document, nextDocument) {\n return (\n /**\n *... # trailingComment\n */\n hasTrailingComment$3(document) || nextDocument && (\n /**\n * ...\n * %DIRECTIVE\n * ---\n */\n nextDocument.head.children.length !== 0 ||\n /**\n * ...\n * # endComment\n * ---\n */\n hasEndComments$1(nextDocument.head))\n );\n }\n\n function shouldPrintDocumentHeadEndMarker(document, nextDocument, root, options) {\n if (\n /**\n * ---\n * preserve the first document head end marker\n */\n root.children[0] === document && /---(\\s|$)/.test(options.originalText.slice(options.locStart(document), options.locStart(document) + 4)) ||\n /**\n * %DIRECTIVE\n * ---\n */\n document.head.children.length !== 0 ||\n /**\n * # end comment\n * ---\n */\n hasEndComments$1(document.head) ||\n /**\n * --- # trailing comment\n */\n hasTrailingComment$3(document.head)) {\n return \"head\";\n }\n\n if (shouldPrintDocumentEndMarker(document, nextDocument)) {\n return false;\n }\n\n return nextDocument ? \"root\" : false;\n }\n\n function isAbsolutelyPrintedAsSingleLineNode(node, options) {\n if (!node) {\n return true;\n }\n\n switch (node.type) {\n case \"plain\":\n case \"quoteSingle\":\n case \"quoteDouble\":\n break;\n\n case \"alias\":\n return true;\n\n default:\n return false;\n }\n\n if (options.proseWrap === \"preserve\") {\n return node.position.start.line === node.position.end.line;\n }\n\n if ( // backslash-newline\n /\\\\$/m.test(options.originalText.slice(node.position.start.offset, node.position.end.offset))) {\n return false;\n }\n\n switch (options.proseWrap) {\n case \"never\":\n return node.value.indexOf(\"\\n\") === -1;\n\n case \"always\":\n return !/[\\n ]/.test(node.value);\n // istanbul ignore next\n\n default:\n return false;\n }\n }\n\n function needsSpaceInFrontOfMappingValue(node) {\n return node.key.content && node.key.content.type === \"alias\";\n }\n\n function printNextEmptyLine(path, originalText) {\n var node = path.getValue();\n var root = path.stack[0];\n root.isNextEmptyLinePrintedChecklist = root.isNextEmptyLinePrintedChecklist || [];\n\n if (!root.isNextEmptyLinePrintedChecklist[node.position.end.line]) {\n if (isNextLineEmpty$6(node, originalText)) {\n root.isNextEmptyLinePrintedChecklist[node.position.end.line] = true;\n return softline$8;\n }\n }\n\n return \"\";\n }\n\n function printFlowScalarContent(nodeType, content, options) {\n var lineContents = getFlowScalarLineContents$1(nodeType, content, options);\n return join$c(hardline$d, lineContents.map(function (lineContentWords) {\n return fill$6(join$c(line$9, lineContentWords).parts);\n }));\n }\n\n function clean$7(node, newNode\n /*, parent */\n ) {\n if (isNode$1(newNode)) {\n delete newNode.position;\n\n switch (newNode.type) {\n case \"comment\":\n // insert pragma\n if (isPragma$1(newNode.value)) {\n return null;\n }\n\n break;\n\n case \"quoteDouble\":\n case \"quoteSingle\":\n newNode.type = \"quote\";\n break;\n }\n }\n }\n\n var printerYaml = {\n preprocess: preprocess$3,\n print: genericPrint$6,\n massageAstNode: clean$7,\n insertPragma: insertPragma$9\n };\n var options$7 = {\n bracketSpacing: commonOptions.bracketSpacing,\n singleQuote: commonOptions.singleQuote,\n proseWrap: commonOptions.proseWrap\n };\n var name$h = \"YAML\";\n var type$g = \"data\";\n var tmScope$g = \"source.yaml\";\n var aliases$6 = [\"yml\"];\n var extensions$g = [\".yml\", \".mir\", \".reek\", \".rviz\", \".sublime-syntax\", \".syntax\", \".yaml\", \".yaml-tmlanguage\", \".yml.mysql\"];\n var filenames$4 = [\".clang-format\", \".clang-tidy\", \".gemrc\", \"glide.lock\"];\n var aceMode$g = \"yaml\";\n var codemirrorMode$c = \"yaml\";\n var codemirrorMimeType$c = \"text/x-yaml\";\n var languageId$g = 407;\n var YAML = {\n name: name$h,\n type: type$g,\n tmScope: tmScope$g,\n aliases: aliases$6,\n extensions: extensions$g,\n filenames: filenames$4,\n aceMode: aceMode$g,\n codemirrorMode: codemirrorMode$c,\n codemirrorMimeType: codemirrorMimeType$c,\n languageId: languageId$g\n };\n var YAML$1 =\n /*#__PURE__*/\n Object.freeze({\n __proto__: null,\n name: name$h,\n type: type$g,\n tmScope: tmScope$g,\n aliases: aliases$6,\n extensions: extensions$g,\n filenames: filenames$4,\n aceMode: aceMode$g,\n codemirrorMode: codemirrorMode$c,\n codemirrorMimeType: codemirrorMimeType$c,\n languageId: languageId$g,\n 'default': YAML\n });\n var require$$0$8 = getCjsExportFromNamespace(YAML$1);\n var languages$6 = [createLanguage(require$$0$8, function (data) {\n return Object.assign(data, {\n since: \"1.14.0\",\n parsers: [\"yaml\"],\n vscodeLanguageIds: [\"yaml\"]\n });\n })];\n var languageYaml = {\n languages: languages$6,\n printers: {\n yaml: printerYaml\n },\n options: options$7\n };\n var version$2 = require$$0.version;\n var getSupportInfo$2 = support.getSupportInfo;\n var internalPlugins = [languageCss, languageGraphql, languageHandlebars, languageHtml, languageJs, languageMarkdown, languageYaml];\n\n var isArray$1 = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) === \"[object Array]\";\n }; // Luckily `opts` is always the 2nd argument\n\n\n function withPlugins(fn) {\n return function () {\n var args = Array.from(arguments);\n var plugins = args[1] && args[1].plugins || [];\n\n if (!isArray$1(plugins)) {\n plugins = Object.values(plugins);\n }\n\n args[1] = Object.assign({}, args[1], {\n plugins: internalPlugins.concat(plugins)\n });\n return fn.apply(null, args);\n };\n }\n\n var formatWithCursor = withPlugins(core.formatWithCursor);\n var standalone = {\n formatWithCursor: formatWithCursor,\n format: function format(text, opts) {\n return formatWithCursor(text, opts).formatted;\n },\n check: function check(text, opts) {\n var formatted = formatWithCursor(text, opts).formatted;\n return formatted === text;\n },\n doc: doc,\n getSupportInfo: withPlugins(getSupportInfo$2),\n version: version$2,\n util: utilShared,\n __debug: {\n parse: withPlugins(core.parse),\n formatAST: withPlugins(core.formatAST),\n formatDoc: withPlugins(core.formatDoc),\n printToDoc: withPlugins(core.printToDoc),\n printDocToString: withPlugins(core.printDocToString)\n }\n };\n var standalone$1 = standalone;\n return standalone$1;\n});","!function (e, n) {\n \"object\" == typeof exports && \"undefined\" != typeof module ? n(exports) : \"function\" == typeof define && define.amd ? define([\"exports\"], n) : n(((e = e || self).prettierPlugins = e.prettierPlugins || {}, e.prettierPlugins.graphql = {}));\n}(this, function (e) {\n \"use strict\";\n\n function n(e) {\n return (n = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (e) {\n return typeof e;\n } : function (e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n })(e);\n }\n\n var t = function t(e, n) {\n var t = new SyntaxError(e + \" (\" + n.start.line + \":\" + n.start.column + \")\");\n return t.loc = n, t;\n };\n\n var i = function i(e) {\n return /^\\s*#[^\\n\\S]*@(format|prettier)\\s*(\\n|$)/.test(e);\n };\n\n function r(e) {\n return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, \"default\") ? e.default : e;\n }\n\n function o(e, n) {\n return e(n = {\n exports: {}\n }, n.exports), n.exports;\n }\n\n var a = o(function (e, n) {\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.default = function (e, n) {\n if (!Boolean(e)) throw new Error(n);\n };\n });\n r(a);\n var s = o(function (e, n) {\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.default = function (e) {\n \"function\" == typeof Symbol && Symbol.toStringTag && Object.defineProperty(e.prototype, Symbol.toStringTag, {\n get: function get() {\n return this.constructor.name;\n }\n });\n };\n });\n r(s);\n var c = o(function (e, n) {\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.Source = void 0;\n var t = r(a),\n i = r(s);\n\n function r(e) {\n return e && e.__esModule ? e : {\n default: e\n };\n }\n\n var o = function o(e, n, i) {\n this.body = e, this.name = n || \"GraphQL request\", this.locationOffset = i || {\n line: 1,\n column: 1\n }, this.locationOffset.line > 0 || (0, t.default)(0, \"line in locationOffset is 1-indexed and must be positive\"), this.locationOffset.column > 0 || (0, t.default)(0, \"column in locationOffset is 1-indexed and must be positive\");\n };\n\n n.Source = o, (0, i.default)(o);\n });\n r(c);\n c.Source;\n var u = o(function (e, n) {\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.getLocation = function (e, n) {\n var t,\n i = /\\r\\n|[\\n\\r]/g,\n r = 1,\n o = n + 1;\n\n for (; (t = i.exec(e.body)) && t.index < n;) {\n r += 1, o = n + 1 - (t.index + t[0].length);\n }\n\n return {\n line: r,\n column: o\n };\n };\n });\n r(u);\n u.getLocation;\n var l = o(function (e, n) {\n function t(e, n) {\n var t = e.locationOffset.column - 1,\n o = r(t) + e.body,\n a = n.line - 1,\n s = e.locationOffset.line - 1,\n c = n.line + s,\n u = 1 === n.line ? t : 0,\n l = n.column + u,\n d = \"\".concat(e.name, \":\").concat(c, \":\").concat(l, \"\\n\"),\n p = o.split(/\\r\\n|[\\n\\r]/g),\n f = p[a];\n\n if (f.length > 120) {\n for (var h = Math.floor(l / 80), T = l % 80, v = [], E = 0; E < f.length; E += 80) {\n v.push(f.slice(E, E + 80));\n }\n\n return d + i([[\"\".concat(c), v[0]]].concat(v.slice(1, h + 1).map(function (e) {\n return [\"\", e];\n }), [[\" \", r(T - 1) + \"^\"], [\"\", v[h + 1]]]));\n }\n\n return d + i([[\"\".concat(c - 1), p[a - 1]], [\"\".concat(c), f], [\"\", r(l - 1) + \"^\"], [\"\".concat(c + 1), p[a + 1]]]);\n }\n\n function i(e) {\n var n = e.filter(function (e) {\n e[0];\n return void 0 !== e[1];\n }),\n t = Math.max.apply(Math, n.map(function (e) {\n return e[0].length;\n }));\n return n.map(function (e) {\n var n,\n i = e[0],\n o = e[1];\n return r(t - (n = i).length) + n + (o ? \" | \" + o : \" |\");\n }).join(\"\\n\");\n }\n\n function r(e) {\n return Array(e + 1).join(\" \");\n }\n\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.printLocation = function (e) {\n return t(e.source, (0, u.getLocation)(e.source, e.start));\n }, n.printSourceLocation = t;\n });\n r(l);\n l.printLocation, l.printSourceLocation;\n var d = o(function (e, n) {\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.Kind = void 0;\n var t = Object.freeze({\n NAME: \"Name\",\n DOCUMENT: \"Document\",\n OPERATION_DEFINITION: \"OperationDefinition\",\n VARIABLE_DEFINITION: \"VariableDefinition\",\n SELECTION_SET: \"SelectionSet\",\n FIELD: \"Field\",\n ARGUMENT: \"Argument\",\n FRAGMENT_SPREAD: \"FragmentSpread\",\n INLINE_FRAGMENT: \"InlineFragment\",\n FRAGMENT_DEFINITION: \"FragmentDefinition\",\n VARIABLE: \"Variable\",\n INT: \"IntValue\",\n FLOAT: \"FloatValue\",\n STRING: \"StringValue\",\n BOOLEAN: \"BooleanValue\",\n NULL: \"NullValue\",\n ENUM: \"EnumValue\",\n LIST: \"ListValue\",\n OBJECT: \"ObjectValue\",\n OBJECT_FIELD: \"ObjectField\",\n DIRECTIVE: \"Directive\",\n NAMED_TYPE: \"NamedType\",\n LIST_TYPE: \"ListType\",\n NON_NULL_TYPE: \"NonNullType\",\n SCHEMA_DEFINITION: \"SchemaDefinition\",\n OPERATION_TYPE_DEFINITION: \"OperationTypeDefinition\",\n SCALAR_TYPE_DEFINITION: \"ScalarTypeDefinition\",\n OBJECT_TYPE_DEFINITION: \"ObjectTypeDefinition\",\n FIELD_DEFINITION: \"FieldDefinition\",\n INPUT_VALUE_DEFINITION: \"InputValueDefinition\",\n INTERFACE_TYPE_DEFINITION: \"InterfaceTypeDefinition\",\n UNION_TYPE_DEFINITION: \"UnionTypeDefinition\",\n ENUM_TYPE_DEFINITION: \"EnumTypeDefinition\",\n ENUM_VALUE_DEFINITION: \"EnumValueDefinition\",\n INPUT_OBJECT_TYPE_DEFINITION: \"InputObjectTypeDefinition\",\n DIRECTIVE_DEFINITION: \"DirectiveDefinition\",\n SCHEMA_EXTENSION: \"SchemaExtension\",\n SCALAR_TYPE_EXTENSION: \"ScalarTypeExtension\",\n OBJECT_TYPE_EXTENSION: \"ObjectTypeExtension\",\n INTERFACE_TYPE_EXTENSION: \"InterfaceTypeExtension\",\n UNION_TYPE_EXTENSION: \"UnionTypeExtension\",\n ENUM_TYPE_EXTENSION: \"EnumTypeExtension\",\n INPUT_OBJECT_TYPE_EXTENSION: \"InputObjectTypeExtension\"\n });\n n.Kind = t;\n });\n r(d);\n d.Kind;\n var p = o(function (e, n) {\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.TokenKind = void 0;\n var t = Object.freeze({\n SOF: \"\",\n EOF: \"\",\n BANG: \"!\",\n DOLLAR: \"$\",\n AMP: \"&\",\n PAREN_L: \"(\",\n PAREN_R: \")\",\n SPREAD: \"...\",\n COLON: \":\",\n EQUALS: \"=\",\n AT: \"@\",\n BRACKET_L: \"[\",\n BRACKET_R: \"]\",\n BRACE_L: \"{\",\n PIPE: \"|\",\n BRACE_R: \"}\",\n NAME: \"Name\",\n INT: \"Int\",\n FLOAT: \"Float\",\n STRING: \"String\",\n BLOCK_STRING: \"BlockString\",\n COMMENT: \"Comment\"\n });\n n.TokenKind = t;\n });\n r(p);\n p.TokenKind;\n var f = o(function (e, n) {\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.default = void 0;\n var t = \"function\" == typeof Symbol && \"function\" == typeof Symbol.for ? Symbol.for(\"nodejs.util.inspect.custom\") : void 0;\n n.default = t;\n });\n r(f);\n var h = o(function (e, n) {\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.default = function (e) {\n var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : e.prototype.toString;\n e.prototype.toJSON = n, e.prototype.inspect = n, i.default && (e.prototype[i.default] = n);\n };\n var t,\n i = (t = f) && t.__esModule ? t : {\n default: t\n };\n });\n r(h);\n var T = o(function (e, t) {\n function i(e) {\n return (i = \"function\" == typeof Symbol && \"symbol\" === n(Symbol.iterator) ? function (e) {\n return n(e);\n } : function (e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : n(e);\n })(e);\n }\n\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = function (e) {\n return \"object\" == i(e) && null !== e;\n };\n });\n r(T);\n var v = o(function (e, n) {\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.GraphQLError = r, n.printError = o;\n var t,\n i = (t = T) && t.__esModule ? t : {\n default: t\n };\n\n function r(e, n, t, o, a, s, c) {\n var l = Array.isArray(n) ? 0 !== n.length ? n : void 0 : n ? [n] : void 0,\n d = t;\n\n if (!d && l) {\n var p = l[0];\n d = p && p.loc && p.loc.source;\n }\n\n var f,\n h = o;\n !h && l && (h = l.reduce(function (e, n) {\n return n.loc && e.push(n.loc.start), e;\n }, [])), h && 0 === h.length && (h = void 0), o && t ? f = o.map(function (e) {\n return (0, u.getLocation)(t, e);\n }) : l && (f = l.reduce(function (e, n) {\n return n.loc && e.push((0, u.getLocation)(n.loc.source, n.loc.start)), e;\n }, []));\n var T = c;\n\n if (null == T && null != s) {\n var v = s.extensions;\n (0, i.default)(v) && (T = v);\n }\n\n Object.defineProperties(this, {\n message: {\n value: e,\n enumerable: !0,\n writable: !0\n },\n locations: {\n value: f || void 0,\n enumerable: Boolean(f)\n },\n path: {\n value: a || void 0,\n enumerable: Boolean(a)\n },\n nodes: {\n value: l || void 0\n },\n source: {\n value: d || void 0\n },\n positions: {\n value: h || void 0\n },\n originalError: {\n value: s\n },\n extensions: {\n value: T || void 0,\n enumerable: Boolean(T)\n }\n }), s && s.stack ? Object.defineProperty(this, \"stack\", {\n value: s.stack,\n writable: !0,\n configurable: !0\n }) : Error.captureStackTrace ? Error.captureStackTrace(this, r) : Object.defineProperty(this, \"stack\", {\n value: Error().stack,\n writable: !0,\n configurable: !0\n });\n }\n\n function o(e) {\n var n = e.message;\n if (e.nodes) for (var t = 0, i = e.nodes; t < i.length; t++) {\n var r = i[t];\n r.loc && (n += \"\\n\\n\" + (0, l.printLocation)(r.loc));\n } else if (e.source && e.locations) for (var o = 0, a = e.locations; o < a.length; o++) {\n var s = a[o];\n n += \"\\n\\n\" + (0, l.printSourceLocation)(e.source, s);\n }\n return n;\n }\n\n r.prototype = Object.create(Error.prototype, {\n constructor: {\n value: r\n },\n name: {\n value: \"GraphQLError\"\n },\n toString: {\n value: function value() {\n return o(this);\n }\n }\n });\n });\n r(v);\n v.GraphQLError, v.printError;\n var E = o(function (e, n) {\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.syntaxError = function (e, n, t) {\n return new v.GraphQLError(\"Syntax Error: \".concat(t), void 0, e, [n]);\n };\n });\n r(E);\n E.syntaxError;\n var y = o(function (e, n) {\n function t(e) {\n for (var n = null, t = 1; t < e.length; t++) {\n var r = e[t],\n o = i(r);\n if (o !== r.length && (null === n || o < n) && 0 === (n = o)) break;\n }\n\n return null === n ? 0 : n;\n }\n\n function i(e) {\n for (var n = 0; n < e.length && (\" \" === e[n] || \"\\t\" === e[n]);) {\n n++;\n }\n\n return n;\n }\n\n function r(e) {\n return i(e) === e.length;\n }\n\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.dedentBlockStringValue = function (e) {\n var n = e.split(/\\r\\n|[\\n\\r]/g),\n i = t(n);\n if (0 !== i) for (var o = 1; o < n.length; o++) {\n n[o] = n[o].slice(i);\n }\n\n for (; n.length > 0 && r(n[0]);) {\n n.shift();\n }\n\n for (; n.length > 0 && r(n[n.length - 1]);) {\n n.pop();\n }\n\n return n.join(\"\\n\");\n }, n.getBlockStringIndentation = t, n.printBlockString = function (e) {\n var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : \"\",\n t = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],\n i = -1 === e.indexOf(\"\\n\"),\n r = \" \" === e[0] || \"\\t\" === e[0],\n o = '\"' === e[e.length - 1],\n a = !i || o || t,\n s = \"\";\n !a || i && r || (s += \"\\n\" + n);\n s += n ? e.replace(/\\n/g, \"\\n\" + n) : e, a && (s += \"\\n\");\n return '\"\"\"' + s.replace(/\"\"\"/g, '\\\\\"\"\"') + '\"\"\"';\n };\n });\n r(y);\n y.dedentBlockStringValue, y.getBlockStringIndentation, y.printBlockString;\n var N = o(function (e, n) {\n var t;\n\n function i() {\n return this.lastToken = this.token, this.token = this.lookahead();\n }\n\n function r() {\n var e = this.token;\n if (e.kind !== p.TokenKind.EOF) do {\n e = e.next || (e.next = s(this, e));\n } while (e.kind === p.TokenKind.COMMENT);\n return e;\n }\n\n function o(e, n, t, i, r, o, a) {\n this.kind = e, this.start = n, this.end = t, this.line = i, this.column = r, this.value = a, this.prev = o, this.next = null;\n }\n\n function a(e) {\n return isNaN(e) ? p.TokenKind.EOF : e < 127 ? JSON.stringify(String.fromCharCode(e)) : \"\\\"\\\\u\".concat((\"00\" + e.toString(16).toUpperCase()).slice(-4), '\"');\n }\n\n function s(e, n) {\n var t = e.source,\n i = t.body,\n r = i.length,\n s = function (e, n, t) {\n var i = e.length,\n r = n;\n\n for (; r < i;) {\n var o = e.charCodeAt(r);\n if (9 === o || 32 === o || 44 === o || 65279 === o) ++r;else if (10 === o) ++r, ++t.line, t.lineStart = r;else {\n if (13 !== o) break;\n 10 === e.charCodeAt(r + 1) ? r += 2 : ++r, ++t.line, t.lineStart = r;\n }\n }\n\n return r;\n }(i, n.end, e),\n l = e.line,\n d = 1 + s - e.lineStart;\n\n if (s >= r) return new o(p.TokenKind.EOF, r, r, l, d, n);\n var f = i.charCodeAt(s);\n\n switch (f) {\n case 33:\n return new o(p.TokenKind.BANG, s, s + 1, l, d, n);\n\n case 35:\n return function (e, n, t, i, r) {\n var a,\n s = e.body,\n c = n;\n\n do {\n a = s.charCodeAt(++c);\n } while (!isNaN(a) && (a > 31 || 9 === a));\n\n return new o(p.TokenKind.COMMENT, n, c, t, i, r, s.slice(n + 1, c));\n }(t, s, l, d, n);\n\n case 36:\n return new o(p.TokenKind.DOLLAR, s, s + 1, l, d, n);\n\n case 38:\n return new o(p.TokenKind.AMP, s, s + 1, l, d, n);\n\n case 40:\n return new o(p.TokenKind.PAREN_L, s, s + 1, l, d, n);\n\n case 41:\n return new o(p.TokenKind.PAREN_R, s, s + 1, l, d, n);\n\n case 46:\n if (46 === i.charCodeAt(s + 1) && 46 === i.charCodeAt(s + 2)) return new o(p.TokenKind.SPREAD, s, s + 3, l, d, n);\n break;\n\n case 58:\n return new o(p.TokenKind.COLON, s, s + 1, l, d, n);\n\n case 61:\n return new o(p.TokenKind.EQUALS, s, s + 1, l, d, n);\n\n case 64:\n return new o(p.TokenKind.AT, s, s + 1, l, d, n);\n\n case 91:\n return new o(p.TokenKind.BRACKET_L, s, s + 1, l, d, n);\n\n case 93:\n return new o(p.TokenKind.BRACKET_R, s, s + 1, l, d, n);\n\n case 123:\n return new o(p.TokenKind.BRACE_L, s, s + 1, l, d, n);\n\n case 124:\n return new o(p.TokenKind.PIPE, s, s + 1, l, d, n);\n\n case 125:\n return new o(p.TokenKind.BRACE_R, s, s + 1, l, d, n);\n\n case 65:\n case 66:\n case 67:\n case 68:\n case 69:\n case 70:\n case 71:\n case 72:\n case 73:\n case 74:\n case 75:\n case 76:\n case 77:\n case 78:\n case 79:\n case 80:\n case 81:\n case 82:\n case 83:\n case 84:\n case 85:\n case 86:\n case 87:\n case 88:\n case 89:\n case 90:\n case 95:\n case 97:\n case 98:\n case 99:\n case 100:\n case 101:\n case 102:\n case 103:\n case 104:\n case 105:\n case 106:\n case 107:\n case 108:\n case 109:\n case 110:\n case 111:\n case 112:\n case 113:\n case 114:\n case 115:\n case 116:\n case 117:\n case 118:\n case 119:\n case 120:\n case 121:\n case 122:\n return function (e, n, t, i, r) {\n var a = e.body,\n s = a.length,\n c = n + 1,\n u = 0;\n\n for (; c !== s && !isNaN(u = a.charCodeAt(c)) && (95 === u || u >= 48 && u <= 57 || u >= 65 && u <= 90 || u >= 97 && u <= 122);) {\n ++c;\n }\n\n return new o(p.TokenKind.NAME, n, c, t, i, r, a.slice(n, c));\n }(t, s, l, d, n);\n\n case 45:\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n return function (e, n, t, i, r, s) {\n var u = e.body,\n l = t,\n d = n,\n f = !1;\n 45 === l && (l = u.charCodeAt(++d));\n\n if (48 === l) {\n if ((l = u.charCodeAt(++d)) >= 48 && l <= 57) throw (0, E.syntaxError)(e, d, \"Invalid number, unexpected digit after 0: \".concat(a(l), \".\"));\n } else d = c(e, d, l), l = u.charCodeAt(d);\n\n 46 === l && (f = !0, l = u.charCodeAt(++d), d = c(e, d, l), l = u.charCodeAt(d));\n 69 !== l && 101 !== l || (f = !0, 43 !== (l = u.charCodeAt(++d)) && 45 !== l || (l = u.charCodeAt(++d)), d = c(e, d, l), l = u.charCodeAt(d));\n if (46 === l || 69 === l || 101 === l) throw (0, E.syntaxError)(e, d, \"Invalid number, expected digit but got: \".concat(a(l), \".\"));\n return new o(f ? p.TokenKind.FLOAT : p.TokenKind.INT, n, d, i, r, s, u.slice(n, d));\n }(t, s, f, l, d, n);\n\n case 34:\n return 34 === i.charCodeAt(s + 1) && 34 === i.charCodeAt(s + 2) ? function (e, n, t, i, r, s) {\n var c = e.body,\n u = n + 3,\n l = u,\n d = 0,\n f = \"\";\n\n for (; u < c.length && !isNaN(d = c.charCodeAt(u));) {\n if (34 === d && 34 === c.charCodeAt(u + 1) && 34 === c.charCodeAt(u + 2)) return f += c.slice(l, u), new o(p.TokenKind.BLOCK_STRING, n, u + 3, t, i, r, (0, y.dedentBlockStringValue)(f));\n if (d < 32 && 9 !== d && 10 !== d && 13 !== d) throw (0, E.syntaxError)(e, u, \"Invalid character within String: \".concat(a(d), \".\"));\n 10 === d ? (++u, ++s.line, s.lineStart = u) : 13 === d ? (10 === c.charCodeAt(u + 1) ? u += 2 : ++u, ++s.line, s.lineStart = u) : 92 === d && 34 === c.charCodeAt(u + 1) && 34 === c.charCodeAt(u + 2) && 34 === c.charCodeAt(u + 3) ? (f += c.slice(l, u) + '\"\"\"', l = u += 4) : ++u;\n }\n\n throw (0, E.syntaxError)(e, u, \"Unterminated string.\");\n }(t, s, l, d, n, e) : function (e, n, t, i, r) {\n var s = e.body,\n c = n + 1,\n l = c,\n d = 0,\n f = \"\";\n\n for (; c < s.length && !isNaN(d = s.charCodeAt(c)) && 10 !== d && 13 !== d;) {\n if (34 === d) return f += s.slice(l, c), new o(p.TokenKind.STRING, n, c + 1, t, i, r, f);\n if (d < 32 && 9 !== d) throw (0, E.syntaxError)(e, c, \"Invalid character within String: \".concat(a(d), \".\"));\n\n if (++c, 92 === d) {\n switch (f += s.slice(l, c - 1), d = s.charCodeAt(c)) {\n case 34:\n f += '\"';\n break;\n\n case 47:\n f += \"/\";\n break;\n\n case 92:\n f += \"\\\\\";\n break;\n\n case 98:\n f += \"\\b\";\n break;\n\n case 102:\n f += \"\\f\";\n break;\n\n case 110:\n f += \"\\n\";\n break;\n\n case 114:\n f += \"\\r\";\n break;\n\n case 116:\n f += \"\\t\";\n break;\n\n case 117:\n var h = (v = s.charCodeAt(c + 1), y = s.charCodeAt(c + 2), N = s.charCodeAt(c + 3), m = s.charCodeAt(c + 4), u(v) << 12 | u(y) << 8 | u(N) << 4 | u(m));\n\n if (h < 0) {\n var T = s.slice(c + 1, c + 5);\n throw (0, E.syntaxError)(e, c, \"Invalid character escape sequence: \\\\u\".concat(T, \".\"));\n }\n\n f += String.fromCharCode(h), c += 4;\n break;\n\n default:\n throw (0, E.syntaxError)(e, c, \"Invalid character escape sequence: \\\\\".concat(String.fromCharCode(d), \".\"));\n }\n\n l = ++c;\n }\n }\n\n var v, y, N, m;\n throw (0, E.syntaxError)(e, c, \"Unterminated string.\");\n }(t, s, l, d, n);\n }\n\n throw (0, E.syntaxError)(t, s, function (e) {\n if (e < 32 && 9 !== e && 10 !== e && 13 !== e) return \"Cannot contain the invalid character \".concat(a(e), \".\");\n if (39 === e) return \"Unexpected single quote character ('), did you mean to use a double quote (\\\")?\";\n return \"Cannot parse the unexpected character \".concat(a(e), \".\");\n }(f));\n }\n\n function c(e, n, t) {\n var i = e.body,\n r = n,\n o = t;\n\n if (o >= 48 && o <= 57) {\n do {\n o = i.charCodeAt(++r);\n } while (o >= 48 && o <= 57);\n\n return r;\n }\n\n throw (0, E.syntaxError)(e, r, \"Invalid number, expected digit but got: \".concat(a(o), \".\"));\n }\n\n function u(e) {\n return e >= 48 && e <= 57 ? e - 48 : e >= 65 && e <= 70 ? e - 55 : e >= 97 && e <= 102 ? e - 87 : -1;\n }\n\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.createLexer = function (e, n) {\n var t = new o(p.TokenKind.SOF, 0, 0, 0, 0, null);\n return {\n source: e,\n options: n,\n lastToken: t,\n token: t,\n line: 1,\n lineStart: 0,\n advance: i,\n lookahead: r\n };\n }, n.isPunctuatorToken = function (e) {\n var n = e.kind;\n return n === p.TokenKind.BANG || n === p.TokenKind.DOLLAR || n === p.TokenKind.AMP || n === p.TokenKind.PAREN_L || n === p.TokenKind.PAREN_R || n === p.TokenKind.SPREAD || n === p.TokenKind.COLON || n === p.TokenKind.EQUALS || n === p.TokenKind.AT || n === p.TokenKind.BRACKET_L || n === p.TokenKind.BRACKET_R || n === p.TokenKind.BRACE_L || n === p.TokenKind.PIPE || n === p.TokenKind.BRACE_R;\n }, (0, ((t = h) && t.__esModule ? t : {\n default: t\n }).default)(o, function () {\n return {\n kind: this.kind,\n value: this.value,\n line: this.line,\n column: this.column\n };\n });\n });\n r(N);\n N.createLexer, N.isPunctuatorToken;\n var m = o(function (e, t) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = function (e) {\n return c(e, []);\n };\n var i,\n r = (i = f) && i.__esModule ? i : {\n default: i\n };\n\n function o(e) {\n return (o = \"function\" == typeof Symbol && \"symbol\" === n(Symbol.iterator) ? function (e) {\n return n(e);\n } : function (e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : n(e);\n })(e);\n }\n\n var a = 10,\n s = 2;\n\n function c(e, n) {\n switch (o(e)) {\n case \"string\":\n return JSON.stringify(e);\n\n case \"function\":\n return e.name ? \"[function \".concat(e.name, \"]\") : \"[function]\";\n\n case \"object\":\n return null === e ? \"null\" : function (e, n) {\n if (-1 !== n.indexOf(e)) return \"[Circular]\";\n\n var t = [].concat(n, [e]),\n i = function (e) {\n var n = e[String(r.default)];\n if (\"function\" == typeof n) return n;\n if (\"function\" == typeof e.inspect) return e.inspect;\n }(e);\n\n if (void 0 !== i) {\n var o = i.call(e);\n if (o !== e) return \"string\" == typeof o ? o : c(o, t);\n } else if (Array.isArray(e)) return function (e, n) {\n if (0 === e.length) return \"[]\";\n if (n.length > s) return \"[Array]\";\n\n for (var t = Math.min(a, e.length), i = e.length - t, r = [], o = 0; o < t; ++o) {\n r.push(c(e[o], n));\n }\n\n 1 === i ? r.push(\"... 1 more item\") : i > 1 && r.push(\"... \".concat(i, \" more items\"));\n return \"[\" + r.join(\", \") + \"]\";\n }(e, t);\n\n return function (e, n) {\n var t = Object.keys(e);\n if (0 === t.length) return \"{}\";\n if (n.length > s) return \"[\" + function (e) {\n var n = Object.prototype.toString.call(e).replace(/^\\[object /, \"\").replace(/]$/, \"\");\n\n if (\"Object\" === n && \"function\" == typeof e.constructor) {\n var t = e.constructor.name;\n if (\"string\" == typeof t && \"\" !== t) return t;\n }\n\n return n;\n }(e) + \"]\";\n return \"{ \" + t.map(function (t) {\n return t + \": \" + c(e[t], n);\n }).join(\", \") + \" }\";\n }(e, t);\n }(e, n);\n\n default:\n return String(e);\n }\n }\n });\n r(m);\n var k = o(function (e, n) {\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.DirectiveLocation = void 0;\n var t = Object.freeze({\n QUERY: \"QUERY\",\n MUTATION: \"MUTATION\",\n SUBSCRIPTION: \"SUBSCRIPTION\",\n FIELD: \"FIELD\",\n FRAGMENT_DEFINITION: \"FRAGMENT_DEFINITION\",\n FRAGMENT_SPREAD: \"FRAGMENT_SPREAD\",\n INLINE_FRAGMENT: \"INLINE_FRAGMENT\",\n VARIABLE_DEFINITION: \"VARIABLE_DEFINITION\",\n SCHEMA: \"SCHEMA\",\n SCALAR: \"SCALAR\",\n OBJECT: \"OBJECT\",\n FIELD_DEFINITION: \"FIELD_DEFINITION\",\n ARGUMENT_DEFINITION: \"ARGUMENT_DEFINITION\",\n INTERFACE: \"INTERFACE\",\n UNION: \"UNION\",\n ENUM: \"ENUM\",\n ENUM_VALUE: \"ENUM_VALUE\",\n INPUT_OBJECT: \"INPUT_OBJECT\",\n INPUT_FIELD_DEFINITION: \"INPUT_FIELD_DEFINITION\"\n });\n n.DirectiveLocation = t;\n });\n r(k);\n k.DirectiveLocation;\n var I = o(function (e, n) {\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.parse = function (e, n) {\n return new s(e, n).parseDocument();\n }, n.parseValue = function (e, n) {\n var t = new s(e, n);\n t.expectToken(p.TokenKind.SOF);\n var i = t.parseValueLiteral(!1);\n return t.expectToken(p.TokenKind.EOF), i;\n }, n.parseType = function (e, n) {\n var t = new s(e, n);\n t.expectToken(p.TokenKind.SOF);\n var i = t.parseTypeReference();\n return t.expectToken(p.TokenKind.EOF), i;\n };\n var t = o(m),\n i = o(a),\n r = o(h);\n\n function o(e) {\n return e && e.__esModule ? e : {\n default: e\n };\n }\n\n var s = function () {\n function e(e, n) {\n var r = \"string\" == typeof e ? new c.Source(e) : e;\n r instanceof c.Source || (0, i.default)(0, \"Must provide Source. Received: \".concat((0, t.default)(r))), this._lexer = (0, N.createLexer)(r), this._options = n || {};\n }\n\n var n = e.prototype;\n return n.parseName = function () {\n var e = this.expectToken(p.TokenKind.NAME);\n return {\n kind: d.Kind.NAME,\n value: e.value,\n loc: this.loc(e)\n };\n }, n.parseDocument = function () {\n var e = this._lexer.token;\n return {\n kind: d.Kind.DOCUMENT,\n definitions: this.many(p.TokenKind.SOF, this.parseDefinition, p.TokenKind.EOF),\n loc: this.loc(e)\n };\n }, n.parseDefinition = function () {\n if (this.peek(p.TokenKind.NAME)) switch (this._lexer.token.value) {\n case \"query\":\n case \"mutation\":\n case \"subscription\":\n return this.parseOperationDefinition();\n\n case \"fragment\":\n return this.parseFragmentDefinition();\n\n case \"schema\":\n case \"scalar\":\n case \"type\":\n case \"interface\":\n case \"union\":\n case \"enum\":\n case \"input\":\n case \"directive\":\n return this.parseTypeSystemDefinition();\n\n case \"extend\":\n return this.parseTypeSystemExtension();\n } else {\n if (this.peek(p.TokenKind.BRACE_L)) return this.parseOperationDefinition();\n if (this.peekDescription()) return this.parseTypeSystemDefinition();\n }\n throw this.unexpected();\n }, n.parseOperationDefinition = function () {\n var e = this._lexer.token;\n if (this.peek(p.TokenKind.BRACE_L)) return {\n kind: d.Kind.OPERATION_DEFINITION,\n operation: \"query\",\n name: void 0,\n variableDefinitions: [],\n directives: [],\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(e)\n };\n var n,\n t = this.parseOperationType();\n return this.peek(p.TokenKind.NAME) && (n = this.parseName()), {\n kind: d.Kind.OPERATION_DEFINITION,\n operation: t,\n name: n,\n variableDefinitions: this.parseVariableDefinitions(),\n directives: this.parseDirectives(!1),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(e)\n };\n }, n.parseOperationType = function () {\n var e = this.expectToken(p.TokenKind.NAME);\n\n switch (e.value) {\n case \"query\":\n return \"query\";\n\n case \"mutation\":\n return \"mutation\";\n\n case \"subscription\":\n return \"subscription\";\n }\n\n throw this.unexpected(e);\n }, n.parseVariableDefinitions = function () {\n return this.optionalMany(p.TokenKind.PAREN_L, this.parseVariableDefinition, p.TokenKind.PAREN_R);\n }, n.parseVariableDefinition = function () {\n var e = this._lexer.token;\n return {\n kind: d.Kind.VARIABLE_DEFINITION,\n variable: this.parseVariable(),\n type: (this.expectToken(p.TokenKind.COLON), this.parseTypeReference()),\n defaultValue: this.expectOptionalToken(p.TokenKind.EQUALS) ? this.parseValueLiteral(!0) : void 0,\n directives: this.parseDirectives(!0),\n loc: this.loc(e)\n };\n }, n.parseVariable = function () {\n var e = this._lexer.token;\n return this.expectToken(p.TokenKind.DOLLAR), {\n kind: d.Kind.VARIABLE,\n name: this.parseName(),\n loc: this.loc(e)\n };\n }, n.parseSelectionSet = function () {\n var e = this._lexer.token;\n return {\n kind: d.Kind.SELECTION_SET,\n selections: this.many(p.TokenKind.BRACE_L, this.parseSelection, p.TokenKind.BRACE_R),\n loc: this.loc(e)\n };\n }, n.parseSelection = function () {\n return this.peek(p.TokenKind.SPREAD) ? this.parseFragment() : this.parseField();\n }, n.parseField = function () {\n var e,\n n,\n t = this._lexer.token,\n i = this.parseName();\n return this.expectOptionalToken(p.TokenKind.COLON) ? (e = i, n = this.parseName()) : n = i, {\n kind: d.Kind.FIELD,\n alias: e,\n name: n,\n arguments: this.parseArguments(!1),\n directives: this.parseDirectives(!1),\n selectionSet: this.peek(p.TokenKind.BRACE_L) ? this.parseSelectionSet() : void 0,\n loc: this.loc(t)\n };\n }, n.parseArguments = function (e) {\n var n = e ? this.parseConstArgument : this.parseArgument;\n return this.optionalMany(p.TokenKind.PAREN_L, n, p.TokenKind.PAREN_R);\n }, n.parseArgument = function () {\n var e = this._lexer.token,\n n = this.parseName();\n return this.expectToken(p.TokenKind.COLON), {\n kind: d.Kind.ARGUMENT,\n name: n,\n value: this.parseValueLiteral(!1),\n loc: this.loc(e)\n };\n }, n.parseConstArgument = function () {\n var e = this._lexer.token;\n return {\n kind: d.Kind.ARGUMENT,\n name: this.parseName(),\n value: (this.expectToken(p.TokenKind.COLON), this.parseValueLiteral(!0)),\n loc: this.loc(e)\n };\n }, n.parseFragment = function () {\n var e = this._lexer.token;\n this.expectToken(p.TokenKind.SPREAD);\n var n = this.expectOptionalKeyword(\"on\");\n return !n && this.peek(p.TokenKind.NAME) ? {\n kind: d.Kind.FRAGMENT_SPREAD,\n name: this.parseFragmentName(),\n directives: this.parseDirectives(!1),\n loc: this.loc(e)\n } : {\n kind: d.Kind.INLINE_FRAGMENT,\n typeCondition: n ? this.parseNamedType() : void 0,\n directives: this.parseDirectives(!1),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(e)\n };\n }, n.parseFragmentDefinition = function () {\n var e = this._lexer.token;\n return this.expectKeyword(\"fragment\"), this._options.experimentalFragmentVariables ? {\n kind: d.Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n variableDefinitions: this.parseVariableDefinitions(),\n typeCondition: (this.expectKeyword(\"on\"), this.parseNamedType()),\n directives: this.parseDirectives(!1),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(e)\n } : {\n kind: d.Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n typeCondition: (this.expectKeyword(\"on\"), this.parseNamedType()),\n directives: this.parseDirectives(!1),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(e)\n };\n }, n.parseFragmentName = function () {\n if (\"on\" === this._lexer.token.value) throw this.unexpected();\n return this.parseName();\n }, n.parseValueLiteral = function (e) {\n var n = this._lexer.token;\n\n switch (n.kind) {\n case p.TokenKind.BRACKET_L:\n return this.parseList(e);\n\n case p.TokenKind.BRACE_L:\n return this.parseObject(e);\n\n case p.TokenKind.INT:\n return this._lexer.advance(), {\n kind: d.Kind.INT,\n value: n.value,\n loc: this.loc(n)\n };\n\n case p.TokenKind.FLOAT:\n return this._lexer.advance(), {\n kind: d.Kind.FLOAT,\n value: n.value,\n loc: this.loc(n)\n };\n\n case p.TokenKind.STRING:\n case p.TokenKind.BLOCK_STRING:\n return this.parseStringLiteral();\n\n case p.TokenKind.NAME:\n return \"true\" === n.value || \"false\" === n.value ? (this._lexer.advance(), {\n kind: d.Kind.BOOLEAN,\n value: \"true\" === n.value,\n loc: this.loc(n)\n }) : \"null\" === n.value ? (this._lexer.advance(), {\n kind: d.Kind.NULL,\n loc: this.loc(n)\n }) : (this._lexer.advance(), {\n kind: d.Kind.ENUM,\n value: n.value,\n loc: this.loc(n)\n });\n\n case p.TokenKind.DOLLAR:\n if (!e) return this.parseVariable();\n }\n\n throw this.unexpected();\n }, n.parseStringLiteral = function () {\n var e = this._lexer.token;\n return this._lexer.advance(), {\n kind: d.Kind.STRING,\n value: e.value,\n block: e.kind === p.TokenKind.BLOCK_STRING,\n loc: this.loc(e)\n };\n }, n.parseList = function (e) {\n var n = this,\n t = this._lexer.token;\n return {\n kind: d.Kind.LIST,\n values: this.any(p.TokenKind.BRACKET_L, function () {\n return n.parseValueLiteral(e);\n }, p.TokenKind.BRACKET_R),\n loc: this.loc(t)\n };\n }, n.parseObject = function (e) {\n var n = this,\n t = this._lexer.token;\n return {\n kind: d.Kind.OBJECT,\n fields: this.any(p.TokenKind.BRACE_L, function () {\n return n.parseObjectField(e);\n }, p.TokenKind.BRACE_R),\n loc: this.loc(t)\n };\n }, n.parseObjectField = function (e) {\n var n = this._lexer.token,\n t = this.parseName();\n return this.expectToken(p.TokenKind.COLON), {\n kind: d.Kind.OBJECT_FIELD,\n name: t,\n value: this.parseValueLiteral(e),\n loc: this.loc(n)\n };\n }, n.parseDirectives = function (e) {\n for (var n = []; this.peek(p.TokenKind.AT);) {\n n.push(this.parseDirective(e));\n }\n\n return n;\n }, n.parseDirective = function (e) {\n var n = this._lexer.token;\n return this.expectToken(p.TokenKind.AT), {\n kind: d.Kind.DIRECTIVE,\n name: this.parseName(),\n arguments: this.parseArguments(e),\n loc: this.loc(n)\n };\n }, n.parseTypeReference = function () {\n var e,\n n = this._lexer.token;\n return this.expectOptionalToken(p.TokenKind.BRACKET_L) ? (e = this.parseTypeReference(), this.expectToken(p.TokenKind.BRACKET_R), e = {\n kind: d.Kind.LIST_TYPE,\n type: e,\n loc: this.loc(n)\n }) : e = this.parseNamedType(), this.expectOptionalToken(p.TokenKind.BANG) ? {\n kind: d.Kind.NON_NULL_TYPE,\n type: e,\n loc: this.loc(n)\n } : e;\n }, n.parseNamedType = function () {\n var e = this._lexer.token;\n return {\n kind: d.Kind.NAMED_TYPE,\n name: this.parseName(),\n loc: this.loc(e)\n };\n }, n.parseTypeSystemDefinition = function () {\n var e = this.peekDescription() ? this._lexer.lookahead() : this._lexer.token;\n if (e.kind === p.TokenKind.NAME) switch (e.value) {\n case \"schema\":\n return this.parseSchemaDefinition();\n\n case \"scalar\":\n return this.parseScalarTypeDefinition();\n\n case \"type\":\n return this.parseObjectTypeDefinition();\n\n case \"interface\":\n return this.parseInterfaceTypeDefinition();\n\n case \"union\":\n return this.parseUnionTypeDefinition();\n\n case \"enum\":\n return this.parseEnumTypeDefinition();\n\n case \"input\":\n return this.parseInputObjectTypeDefinition();\n\n case \"directive\":\n return this.parseDirectiveDefinition();\n }\n throw this.unexpected(e);\n }, n.peekDescription = function () {\n return this.peek(p.TokenKind.STRING) || this.peek(p.TokenKind.BLOCK_STRING);\n }, n.parseDescription = function () {\n if (this.peekDescription()) return this.parseStringLiteral();\n }, n.parseSchemaDefinition = function () {\n var e = this._lexer.token;\n this.expectKeyword(\"schema\");\n var n = this.parseDirectives(!0),\n t = this.many(p.TokenKind.BRACE_L, this.parseOperationTypeDefinition, p.TokenKind.BRACE_R);\n return {\n kind: d.Kind.SCHEMA_DEFINITION,\n directives: n,\n operationTypes: t,\n loc: this.loc(e)\n };\n }, n.parseOperationTypeDefinition = function () {\n var e = this._lexer.token,\n n = this.parseOperationType();\n this.expectToken(p.TokenKind.COLON);\n var t = this.parseNamedType();\n return {\n kind: d.Kind.OPERATION_TYPE_DEFINITION,\n operation: n,\n type: t,\n loc: this.loc(e)\n };\n }, n.parseScalarTypeDefinition = function () {\n var e = this._lexer.token,\n n = this.parseDescription();\n this.expectKeyword(\"scalar\");\n var t = this.parseName(),\n i = this.parseDirectives(!0);\n return {\n kind: d.Kind.SCALAR_TYPE_DEFINITION,\n description: n,\n name: t,\n directives: i,\n loc: this.loc(e)\n };\n }, n.parseObjectTypeDefinition = function () {\n var e = this._lexer.token,\n n = this.parseDescription();\n this.expectKeyword(\"type\");\n var t = this.parseName(),\n i = this.parseImplementsInterfaces(),\n r = this.parseDirectives(!0),\n o = this.parseFieldsDefinition();\n return {\n kind: d.Kind.OBJECT_TYPE_DEFINITION,\n description: n,\n name: t,\n interfaces: i,\n directives: r,\n fields: o,\n loc: this.loc(e)\n };\n }, n.parseImplementsInterfaces = function () {\n var e = [];\n\n if (this.expectOptionalKeyword(\"implements\")) {\n this.expectOptionalToken(p.TokenKind.AMP);\n\n do {\n e.push(this.parseNamedType());\n } while (this.expectOptionalToken(p.TokenKind.AMP) || this._options.allowLegacySDLImplementsInterfaces && this.peek(p.TokenKind.NAME));\n }\n\n return e;\n }, n.parseFieldsDefinition = function () {\n return this._options.allowLegacySDLEmptyFields && this.peek(p.TokenKind.BRACE_L) && this._lexer.lookahead().kind === p.TokenKind.BRACE_R ? (this._lexer.advance(), this._lexer.advance(), []) : this.optionalMany(p.TokenKind.BRACE_L, this.parseFieldDefinition, p.TokenKind.BRACE_R);\n }, n.parseFieldDefinition = function () {\n var e = this._lexer.token,\n n = this.parseDescription(),\n t = this.parseName(),\n i = this.parseArgumentDefs();\n this.expectToken(p.TokenKind.COLON);\n var r = this.parseTypeReference(),\n o = this.parseDirectives(!0);\n return {\n kind: d.Kind.FIELD_DEFINITION,\n description: n,\n name: t,\n arguments: i,\n type: r,\n directives: o,\n loc: this.loc(e)\n };\n }, n.parseArgumentDefs = function () {\n return this.optionalMany(p.TokenKind.PAREN_L, this.parseInputValueDef, p.TokenKind.PAREN_R);\n }, n.parseInputValueDef = function () {\n var e = this._lexer.token,\n n = this.parseDescription(),\n t = this.parseName();\n this.expectToken(p.TokenKind.COLON);\n var i,\n r = this.parseTypeReference();\n this.expectOptionalToken(p.TokenKind.EQUALS) && (i = this.parseValueLiteral(!0));\n var o = this.parseDirectives(!0);\n return {\n kind: d.Kind.INPUT_VALUE_DEFINITION,\n description: n,\n name: t,\n type: r,\n defaultValue: i,\n directives: o,\n loc: this.loc(e)\n };\n }, n.parseInterfaceTypeDefinition = function () {\n var e = this._lexer.token,\n n = this.parseDescription();\n this.expectKeyword(\"interface\");\n var t = this.parseName(),\n i = this.parseDirectives(!0),\n r = this.parseFieldsDefinition();\n return {\n kind: d.Kind.INTERFACE_TYPE_DEFINITION,\n description: n,\n name: t,\n directives: i,\n fields: r,\n loc: this.loc(e)\n };\n }, n.parseUnionTypeDefinition = function () {\n var e = this._lexer.token,\n n = this.parseDescription();\n this.expectKeyword(\"union\");\n var t = this.parseName(),\n i = this.parseDirectives(!0),\n r = this.parseUnionMemberTypes();\n return {\n kind: d.Kind.UNION_TYPE_DEFINITION,\n description: n,\n name: t,\n directives: i,\n types: r,\n loc: this.loc(e)\n };\n }, n.parseUnionMemberTypes = function () {\n var e = [];\n\n if (this.expectOptionalToken(p.TokenKind.EQUALS)) {\n this.expectOptionalToken(p.TokenKind.PIPE);\n\n do {\n e.push(this.parseNamedType());\n } while (this.expectOptionalToken(p.TokenKind.PIPE));\n }\n\n return e;\n }, n.parseEnumTypeDefinition = function () {\n var e = this._lexer.token,\n n = this.parseDescription();\n this.expectKeyword(\"enum\");\n var t = this.parseName(),\n i = this.parseDirectives(!0),\n r = this.parseEnumValuesDefinition();\n return {\n kind: d.Kind.ENUM_TYPE_DEFINITION,\n description: n,\n name: t,\n directives: i,\n values: r,\n loc: this.loc(e)\n };\n }, n.parseEnumValuesDefinition = function () {\n return this.optionalMany(p.TokenKind.BRACE_L, this.parseEnumValueDefinition, p.TokenKind.BRACE_R);\n }, n.parseEnumValueDefinition = function () {\n var e = this._lexer.token,\n n = this.parseDescription(),\n t = this.parseName(),\n i = this.parseDirectives(!0);\n return {\n kind: d.Kind.ENUM_VALUE_DEFINITION,\n description: n,\n name: t,\n directives: i,\n loc: this.loc(e)\n };\n }, n.parseInputObjectTypeDefinition = function () {\n var e = this._lexer.token,\n n = this.parseDescription();\n this.expectKeyword(\"input\");\n var t = this.parseName(),\n i = this.parseDirectives(!0),\n r = this.parseInputFieldsDefinition();\n return {\n kind: d.Kind.INPUT_OBJECT_TYPE_DEFINITION,\n description: n,\n name: t,\n directives: i,\n fields: r,\n loc: this.loc(e)\n };\n }, n.parseInputFieldsDefinition = function () {\n return this.optionalMany(p.TokenKind.BRACE_L, this.parseInputValueDef, p.TokenKind.BRACE_R);\n }, n.parseTypeSystemExtension = function () {\n var e = this._lexer.lookahead();\n\n if (e.kind === p.TokenKind.NAME) switch (e.value) {\n case \"schema\":\n return this.parseSchemaExtension();\n\n case \"scalar\":\n return this.parseScalarTypeExtension();\n\n case \"type\":\n return this.parseObjectTypeExtension();\n\n case \"interface\":\n return this.parseInterfaceTypeExtension();\n\n case \"union\":\n return this.parseUnionTypeExtension();\n\n case \"enum\":\n return this.parseEnumTypeExtension();\n\n case \"input\":\n return this.parseInputObjectTypeExtension();\n }\n throw this.unexpected(e);\n }, n.parseSchemaExtension = function () {\n var e = this._lexer.token;\n this.expectKeyword(\"extend\"), this.expectKeyword(\"schema\");\n var n = this.parseDirectives(!0),\n t = this.optionalMany(p.TokenKind.BRACE_L, this.parseOperationTypeDefinition, p.TokenKind.BRACE_R);\n if (0 === n.length && 0 === t.length) throw this.unexpected();\n return {\n kind: d.Kind.SCHEMA_EXTENSION,\n directives: n,\n operationTypes: t,\n loc: this.loc(e)\n };\n }, n.parseScalarTypeExtension = function () {\n var e = this._lexer.token;\n this.expectKeyword(\"extend\"), this.expectKeyword(\"scalar\");\n var n = this.parseName(),\n t = this.parseDirectives(!0);\n if (0 === t.length) throw this.unexpected();\n return {\n kind: d.Kind.SCALAR_TYPE_EXTENSION,\n name: n,\n directives: t,\n loc: this.loc(e)\n };\n }, n.parseObjectTypeExtension = function () {\n var e = this._lexer.token;\n this.expectKeyword(\"extend\"), this.expectKeyword(\"type\");\n var n = this.parseName(),\n t = this.parseImplementsInterfaces(),\n i = this.parseDirectives(!0),\n r = this.parseFieldsDefinition();\n if (0 === t.length && 0 === i.length && 0 === r.length) throw this.unexpected();\n return {\n kind: d.Kind.OBJECT_TYPE_EXTENSION,\n name: n,\n interfaces: t,\n directives: i,\n fields: r,\n loc: this.loc(e)\n };\n }, n.parseInterfaceTypeExtension = function () {\n var e = this._lexer.token;\n this.expectKeyword(\"extend\"), this.expectKeyword(\"interface\");\n var n = this.parseName(),\n t = this.parseDirectives(!0),\n i = this.parseFieldsDefinition();\n if (0 === t.length && 0 === i.length) throw this.unexpected();\n return {\n kind: d.Kind.INTERFACE_TYPE_EXTENSION,\n name: n,\n directives: t,\n fields: i,\n loc: this.loc(e)\n };\n }, n.parseUnionTypeExtension = function () {\n var e = this._lexer.token;\n this.expectKeyword(\"extend\"), this.expectKeyword(\"union\");\n var n = this.parseName(),\n t = this.parseDirectives(!0),\n i = this.parseUnionMemberTypes();\n if (0 === t.length && 0 === i.length) throw this.unexpected();\n return {\n kind: d.Kind.UNION_TYPE_EXTENSION,\n name: n,\n directives: t,\n types: i,\n loc: this.loc(e)\n };\n }, n.parseEnumTypeExtension = function () {\n var e = this._lexer.token;\n this.expectKeyword(\"extend\"), this.expectKeyword(\"enum\");\n var n = this.parseName(),\n t = this.parseDirectives(!0),\n i = this.parseEnumValuesDefinition();\n if (0 === t.length && 0 === i.length) throw this.unexpected();\n return {\n kind: d.Kind.ENUM_TYPE_EXTENSION,\n name: n,\n directives: t,\n values: i,\n loc: this.loc(e)\n };\n }, n.parseInputObjectTypeExtension = function () {\n var e = this._lexer.token;\n this.expectKeyword(\"extend\"), this.expectKeyword(\"input\");\n var n = this.parseName(),\n t = this.parseDirectives(!0),\n i = this.parseInputFieldsDefinition();\n if (0 === t.length && 0 === i.length) throw this.unexpected();\n return {\n kind: d.Kind.INPUT_OBJECT_TYPE_EXTENSION,\n name: n,\n directives: t,\n fields: i,\n loc: this.loc(e)\n };\n }, n.parseDirectiveDefinition = function () {\n var e = this._lexer.token,\n n = this.parseDescription();\n this.expectKeyword(\"directive\"), this.expectToken(p.TokenKind.AT);\n var t = this.parseName(),\n i = this.parseArgumentDefs(),\n r = this.expectOptionalKeyword(\"repeatable\");\n this.expectKeyword(\"on\");\n var o = this.parseDirectiveLocations();\n return {\n kind: d.Kind.DIRECTIVE_DEFINITION,\n description: n,\n name: t,\n arguments: i,\n repeatable: r,\n locations: o,\n loc: this.loc(e)\n };\n }, n.parseDirectiveLocations = function () {\n this.expectOptionalToken(p.TokenKind.PIPE);\n var e = [];\n\n do {\n e.push(this.parseDirectiveLocation());\n } while (this.expectOptionalToken(p.TokenKind.PIPE));\n\n return e;\n }, n.parseDirectiveLocation = function () {\n var e = this._lexer.token,\n n = this.parseName();\n if (void 0 !== k.DirectiveLocation[n.value]) return n;\n throw this.unexpected(e);\n }, n.loc = function (e) {\n if (!this._options.noLocation) return new u(e, this._lexer.lastToken, this._lexer.source);\n }, n.peek = function (e) {\n return this._lexer.token.kind === e;\n }, n.expectToken = function (e) {\n var n = this._lexer.token;\n if (n.kind === e) return this._lexer.advance(), n;\n throw (0, E.syntaxError)(this._lexer.source, n.start, \"Expected \".concat(e, \", found \").concat(l(n)));\n }, n.expectOptionalToken = function (e) {\n var n = this._lexer.token;\n if (n.kind === e) return this._lexer.advance(), n;\n }, n.expectKeyword = function (e) {\n var n = this._lexer.token;\n if (n.kind !== p.TokenKind.NAME || n.value !== e) throw (0, E.syntaxError)(this._lexer.source, n.start, 'Expected \"'.concat(e, '\", found ').concat(l(n)));\n\n this._lexer.advance();\n }, n.expectOptionalKeyword = function (e) {\n var n = this._lexer.token;\n return n.kind === p.TokenKind.NAME && n.value === e && (this._lexer.advance(), !0);\n }, n.unexpected = function (e) {\n var n = e || this._lexer.token;\n return (0, E.syntaxError)(this._lexer.source, n.start, \"Unexpected \".concat(l(n)));\n }, n.any = function (e, n, t) {\n this.expectToken(e);\n\n for (var i = []; !this.expectOptionalToken(t);) {\n i.push(n.call(this));\n }\n\n return i;\n }, n.optionalMany = function (e, n, t) {\n if (this.expectOptionalToken(e)) {\n var i = [];\n\n do {\n i.push(n.call(this));\n } while (!this.expectOptionalToken(t));\n\n return i;\n }\n\n return [];\n }, n.many = function (e, n, t) {\n this.expectToken(e);\n var i = [];\n\n do {\n i.push(n.call(this));\n } while (!this.expectOptionalToken(t));\n\n return i;\n }, e;\n }();\n\n function u(e, n, t) {\n this.start = e.start, this.end = n.end, this.startToken = e, this.endToken = n, this.source = t;\n }\n\n function l(e) {\n var n = e.value;\n return n ? \"\".concat(e.kind, ' \"').concat(n, '\"') : e.kind;\n }\n\n (0, r.default)(u, function () {\n return {\n start: this.start,\n end: this.end\n };\n });\n });\n r(I);\n I.parse, I.parseValue, I.parseType;\n\n var _ = o(function (e, n) {\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.visit = function (e, n) {\n var t = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : r,\n c = void 0,\n u = Array.isArray(e),\n l = [e],\n d = -1,\n p = [],\n f = void 0,\n h = void 0,\n T = void 0,\n v = [],\n E = [],\n y = e;\n\n do {\n var N = ++d === l.length,\n m = N && 0 !== p.length;\n\n if (N) {\n if (h = 0 === E.length ? void 0 : v[v.length - 1], f = T, T = E.pop(), m) {\n if (u) f = f.slice();else {\n for (var k = {}, I = 0, _ = Object.keys(f); I < _.length; I++) {\n var O = _[I];\n k[O] = f[O];\n }\n\n f = k;\n }\n\n for (var D = 0, x = 0; x < p.length; x++) {\n var K = p[x][0],\n A = p[x][1];\n u && (K -= D), u && null === A ? (f.splice(K, 1), D++) : f[K] = A;\n }\n }\n\n d = c.index, l = c.keys, p = c.edits, u = c.inArray, c = c.prev;\n } else {\n if (h = T ? u ? d : l[d] : void 0, null == (f = T ? T[h] : y)) continue;\n T && v.push(h);\n }\n\n var b = void 0;\n\n if (!Array.isArray(f)) {\n if (!a(f)) throw new Error(\"Invalid AST Node: \" + (0, i.default)(f));\n var S = s(n, f.kind, N);\n\n if (S) {\n if ((b = S.call(n, f, h, T, v, E)) === o) break;\n\n if (!1 === b) {\n if (!N) {\n v.pop();\n continue;\n }\n } else if (void 0 !== b && (p.push([h, b]), !N)) {\n if (!a(b)) {\n v.pop();\n continue;\n }\n\n f = b;\n }\n }\n }\n\n void 0 === b && m && p.push([h, f]), N ? v.pop() : (c = {\n inArray: u,\n index: d,\n keys: l,\n edits: p,\n prev: c\n }, u = Array.isArray(f), l = u ? f : t[f.kind] || [], d = -1, p = [], T && E.push(T), T = f);\n } while (void 0 !== c);\n\n 0 !== p.length && (y = p[p.length - 1][1]);\n return y;\n }, n.visitInParallel = function (e) {\n var n = new Array(e.length);\n return {\n enter: function enter(t) {\n for (var i = 0; i < e.length; i++) {\n if (!n[i]) {\n var r = s(e[i], t.kind, !1);\n\n if (r) {\n var a = r.apply(e[i], arguments);\n if (!1 === a) n[i] = t;else if (a === o) n[i] = o;else if (void 0 !== a) return a;\n }\n }\n }\n },\n leave: function leave(t) {\n for (var i = 0; i < e.length; i++) {\n if (n[i]) n[i] === t && (n[i] = null);else {\n var r = s(e[i], t.kind, !0);\n\n if (r) {\n var a = r.apply(e[i], arguments);\n if (a === o) n[i] = o;else if (void 0 !== a && !1 !== a) return a;\n }\n }\n }\n }\n };\n }, n.visitWithTypeInfo = function (e, n) {\n return {\n enter: function enter(t) {\n e.enter(t);\n var i = s(n, t.kind, !1);\n\n if (i) {\n var r = i.apply(n, arguments);\n return void 0 !== r && (e.leave(t), a(r) && e.enter(r)), r;\n }\n },\n leave: function leave(t) {\n var i,\n r = s(n, t.kind, !0);\n return r && (i = r.apply(n, arguments)), e.leave(t), i;\n }\n };\n }, n.getVisitFn = s, n.BREAK = n.QueryDocumentKeys = void 0;\n var t,\n i = (t = m) && t.__esModule ? t : {\n default: t\n };\n var r = {\n Name: [],\n Document: [\"definitions\"],\n OperationDefinition: [\"name\", \"variableDefinitions\", \"directives\", \"selectionSet\"],\n VariableDefinition: [\"variable\", \"type\", \"defaultValue\", \"directives\"],\n Variable: [\"name\"],\n SelectionSet: [\"selections\"],\n Field: [\"alias\", \"name\", \"arguments\", \"directives\", \"selectionSet\"],\n Argument: [\"name\", \"value\"],\n FragmentSpread: [\"name\", \"directives\"],\n InlineFragment: [\"typeCondition\", \"directives\", \"selectionSet\"],\n FragmentDefinition: [\"name\", \"variableDefinitions\", \"typeCondition\", \"directives\", \"selectionSet\"],\n IntValue: [],\n FloatValue: [],\n StringValue: [],\n BooleanValue: [],\n NullValue: [],\n EnumValue: [],\n ListValue: [\"values\"],\n ObjectValue: [\"fields\"],\n ObjectField: [\"name\", \"value\"],\n Directive: [\"name\", \"arguments\"],\n NamedType: [\"name\"],\n ListType: [\"type\"],\n NonNullType: [\"type\"],\n SchemaDefinition: [\"directives\", \"operationTypes\"],\n OperationTypeDefinition: [\"type\"],\n ScalarTypeDefinition: [\"description\", \"name\", \"directives\"],\n ObjectTypeDefinition: [\"description\", \"name\", \"interfaces\", \"directives\", \"fields\"],\n FieldDefinition: [\"description\", \"name\", \"arguments\", \"type\", \"directives\"],\n InputValueDefinition: [\"description\", \"name\", \"type\", \"defaultValue\", \"directives\"],\n InterfaceTypeDefinition: [\"description\", \"name\", \"directives\", \"fields\"],\n UnionTypeDefinition: [\"description\", \"name\", \"directives\", \"types\"],\n EnumTypeDefinition: [\"description\", \"name\", \"directives\", \"values\"],\n EnumValueDefinition: [\"description\", \"name\", \"directives\"],\n InputObjectTypeDefinition: [\"description\", \"name\", \"directives\", \"fields\"],\n DirectiveDefinition: [\"description\", \"name\", \"arguments\", \"locations\"],\n SchemaExtension: [\"directives\", \"operationTypes\"],\n ScalarTypeExtension: [\"name\", \"directives\"],\n ObjectTypeExtension: [\"name\", \"interfaces\", \"directives\", \"fields\"],\n InterfaceTypeExtension: [\"name\", \"directives\", \"fields\"],\n UnionTypeExtension: [\"name\", \"directives\", \"types\"],\n EnumTypeExtension: [\"name\", \"directives\", \"values\"],\n InputObjectTypeExtension: [\"name\", \"directives\", \"fields\"]\n };\n n.QueryDocumentKeys = r;\n var o = Object.freeze({});\n\n function a(e) {\n return Boolean(e && \"string\" == typeof e.kind);\n }\n\n function s(e, n, t) {\n var i = e[n];\n\n if (i) {\n if (!t && \"function\" == typeof i) return i;\n var r = t ? i.leave : i.enter;\n if (\"function\" == typeof r) return r;\n } else {\n var o = t ? e.leave : e.enter;\n\n if (o) {\n if (\"function\" == typeof o) return o;\n var a = o[n];\n if (\"function\" == typeof a) return a;\n }\n }\n }\n\n n.BREAK = o;\n });\n\n r(_);\n _.visit, _.visitInParallel, _.visitWithTypeInfo, _.getVisitFn, _.BREAK, _.QueryDocumentKeys;\n var O = o(function (e, n) {\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.print = function (e) {\n return (0, _.visit)(e, {\n leave: t\n });\n };\n var t = {\n Name: function Name(e) {\n return e.value;\n },\n Variable: function Variable(e) {\n return \"$\" + e.name;\n },\n Document: function Document(e) {\n return r(e.definitions, \"\\n\\n\") + \"\\n\";\n },\n OperationDefinition: function OperationDefinition(e) {\n var n = e.operation,\n t = e.name,\n i = a(\"(\", r(e.variableDefinitions, \", \"), \")\"),\n o = r(e.directives, \" \"),\n s = e.selectionSet;\n return t || o || i || \"query\" !== n ? r([n, r([t, i]), o, s], \" \") : s;\n },\n VariableDefinition: function VariableDefinition(e) {\n var n = e.variable,\n t = e.type,\n i = e.defaultValue,\n o = e.directives;\n return n + \": \" + t + a(\" = \", i) + a(\" \", r(o, \" \"));\n },\n SelectionSet: function SelectionSet(e) {\n return o(e.selections);\n },\n Field: function Field(e) {\n var n = e.alias,\n t = e.name,\n i = e.arguments,\n o = e.directives,\n s = e.selectionSet;\n return r([a(\"\", n, \": \") + t + a(\"(\", r(i, \", \"), \")\"), r(o, \" \"), s], \" \");\n },\n Argument: function Argument(e) {\n return e.name + \": \" + e.value;\n },\n FragmentSpread: function FragmentSpread(e) {\n return \"...\" + e.name + a(\" \", r(e.directives, \" \"));\n },\n InlineFragment: function InlineFragment(e) {\n var n = e.typeCondition,\n t = e.directives,\n i = e.selectionSet;\n return r([\"...\", a(\"on \", n), r(t, \" \"), i], \" \");\n },\n FragmentDefinition: function FragmentDefinition(e) {\n var n = e.name,\n t = e.typeCondition,\n i = e.variableDefinitions,\n o = e.directives,\n s = e.selectionSet;\n return \"fragment \".concat(n).concat(a(\"(\", r(i, \", \"), \")\"), \" \") + \"on \".concat(t, \" \").concat(a(\"\", r(o, \" \"), \" \")) + s;\n },\n IntValue: function IntValue(e) {\n return e.value;\n },\n FloatValue: function FloatValue(e) {\n return e.value;\n },\n StringValue: function StringValue(e, n) {\n var t = e.value;\n return e.block ? (0, y.printBlockString)(t, \"description\" === n ? \"\" : \" \") : JSON.stringify(t);\n },\n BooleanValue: function BooleanValue(e) {\n return e.value ? \"true\" : \"false\";\n },\n NullValue: function NullValue() {\n return \"null\";\n },\n EnumValue: function EnumValue(e) {\n return e.value;\n },\n ListValue: function ListValue(e) {\n return \"[\" + r(e.values, \", \") + \"]\";\n },\n ObjectValue: function ObjectValue(e) {\n return \"{\" + r(e.fields, \", \") + \"}\";\n },\n ObjectField: function ObjectField(e) {\n return e.name + \": \" + e.value;\n },\n Directive: function Directive(e) {\n return \"@\" + e.name + a(\"(\", r(e.arguments, \", \"), \")\");\n },\n NamedType: function NamedType(e) {\n return e.name;\n },\n ListType: function ListType(e) {\n return \"[\" + e.type + \"]\";\n },\n NonNullType: function NonNullType(e) {\n return e.type + \"!\";\n },\n SchemaDefinition: function SchemaDefinition(e) {\n var n = e.directives,\n t = e.operationTypes;\n return r([\"schema\", r(n, \" \"), o(t)], \" \");\n },\n OperationTypeDefinition: function OperationTypeDefinition(e) {\n return e.operation + \": \" + e.type;\n },\n ScalarTypeDefinition: i(function (e) {\n return r([\"scalar\", e.name, r(e.directives, \" \")], \" \");\n }),\n ObjectTypeDefinition: i(function (e) {\n var n = e.name,\n t = e.interfaces,\n i = e.directives,\n s = e.fields;\n return r([\"type\", n, a(\"implements \", r(t, \" & \")), r(i, \" \"), o(s)], \" \");\n }),\n FieldDefinition: i(function (e) {\n var n = e.name,\n t = e.arguments,\n i = e.type,\n o = e.directives;\n return n + (u(t) ? a(\"(\\n\", s(r(t, \"\\n\")), \"\\n)\") : a(\"(\", r(t, \", \"), \")\")) + \": \" + i + a(\" \", r(o, \" \"));\n }),\n InputValueDefinition: i(function (e) {\n var n = e.name,\n t = e.type,\n i = e.defaultValue,\n o = e.directives;\n return r([n + \": \" + t, a(\"= \", i), r(o, \" \")], \" \");\n }),\n InterfaceTypeDefinition: i(function (e) {\n var n = e.name,\n t = e.directives,\n i = e.fields;\n return r([\"interface\", n, r(t, \" \"), o(i)], \" \");\n }),\n UnionTypeDefinition: i(function (e) {\n var n = e.name,\n t = e.directives,\n i = e.types;\n return r([\"union\", n, r(t, \" \"), i && 0 !== i.length ? \"= \" + r(i, \" | \") : \"\"], \" \");\n }),\n EnumTypeDefinition: i(function (e) {\n var n = e.name,\n t = e.directives,\n i = e.values;\n return r([\"enum\", n, r(t, \" \"), o(i)], \" \");\n }),\n EnumValueDefinition: i(function (e) {\n return r([e.name, r(e.directives, \" \")], \" \");\n }),\n InputObjectTypeDefinition: i(function (e) {\n var n = e.name,\n t = e.directives,\n i = e.fields;\n return r([\"input\", n, r(t, \" \"), o(i)], \" \");\n }),\n DirectiveDefinition: i(function (e) {\n var n = e.name,\n t = e.arguments,\n i = e.repeatable,\n o = e.locations;\n return \"directive @\" + n + (u(t) ? a(\"(\\n\", s(r(t, \"\\n\")), \"\\n)\") : a(\"(\", r(t, \", \"), \")\")) + (i ? \" repeatable\" : \"\") + \" on \" + r(o, \" | \");\n }),\n SchemaExtension: function SchemaExtension(e) {\n var n = e.directives,\n t = e.operationTypes;\n return r([\"extend schema\", r(n, \" \"), o(t)], \" \");\n },\n ScalarTypeExtension: function ScalarTypeExtension(e) {\n return r([\"extend scalar\", e.name, r(e.directives, \" \")], \" \");\n },\n ObjectTypeExtension: function ObjectTypeExtension(e) {\n var n = e.name,\n t = e.interfaces,\n i = e.directives,\n s = e.fields;\n return r([\"extend type\", n, a(\"implements \", r(t, \" & \")), r(i, \" \"), o(s)], \" \");\n },\n InterfaceTypeExtension: function InterfaceTypeExtension(e) {\n var n = e.name,\n t = e.directives,\n i = e.fields;\n return r([\"extend interface\", n, r(t, \" \"), o(i)], \" \");\n },\n UnionTypeExtension: function UnionTypeExtension(e) {\n var n = e.name,\n t = e.directives,\n i = e.types;\n return r([\"extend union\", n, r(t, \" \"), i && 0 !== i.length ? \"= \" + r(i, \" | \") : \"\"], \" \");\n },\n EnumTypeExtension: function EnumTypeExtension(e) {\n var n = e.name,\n t = e.directives,\n i = e.values;\n return r([\"extend enum\", n, r(t, \" \"), o(i)], \" \");\n },\n InputObjectTypeExtension: function InputObjectTypeExtension(e) {\n var n = e.name,\n t = e.directives,\n i = e.fields;\n return r([\"extend input\", n, r(t, \" \"), o(i)], \" \");\n }\n };\n\n function i(e) {\n return function (n) {\n return r([n.description, e(n)], \"\\n\");\n };\n }\n\n function r(e, n) {\n return e ? e.filter(function (e) {\n return e;\n }).join(n || \"\") : \"\";\n }\n\n function o(e) {\n return e && 0 !== e.length ? \"{\\n\" + s(r(e, \"\\n\")) + \"\\n}\" : \"\";\n }\n\n function a(e, n, t) {\n return n ? e + n + (t || \"\") : \"\";\n }\n\n function s(e) {\n return e && \" \" + e.replace(/\\n/g, \"\\n \");\n }\n\n function c(e) {\n return -1 !== e.indexOf(\"\\n\");\n }\n\n function u(e) {\n return e && e.some(c);\n }\n });\n r(O);\n O.print;\n var D = o(function (e, n) {\n function t(e) {\n return e.kind === d.Kind.OPERATION_DEFINITION || e.kind === d.Kind.FRAGMENT_DEFINITION;\n }\n\n function i(e) {\n return e.kind === d.Kind.SCHEMA_DEFINITION || r(e) || e.kind === d.Kind.DIRECTIVE_DEFINITION;\n }\n\n function r(e) {\n return e.kind === d.Kind.SCALAR_TYPE_DEFINITION || e.kind === d.Kind.OBJECT_TYPE_DEFINITION || e.kind === d.Kind.INTERFACE_TYPE_DEFINITION || e.kind === d.Kind.UNION_TYPE_DEFINITION || e.kind === d.Kind.ENUM_TYPE_DEFINITION || e.kind === d.Kind.INPUT_OBJECT_TYPE_DEFINITION;\n }\n\n function o(e) {\n return e.kind === d.Kind.SCHEMA_EXTENSION || a(e);\n }\n\n function a(e) {\n return e.kind === d.Kind.SCALAR_TYPE_EXTENSION || e.kind === d.Kind.OBJECT_TYPE_EXTENSION || e.kind === d.Kind.INTERFACE_TYPE_EXTENSION || e.kind === d.Kind.UNION_TYPE_EXTENSION || e.kind === d.Kind.ENUM_TYPE_EXTENSION || e.kind === d.Kind.INPUT_OBJECT_TYPE_EXTENSION;\n }\n\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.isDefinitionNode = function (e) {\n return t(e) || i(e) || o(e);\n }, n.isExecutableDefinitionNode = t, n.isSelectionNode = function (e) {\n return e.kind === d.Kind.FIELD || e.kind === d.Kind.FRAGMENT_SPREAD || e.kind === d.Kind.INLINE_FRAGMENT;\n }, n.isValueNode = function (e) {\n return e.kind === d.Kind.VARIABLE || e.kind === d.Kind.INT || e.kind === d.Kind.FLOAT || e.kind === d.Kind.STRING || e.kind === d.Kind.BOOLEAN || e.kind === d.Kind.NULL || e.kind === d.Kind.ENUM || e.kind === d.Kind.LIST || e.kind === d.Kind.OBJECT;\n }, n.isTypeNode = function (e) {\n return e.kind === d.Kind.NAMED_TYPE || e.kind === d.Kind.LIST_TYPE || e.kind === d.Kind.NON_NULL_TYPE;\n }, n.isTypeSystemDefinitionNode = i, n.isTypeDefinitionNode = r, n.isTypeSystemExtensionNode = o, n.isTypeExtensionNode = a;\n });\n r(D);\n D.isDefinitionNode, D.isExecutableDefinitionNode, D.isSelectionNode, D.isValueNode, D.isTypeNode, D.isTypeSystemDefinitionNode, D.isTypeDefinitionNode, D.isTypeSystemExtensionNode, D.isTypeExtensionNode;\n var x = o(function (e, n) {\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), Object.defineProperty(n, \"Source\", {\n enumerable: !0,\n get: function get() {\n return c.Source;\n }\n }), Object.defineProperty(n, \"getLocation\", {\n enumerable: !0,\n get: function get() {\n return u.getLocation;\n }\n }), Object.defineProperty(n, \"printLocation\", {\n enumerable: !0,\n get: function get() {\n return l.printLocation;\n }\n }), Object.defineProperty(n, \"printSourceLocation\", {\n enumerable: !0,\n get: function get() {\n return l.printSourceLocation;\n }\n }), Object.defineProperty(n, \"Kind\", {\n enumerable: !0,\n get: function get() {\n return d.Kind;\n }\n }), Object.defineProperty(n, \"TokenKind\", {\n enumerable: !0,\n get: function get() {\n return p.TokenKind;\n }\n }), Object.defineProperty(n, \"createLexer\", {\n enumerable: !0,\n get: function get() {\n return N.createLexer;\n }\n }), Object.defineProperty(n, \"parse\", {\n enumerable: !0,\n get: function get() {\n return I.parse;\n }\n }), Object.defineProperty(n, \"parseValue\", {\n enumerable: !0,\n get: function get() {\n return I.parseValue;\n }\n }), Object.defineProperty(n, \"parseType\", {\n enumerable: !0,\n get: function get() {\n return I.parseType;\n }\n }), Object.defineProperty(n, \"print\", {\n enumerable: !0,\n get: function get() {\n return O.print;\n }\n }), Object.defineProperty(n, \"visit\", {\n enumerable: !0,\n get: function get() {\n return _.visit;\n }\n }), Object.defineProperty(n, \"visitInParallel\", {\n enumerable: !0,\n get: function get() {\n return _.visitInParallel;\n }\n }), Object.defineProperty(n, \"visitWithTypeInfo\", {\n enumerable: !0,\n get: function get() {\n return _.visitWithTypeInfo;\n }\n }), Object.defineProperty(n, \"getVisitFn\", {\n enumerable: !0,\n get: function get() {\n return _.getVisitFn;\n }\n }), Object.defineProperty(n, \"BREAK\", {\n enumerable: !0,\n get: function get() {\n return _.BREAK;\n }\n }), Object.defineProperty(n, \"isDefinitionNode\", {\n enumerable: !0,\n get: function get() {\n return D.isDefinitionNode;\n }\n }), Object.defineProperty(n, \"isExecutableDefinitionNode\", {\n enumerable: !0,\n get: function get() {\n return D.isExecutableDefinitionNode;\n }\n }), Object.defineProperty(n, \"isSelectionNode\", {\n enumerable: !0,\n get: function get() {\n return D.isSelectionNode;\n }\n }), Object.defineProperty(n, \"isValueNode\", {\n enumerable: !0,\n get: function get() {\n return D.isValueNode;\n }\n }), Object.defineProperty(n, \"isTypeNode\", {\n enumerable: !0,\n get: function get() {\n return D.isTypeNode;\n }\n }), Object.defineProperty(n, \"isTypeSystemDefinitionNode\", {\n enumerable: !0,\n get: function get() {\n return D.isTypeSystemDefinitionNode;\n }\n }), Object.defineProperty(n, \"isTypeDefinitionNode\", {\n enumerable: !0,\n get: function get() {\n return D.isTypeDefinitionNode;\n }\n }), Object.defineProperty(n, \"isTypeSystemExtensionNode\", {\n enumerable: !0,\n get: function get() {\n return D.isTypeSystemExtensionNode;\n }\n }), Object.defineProperty(n, \"isTypeExtensionNode\", {\n enumerable: !0,\n get: function get() {\n return D.isTypeExtensionNode;\n }\n }), Object.defineProperty(n, \"DirectiveLocation\", {\n enumerable: !0,\n get: function get() {\n return k.DirectiveLocation;\n }\n });\n });\n r(x);\n var K = o(function (e, n) {\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.locatedError = function (e, n, t) {\n if (e && Array.isArray(e.path)) return e;\n return new v.GraphQLError(e && e.message, e && e.nodes || n, e && e.source, e && e.positions, t, e);\n };\n });\n r(K);\n K.locatedError;\n var A = o(function (e, n) {\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), n.formatError = function (e) {\n e || (0, i.default)(0, \"Received null or undefined error.\");\n var n = e.message || \"An unknown error occurred.\",\n t = e.locations,\n r = e.path,\n o = e.extensions;\n return o ? {\n message: n,\n locations: t,\n path: r,\n extensions: o\n } : {\n message: n,\n locations: t,\n path: r\n };\n };\n var t,\n i = (t = a) && t.__esModule ? t : {\n default: t\n };\n });\n r(A);\n A.formatError;\n var b = o(function (e, n) {\n Object.defineProperty(n, \"__esModule\", {\n value: !0\n }), Object.defineProperty(n, \"GraphQLError\", {\n enumerable: !0,\n get: function get() {\n return v.GraphQLError;\n }\n }), Object.defineProperty(n, \"printError\", {\n enumerable: !0,\n get: function get() {\n return v.printError;\n }\n }), Object.defineProperty(n, \"syntaxError\", {\n enumerable: !0,\n get: function get() {\n return E.syntaxError;\n }\n }), Object.defineProperty(n, \"locatedError\", {\n enumerable: !0,\n get: function get() {\n return K.locatedError;\n }\n }), Object.defineProperty(n, \"formatError\", {\n enumerable: !0,\n get: function get() {\n return A.formatError;\n }\n });\n });\n r(b);\n var S = {\n parsers: {\n graphql: {\n parse: function parse(e) {\n var i = x;\n\n try {\n var r = function (e, n) {\n var t = {\n allowLegacySDLImplementsInterfaces: !1,\n experimentalFragmentVariables: !0\n };\n\n try {\n return e(n, t);\n } catch (i) {\n return t.allowLegacySDLImplementsInterfaces = !0, e(n, t);\n }\n }(i.parse, e);\n\n return r.comments = function (e) {\n for (var n = [], t = e.loc.startToken.next; \"\" !== t.kind;) {\n \"Comment\" === t.kind && (Object.assign(t, {\n column: t.column - 1\n }), n.push(t)), t = t.next;\n }\n\n return n;\n }(r), function e(t) {\n if (t && \"object\" === n(t)) for (var i in delete t.startToken, delete t.endToken, delete t.prev, delete t.next, t) {\n e(t[i]);\n }\n return t;\n }(r), r;\n } catch (e) {\n throw e instanceof b.GraphQLError ? t(e.message, {\n start: {\n line: e.locations[0].line,\n column: e.locations[0].column\n }\n }) : e;\n }\n },\n astFormat: \"graphql\",\n hasPragma: i,\n locStart: function locStart(e) {\n return \"number\" == typeof e.start ? e.start : e.loc && e.loc.start;\n },\n locEnd: function locEnd(e) {\n return \"number\" == typeof e.end ? e.end : e.loc && e.loc.end;\n }\n }\n }\n },\n g = S.parsers;\n e.default = S, e.parsers = g, Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n});","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nexports.default = sortableContainer;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactDom = require('react-dom');\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _Manager = require('../Manager');\n\nvar _Manager2 = _interopRequireDefault(_Manager);\n\nvar _utils = require('../utils');\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _toConsumableArray(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n} // Export Higher Order Sortable Container Component\n\n\nfunction sortableContainer(WrappedComponent) {\n var _class, _temp;\n\n var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n withRef: false\n };\n return _temp = _class = function (_Component) {\n _inherits(_class, _Component);\n\n function _class(props) {\n _classCallCheck(this, _class);\n\n var _this = _possibleConstructorReturn(this, (_class.__proto__ || Object.getPrototypeOf(_class)).call(this, props));\n\n _this.handleStart = function (event) {\n var _this$props = _this.props,\n distance = _this$props.distance,\n shouldCancelStart = _this$props.shouldCancelStart;\n\n if (event.button === 2 || shouldCancelStart(event)) {\n return false;\n }\n\n _this._touched = true;\n _this._pos = (0, _utils.getPosition)(event);\n var node = (0, _utils.closest)(event.target, function (el) {\n return el.sortableInfo != null;\n });\n\n if (node && node.sortableInfo && _this.nodeIsChild(node) && !_this.state.sorting) {\n var useDragHandle = _this.props.useDragHandle;\n var _node$sortableInfo = node.sortableInfo,\n index = _node$sortableInfo.index,\n collection = _node$sortableInfo.collection;\n if (useDragHandle && !(0, _utils.closest)(event.target, function (el) {\n return el.sortableHandle != null;\n })) return;\n _this.manager.active = {\n index: index,\n collection: collection\n };\n /*\n * Fixes a bug in Firefox where the :active state of anchor tags\n * prevent subsequent 'mousemove' events from being fired\n * (see https://github.com/clauderic/react-sortable-hoc/issues/118)\n */\n\n if (!(0, _utils.isTouchEvent)(event) && event.target.tagName.toLowerCase() === 'a') {\n event.preventDefault();\n }\n\n if (!distance) {\n if (_this.props.pressDelay === 0) {\n _this.handlePress(event);\n } else {\n _this.pressTimer = setTimeout(function () {\n return _this.handlePress(event);\n }, _this.props.pressDelay);\n }\n }\n }\n };\n\n _this.nodeIsChild = function (node) {\n return node.sortableInfo.manager === _this.manager;\n };\n\n _this.handleMove = function (event) {\n var _this$props2 = _this.props,\n distance = _this$props2.distance,\n pressThreshold = _this$props2.pressThreshold;\n\n if (!_this.state.sorting && _this._touched) {\n var position = (0, _utils.getPosition)(event);\n var delta = _this._delta = {\n x: _this._pos.x - position.x,\n y: _this._pos.y - position.y\n };\n var combinedDelta = Math.abs(delta.x) + Math.abs(delta.y);\n\n if (!distance && (!pressThreshold || pressThreshold && combinedDelta >= pressThreshold)) {\n clearTimeout(_this.cancelTimer);\n _this.cancelTimer = setTimeout(_this.cancel, 0);\n } else if (distance && combinedDelta >= distance && _this.manager.isActive()) {\n _this.handlePress(event);\n }\n }\n };\n\n _this.handleEnd = function () {\n _this._touched = false;\n\n _this.cancel();\n };\n\n _this.cancel = function () {\n var distance = _this.props.distance;\n var sorting = _this.state.sorting;\n\n if (!sorting) {\n if (!distance) {\n clearTimeout(_this.pressTimer);\n }\n\n _this.manager.active = null;\n }\n };\n\n _this.handlePress = function (event) {\n var active = _this.manager.getActive();\n\n if (active) {\n var _this$props3 = _this.props,\n axis = _this$props3.axis,\n getHelperDimensions = _this$props3.getHelperDimensions,\n helperClass = _this$props3.helperClass,\n hideSortableGhost = _this$props3.hideSortableGhost,\n onSortStart = _this$props3.onSortStart,\n useWindowAsScrollContainer = _this$props3.useWindowAsScrollContainer;\n var node = active.node,\n collection = active.collection;\n var index = node.sortableInfo.index;\n var margin = (0, _utils.getElementMargin)(node);\n\n var containerBoundingRect = _this.container.getBoundingClientRect();\n\n var dimensions = getHelperDimensions({\n index: index,\n node: node,\n collection: collection\n });\n _this.node = node;\n _this.margin = margin;\n _this.width = dimensions.width;\n _this.height = dimensions.height;\n _this.marginOffset = {\n x: _this.margin.left + _this.margin.right,\n y: Math.max(_this.margin.top, _this.margin.bottom)\n };\n _this.boundingClientRect = node.getBoundingClientRect();\n _this.containerBoundingRect = containerBoundingRect;\n _this.index = index;\n _this.newIndex = index;\n _this.axis = {\n x: axis.indexOf('x') >= 0,\n y: axis.indexOf('y') >= 0\n };\n _this.offsetEdge = (0, _utils.getEdgeOffset)(node, _this.container);\n _this.initialOffset = (0, _utils.getPosition)(event);\n _this.initialScroll = {\n top: _this.container.scrollTop,\n left: _this.container.scrollLeft\n };\n _this.initialWindowScroll = {\n top: window.pageYOffset,\n left: window.pageXOffset\n };\n var fields = node.querySelectorAll('input, textarea, select');\n var clonedNode = node.cloneNode(true);\n var clonedFields = [].concat(_toConsumableArray(clonedNode.querySelectorAll('input, textarea, select'))); // Convert NodeList to Array\n\n clonedFields.forEach(function (field, index) {\n if (field.type !== 'file' && fields[index]) {\n field.value = fields[index].value;\n }\n });\n _this.helper = _this.document.body.appendChild(clonedNode);\n _this.helper.style.position = 'fixed';\n _this.helper.style.top = _this.boundingClientRect.top - margin.top + 'px';\n _this.helper.style.left = _this.boundingClientRect.left - margin.left + 'px';\n _this.helper.style.width = _this.width + 'px';\n _this.helper.style.height = _this.height + 'px';\n _this.helper.style.boxSizing = 'border-box';\n _this.helper.style.pointerEvents = 'none';\n\n if (hideSortableGhost) {\n _this.sortableGhost = node;\n node.style.visibility = 'hidden';\n node.style.opacity = 0;\n }\n\n _this.minTranslate = {};\n _this.maxTranslate = {};\n\n if (_this.axis.x) {\n _this.minTranslate.x = (useWindowAsScrollContainer ? 0 : containerBoundingRect.left) - _this.boundingClientRect.left - _this.width / 2;\n _this.maxTranslate.x = (useWindowAsScrollContainer ? _this.contentWindow.innerWidth : containerBoundingRect.left + containerBoundingRect.width) - _this.boundingClientRect.left - _this.width / 2;\n }\n\n if (_this.axis.y) {\n _this.minTranslate.y = (useWindowAsScrollContainer ? 0 : containerBoundingRect.top) - _this.boundingClientRect.top - _this.height / 2;\n _this.maxTranslate.y = (useWindowAsScrollContainer ? _this.contentWindow.innerHeight : containerBoundingRect.top + containerBoundingRect.height) - _this.boundingClientRect.top - _this.height / 2;\n }\n\n if (helperClass) {\n var _this$helper$classLis;\n\n (_this$helper$classLis = _this.helper.classList).add.apply(_this$helper$classLis, _toConsumableArray(helperClass.split(' ')));\n }\n\n _this.listenerNode = event.touches ? node : _this.contentWindow;\n\n _utils.events.move.forEach(function (eventName) {\n return _this.listenerNode.addEventListener(eventName, _this.handleSortMove, false);\n });\n\n _utils.events.end.forEach(function (eventName) {\n return _this.listenerNode.addEventListener(eventName, _this.handleSortEnd, false);\n });\n\n _this.setState({\n sorting: true,\n sortingIndex: index\n });\n\n if (onSortStart) {\n onSortStart({\n node: node,\n index: index,\n collection: collection\n }, event);\n }\n }\n };\n\n _this.handleSortMove = function (event) {\n var onSortMove = _this.props.onSortMove;\n event.preventDefault(); // Prevent scrolling on mobile\n\n _this.updatePosition(event);\n\n _this.animateNodes();\n\n _this.autoscroll();\n\n if (onSortMove) {\n onSortMove(event);\n }\n };\n\n _this.handleSortEnd = function (event) {\n var _this$props4 = _this.props,\n hideSortableGhost = _this$props4.hideSortableGhost,\n onSortEnd = _this$props4.onSortEnd;\n var collection = _this.manager.active.collection; // Remove the event listeners if the node is still in the DOM\n\n if (_this.listenerNode) {\n _utils.events.move.forEach(function (eventName) {\n return _this.listenerNode.removeEventListener(eventName, _this.handleSortMove);\n });\n\n _utils.events.end.forEach(function (eventName) {\n return _this.listenerNode.removeEventListener(eventName, _this.handleSortEnd);\n });\n } // Remove the helper from the DOM\n\n\n _this.helper.parentNode.removeChild(_this.helper);\n\n if (hideSortableGhost && _this.sortableGhost) {\n _this.sortableGhost.style.visibility = '';\n _this.sortableGhost.style.opacity = '';\n }\n\n var nodes = _this.manager.refs[collection];\n\n for (var i = 0, len = nodes.length; i < len; i++) {\n var node = nodes[i];\n var el = node.node; // Clear the cached offsetTop / offsetLeft value\n\n node.edgeOffset = null; // Remove the transforms / transitions\n\n el.style[_utils.vendorPrefix + 'Transform'] = '';\n el.style[_utils.vendorPrefix + 'TransitionDuration'] = '';\n } // Stop autoscroll\n\n\n clearInterval(_this.autoscrollInterval);\n _this.autoscrollInterval = null; // Update state\n\n _this.manager.active = null;\n\n _this.setState({\n sorting: false,\n sortingIndex: null\n });\n\n if (typeof onSortEnd === 'function') {\n onSortEnd({\n oldIndex: _this.index,\n newIndex: _this.newIndex,\n collection: collection\n }, event);\n }\n\n _this._touched = false;\n };\n\n _this.autoscroll = function () {\n var translate = _this.translate;\n var direction = {\n x: 0,\n y: 0\n };\n var speed = {\n x: 1,\n y: 1\n };\n var acceleration = {\n x: 10,\n y: 10\n };\n\n if (translate.y >= _this.maxTranslate.y - _this.height / 2) {\n direction.y = 1; // Scroll Down\n\n speed.y = acceleration.y * Math.abs((_this.maxTranslate.y - _this.height / 2 - translate.y) / _this.height);\n } else if (translate.x >= _this.maxTranslate.x - _this.width / 2) {\n direction.x = 1; // Scroll Right\n\n speed.x = acceleration.x * Math.abs((_this.maxTranslate.x - _this.width / 2 - translate.x) / _this.width);\n } else if (translate.y <= _this.minTranslate.y + _this.height / 2) {\n direction.y = -1; // Scroll Up\n\n speed.y = acceleration.y * Math.abs((translate.y - _this.height / 2 - _this.minTranslate.y) / _this.height);\n } else if (translate.x <= _this.minTranslate.x + _this.width / 2) {\n direction.x = -1; // Scroll Left\n\n speed.x = acceleration.x * Math.abs((translate.x - _this.width / 2 - _this.minTranslate.x) / _this.width);\n }\n\n if (_this.autoscrollInterval) {\n clearInterval(_this.autoscrollInterval);\n _this.autoscrollInterval = null;\n _this.isAutoScrolling = false;\n }\n\n if (direction.x !== 0 || direction.y !== 0) {\n _this.autoscrollInterval = setInterval(function () {\n _this.isAutoScrolling = true;\n var offset = {\n left: 1 * speed.x * direction.x,\n top: 1 * speed.y * direction.y\n };\n _this.scrollContainer.scrollTop += offset.top;\n _this.scrollContainer.scrollLeft += offset.left;\n _this.translate.x += offset.left;\n _this.translate.y += offset.top;\n\n _this.animateNodes();\n }, 5);\n }\n };\n\n _this.manager = new _Manager2.default();\n _this.events = {\n start: _this.handleStart,\n move: _this.handleMove,\n end: _this.handleEnd\n };\n (0, _invariant2.default)(!(props.distance && props.pressDelay), 'Attempted to set both `pressDelay` and `distance` on SortableContainer, you may only use one or the other, not both at the same time.');\n _this.state = {};\n return _this;\n }\n\n _createClass(_class, [{\n key: 'getChildContext',\n value: function getChildContext() {\n return {\n manager: this.manager\n };\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this2 = this;\n\n var useWindowAsScrollContainer = this.props.useWindowAsScrollContainer;\n /*\n * Set our own default rather than using defaultProps because Jest\n * snapshots will serialize window, causing a RangeError\n * https://github.com/clauderic/react-sortable-hoc/issues/249\n */\n\n var container = this.getContainer();\n Promise.resolve(container).then(function (containerNode) {\n _this2.container = containerNode;\n _this2.document = _this2.container.ownerDocument || document;\n var contentWindow = _this2.props.contentWindow || _this2.document.defaultView || window;\n _this2.contentWindow = typeof contentWindow === 'function' ? contentWindow() : contentWindow;\n _this2.scrollContainer = useWindowAsScrollContainer ? _this2.document.scrollingElement || _this2.document.documentElement : _this2.container;\n\n var _loop = function _loop(key) {\n if (_this2.events.hasOwnProperty(key)) {\n _utils.events[key].forEach(function (eventName) {\n return _this2.container.addEventListener(eventName, _this2.events[key], false);\n });\n }\n };\n\n for (var key in _this2.events) {\n _loop(key);\n }\n });\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n var _this3 = this;\n\n if (this.container) {\n var _loop2 = function _loop2(key) {\n if (_this3.events.hasOwnProperty(key)) {\n _utils.events[key].forEach(function (eventName) {\n return _this3.container.removeEventListener(eventName, _this3.events[key]);\n });\n }\n };\n\n for (var key in this.events) {\n _loop2(key);\n }\n }\n }\n }, {\n key: 'getLockPixelOffsets',\n value: function getLockPixelOffsets() {\n var width = this.width,\n height = this.height;\n var lockOffset = this.props.lockOffset;\n var offsets = Array.isArray(lockOffset) ? lockOffset : [lockOffset, lockOffset];\n (0, _invariant2.default)(offsets.length === 2, 'lockOffset prop of SortableContainer should be a single ' + 'value or an array of exactly two values. Given %s', lockOffset);\n\n var _offsets = _slicedToArray(offsets, 2),\n minLockOffset = _offsets[0],\n maxLockOffset = _offsets[1];\n\n return [(0, _utils.getLockPixelOffset)({\n lockOffset: minLockOffset,\n width: width,\n height: height\n }), (0, _utils.getLockPixelOffset)({\n lockOffset: maxLockOffset,\n width: width,\n height: height\n })];\n }\n }, {\n key: 'updatePosition',\n value: function updatePosition(event) {\n var _props = this.props,\n lockAxis = _props.lockAxis,\n lockToContainerEdges = _props.lockToContainerEdges;\n var offset = (0, _utils.getPosition)(event);\n var translate = {\n x: offset.x - this.initialOffset.x,\n y: offset.y - this.initialOffset.y\n }; // Adjust for window scroll\n\n translate.y -= window.pageYOffset - this.initialWindowScroll.top;\n translate.x -= window.pageXOffset - this.initialWindowScroll.left;\n this.translate = translate;\n\n if (lockToContainerEdges) {\n var _getLockPixelOffsets = this.getLockPixelOffsets(),\n _getLockPixelOffsets2 = _slicedToArray(_getLockPixelOffsets, 2),\n minLockOffset = _getLockPixelOffsets2[0],\n maxLockOffset = _getLockPixelOffsets2[1];\n\n var minOffset = {\n x: this.width / 2 - minLockOffset.x,\n y: this.height / 2 - minLockOffset.y\n };\n var maxOffset = {\n x: this.width / 2 - maxLockOffset.x,\n y: this.height / 2 - maxLockOffset.y\n };\n translate.x = (0, _utils.limit)(this.minTranslate.x + minOffset.x, this.maxTranslate.x - maxOffset.x, translate.x);\n translate.y = (0, _utils.limit)(this.minTranslate.y + minOffset.y, this.maxTranslate.y - maxOffset.y, translate.y);\n }\n\n if (lockAxis === 'x') {\n translate.y = 0;\n } else if (lockAxis === 'y') {\n translate.x = 0;\n }\n\n this.helper.style[_utils.vendorPrefix + 'Transform'] = 'translate3d(' + translate.x + 'px,' + translate.y + 'px, 0)';\n }\n }, {\n key: 'animateNodes',\n value: function animateNodes() {\n var _props2 = this.props,\n transitionDuration = _props2.transitionDuration,\n hideSortableGhost = _props2.hideSortableGhost,\n onSortOver = _props2.onSortOver;\n var nodes = this.manager.getOrderedRefs();\n var containerScrollDelta = {\n left: this.container.scrollLeft - this.initialScroll.left,\n top: this.container.scrollTop - this.initialScroll.top\n };\n var sortingOffset = {\n left: this.offsetEdge.left + this.translate.x + containerScrollDelta.left,\n top: this.offsetEdge.top + this.translate.y + containerScrollDelta.top\n };\n var windowScrollDelta = {\n top: window.pageYOffset - this.initialWindowScroll.top,\n left: window.pageXOffset - this.initialWindowScroll.left\n };\n var prevIndex = this.newIndex;\n this.newIndex = null;\n\n for (var i = 0, len = nodes.length; i < len; i++) {\n var node = nodes[i].node;\n var index = node.sortableInfo.index;\n var width = node.offsetWidth;\n var height = node.offsetHeight;\n var offset = {\n width: this.width > width ? width / 2 : this.width / 2,\n height: this.height > height ? height / 2 : this.height / 2\n };\n var translate = {\n x: 0,\n y: 0\n };\n var edgeOffset = nodes[i].edgeOffset; // If we haven't cached the node's offsetTop / offsetLeft value\n\n if (!edgeOffset) {\n nodes[i].edgeOffset = edgeOffset = (0, _utils.getEdgeOffset)(node, this.container);\n } // Get a reference to the next and previous node\n\n\n var nextNode = i < nodes.length - 1 && nodes[i + 1];\n var prevNode = i > 0 && nodes[i - 1]; // Also cache the next node's edge offset if needed.\n // We need this for calculating the animation in a grid setup\n\n if (nextNode && !nextNode.edgeOffset) {\n nextNode.edgeOffset = (0, _utils.getEdgeOffset)(nextNode.node, this.container);\n } // If the node is the one we're currently animating, skip it\n\n\n if (index === this.index) {\n if (hideSortableGhost) {\n /*\n * With windowing libraries such as `react-virtualized`, the sortableGhost\n * node may change while scrolling down and then back up (or vice-versa),\n * so we need to update the reference to the new node just to be safe.\n */\n this.sortableGhost = node;\n node.style.visibility = 'hidden';\n node.style.opacity = 0;\n }\n\n continue;\n }\n\n if (transitionDuration) {\n node.style[_utils.vendorPrefix + 'TransitionDuration'] = transitionDuration + 'ms';\n }\n\n if (this.axis.x) {\n if (this.axis.y) {\n // Calculations for a grid setup\n if (index < this.index && (sortingOffset.left + windowScrollDelta.left - offset.width <= edgeOffset.left && sortingOffset.top + windowScrollDelta.top <= edgeOffset.top + offset.height || sortingOffset.top + windowScrollDelta.top + offset.height <= edgeOffset.top)) {\n // If the current node is to the left on the same row, or above the node that's being dragged\n // then move it to the right\n translate.x = this.width + this.marginOffset.x;\n\n if (edgeOffset.left + translate.x > this.containerBoundingRect.width - offset.width) {\n // If it moves passed the right bounds, then animate it to the first position of the next row.\n // We just use the offset of the next node to calculate where to move, because that node's original position\n // is exactly where we want to go\n translate.x = nextNode.edgeOffset.left - edgeOffset.left;\n translate.y = nextNode.edgeOffset.top - edgeOffset.top;\n }\n\n if (this.newIndex === null) {\n this.newIndex = index;\n }\n } else if (index > this.index && (sortingOffset.left + windowScrollDelta.left + offset.width >= edgeOffset.left && sortingOffset.top + windowScrollDelta.top + offset.height >= edgeOffset.top || sortingOffset.top + windowScrollDelta.top + offset.height >= edgeOffset.top + height)) {\n // If the current node is to the right on the same row, or below the node that's being dragged\n // then move it to the left\n translate.x = -(this.width + this.marginOffset.x);\n\n if (edgeOffset.left + translate.x < this.containerBoundingRect.left + offset.width) {\n // If it moves passed the left bounds, then animate it to the last position of the previous row.\n // We just use the offset of the previous node to calculate where to move, because that node's original position\n // is exactly where we want to go\n translate.x = prevNode.edgeOffset.left - edgeOffset.left;\n translate.y = prevNode.edgeOffset.top - edgeOffset.top;\n }\n\n this.newIndex = index;\n }\n } else {\n if (index > this.index && sortingOffset.left + windowScrollDelta.left + offset.width >= edgeOffset.left) {\n translate.x = -(this.width + this.marginOffset.x);\n this.newIndex = index;\n } else if (index < this.index && sortingOffset.left + windowScrollDelta.left <= edgeOffset.left + offset.width) {\n translate.x = this.width + this.marginOffset.x;\n\n if (this.newIndex == null) {\n this.newIndex = index;\n }\n }\n }\n } else if (this.axis.y) {\n if (index > this.index && sortingOffset.top + windowScrollDelta.top + offset.height >= edgeOffset.top) {\n translate.y = -(this.height + this.marginOffset.y);\n this.newIndex = index;\n } else if (index < this.index && sortingOffset.top + windowScrollDelta.top <= edgeOffset.top + offset.height) {\n translate.y = this.height + this.marginOffset.y;\n\n if (this.newIndex == null) {\n this.newIndex = index;\n }\n }\n }\n\n node.style[_utils.vendorPrefix + 'Transform'] = 'translate3d(' + translate.x + 'px,' + translate.y + 'px,0)';\n }\n\n if (this.newIndex == null) {\n this.newIndex = this.index;\n }\n\n if (onSortOver && this.newIndex !== prevIndex) {\n onSortOver({\n newIndex: this.newIndex,\n oldIndex: prevIndex,\n index: this.index,\n collection: this.manager.active.collection\n });\n }\n }\n }, {\n key: 'getWrappedInstance',\n value: function getWrappedInstance() {\n (0, _invariant2.default)(config.withRef, 'To access the wrapped instance, you need to pass in {withRef: true} as the second argument of the SortableContainer() call');\n return this.refs.wrappedInstance;\n }\n }, {\n key: 'getContainer',\n value: function getContainer() {\n var getContainer = this.props.getContainer;\n\n if (typeof getContainer !== 'function') {\n return (0, _reactDom.findDOMNode)(this);\n }\n\n return getContainer(config.withRef ? this.getWrappedInstance() : undefined);\n }\n }, {\n key: 'render',\n value: function render() {\n var ref = config.withRef ? 'wrappedInstance' : null;\n return _react2.default.createElement(WrappedComponent, _extends({\n ref: ref\n }, (0, _utils.omit)(this.props, 'contentWindow', 'useWindowAsScrollContainer', 'distance', 'helperClass', 'hideSortableGhost', 'transitionDuration', 'useDragHandle', 'pressDelay', 'pressThreshold', 'shouldCancelStart', 'onSortStart', 'onSortMove', 'onSortEnd', 'axis', 'lockAxis', 'lockOffset', 'lockToContainerEdges', 'getContainer', 'getHelperDimensions')));\n }\n }]);\n\n return _class;\n }(_react.Component), _class.displayName = (0, _utils.provideDisplayName)('sortableList', WrappedComponent), _class.defaultProps = {\n axis: 'y',\n transitionDuration: 300,\n pressDelay: 0,\n pressThreshold: 5,\n distance: 0,\n useWindowAsScrollContainer: false,\n hideSortableGhost: true,\n shouldCancelStart: function shouldCancelStart(e) {\n // Cancel sorting if the event target is an `input`, `textarea`, `select` or `option`\n var disabledElements = ['input', 'textarea', 'select', 'option', 'button'];\n\n if (disabledElements.indexOf(e.target.tagName.toLowerCase()) !== -1) {\n return true; // Return true to cancel sorting\n }\n },\n lockToContainerEdges: false,\n lockOffset: '50%',\n getHelperDimensions: function getHelperDimensions(_ref) {\n var node = _ref.node;\n return {\n width: node.offsetWidth,\n height: node.offsetHeight\n };\n }\n }, _class.propTypes = {\n axis: _propTypes2.default.oneOf(['x', 'y', 'xy']),\n distance: _propTypes2.default.number,\n lockAxis: _propTypes2.default.string,\n helperClass: _propTypes2.default.string,\n transitionDuration: _propTypes2.default.number,\n contentWindow: _propTypes2.default.any,\n onSortStart: _propTypes2.default.func,\n onSortMove: _propTypes2.default.func,\n onSortOver: _propTypes2.default.func,\n onSortEnd: _propTypes2.default.func,\n shouldCancelStart: _propTypes2.default.func,\n pressDelay: _propTypes2.default.number,\n useDragHandle: _propTypes2.default.bool,\n useWindowAsScrollContainer: _propTypes2.default.bool,\n hideSortableGhost: _propTypes2.default.bool,\n lockToContainerEdges: _propTypes2.default.bool,\n lockOffset: _propTypes2.default.oneOfType([_propTypes2.default.number, _propTypes2.default.string, _propTypes2.default.arrayOf(_propTypes2.default.oneOfType([_propTypes2.default.number, _propTypes2.default.string]))]),\n getContainer: _propTypes2.default.func,\n getHelperDimensions: _propTypes2.default.func\n }, _class.childContextTypes = {\n manager: _propTypes2.default.object.isRequired\n }, _temp;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nvar Manager = function () {\n function Manager() {\n _classCallCheck(this, Manager);\n\n this.refs = {};\n }\n\n _createClass(Manager, [{\n key: \"add\",\n value: function add(collection, ref) {\n if (!this.refs[collection]) {\n this.refs[collection] = [];\n }\n\n this.refs[collection].push(ref);\n }\n }, {\n key: \"remove\",\n value: function remove(collection, ref) {\n var index = this.getIndex(collection, ref);\n\n if (index !== -1) {\n this.refs[collection].splice(index, 1);\n }\n }\n }, {\n key: \"isActive\",\n value: function isActive() {\n return this.active;\n }\n }, {\n key: \"getActive\",\n value: function getActive() {\n var _this = this;\n\n return this.refs[this.active.collection].find( // eslint-disable-next-line eqeqeq\n function (_ref) {\n var node = _ref.node;\n return node.sortableInfo.index == _this.active.index;\n });\n }\n }, {\n key: \"getIndex\",\n value: function getIndex(collection, ref) {\n return this.refs[collection].indexOf(ref);\n }\n }, {\n key: \"getOrderedRefs\",\n value: function getOrderedRefs() {\n var collection = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.active.collection;\n return this.refs[collection].sort(sortByIndex);\n }\n }]);\n\n return Manager;\n}();\n\nexports.default = Manager;\n\nfunction sortByIndex(_ref2, _ref3) {\n var index1 = _ref2.node.sortableInfo.index;\n var index2 = _ref3.node.sortableInfo.index;\n return index1 - index2;\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nexports.default = sortableElement;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactDom = require('react-dom');\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _utils = require('../utils');\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n} // Export Higher Order Sortable Element Component\n\n\nfunction sortableElement(WrappedComponent) {\n var _class, _temp;\n\n var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n withRef: false\n };\n return _temp = _class = function (_Component) {\n _inherits(_class, _Component);\n\n function _class() {\n _classCallCheck(this, _class);\n\n return _possibleConstructorReturn(this, (_class.__proto__ || Object.getPrototypeOf(_class)).apply(this, arguments));\n }\n\n _createClass(_class, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _props = this.props,\n collection = _props.collection,\n disabled = _props.disabled,\n index = _props.index;\n\n if (!disabled) {\n this.setDraggable(collection, index);\n }\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n if (this.props.index !== nextProps.index && this.node) {\n this.node.sortableInfo.index = nextProps.index;\n }\n\n if (this.props.disabled !== nextProps.disabled) {\n var collection = nextProps.collection,\n disabled = nextProps.disabled,\n index = nextProps.index;\n\n if (disabled) {\n this.removeDraggable(collection);\n } else {\n this.setDraggable(collection, index);\n }\n } else if (this.props.collection !== nextProps.collection) {\n this.removeDraggable(this.props.collection);\n this.setDraggable(nextProps.collection, nextProps.index);\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n var _props2 = this.props,\n collection = _props2.collection,\n disabled = _props2.disabled;\n if (!disabled) this.removeDraggable(collection);\n }\n }, {\n key: 'setDraggable',\n value: function setDraggable(collection, index) {\n var node = this.node = (0, _reactDom.findDOMNode)(this);\n node.sortableInfo = {\n index: index,\n collection: collection,\n manager: this.context.manager\n };\n this.ref = {\n node: node\n };\n this.context.manager.add(collection, this.ref);\n }\n }, {\n key: 'removeDraggable',\n value: function removeDraggable(collection) {\n this.context.manager.remove(collection, this.ref);\n }\n }, {\n key: 'getWrappedInstance',\n value: function getWrappedInstance() {\n (0, _invariant2.default)(config.withRef, 'To access the wrapped instance, you need to pass in {withRef: true} as the second argument of the SortableElement() call');\n return this.refs.wrappedInstance;\n }\n }, {\n key: 'render',\n value: function render() {\n var ref = config.withRef ? 'wrappedInstance' : null;\n return _react2.default.createElement(WrappedComponent, _extends({\n ref: ref\n }, (0, _utils.omit)(this.props, 'collection', 'disabled', 'index')));\n }\n }]);\n\n return _class;\n }(_react.Component), _class.displayName = (0, _utils.provideDisplayName)('sortableElement', WrappedComponent), _class.contextTypes = {\n manager: _propTypes2.default.object.isRequired\n }, _class.propTypes = {\n index: _propTypes2.default.number.isRequired,\n collection: _propTypes2.default.oneOfType([_propTypes2.default.number, _propTypes2.default.string]),\n disabled: _propTypes2.default.bool\n }, _class.defaultProps = {\n collection: 0\n }, _temp;\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nexports.default = sortableHandle;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _utils = require('../utils');\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n} // Export Higher Order Sortable Element Component\n\n\nfunction sortableHandle(WrappedComponent) {\n var _class, _temp;\n\n var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n withRef: false\n };\n return _temp = _class = function (_Component) {\n _inherits(_class, _Component);\n\n function _class() {\n _classCallCheck(this, _class);\n\n return _possibleConstructorReturn(this, (_class.__proto__ || Object.getPrototypeOf(_class)).apply(this, arguments));\n }\n\n _createClass(_class, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var node = (0, _reactDom.findDOMNode)(this);\n node.sortableHandle = true;\n }\n }, {\n key: 'getWrappedInstance',\n value: function getWrappedInstance() {\n (0, _invariant2.default)(config.withRef, 'To access the wrapped instance, you need to pass in {withRef: true} as the second argument of the SortableHandle() call');\n return this.refs.wrappedInstance;\n }\n }, {\n key: 'render',\n value: function render() {\n var ref = config.withRef ? 'wrappedInstance' : null;\n return _react2.default.createElement(WrappedComponent, _extends({\n ref: ref\n }, this.props));\n }\n }]);\n\n return _class;\n }(_react.Component), _class.displayName = (0, _utils.provideDisplayName)('sortableHandle', WrappedComponent), _temp;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar immutable_1 = require(\"immutable\");\n\nvar redux_actions_1 = require(\"redux-actions\");\n\nvar cuid = require(\"cuid\");\n\nexports.defaultHistoryState = immutable_1.OrderedMap({});\nexports.default = redux_actions_1.handleActions({\n TOGGLE_HISTORY_ITEM_STARRING: function TOGGLE_HISTORY_ITEM_STARRING(state, _a) {\n var sessionId = _a.payload.sessionId;\n return state.setIn([sessionId, 'starred'], !state.getIn([sessionId, 'starred']));\n },\n ADD_HISTORY_ITEM: function ADD_HISTORY_ITEM(state, _a) {\n var session = _a.payload.session;\n var id = cuid();\n return state.slice(-40).set(id, session.merge({\n id: id,\n date: new Date(),\n responses: immutable_1.List()\n }));\n }\n}, exports.defaultHistoryState);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar immutable_1 = require(\"immutable\");\n\nfunction immutableMemoize(fn) {\n var lastValue;\n return function (arg) {\n var newValue = fn(arg);\n\n if (!immutable_1.is(lastValue, newValue)) {\n lastValue = newValue;\n }\n\n return lastValue;\n };\n}\n\nexports.immutableMemoize = immutableMemoize;","// Main parser class\n'use strict';\n\nvar utils = require('./common/utils');\n\nvar helpers = require('./helpers');\n\nvar Renderer = require('./renderer');\n\nvar ParserCore = require('./parser_core');\n\nvar ParserBlock = require('./parser_block');\n\nvar ParserInline = require('./parser_inline');\n\nvar LinkifyIt = require('linkify-it');\n\nvar mdurl = require('mdurl');\n\nvar punycode = require('punycode');\n\nvar config = {\n 'default': require('./presets/default'),\n zero: require('./presets/zero'),\n commonmark: require('./presets/commonmark')\n}; ////////////////////////////////////////////////////////////////////////////////\n//\n// This validator can prohibit more than really needed to prevent XSS. It's a\n// tradeoff to keep code simple and to be secure by default.\n//\n// If you need different setup - override validator method as you wish. Or\n// replace it with dummy function and use external sanitizer.\n//\n\nvar BAD_PROTO_RE = /^(vbscript|javascript|file|data):/;\nvar GOOD_DATA_RE = /^data:image\\/(gif|png|jpeg|webp);/;\n\nfunction validateLink(url) {\n // url should be normalized at this point, and existing entities are decoded\n var str = url.trim().toLowerCase();\n return BAD_PROTO_RE.test(str) ? GOOD_DATA_RE.test(str) ? true : false : true;\n} ////////////////////////////////////////////////////////////////////////////////\n\n\nvar RECODE_HOSTNAME_FOR = ['http:', 'https:', 'mailto:'];\n\nfunction normalizeLink(url) {\n var parsed = mdurl.parse(url, true);\n\n if (parsed.hostname) {\n // Encode hostnames in urls like:\n // `http://host/`, `https://host/`, `mailto:user@host`, `//host/`\n //\n // We don't encode unknown schemas, because it's likely that we encode\n // something we shouldn't (e.g. `skype:name` treated as `skype:host`)\n //\n if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {\n try {\n parsed.hostname = punycode.toASCII(parsed.hostname);\n } catch (er) {\n /**/\n }\n }\n }\n\n return mdurl.encode(mdurl.format(parsed));\n}\n\nfunction normalizeLinkText(url) {\n var parsed = mdurl.parse(url, true);\n\n if (parsed.hostname) {\n // Encode hostnames in urls like:\n // `http://host/`, `https://host/`, `mailto:user@host`, `//host/`\n //\n // We don't encode unknown schemas, because it's likely that we encode\n // something we shouldn't (e.g. `skype:name` treated as `skype:host`)\n //\n if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {\n try {\n parsed.hostname = punycode.toUnicode(parsed.hostname);\n } catch (er) {\n /**/\n }\n }\n }\n\n return mdurl.decode(mdurl.format(parsed));\n}\n/**\n * class MarkdownIt\n *\n * Main parser/renderer class.\n *\n * ##### Usage\n *\n * ```javascript\n * // node.js, \"classic\" way:\n * var MarkdownIt = require('markdown-it'),\n * md = new MarkdownIt();\n * var result = md.render('# markdown-it rulezz!');\n *\n * // node.js, the same, but with sugar:\n * var md = require('markdown-it')();\n * var result = md.render('# markdown-it rulezz!');\n *\n * // browser without AMD, added to \"window\" on script load\n * // Note, there are no dash.\n * var md = window.markdownit();\n * var result = md.render('# markdown-it rulezz!');\n * ```\n *\n * Single line rendering, without paragraph wrap:\n *\n * ```javascript\n * var md = require('markdown-it')();\n * var result = md.renderInline('__markdown-it__ rulezz!');\n * ```\n **/\n\n/**\n * new MarkdownIt([presetName, options])\n * - presetName (String): optional, `commonmark` / `zero`\n * - options (Object)\n *\n * Creates parser instanse with given config. Can be called without `new`.\n *\n * ##### presetName\n *\n * MarkdownIt provides named presets as a convenience to quickly\n * enable/disable active syntax rules and options for common use cases.\n *\n * - [\"commonmark\"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/commonmark.js) -\n * configures parser to strict [CommonMark](http://commonmark.org/) mode.\n * - [default](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/default.js) -\n * similar to GFM, used when no preset name given. Enables all available rules,\n * but still without html, typographer & autolinker.\n * - [\"zero\"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/zero.js) -\n * all rules disabled. Useful to quickly setup your config via `.enable()`.\n * For example, when you need only `bold` and `italic` markup and nothing else.\n *\n * ##### options:\n *\n * - __html__ - `false`. Set `true` to enable HTML tags in source. Be careful!\n * That's not safe! You may need external sanitizer to protect output from XSS.\n * It's better to extend features via plugins, instead of enabling HTML.\n * - __xhtmlOut__ - `false`. Set `true` to add '/' when closing single tags\n * (`
`). This is needed only for full CommonMark compatibility. In real\n * world you will need HTML output.\n * - __breaks__ - `false`. Set `true` to convert `\\n` in paragraphs into `
`.\n * - __langPrefix__ - `language-`. CSS language class prefix for fenced blocks.\n * Can be useful for external highlighters.\n * - __linkify__ - `false`. Set `true` to autoconvert URL-like text to links.\n * - __typographer__ - `false`. Set `true` to enable [some language-neutral\n * replacement](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/replacements.js) +\n * quotes beautification (smartquotes).\n * - __quotes__ - `“”‘’`, String or Array. Double + single quotes replacement\n * pairs, when typographer enabled and smartquotes on. For example, you can\n * use `'«»„“'` for Russian, `'„“‚‘'` for German, and\n * `['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›']` for French (including nbsp).\n * - __highlight__ - `null`. Highlighter function for fenced code blocks.\n * Highlighter `function (str, lang)` should return escaped HTML. It can also\n * return empty string if the source was not changed and should be escaped\n * externaly. If result starts with `):\n *\n * ```javascript\n * var hljs = require('highlight.js') // https://highlightjs.org/\n *\n * // Actual default values\n * var md = require('markdown-it')({\n * highlight: function (str, lang) {\n * if (lang && hljs.getLanguage(lang)) {\n * try {\n * return '
' +\n *                hljs.highlight(lang, str, true).value +\n *                '
';\n * } catch (__) {}\n * }\n *\n * return '
' + md.utils.escapeHtml(str) + '
';\n * }\n * });\n * ```\n *\n **/\n\n\nfunction MarkdownIt(presetName, options) {\n if (!(this instanceof MarkdownIt)) {\n return new MarkdownIt(presetName, options);\n }\n\n if (!options) {\n if (!utils.isString(presetName)) {\n options = presetName || {};\n presetName = 'default';\n }\n }\n /**\n * MarkdownIt#inline -> ParserInline\n *\n * Instance of [[ParserInline]]. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n\n\n this.inline = new ParserInline();\n /**\n * MarkdownIt#block -> ParserBlock\n *\n * Instance of [[ParserBlock]]. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n\n this.block = new ParserBlock();\n /**\n * MarkdownIt#core -> Core\n *\n * Instance of [[Core]] chain executor. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n\n this.core = new ParserCore();\n /**\n * MarkdownIt#renderer -> Renderer\n *\n * Instance of [[Renderer]]. Use it to modify output look. Or to add rendering\n * rules for new token types, generated by plugins.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * function myToken(tokens, idx, options, env, self) {\n * //...\n * return result;\n * };\n *\n * md.renderer.rules['my_token'] = myToken\n * ```\n *\n * See [[Renderer]] docs and [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.js).\n **/\n\n this.renderer = new Renderer();\n /**\n * MarkdownIt#linkify -> LinkifyIt\n *\n * [linkify-it](https://github.com/markdown-it/linkify-it) instance.\n * Used by [linkify](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/linkify.js)\n * rule.\n **/\n\n this.linkify = new LinkifyIt();\n /**\n * MarkdownIt#validateLink(url) -> Boolean\n *\n * Link validation function. CommonMark allows too much in links. By default\n * we disable `javascript:`, `vbscript:`, `file:` schemas, and almost all `data:...` schemas\n * except some embedded image types.\n *\n * You can change this behaviour:\n *\n * ```javascript\n * var md = require('markdown-it')();\n * // enable everything\n * md.validateLink = function () { return true; }\n * ```\n **/\n\n this.validateLink = validateLink;\n /**\n * MarkdownIt#normalizeLink(url) -> String\n *\n * Function used to encode link url to a machine-readable format,\n * which includes url-encoding, punycode, etc.\n **/\n\n this.normalizeLink = normalizeLink;\n /**\n * MarkdownIt#normalizeLinkText(url) -> String\n *\n * Function used to decode link url to a human-readable format`\n **/\n\n this.normalizeLinkText = normalizeLinkText; // Expose utils & helpers for easy acces from plugins\n\n /**\n * MarkdownIt#utils -> utils\n *\n * Assorted utility functions, useful to write plugins. See details\n * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/common/utils.js).\n **/\n\n this.utils = utils;\n /**\n * MarkdownIt#helpers -> helpers\n *\n * Link components parser functions, useful to write plugins. See details\n * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/helpers).\n **/\n\n this.helpers = utils.assign({}, helpers);\n this.options = {};\n this.configure(presetName);\n\n if (options) {\n this.set(options);\n }\n}\n/** chainable\n * MarkdownIt.set(options)\n *\n * Set parser options (in the same format as in constructor). Probably, you\n * will never need it, but you can change options after constructor call.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')()\n * .set({ html: true, breaks: true })\n * .set({ typographer, true });\n * ```\n *\n * __Note:__ To achieve the best possible performance, don't modify a\n * `markdown-it` instance options on the fly. If you need multiple configurations\n * it's best to create multiple instances and initialize each with separate\n * config.\n **/\n\n\nMarkdownIt.prototype.set = function (options) {\n utils.assign(this.options, options);\n return this;\n};\n/** chainable, internal\n * MarkdownIt.configure(presets)\n *\n * Batch load of all options and compenent settings. This is internal method,\n * and you probably will not need it. But if you with - see available presets\n * and data structure [here](https://github.com/markdown-it/markdown-it/tree/master/lib/presets)\n *\n * We strongly recommend to use presets instead of direct config loads. That\n * will give better compatibility with next versions.\n **/\n\n\nMarkdownIt.prototype.configure = function (presets) {\n var self = this,\n presetName;\n\n if (utils.isString(presets)) {\n presetName = presets;\n presets = config[presetName];\n\n if (!presets) {\n throw new Error('Wrong `markdown-it` preset \"' + presetName + '\", check name');\n }\n }\n\n if (!presets) {\n throw new Error('Wrong `markdown-it` preset, can\\'t be empty');\n }\n\n if (presets.options) {\n self.set(presets.options);\n }\n\n if (presets.components) {\n Object.keys(presets.components).forEach(function (name) {\n if (presets.components[name].rules) {\n self[name].ruler.enableOnly(presets.components[name].rules);\n }\n\n if (presets.components[name].rules2) {\n self[name].ruler2.enableOnly(presets.components[name].rules2);\n }\n });\n }\n\n return this;\n};\n/** chainable\n * MarkdownIt.enable(list, ignoreInvalid)\n * - list (String|Array): rule name or list of rule names to enable\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable list or rules. It will automatically find appropriate components,\n * containing rules with given names. If rule not found, and `ignoreInvalid`\n * not set - throws exception.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')()\n * .enable(['sub', 'sup'])\n * .disable('smartquotes');\n * ```\n **/\n\n\nMarkdownIt.prototype.enable = function (list, ignoreInvalid) {\n var result = [];\n\n if (!Array.isArray(list)) {\n list = [list];\n }\n\n ['core', 'block', 'inline'].forEach(function (chain) {\n result = result.concat(this[chain].ruler.enable(list, true));\n }, this);\n result = result.concat(this.inline.ruler2.enable(list, true));\n var missed = list.filter(function (name) {\n return result.indexOf(name) < 0;\n });\n\n if (missed.length && !ignoreInvalid) {\n throw new Error('MarkdownIt. Failed to enable unknown rule(s): ' + missed);\n }\n\n return this;\n};\n/** chainable\n * MarkdownIt.disable(list, ignoreInvalid)\n * - list (String|Array): rule name or list of rule names to disable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * The same as [[MarkdownIt.enable]], but turn specified rules off.\n **/\n\n\nMarkdownIt.prototype.disable = function (list, ignoreInvalid) {\n var result = [];\n\n if (!Array.isArray(list)) {\n list = [list];\n }\n\n ['core', 'block', 'inline'].forEach(function (chain) {\n result = result.concat(this[chain].ruler.disable(list, true));\n }, this);\n result = result.concat(this.inline.ruler2.disable(list, true));\n var missed = list.filter(function (name) {\n return result.indexOf(name) < 0;\n });\n\n if (missed.length && !ignoreInvalid) {\n throw new Error('MarkdownIt. Failed to disable unknown rule(s): ' + missed);\n }\n\n return this;\n};\n/** chainable\n * MarkdownIt.use(plugin, params)\n *\n * Load specified plugin with given params into current parser instance.\n * It's just a sugar to call `plugin(md, params)` with curring.\n *\n * ##### Example\n *\n * ```javascript\n * var iterator = require('markdown-it-for-inline');\n * var md = require('markdown-it')()\n * .use(iterator, 'foo_replace', 'text', function (tokens, idx) {\n * tokens[idx].content = tokens[idx].content.replace(/foo/g, 'bar');\n * });\n * ```\n **/\n\n\nMarkdownIt.prototype.use = function (plugin\n/*, params, ... */\n) {\n var args = [this].concat(Array.prototype.slice.call(arguments, 1));\n plugin.apply(plugin, args);\n return this;\n};\n/** internal\n * MarkdownIt.parse(src, env) -> Array\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Parse input string and returns list of block tokens (special token type\n * \"inline\" will contain list of inline tokens). You should not call this\n * method directly, until you write custom renderer (for example, to produce\n * AST).\n *\n * `env` is used to pass data between \"distributed\" rules and return additional\n * metadata like reference info, needed for the renderer. It also can be used to\n * inject data in specific cases. Usually, you will be ok to pass `{}`,\n * and then pass updated object to renderer.\n **/\n\n\nMarkdownIt.prototype.parse = function (src, env) {\n if (typeof src !== 'string') {\n throw new Error('Input data should be a String');\n }\n\n var state = new this.core.State(src, this, env);\n this.core.process(state);\n return state.tokens;\n};\n/**\n * MarkdownIt.render(src [, env]) -> String\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Render markdown string into html. It does all magic for you :).\n *\n * `env` can be used to inject additional metadata (`{}` by default).\n * But you will not need it with high probability. See also comment\n * in [[MarkdownIt.parse]].\n **/\n\n\nMarkdownIt.prototype.render = function (src, env) {\n env = env || {};\n return this.renderer.render(this.parse(src, env), this.options, env);\n};\n/** internal\n * MarkdownIt.parseInline(src, env) -> Array\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * The same as [[MarkdownIt.parse]] but skip all block rules. It returns the\n * block tokens list with the single `inline` element, containing parsed inline\n * tokens in `children` property. Also updates `env` object.\n **/\n\n\nMarkdownIt.prototype.parseInline = function (src, env) {\n var state = new this.core.State(src, this, env);\n state.inlineMode = true;\n this.core.process(state);\n return state.tokens;\n};\n/**\n * MarkdownIt.renderInline(src [, env]) -> String\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Similar to [[MarkdownIt.render]] but for single paragraph content. Result\n * will NOT be wrapped into `

` tags.\n **/\n\n\nMarkdownIt.prototype.renderInline = function (src, env) {\n env = env || {};\n return this.renderer.render(this.parseInline(src, env), this.options, env);\n};\n\nmodule.exports = MarkdownIt;","'use strict';\n\nvar encodeCache = {}; // Create a lookup array where anything but characters in `chars` string\n// and alphanumeric chars is percent-encoded.\n//\n\nfunction getEncodeCache(exclude) {\n var i,\n ch,\n cache = encodeCache[exclude];\n\n if (cache) {\n return cache;\n }\n\n cache = encodeCache[exclude] = [];\n\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n\n if (/^[0-9a-z]$/i.test(ch)) {\n // always allow unencoded alphanumeric characters\n cache.push(ch);\n } else {\n cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2));\n }\n }\n\n for (i = 0; i < exclude.length; i++) {\n cache[exclude.charCodeAt(i)] = exclude[i];\n }\n\n return cache;\n} // Encode unsafe characters with percent-encoding, skipping already\n// encoded sequences.\n//\n// - string - string to encode\n// - exclude - list of characters to ignore (in addition to a-zA-Z0-9)\n// - keepEscaped - don't encode '%' in a correct escape sequence (default: true)\n//\n\n\nfunction encode(string, exclude, keepEscaped) {\n var i,\n l,\n code,\n nextCode,\n cache,\n result = '';\n\n if (typeof exclude !== 'string') {\n // encode(string, keepEscaped)\n keepEscaped = exclude;\n exclude = encode.defaultChars;\n }\n\n if (typeof keepEscaped === 'undefined') {\n keepEscaped = true;\n }\n\n cache = getEncodeCache(exclude);\n\n for (i = 0, l = string.length; i < l; i++) {\n code = string.charCodeAt(i);\n\n if (keepEscaped && code === 0x25\n /* % */\n && i + 2 < l) {\n if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n result += string.slice(i, i + 3);\n i += 2;\n continue;\n }\n }\n\n if (code < 128) {\n result += cache[code];\n continue;\n }\n\n if (code >= 0xD800 && code <= 0xDFFF) {\n if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {\n nextCode = string.charCodeAt(i + 1);\n\n if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n result += encodeURIComponent(string[i] + string[i + 1]);\n i++;\n continue;\n }\n }\n\n result += '%EF%BF%BD';\n continue;\n }\n\n result += encodeURIComponent(string[i]);\n }\n\n return result;\n}\n\nencode.defaultChars = \";/?:@&=+$,-_.!~*'()#\";\nencode.componentChars = \"-_.!~*'()\";\nmodule.exports = encode;","'use strict';\n/* eslint-disable no-bitwise */\n\nvar decodeCache = {};\n\nfunction getDecodeCache(exclude) {\n var i,\n ch,\n cache = decodeCache[exclude];\n\n if (cache) {\n return cache;\n }\n\n cache = decodeCache[exclude] = [];\n\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n cache.push(ch);\n }\n\n for (i = 0; i < exclude.length; i++) {\n ch = exclude.charCodeAt(i);\n cache[ch] = '%' + ('0' + ch.toString(16).toUpperCase()).slice(-2);\n }\n\n return cache;\n} // Decode percent-encoded string.\n//\n\n\nfunction decode(string, exclude) {\n var cache;\n\n if (typeof exclude !== 'string') {\n exclude = decode.defaultChars;\n }\n\n cache = getDecodeCache(exclude);\n return string.replace(/(%[a-f0-9]{2})+/gi, function (seq) {\n var i,\n l,\n b1,\n b2,\n b3,\n b4,\n chr,\n result = '';\n\n for (i = 0, l = seq.length; i < l; i += 3) {\n b1 = parseInt(seq.slice(i + 1, i + 3), 16);\n\n if (b1 < 0x80) {\n result += cache[b1];\n continue;\n }\n\n if ((b1 & 0xE0) === 0xC0 && i + 3 < l) {\n // 110xxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n\n if ((b2 & 0xC0) === 0x80) {\n chr = b1 << 6 & 0x7C0 | b2 & 0x3F;\n\n if (chr < 0x80) {\n result += \"\\uFFFD\\uFFFD\";\n } else {\n result += String.fromCharCode(chr);\n }\n\n i += 3;\n continue;\n }\n }\n\n if ((b1 & 0xF0) === 0xE0 && i + 6 < l) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n b3 = parseInt(seq.slice(i + 7, i + 9), 16);\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n chr = b1 << 12 & 0xF000 | b2 << 6 & 0xFC0 | b3 & 0x3F;\n\n if (chr < 0x800 || chr >= 0xD800 && chr <= 0xDFFF) {\n result += \"\\uFFFD\\uFFFD\\uFFFD\";\n } else {\n result += String.fromCharCode(chr);\n }\n\n i += 6;\n continue;\n }\n }\n\n if ((b1 & 0xF8) === 0xF0 && i + 9 < l) {\n // 111110xx 10xxxxxx 10xxxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n b3 = parseInt(seq.slice(i + 7, i + 9), 16);\n b4 = parseInt(seq.slice(i + 10, i + 12), 16);\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80 && (b4 & 0xC0) === 0x80) {\n chr = b1 << 18 & 0x1C0000 | b2 << 12 & 0x3F000 | b3 << 6 & 0xFC0 | b4 & 0x3F;\n\n if (chr < 0x10000 || chr > 0x10FFFF) {\n result += \"\\uFFFD\\uFFFD\\uFFFD\\uFFFD\";\n } else {\n chr -= 0x10000;\n result += String.fromCharCode(0xD800 + (chr >> 10), 0xDC00 + (chr & 0x3FF));\n }\n\n i += 9;\n continue;\n }\n }\n\n result += \"\\uFFFD\";\n }\n\n return result;\n });\n}\n\ndecode.defaultChars = ';/?:@&=+$,#';\ndecode.componentChars = '';\nmodule.exports = decode;","'use strict';\n\nmodule.exports = function format(url) {\n var result = '';\n result += url.protocol || '';\n result += url.slashes ? '//' : '';\n result += url.auth ? url.auth + '@' : '';\n\n if (url.hostname && url.hostname.indexOf(':') !== -1) {\n // ipv6 address\n result += '[' + url.hostname + ']';\n } else {\n result += url.hostname || '';\n }\n\n result += url.port ? ':' + url.port : '';\n result += url.pathname || '';\n result += url.search || '';\n result += url.hash || '';\n return result;\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict'; //\n// Changes from joyent/node:\n//\n// 1. No leading slash in paths,\n// e.g. in `url.parse('http://foo?bar')` pathname is ``, not `/`\n//\n// 2. Backslashes are not replaced with slashes,\n// so `http:\\\\example.org\\` is treated like a relative path\n//\n// 3. Trailing colon is treated like a part of the path,\n// i.e. in `http://example.org:foo` pathname is `:foo`\n//\n// 4. Nothing is URL-encoded in the resulting object,\n// (in joyent/node some chars in auth and paths are encoded)\n//\n// 5. `url.parse()` does not have `parseQueryString` argument\n//\n// 6. Removed extraneous result properties: `host`, `path`, `query`, etc.,\n// which can be constructed using other parts of the url.\n//\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.pathname = null;\n} // Reference: RFC 3986, RFC 1808, RFC 2396\n// define these here so at least they only have to be\n// compiled once on the first module load.\n\n\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n // Special case for a simple path URL\nsimplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n // RFC 2396: characters reserved for delimiting URLs.\n// We actually just auto-escape these.\ndelims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n // RFC 2396: characters not allowed for various reasons.\nunwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\nautoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n// Note that any invalid chars are also handled, but these\n// are the ones that are *expected* to be seen, so we fast-path\n// them.\nnonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n\n/* eslint-disable no-script-url */\n// protocols that never have a hostname.\nhostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n},\n // protocols that always contain a // bit.\nslashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n};\n/* eslint-enable no-script-url */\n\nfunction urlParse(url, slashesDenoteHost) {\n if (url && url instanceof Url) {\n return url;\n }\n\n var u = new Url();\n u.parse(url, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function (url, slashesDenoteHost) {\n var i,\n l,\n lowerProto,\n hec,\n slashes,\n rest = url; // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n\n if (simplePath) {\n this.pathname = simplePath[1];\n\n if (simplePath[2]) {\n this.search = simplePath[2];\n }\n\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n\n if (proto) {\n proto = proto[0];\n lowerProto = proto.toLowerCase();\n this.protocol = proto;\n rest = rest.substr(proto.length);\n } // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n\n\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n slashes = rest.substr(0, 2) === '//';\n\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] && (slashes || proto && !slashedProtocol[proto])) {\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n\n for (i = 0; i < hostEndingChars.length; i++) {\n hec = rest.indexOf(hostEndingChars[i]);\n\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec;\n }\n } // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n\n\n var auth, atSign;\n\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n } // Now we have a portion which is definitely the auth.\n // Pull that off.\n\n\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = auth;\n } // the host is the remaining to the left of the first non-host char\n\n\n hostEnd = -1;\n\n for (i = 0; i < nonHostChars.length; i++) {\n hec = rest.indexOf(nonHostChars[i]);\n\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec;\n }\n } // if we still have not hit it, then the entire thing is a host.\n\n\n if (hostEnd === -1) {\n hostEnd = rest.length;\n }\n\n if (rest[hostEnd - 1] === ':') {\n hostEnd--;\n }\n\n var host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd); // pull out port.\n\n this.parseHost(host); // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n\n this.hostname = this.hostname || ''; // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n\n var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']'; // validate a little.\n\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n\n for (i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n\n if (!part) {\n continue;\n }\n\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n } // we test again with ASCII char only\n\n\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n\n if (notHost.length) {\n rest = notHost.join('.') + rest;\n }\n\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } // strip [ and ] from the hostname\n // the host field still retains them, though\n\n\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n }\n } // chop off from the tail first.\n\n\n var hash = rest.indexOf('#');\n\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n\n var qm = rest.indexOf('?');\n\n if (qm !== -1) {\n this.search = rest.substr(qm);\n rest = rest.slice(0, qm);\n }\n\n if (rest) {\n this.pathname = rest;\n }\n\n if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n this.pathname = '';\n }\n\n return this;\n};\n\nUrl.prototype.parseHost = function (host) {\n var port = portPattern.exec(host);\n\n if (port) {\n port = port[0];\n\n if (port !== ':') {\n this.port = port.substr(1);\n }\n\n host = host.substr(0, host.length - port.length);\n }\n\n if (host) {\n this.hostname = host;\n }\n};\n\nmodule.exports = urlParse;","'use strict';\n\nexports.Any = require('./properties/Any/regex');\nexports.Cc = require('./categories/Cc/regex');\nexports.Cf = require('./categories/Cf/regex');\nexports.P = require('./categories/P/regex');\nexports.Z = require('./categories/Z/regex');","module.exports = /[\\xAD\\u0600-\\u0605\\u061C\\u06DD\\u070F\\u08E2\\u180E\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u2066-\\u206F\\uFEFF\\uFFF9-\\uFFFB]|\\uD804[\\uDCBD\\uDCCD]|\\uD82F[\\uDCA0-\\uDCA3]|\\uD834[\\uDD73-\\uDD7A]|\\uDB40[\\uDC01\\uDC20-\\uDC7F]/;","// Just a shortcut for bulk export\n'use strict';\n\nexports.parseLinkLabel = require('./parse_link_label');\nexports.parseLinkDestination = require('./parse_link_destination');\nexports.parseLinkTitle = require('./parse_link_title');","// Parse link label\n//\n// this function assumes that first character (\"[\") already matches;\n// returns the end of the label\n//\n'use strict';\n\nmodule.exports = function parseLinkLabel(state, start, disableNested) {\n var level,\n found,\n marker,\n prevPos,\n labelEnd = -1,\n max = state.posMax,\n oldPos = state.pos;\n state.pos = start + 1;\n level = 1;\n\n while (state.pos < max) {\n marker = state.src.charCodeAt(state.pos);\n\n if (marker === 0x5D\n /* ] */\n ) {\n level--;\n\n if (level === 0) {\n found = true;\n break;\n }\n }\n\n prevPos = state.pos;\n state.md.inline.skipToken(state);\n\n if (marker === 0x5B\n /* [ */\n ) {\n if (prevPos === state.pos - 1) {\n // increase level if we find text `[`, which is not a part of any token\n level++;\n } else if (disableNested) {\n state.pos = oldPos;\n return -1;\n }\n }\n }\n\n if (found) {\n labelEnd = state.pos;\n } // restore old state\n\n\n state.pos = oldPos;\n return labelEnd;\n};","// Parse link destination\n//\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\nvar unescapeAll = require('../common/utils').unescapeAll;\n\nmodule.exports = function parseLinkDestination(str, pos, max) {\n var code,\n level,\n lines = 0,\n start = pos,\n result = {\n ok: false,\n pos: 0,\n lines: 0,\n str: ''\n };\n\n if (str.charCodeAt(pos) === 0x3C\n /* < */\n ) {\n pos++;\n\n while (pos < max) {\n code = str.charCodeAt(pos);\n\n if (code === 0x0A\n /* \\n */\n || isSpace(code)) {\n return result;\n }\n\n if (code === 0x3E\n /* > */\n ) {\n result.pos = pos + 1;\n result.str = unescapeAll(str.slice(start + 1, pos));\n result.ok = true;\n return result;\n }\n\n if (code === 0x5C\n /* \\ */\n && pos + 1 < max) {\n pos += 2;\n continue;\n }\n\n pos++;\n } // no closing '>'\n\n\n return result;\n } // this should be ... } else { ... branch\n\n\n level = 0;\n\n while (pos < max) {\n code = str.charCodeAt(pos);\n\n if (code === 0x20) {\n break;\n } // ascii control characters\n\n\n if (code < 0x20 || code === 0x7F) {\n break;\n }\n\n if (code === 0x5C\n /* \\ */\n && pos + 1 < max) {\n pos += 2;\n continue;\n }\n\n if (code === 0x28\n /* ( */\n ) {\n level++;\n }\n\n if (code === 0x29\n /* ) */\n ) {\n if (level === 0) {\n break;\n }\n\n level--;\n }\n\n pos++;\n }\n\n if (start === pos) {\n return result;\n }\n\n if (level !== 0) {\n return result;\n }\n\n result.str = unescapeAll(str.slice(start, pos));\n result.lines = lines;\n result.pos = pos;\n result.ok = true;\n return result;\n};","// Parse link title\n//\n'use strict';\n\nvar unescapeAll = require('../common/utils').unescapeAll;\n\nmodule.exports = function parseLinkTitle(str, pos, max) {\n var code,\n marker,\n lines = 0,\n start = pos,\n result = {\n ok: false,\n pos: 0,\n lines: 0,\n str: ''\n };\n\n if (pos >= max) {\n return result;\n }\n\n marker = str.charCodeAt(pos);\n\n if (marker !== 0x22\n /* \" */\n && marker !== 0x27\n /* ' */\n && marker !== 0x28\n /* ( */\n ) {\n return result;\n }\n\n pos++; // if opening marker is \"(\", switch it to closing marker \")\"\n\n if (marker === 0x28) {\n marker = 0x29;\n }\n\n while (pos < max) {\n code = str.charCodeAt(pos);\n\n if (code === marker) {\n result.pos = pos + 1;\n result.lines = lines;\n result.str = unescapeAll(str.slice(start + 1, pos));\n result.ok = true;\n return result;\n } else if (code === 0x0A) {\n lines++;\n } else if (code === 0x5C\n /* \\ */\n && pos + 1 < max) {\n pos++;\n\n if (str.charCodeAt(pos) === 0x0A) {\n lines++;\n }\n }\n\n pos++;\n }\n\n return result;\n};","/**\n * class Renderer\n *\n * Generates HTML from parsed token stream. Each instance has independent\n * copy of rules. Those can be rewritten with ease. Also, you can add new\n * rules if you create plugin and adds new token types.\n **/\n'use strict';\n\nvar assign = require('./common/utils').assign;\n\nvar unescapeAll = require('./common/utils').unescapeAll;\n\nvar escapeHtml = require('./common/utils').escapeHtml; ////////////////////////////////////////////////////////////////////////////////\n\n\nvar default_rules = {};\n\ndefault_rules.code_inline = function (tokens, idx, options, env, slf) {\n var token = tokens[idx];\n return '' + escapeHtml(tokens[idx].content) + '';\n};\n\ndefault_rules.code_block = function (tokens, idx, options, env, slf) {\n var token = tokens[idx];\n return '' + escapeHtml(tokens[idx].content) + '\\n';\n};\n\ndefault_rules.fence = function (tokens, idx, options, env, slf) {\n var token = tokens[idx],\n info = token.info ? unescapeAll(token.info).trim() : '',\n langName = '',\n highlighted,\n i,\n tmpAttrs,\n tmpToken;\n\n if (info) {\n langName = info.split(/\\s+/g)[0];\n }\n\n if (options.highlight) {\n highlighted = options.highlight(token.content, langName) || escapeHtml(token.content);\n } else {\n highlighted = escapeHtml(token.content);\n }\n\n if (highlighted.indexOf('' + highlighted + '\\n';\n }\n\n return '

' + highlighted + '
\\n';\n};\n\ndefault_rules.image = function (tokens, idx, options, env, slf) {\n var token = tokens[idx]; // \"alt\" attr MUST be set, even if empty. Because it's mandatory and\n // should be placed on proper position for tests.\n //\n // Replace content with actual value\n\n token.attrs[token.attrIndex('alt')][1] = slf.renderInlineAsText(token.children, options, env);\n return slf.renderToken(tokens, idx, options);\n};\n\ndefault_rules.hardbreak = function (tokens, idx, options\n/*, env */\n) {\n return options.xhtmlOut ? '
\\n' : '
\\n';\n};\n\ndefault_rules.softbreak = function (tokens, idx, options\n/*, env */\n) {\n return options.breaks ? options.xhtmlOut ? '
\\n' : '
\\n' : '\\n';\n};\n\ndefault_rules.text = function (tokens, idx\n/*, options, env */\n) {\n return escapeHtml(tokens[idx].content);\n};\n\ndefault_rules.html_block = function (tokens, idx\n/*, options, env */\n) {\n return tokens[idx].content;\n};\n\ndefault_rules.html_inline = function (tokens, idx\n/*, options, env */\n) {\n return tokens[idx].content;\n};\n/**\n * new Renderer()\n *\n * Creates new [[Renderer]] instance and fill [[Renderer#rules]] with defaults.\n **/\n\n\nfunction Renderer() {\n /**\n * Renderer#rules -> Object\n *\n * Contains render rules for tokens. Can be updated and extended.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.renderer.rules.strong_open = function () { return ''; };\n * md.renderer.rules.strong_close = function () { return ''; };\n *\n * var result = md.renderInline(...);\n * ```\n *\n * Each rule is called as independent static function with fixed signature:\n *\n * ```javascript\n * function my_token_render(tokens, idx, options, env, renderer) {\n * // ...\n * return renderedHTML;\n * }\n * ```\n *\n * See [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.js)\n * for more details and examples.\n **/\n this.rules = assign({}, default_rules);\n}\n/**\n * Renderer.renderAttrs(token) -> String\n *\n * Render token attributes to string.\n **/\n\n\nRenderer.prototype.renderAttrs = function renderAttrs(token) {\n var i, l, result;\n\n if (!token.attrs) {\n return '';\n }\n\n result = '';\n\n for (i = 0, l = token.attrs.length; i < l; i++) {\n result += ' ' + escapeHtml(token.attrs[i][0]) + '=\"' + escapeHtml(token.attrs[i][1]) + '\"';\n }\n\n return result;\n};\n/**\n * Renderer.renderToken(tokens, idx, options) -> String\n * - tokens (Array): list of tokens\n * - idx (Numbed): token index to render\n * - options (Object): params of parser instance\n *\n * Default token renderer. Can be overriden by custom function\n * in [[Renderer#rules]].\n **/\n\n\nRenderer.prototype.renderToken = function renderToken(tokens, idx, options) {\n var nextToken,\n result = '',\n needLf = false,\n token = tokens[idx]; // Tight list paragraphs\n\n if (token.hidden) {\n return '';\n } // Insert a newline between hidden paragraph and subsequent opening\n // block-level tag.\n //\n // For example, here we should insert a newline before blockquote:\n // - a\n // >\n //\n\n\n if (token.block && token.nesting !== -1 && idx && tokens[idx - 1].hidden) {\n result += '\\n';\n } // Add token name, e.g. ``.\n //\n needLf = false;\n }\n }\n }\n }\n\n result += needLf ? '>\\n' : '>';\n return result;\n};\n/**\n * Renderer.renderInline(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to renter\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * The same as [[Renderer.render]], but for single token of `inline` type.\n **/\n\n\nRenderer.prototype.renderInline = function (tokens, options, env) {\n var type,\n result = '',\n rules = this.rules;\n\n for (var i = 0, len = tokens.length; i < len; i++) {\n type = tokens[i].type;\n\n if (typeof rules[type] !== 'undefined') {\n result += rules[type](tokens, i, options, env, this);\n } else {\n result += this.renderToken(tokens, i, options);\n }\n }\n\n return result;\n};\n/** internal\n * Renderer.renderInlineAsText(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to renter\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * Special kludge for image `alt` attributes to conform CommonMark spec.\n * Don't try to use it! Spec requires to show `alt` content with stripped markup,\n * instead of simple escaping.\n **/\n\n\nRenderer.prototype.renderInlineAsText = function (tokens, options, env) {\n var result = '';\n\n for (var i = 0, len = tokens.length; i < len; i++) {\n if (tokens[i].type === 'text') {\n result += tokens[i].content;\n } else if (tokens[i].type === 'image') {\n result += this.renderInlineAsText(tokens[i].children, options, env);\n }\n }\n\n return result;\n};\n/**\n * Renderer.render(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to renter\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * Takes token stream and generates HTML. Probably, you will never need to call\n * this method directly.\n **/\n\n\nRenderer.prototype.render = function (tokens, options, env) {\n var i,\n len,\n type,\n result = '',\n rules = this.rules;\n\n for (i = 0, len = tokens.length; i < len; i++) {\n type = tokens[i].type;\n\n if (type === 'inline') {\n result += this.renderInline(tokens[i].children, options, env);\n } else if (typeof rules[type] !== 'undefined') {\n result += rules[tokens[i].type](tokens, i, options, env, this);\n } else {\n result += this.renderToken(tokens, i, options, env);\n }\n }\n\n return result;\n};\n\nmodule.exports = Renderer;","/** internal\n * class Core\n *\n * Top-level rules executor. Glues block/inline parsers and does intermediate\n * transformations.\n **/\n'use strict';\n\nvar Ruler = require('./ruler');\n\nvar _rules = [['normalize', require('./rules_core/normalize')], ['block', require('./rules_core/block')], ['inline', require('./rules_core/inline')], ['linkify', require('./rules_core/linkify')], ['replacements', require('./rules_core/replacements')], ['smartquotes', require('./rules_core/smartquotes')]];\n/**\n * new Core()\n **/\n\nfunction Core() {\n /**\n * Core#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of core rules.\n **/\n this.ruler = new Ruler();\n\n for (var i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1]);\n }\n}\n/**\n * Core.process(state)\n *\n * Executes core chain rules.\n **/\n\n\nCore.prototype.process = function (state) {\n var i, l, rules;\n rules = this.ruler.getRules('');\n\n for (i = 0, l = rules.length; i < l; i++) {\n rules[i](state);\n }\n};\n\nCore.prototype.State = require('./rules_core/state_core');\nmodule.exports = Core;","// Normalize input string\n'use strict';\n\nvar NEWLINES_RE = /\\r[\\n\\u0085]?|[\\u2424\\u2028\\u0085]/g;\nvar NULL_RE = /\\u0000/g;\n\nmodule.exports = function inline(state) {\n var str; // Normalize newlines\n\n str = state.src.replace(NEWLINES_RE, '\\n'); // Replace NULL characters\n\n str = str.replace(NULL_RE, \"\\uFFFD\");\n state.src = str;\n};","'use strict';\n\nmodule.exports = function block(state) {\n var token;\n\n if (state.inlineMode) {\n token = new state.Token('inline', '', 0);\n token.content = state.src;\n token.map = [0, 1];\n token.children = [];\n state.tokens.push(token);\n } else {\n state.md.block.parse(state.src, state.md, state.env, state.tokens);\n }\n};","'use strict';\n\nmodule.exports = function inline(state) {\n var tokens = state.tokens,\n tok,\n i,\n l; // Parse inlines\n\n for (i = 0, l = tokens.length; i < l; i++) {\n tok = tokens[i];\n\n if (tok.type === 'inline') {\n state.md.inline.parse(tok.content, state.md, state.env, tok.children);\n }\n }\n};","// Replace link-like texts with link nodes.\n//\n// Currently restricted by `md.validateLink()` to http/https/ftp\n//\n'use strict';\n\nvar arrayReplaceAt = require('../common/utils').arrayReplaceAt;\n\nfunction isLinkOpen(str) {\n return /^\\s]/i.test(str);\n}\n\nfunction isLinkClose(str) {\n return /^<\\/a\\s*>/i.test(str);\n}\n\nmodule.exports = function linkify(state) {\n var i,\n j,\n l,\n tokens,\n token,\n currentToken,\n nodes,\n ln,\n text,\n pos,\n lastPos,\n level,\n htmlLinkLevel,\n url,\n fullUrl,\n urlText,\n blockTokens = state.tokens,\n links;\n\n if (!state.md.options.linkify) {\n return;\n }\n\n for (j = 0, l = blockTokens.length; j < l; j++) {\n if (blockTokens[j].type !== 'inline' || !state.md.linkify.pretest(blockTokens[j].content)) {\n continue;\n }\n\n tokens = blockTokens[j].children;\n htmlLinkLevel = 0; // We scan from the end, to keep position when new tags added.\n // Use reversed logic in links start/end match\n\n for (i = tokens.length - 1; i >= 0; i--) {\n currentToken = tokens[i]; // Skip content of markdown links\n\n if (currentToken.type === 'link_close') {\n i--;\n\n while (tokens[i].level !== currentToken.level && tokens[i].type !== 'link_open') {\n i--;\n }\n\n continue;\n } // Skip content of html tag links\n\n\n if (currentToken.type === 'html_inline') {\n if (isLinkOpen(currentToken.content) && htmlLinkLevel > 0) {\n htmlLinkLevel--;\n }\n\n if (isLinkClose(currentToken.content)) {\n htmlLinkLevel++;\n }\n }\n\n if (htmlLinkLevel > 0) {\n continue;\n }\n\n if (currentToken.type === 'text' && state.md.linkify.test(currentToken.content)) {\n text = currentToken.content;\n links = state.md.linkify.match(text); // Now split string to nodes\n\n nodes = [];\n level = currentToken.level;\n lastPos = 0;\n\n for (ln = 0; ln < links.length; ln++) {\n url = links[ln].url;\n fullUrl = state.md.normalizeLink(url);\n\n if (!state.md.validateLink(fullUrl)) {\n continue;\n }\n\n urlText = links[ln].text; // Linkifier might send raw hostnames like \"example.com\", where url\n // starts with domain name. So we prepend http:// in those cases,\n // and remove it afterwards.\n //\n\n if (!links[ln].schema) {\n urlText = state.md.normalizeLinkText('http://' + urlText).replace(/^http:\\/\\//, '');\n } else if (links[ln].schema === 'mailto:' && !/^mailto:/i.test(urlText)) {\n urlText = state.md.normalizeLinkText('mailto:' + urlText).replace(/^mailto:/, '');\n } else {\n urlText = state.md.normalizeLinkText(urlText);\n }\n\n pos = links[ln].index;\n\n if (pos > lastPos) {\n token = new state.Token('text', '', 0);\n token.content = text.slice(lastPos, pos);\n token.level = level;\n nodes.push(token);\n }\n\n token = new state.Token('link_open', 'a', 1);\n token.attrs = [['href', fullUrl]];\n token.level = level++;\n token.markup = 'linkify';\n token.info = 'auto';\n nodes.push(token);\n token = new state.Token('text', '', 0);\n token.content = urlText;\n token.level = level;\n nodes.push(token);\n token = new state.Token('link_close', 'a', -1);\n token.level = --level;\n token.markup = 'linkify';\n token.info = 'auto';\n nodes.push(token);\n lastPos = links[ln].lastIndex;\n }\n\n if (lastPos < text.length) {\n token = new state.Token('text', '', 0);\n token.content = text.slice(lastPos);\n token.level = level;\n nodes.push(token);\n } // replace current node\n\n\n blockTokens[j].children = tokens = arrayReplaceAt(tokens, i, nodes);\n }\n }\n }\n};","// Simple typographyc replacements\n//\n// (c) (C) → ©\n// (tm) (TM) → ™\n// (r) (R) → ®\n// +- → ±\n// (p) (P) -> §\n// ... → … (also ?.... → ?.., !.... → !..)\n// ???????? → ???, !!!!! → !!!, `,,` → `,`\n// -- → –, --- → —\n//\n'use strict'; // TODO:\n// - fractionals 1/2, 1/4, 3/4 -> ½, ¼, ¾\n// - miltiplication 2 x 4 -> 2 × 4\n\nvar RARE_RE = /\\+-|\\.\\.|\\?\\?\\?\\?|!!!!|,,|--/; // Workaround for phantomjs - need regex without /g flag,\n// or root check will fail every second time\n\nvar SCOPED_ABBR_TEST_RE = /\\((c|tm|r|p)\\)/i;\nvar SCOPED_ABBR_RE = /\\((c|tm|r|p)\\)/ig;\nvar SCOPED_ABBR = {\n c: '©',\n r: '®',\n p: '§',\n tm: '™'\n};\n\nfunction replaceFn(match, name) {\n return SCOPED_ABBR[name.toLowerCase()];\n}\n\nfunction replace_scoped(inlineTokens) {\n var i,\n token,\n inside_autolink = 0;\n\n for (i = inlineTokens.length - 1; i >= 0; i--) {\n token = inlineTokens[i];\n\n if (token.type === 'text' && !inside_autolink) {\n token.content = token.content.replace(SCOPED_ABBR_RE, replaceFn);\n }\n\n if (token.type === 'link_open' && token.info === 'auto') {\n inside_autolink--;\n }\n\n if (token.type === 'link_close' && token.info === 'auto') {\n inside_autolink++;\n }\n }\n}\n\nfunction replace_rare(inlineTokens) {\n var i,\n token,\n inside_autolink = 0;\n\n for (i = inlineTokens.length - 1; i >= 0; i--) {\n token = inlineTokens[i];\n\n if (token.type === 'text' && !inside_autolink) {\n if (RARE_RE.test(token.content)) {\n token.content = token.content.replace(/\\+-/g, '±') // .., ..., ....... -> …\n // but ?..... & !..... -> ?.. & !..\n .replace(/\\.{2,}/g, '…').replace(/([?!])…/g, '$1..').replace(/([?!]){4,}/g, '$1$1$1').replace(/,{2,}/g, ',') // em-dash\n .replace(/(^|[^-])---([^-]|$)/mg, \"$1\\u2014$2\") // en-dash\n .replace(/(^|\\s)--(\\s|$)/mg, \"$1\\u2013$2\").replace(/(^|[^-\\s])--([^-\\s]|$)/mg, \"$1\\u2013$2\");\n }\n }\n\n if (token.type === 'link_open' && token.info === 'auto') {\n inside_autolink--;\n }\n\n if (token.type === 'link_close' && token.info === 'auto') {\n inside_autolink++;\n }\n }\n}\n\nmodule.exports = function replace(state) {\n var blkIdx;\n\n if (!state.md.options.typographer) {\n return;\n }\n\n for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n if (state.tokens[blkIdx].type !== 'inline') {\n continue;\n }\n\n if (SCOPED_ABBR_TEST_RE.test(state.tokens[blkIdx].content)) {\n replace_scoped(state.tokens[blkIdx].children);\n }\n\n if (RARE_RE.test(state.tokens[blkIdx].content)) {\n replace_rare(state.tokens[blkIdx].children);\n }\n }\n};","// Convert straight quotation marks to typographic ones\n//\n'use strict';\n\nvar isWhiteSpace = require('../common/utils').isWhiteSpace;\n\nvar isPunctChar = require('../common/utils').isPunctChar;\n\nvar isMdAsciiPunct = require('../common/utils').isMdAsciiPunct;\n\nvar QUOTE_TEST_RE = /['\"]/;\nvar QUOTE_RE = /['\"]/g;\nvar APOSTROPHE = \"\\u2019\";\n/* ’ */\n\nfunction replaceAt(str, index, ch) {\n return str.substr(0, index) + ch + str.substr(index + 1);\n}\n\nfunction process_inlines(tokens, state) {\n var i, token, text, t, pos, max, thisLevel, item, lastChar, nextChar, isLastPunctChar, isNextPunctChar, isLastWhiteSpace, isNextWhiteSpace, canOpen, canClose, j, isSingle, stack, openQuote, closeQuote;\n stack = [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n thisLevel = tokens[i].level;\n\n for (j = stack.length - 1; j >= 0; j--) {\n if (stack[j].level <= thisLevel) {\n break;\n }\n }\n\n stack.length = j + 1;\n\n if (token.type !== 'text') {\n continue;\n }\n\n text = token.content;\n pos = 0;\n max = text.length;\n /*eslint no-labels:0,block-scoped-var:0*/\n\n OUTER: while (pos < max) {\n QUOTE_RE.lastIndex = pos;\n t = QUOTE_RE.exec(text);\n\n if (!t) {\n break;\n }\n\n canOpen = canClose = true;\n pos = t.index + 1;\n isSingle = t[0] === \"'\"; // Find previous character,\n // default to space if it's the beginning of the line\n //\n\n lastChar = 0x20;\n\n if (t.index - 1 >= 0) {\n lastChar = text.charCodeAt(t.index - 1);\n } else {\n for (j = i - 1; j >= 0; j--) {\n if (tokens[j].type === 'softbreak' || tokens[j].type === 'hardbreak') break; // lastChar defaults to 0x20\n\n if (tokens[j].type !== 'text') continue;\n lastChar = tokens[j].content.charCodeAt(tokens[j].content.length - 1);\n break;\n }\n } // Find next character,\n // default to space if it's the end of the line\n //\n\n\n nextChar = 0x20;\n\n if (pos < max) {\n nextChar = text.charCodeAt(pos);\n } else {\n for (j = i + 1; j < tokens.length; j++) {\n if (tokens[j].type === 'softbreak' || tokens[j].type === 'hardbreak') break; // nextChar defaults to 0x20\n\n if (tokens[j].type !== 'text') continue;\n nextChar = tokens[j].content.charCodeAt(0);\n break;\n }\n }\n\n isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));\n isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));\n isLastWhiteSpace = isWhiteSpace(lastChar);\n isNextWhiteSpace = isWhiteSpace(nextChar);\n\n if (isNextWhiteSpace) {\n canOpen = false;\n } else if (isNextPunctChar) {\n if (!(isLastWhiteSpace || isLastPunctChar)) {\n canOpen = false;\n }\n }\n\n if (isLastWhiteSpace) {\n canClose = false;\n } else if (isLastPunctChar) {\n if (!(isNextWhiteSpace || isNextPunctChar)) {\n canClose = false;\n }\n }\n\n if (nextChar === 0x22\n /* \" */\n && t[0] === '\"') {\n if (lastChar >= 0x30\n /* 0 */\n && lastChar <= 0x39\n /* 9 */\n ) {\n // special case: 1\"\" - count first quote as an inch\n canClose = canOpen = false;\n }\n }\n\n if (canOpen && canClose) {\n // treat this as the middle of the word\n canOpen = false;\n canClose = isNextPunctChar;\n }\n\n if (!canOpen && !canClose) {\n // middle of word\n if (isSingle) {\n token.content = replaceAt(token.content, t.index, APOSTROPHE);\n }\n\n continue;\n }\n\n if (canClose) {\n // this could be a closing quote, rewind the stack to get a match\n for (j = stack.length - 1; j >= 0; j--) {\n item = stack[j];\n\n if (stack[j].level < thisLevel) {\n break;\n }\n\n if (item.single === isSingle && stack[j].level === thisLevel) {\n item = stack[j];\n\n if (isSingle) {\n openQuote = state.md.options.quotes[2];\n closeQuote = state.md.options.quotes[3];\n } else {\n openQuote = state.md.options.quotes[0];\n closeQuote = state.md.options.quotes[1];\n } // replace token.content *before* tokens[item.token].content,\n // because, if they are pointing at the same token, replaceAt\n // could mess up indices when quote length != 1\n\n\n token.content = replaceAt(token.content, t.index, closeQuote);\n tokens[item.token].content = replaceAt(tokens[item.token].content, item.pos, openQuote);\n pos += closeQuote.length - 1;\n\n if (item.token === i) {\n pos += openQuote.length - 1;\n }\n\n text = token.content;\n max = text.length;\n stack.length = j;\n continue OUTER;\n }\n }\n }\n\n if (canOpen) {\n stack.push({\n token: i,\n pos: t.index,\n single: isSingle,\n level: thisLevel\n });\n } else if (canClose && isSingle) {\n token.content = replaceAt(token.content, t.index, APOSTROPHE);\n }\n }\n }\n}\n\nmodule.exports = function smartquotes(state) {\n /*eslint max-depth:0*/\n var blkIdx;\n\n if (!state.md.options.typographer) {\n return;\n }\n\n for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n if (state.tokens[blkIdx].type !== 'inline' || !QUOTE_TEST_RE.test(state.tokens[blkIdx].content)) {\n continue;\n }\n\n process_inlines(state.tokens[blkIdx].children, state);\n }\n};","// Core state object\n//\n'use strict';\n\nvar Token = require('../token');\n\nfunction StateCore(src, md, env) {\n this.src = src;\n this.env = env;\n this.tokens = [];\n this.inlineMode = false;\n this.md = md; // link to parser instance\n} // re-export Token class to use in core rules\n\n\nStateCore.prototype.Token = Token;\nmodule.exports = StateCore;","/** internal\n * class ParserBlock\n *\n * Block-level tokenizer.\n **/\n'use strict';\n\nvar Ruler = require('./ruler');\n\nvar _rules = [// First 2 params - rule name & source. Secondary array - list of rules,\n// which can be terminated by this one.\n['table', require('./rules_block/table'), ['paragraph', 'reference']], ['code', require('./rules_block/code')], ['fence', require('./rules_block/fence'), ['paragraph', 'reference', 'blockquote', 'list']], ['blockquote', require('./rules_block/blockquote'), ['paragraph', 'reference', 'blockquote', 'list']], ['hr', require('./rules_block/hr'), ['paragraph', 'reference', 'blockquote', 'list']], ['list', require('./rules_block/list'), ['paragraph', 'reference', 'blockquote']], ['reference', require('./rules_block/reference')], ['heading', require('./rules_block/heading'), ['paragraph', 'reference', 'blockquote']], ['lheading', require('./rules_block/lheading')], ['html_block', require('./rules_block/html_block'), ['paragraph', 'reference', 'blockquote']], ['paragraph', require('./rules_block/paragraph')]];\n/**\n * new ParserBlock()\n **/\n\nfunction ParserBlock() {\n /**\n * ParserBlock#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of block rules.\n **/\n this.ruler = new Ruler();\n\n for (var i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1], {\n alt: (_rules[i][2] || []).slice()\n });\n }\n} // Generate tokens for input range\n//\n\n\nParserBlock.prototype.tokenize = function (state, startLine, endLine) {\n var ok,\n i,\n rules = this.ruler.getRules(''),\n len = rules.length,\n line = startLine,\n hasEmptyLines = false,\n maxNesting = state.md.options.maxNesting;\n\n while (line < endLine) {\n state.line = line = state.skipEmptyLines(line);\n\n if (line >= endLine) {\n break;\n } // Termination condition for nested calls.\n // Nested calls currently used for blockquotes & lists\n\n\n if (state.sCount[line] < state.blkIndent) {\n break;\n } // If nesting level exceeded - skip tail to the end. That's not ordinary\n // situation and we should not care about content.\n\n\n if (state.level >= maxNesting) {\n state.line = endLine;\n break;\n } // Try all possible rules.\n // On success, rule should:\n //\n // - update `state.line`\n // - update `state.tokens`\n // - return true\n\n\n for (i = 0; i < len; i++) {\n ok = rules[i](state, line, endLine, false);\n\n if (ok) {\n break;\n }\n } // set state.tight if we had an empty line before current tag\n // i.e. latest empty line should not count\n\n\n state.tight = !hasEmptyLines; // paragraph might \"eat\" one newline after it in nested lists\n\n if (state.isEmpty(state.line - 1)) {\n hasEmptyLines = true;\n }\n\n line = state.line;\n\n if (line < endLine && state.isEmpty(line)) {\n hasEmptyLines = true;\n line++;\n state.line = line;\n }\n }\n};\n/**\n * ParserBlock.parse(str, md, env, outTokens)\n *\n * Process input string and push block tokens into `outTokens`\n **/\n\n\nParserBlock.prototype.parse = function (src, md, env, outTokens) {\n var state;\n\n if (!src) {\n return;\n }\n\n state = new this.State(src, md, env, outTokens);\n this.tokenize(state, state.line, state.lineMax);\n};\n\nParserBlock.prototype.State = require('./rules_block/state_block');\nmodule.exports = ParserBlock;","// GFM table, non-standard\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\nfunction getLine(state, line) {\n var pos = state.bMarks[line] + state.blkIndent,\n max = state.eMarks[line];\n return state.src.substr(pos, max - pos);\n}\n\nfunction escapedSplit(str) {\n var result = [],\n pos = 0,\n max = str.length,\n ch,\n escapes = 0,\n lastPos = 0,\n backTicked = false,\n lastBackTick = 0;\n ch = str.charCodeAt(pos);\n\n while (pos < max) {\n if (ch === 0x60\n /* ` */\n ) {\n if (backTicked) {\n // make \\` close code sequence, but not open it;\n // the reason is: `\\` is correct code block\n backTicked = false;\n lastBackTick = pos;\n } else if (escapes % 2 === 0) {\n backTicked = true;\n lastBackTick = pos;\n }\n } else if (ch === 0x7c\n /* | */\n && escapes % 2 === 0 && !backTicked) {\n result.push(str.substring(lastPos, pos));\n lastPos = pos + 1;\n }\n\n if (ch === 0x5c\n /* \\ */\n ) {\n escapes++;\n } else {\n escapes = 0;\n }\n\n pos++; // If there was an un-closed backtick, go back to just after\n // the last backtick, but as if it was a normal character\n\n if (pos === max && backTicked) {\n backTicked = false;\n pos = lastBackTick + 1;\n }\n\n ch = str.charCodeAt(pos);\n }\n\n result.push(str.substring(lastPos));\n return result;\n}\n\nmodule.exports = function table(state, startLine, endLine, silent) {\n var ch, lineText, pos, i, nextLine, columns, columnCount, token, aligns, t, tableLines, tbodyLines; // should have at least two lines\n\n if (startLine + 2 > endLine) {\n return false;\n }\n\n nextLine = startLine + 1;\n\n if (state.sCount[nextLine] < state.blkIndent) {\n return false;\n } // if it's indented more than 3 spaces, it should be a code block\n\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n return false;\n } // first character of the second line should be '|', '-', ':',\n // and no other characters are allowed but spaces;\n // basically, this is the equivalent of /^[-:|][-:|\\s]*$/ regexp\n\n\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n\n if (pos >= state.eMarks[nextLine]) {\n return false;\n }\n\n ch = state.src.charCodeAt(pos++);\n\n if (ch !== 0x7C\n /* | */\n && ch !== 0x2D\n /* - */\n && ch !== 0x3A\n /* : */\n ) {\n return false;\n }\n\n while (pos < state.eMarks[nextLine]) {\n ch = state.src.charCodeAt(pos);\n\n if (ch !== 0x7C\n /* | */\n && ch !== 0x2D\n /* - */\n && ch !== 0x3A\n /* : */\n && !isSpace(ch)) {\n return false;\n }\n\n pos++;\n }\n\n lineText = getLine(state, startLine + 1);\n columns = lineText.split('|');\n aligns = [];\n\n for (i = 0; i < columns.length; i++) {\n t = columns[i].trim();\n\n if (!t) {\n // allow empty columns before and after table, but not in between columns;\n // e.g. allow ` |---| `, disallow ` ---||--- `\n if (i === 0 || i === columns.length - 1) {\n continue;\n } else {\n return false;\n }\n }\n\n if (!/^:?-+:?$/.test(t)) {\n return false;\n }\n\n if (t.charCodeAt(t.length - 1) === 0x3A\n /* : */\n ) {\n aligns.push(t.charCodeAt(0) === 0x3A\n /* : */\n ? 'center' : 'right');\n } else if (t.charCodeAt(0) === 0x3A\n /* : */\n ) {\n aligns.push('left');\n } else {\n aligns.push('');\n }\n }\n\n lineText = getLine(state, startLine).trim();\n\n if (lineText.indexOf('|') === -1) {\n return false;\n }\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n columns = escapedSplit(lineText.replace(/^\\||\\|$/g, '')); // header row will define an amount of columns in the entire table,\n // and align row shouldn't be smaller than that (the rest of the rows can)\n\n columnCount = columns.length;\n\n if (columnCount > aligns.length) {\n return false;\n }\n\n if (silent) {\n return true;\n }\n\n token = state.push('table_open', 'table', 1);\n token.map = tableLines = [startLine, 0];\n token = state.push('thead_open', 'thead', 1);\n token.map = [startLine, startLine + 1];\n token = state.push('tr_open', 'tr', 1);\n token.map = [startLine, startLine + 1];\n\n for (i = 0; i < columns.length; i++) {\n token = state.push('th_open', 'th', 1);\n token.map = [startLine, startLine + 1];\n\n if (aligns[i]) {\n token.attrs = [['style', 'text-align:' + aligns[i]]];\n }\n\n token = state.push('inline', '', 0);\n token.content = columns[i].trim();\n token.map = [startLine, startLine + 1];\n token.children = [];\n token = state.push('th_close', 'th', -1);\n }\n\n token = state.push('tr_close', 'tr', -1);\n token = state.push('thead_close', 'thead', -1);\n token = state.push('tbody_open', 'tbody', 1);\n token.map = tbodyLines = [startLine + 2, 0];\n\n for (nextLine = startLine + 2; nextLine < endLine; nextLine++) {\n if (state.sCount[nextLine] < state.blkIndent) {\n break;\n }\n\n lineText = getLine(state, nextLine).trim();\n\n if (lineText.indexOf('|') === -1) {\n break;\n }\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n break;\n }\n\n columns = escapedSplit(lineText.replace(/^\\||\\|$/g, ''));\n token = state.push('tr_open', 'tr', 1);\n\n for (i = 0; i < columnCount; i++) {\n token = state.push('td_open', 'td', 1);\n\n if (aligns[i]) {\n token.attrs = [['style', 'text-align:' + aligns[i]]];\n }\n\n token = state.push('inline', '', 0);\n token.content = columns[i] ? columns[i].trim() : '';\n token.children = [];\n token = state.push('td_close', 'td', -1);\n }\n\n token = state.push('tr_close', 'tr', -1);\n }\n\n token = state.push('tbody_close', 'tbody', -1);\n token = state.push('table_close', 'table', -1);\n tableLines[1] = tbodyLines[1] = nextLine;\n state.line = nextLine;\n return true;\n};","// Code block (4 spaces padded)\n'use strict';\n\nmodule.exports = function code(state, startLine, endLine\n/*, silent*/\n) {\n var nextLine, last, token;\n\n if (state.sCount[startLine] - state.blkIndent < 4) {\n return false;\n }\n\n last = nextLine = startLine + 1;\n\n while (nextLine < endLine) {\n if (state.isEmpty(nextLine)) {\n nextLine++;\n continue;\n }\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n nextLine++;\n last = nextLine;\n continue;\n }\n\n break;\n }\n\n state.line = last;\n token = state.push('code_block', 'code', 0);\n token.content = state.getLines(startLine, last, 4 + state.blkIndent, true);\n token.map = [startLine, state.line];\n return true;\n};","// fences (``` lang, ~~~ lang)\n'use strict';\n\nmodule.exports = function fence(state, startLine, endLine, silent) {\n var marker,\n len,\n params,\n nextLine,\n mem,\n token,\n markup,\n haveEndMarker = false,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine]; // if it's indented more than 3 spaces, it should be a code block\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n if (pos + 3 > max) {\n return false;\n }\n\n marker = state.src.charCodeAt(pos);\n\n if (marker !== 0x7E\n /* ~ */\n && marker !== 0x60\n /* ` */\n ) {\n return false;\n } // scan marker length\n\n\n mem = pos;\n pos = state.skipChars(pos, marker);\n len = pos - mem;\n\n if (len < 3) {\n return false;\n }\n\n markup = state.src.slice(mem, pos);\n params = state.src.slice(pos, max);\n\n if (params.indexOf(String.fromCharCode(marker)) >= 0) {\n return false;\n } // Since start is found, we can report success here in validation mode\n\n\n if (silent) {\n return true;\n } // search end of block\n\n\n nextLine = startLine;\n\n for (;;) {\n nextLine++;\n\n if (nextLine >= endLine) {\n // unclosed block should be autoclosed by end of document.\n // also block seems to be autoclosed by end of parent\n break;\n }\n\n pos = mem = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n\n if (pos < max && state.sCount[nextLine] < state.blkIndent) {\n // non-empty line with negative indent should stop the list:\n // - ```\n // test\n break;\n }\n\n if (state.src.charCodeAt(pos) !== marker) {\n continue;\n }\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n // closing fence should be indented less than 4 spaces\n continue;\n }\n\n pos = state.skipChars(pos, marker); // closing code fence must be at least as long as the opening one\n\n if (pos - mem < len) {\n continue;\n } // make sure tail has spaces only\n\n\n pos = state.skipSpaces(pos);\n\n if (pos < max) {\n continue;\n }\n\n haveEndMarker = true; // found!\n\n break;\n } // If a fence has heading spaces, they should be removed from its inner block\n\n\n len = state.sCount[startLine];\n state.line = nextLine + (haveEndMarker ? 1 : 0);\n token = state.push('fence', 'code', 0);\n token.info = params;\n token.content = state.getLines(startLine + 1, nextLine, len, true);\n token.markup = markup;\n token.map = [startLine, state.line];\n return true;\n};","// Block quotes\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\nmodule.exports = function blockquote(state, startLine, endLine, silent) {\n var adjustTab,\n ch,\n i,\n initial,\n l,\n lastLineEmpty,\n lines,\n nextLine,\n offset,\n oldBMarks,\n oldBSCount,\n oldIndent,\n oldParentType,\n oldSCount,\n oldTShift,\n spaceAfterMarker,\n terminate,\n terminatorRules,\n token,\n wasOutdented,\n oldLineMax = state.lineMax,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine]; // if it's indented more than 3 spaces, it should be a code block\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n } // check the block quote marker\n\n\n if (state.src.charCodeAt(pos++) !== 0x3E\n /* > */\n ) {\n return false;\n } // we know that it's going to be a valid blockquote,\n // so no point trying to find the end of it in silent mode\n\n\n if (silent) {\n return true;\n } // skip spaces after \">\" and re-calculate offset\n\n\n initial = offset = state.sCount[startLine] + pos - (state.bMarks[startLine] + state.tShift[startLine]); // skip one optional space after '>'\n\n if (state.src.charCodeAt(pos) === 0x20\n /* space */\n ) {\n // ' > test '\n // ^ -- position start of line here:\n pos++;\n initial++;\n offset++;\n adjustTab = false;\n spaceAfterMarker = true;\n } else if (state.src.charCodeAt(pos) === 0x09\n /* tab */\n ) {\n spaceAfterMarker = true;\n\n if ((state.bsCount[startLine] + offset) % 4 === 3) {\n // ' >\\t test '\n // ^ -- position start of line here (tab has width===1)\n pos++;\n initial++;\n offset++;\n adjustTab = false;\n } else {\n // ' >\\t test '\n // ^ -- position start of line here + shift bsCount slightly\n // to make extra space appear\n adjustTab = true;\n }\n } else {\n spaceAfterMarker = false;\n }\n\n oldBMarks = [state.bMarks[startLine]];\n state.bMarks[startLine] = pos;\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n offset += 4 - (offset + state.bsCount[startLine] + (adjustTab ? 1 : 0)) % 4;\n } else {\n offset++;\n }\n } else {\n break;\n }\n\n pos++;\n }\n\n oldBSCount = [state.bsCount[startLine]];\n state.bsCount[startLine] = state.sCount[startLine] + 1 + (spaceAfterMarker ? 1 : 0);\n lastLineEmpty = pos >= max;\n oldSCount = [state.sCount[startLine]];\n state.sCount[startLine] = offset - initial;\n oldTShift = [state.tShift[startLine]];\n state.tShift[startLine] = pos - state.bMarks[startLine];\n terminatorRules = state.md.block.ruler.getRules('blockquote');\n oldParentType = state.parentType;\n state.parentType = 'blockquote';\n wasOutdented = false; // Search the end of the block\n //\n // Block ends with either:\n // 1. an empty line outside:\n // ```\n // > test\n //\n // ```\n // 2. an empty line inside:\n // ```\n // >\n // test\n // ```\n // 3. another tag:\n // ```\n // > test\n // - - -\n // ```\n\n for (nextLine = startLine + 1; nextLine < endLine; nextLine++) {\n // check if it's outdented, i.e. it's inside list item and indented\n // less than said list item:\n //\n // ```\n // 1. anything\n // > current blockquote\n // 2. checking this line\n // ```\n if (state.sCount[nextLine] < state.blkIndent) wasOutdented = true;\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n\n if (pos >= max) {\n // Case 1: line is not inside the blockquote, and this line is empty.\n break;\n }\n\n if (state.src.charCodeAt(pos++) === 0x3E\n /* > */\n && !wasOutdented) {\n // This line is inside the blockquote.\n // skip spaces after \">\" and re-calculate offset\n initial = offset = state.sCount[nextLine] + pos - (state.bMarks[nextLine] + state.tShift[nextLine]); // skip one optional space after '>'\n\n if (state.src.charCodeAt(pos) === 0x20\n /* space */\n ) {\n // ' > test '\n // ^ -- position start of line here:\n pos++;\n initial++;\n offset++;\n adjustTab = false;\n spaceAfterMarker = true;\n } else if (state.src.charCodeAt(pos) === 0x09\n /* tab */\n ) {\n spaceAfterMarker = true;\n\n if ((state.bsCount[nextLine] + offset) % 4 === 3) {\n // ' >\\t test '\n // ^ -- position start of line here (tab has width===1)\n pos++;\n initial++;\n offset++;\n adjustTab = false;\n } else {\n // ' >\\t test '\n // ^ -- position start of line here + shift bsCount slightly\n // to make extra space appear\n adjustTab = true;\n }\n } else {\n spaceAfterMarker = false;\n }\n\n oldBMarks.push(state.bMarks[nextLine]);\n state.bMarks[nextLine] = pos;\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n offset += 4 - (offset + state.bsCount[nextLine] + (adjustTab ? 1 : 0)) % 4;\n } else {\n offset++;\n }\n } else {\n break;\n }\n\n pos++;\n }\n\n lastLineEmpty = pos >= max;\n oldBSCount.push(state.bsCount[nextLine]);\n state.bsCount[nextLine] = state.sCount[nextLine] + 1 + (spaceAfterMarker ? 1 : 0);\n oldSCount.push(state.sCount[nextLine]);\n state.sCount[nextLine] = offset - initial;\n oldTShift.push(state.tShift[nextLine]);\n state.tShift[nextLine] = pos - state.bMarks[nextLine];\n continue;\n } // Case 2: line is not inside the blockquote, and the last line was empty.\n\n\n if (lastLineEmpty) {\n break;\n } // Case 3: another tag found.\n\n\n terminate = false;\n\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n\n if (terminate) {\n // Quirk to enforce \"hard termination mode\" for paragraphs;\n // normally if you call `tokenize(state, startLine, nextLine)`,\n // paragraphs will look below nextLine for paragraph continuation,\n // but if blockquote is terminated by another tag, they shouldn't\n state.lineMax = nextLine;\n\n if (state.blkIndent !== 0) {\n // state.blkIndent was non-zero, we now set it to zero,\n // so we need to re-calculate all offsets to appear as\n // if indent wasn't changed\n oldBMarks.push(state.bMarks[nextLine]);\n oldBSCount.push(state.bsCount[nextLine]);\n oldTShift.push(state.tShift[nextLine]);\n oldSCount.push(state.sCount[nextLine]);\n state.sCount[nextLine] -= state.blkIndent;\n }\n\n break;\n }\n\n oldBMarks.push(state.bMarks[nextLine]);\n oldBSCount.push(state.bsCount[nextLine]);\n oldTShift.push(state.tShift[nextLine]);\n oldSCount.push(state.sCount[nextLine]); // A negative indentation means that this is a paragraph continuation\n //\n\n state.sCount[nextLine] = -1;\n }\n\n oldIndent = state.blkIndent;\n state.blkIndent = 0;\n token = state.push('blockquote_open', 'blockquote', 1);\n token.markup = '>';\n token.map = lines = [startLine, 0];\n state.md.block.tokenize(state, startLine, nextLine);\n token = state.push('blockquote_close', 'blockquote', -1);\n token.markup = '>';\n state.lineMax = oldLineMax;\n state.parentType = oldParentType;\n lines[1] = state.line; // Restore original tShift; this might not be necessary since the parser\n // has already been here, but just to make sure we can do that.\n\n for (i = 0; i < oldTShift.length; i++) {\n state.bMarks[i + startLine] = oldBMarks[i];\n state.tShift[i + startLine] = oldTShift[i];\n state.sCount[i + startLine] = oldSCount[i];\n state.bsCount[i + startLine] = oldBSCount[i];\n }\n\n state.blkIndent = oldIndent;\n return true;\n};","// Horizontal rule\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\nmodule.exports = function hr(state, startLine, endLine, silent) {\n var marker,\n cnt,\n ch,\n token,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine]; // if it's indented more than 3 spaces, it should be a code block\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n marker = state.src.charCodeAt(pos++); // Check hr marker\n\n if (marker !== 0x2A\n /* * */\n && marker !== 0x2D\n /* - */\n && marker !== 0x5F\n /* _ */\n ) {\n return false;\n } // markers can be mixed with spaces, but there should be at least 3 of them\n\n\n cnt = 1;\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos++);\n\n if (ch !== marker && !isSpace(ch)) {\n return false;\n }\n\n if (ch === marker) {\n cnt++;\n }\n }\n\n if (cnt < 3) {\n return false;\n }\n\n if (silent) {\n return true;\n }\n\n state.line = startLine + 1;\n token = state.push('hr', 'hr', 0);\n token.map = [startLine, state.line];\n token.markup = Array(cnt + 1).join(String.fromCharCode(marker));\n return true;\n};","// Lists\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace; // Search `[-+*][\\n ]`, returns next pos after marker on success\n// or -1 on fail.\n\n\nfunction skipBulletListMarker(state, startLine) {\n var marker, pos, max, ch;\n pos = state.bMarks[startLine] + state.tShift[startLine];\n max = state.eMarks[startLine];\n marker = state.src.charCodeAt(pos++); // Check bullet\n\n if (marker !== 0x2A\n /* * */\n && marker !== 0x2D\n /* - */\n && marker !== 0x2B\n /* + */\n ) {\n return -1;\n }\n\n if (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (!isSpace(ch)) {\n // \" -test \" - is not a list item\n return -1;\n }\n }\n\n return pos;\n} // Search `\\d+[.)][\\n ]`, returns next pos after marker on success\n// or -1 on fail.\n\n\nfunction skipOrderedListMarker(state, startLine) {\n var ch,\n start = state.bMarks[startLine] + state.tShift[startLine],\n pos = start,\n max = state.eMarks[startLine]; // List marker should have at least 2 chars (digit + dot)\n\n if (pos + 1 >= max) {\n return -1;\n }\n\n ch = state.src.charCodeAt(pos++);\n\n if (ch < 0x30\n /* 0 */\n || ch > 0x39\n /* 9 */\n ) {\n return -1;\n }\n\n for (;;) {\n // EOL -> fail\n if (pos >= max) {\n return -1;\n }\n\n ch = state.src.charCodeAt(pos++);\n\n if (ch >= 0x30\n /* 0 */\n && ch <= 0x39\n /* 9 */\n ) {\n // List marker should have no more than 9 digits\n // (prevents integer overflow in browsers)\n if (pos - start >= 10) {\n return -1;\n }\n\n continue;\n } // found valid marker\n\n\n if (ch === 0x29\n /* ) */\n || ch === 0x2e\n /* . */\n ) {\n break;\n }\n\n return -1;\n }\n\n if (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (!isSpace(ch)) {\n // \" 1.test \" - is not a list item\n return -1;\n }\n }\n\n return pos;\n}\n\nfunction markTightParagraphs(state, idx) {\n var i,\n l,\n level = state.level + 2;\n\n for (i = idx + 2, l = state.tokens.length - 2; i < l; i++) {\n if (state.tokens[i].level === level && state.tokens[i].type === 'paragraph_open') {\n state.tokens[i + 2].hidden = true;\n state.tokens[i].hidden = true;\n i += 2;\n }\n }\n}\n\nmodule.exports = function list(state, startLine, endLine, silent) {\n var ch,\n contentStart,\n i,\n indent,\n indentAfterMarker,\n initial,\n isOrdered,\n itemLines,\n l,\n listLines,\n listTokIdx,\n markerCharCode,\n markerValue,\n max,\n nextLine,\n offset,\n oldIndent,\n oldLIndent,\n oldParentType,\n oldTShift,\n oldTight,\n pos,\n posAfterMarker,\n prevEmptyEnd,\n start,\n terminate,\n terminatorRules,\n token,\n isTerminatingParagraph = false,\n tight = true; // if it's indented more than 3 spaces, it should be a code block\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n } // limit conditions when list can interrupt\n // a paragraph (validation mode only)\n\n\n if (silent && state.parentType === 'paragraph') {\n // Next list item should still terminate previous list item;\n //\n // This code can fail if plugins use blkIndent as well as lists,\n // but I hope the spec gets fixed long before that happens.\n //\n if (state.tShift[startLine] >= state.blkIndent) {\n isTerminatingParagraph = true;\n }\n } // Detect list type and position after marker\n\n\n if ((posAfterMarker = skipOrderedListMarker(state, startLine)) >= 0) {\n isOrdered = true;\n start = state.bMarks[startLine] + state.tShift[startLine];\n markerValue = Number(state.src.substr(start, posAfterMarker - start - 1)); // If we're starting a new ordered list right after\n // a paragraph, it should start with 1.\n\n if (isTerminatingParagraph && markerValue !== 1) return false;\n } else if ((posAfterMarker = skipBulletListMarker(state, startLine)) >= 0) {\n isOrdered = false;\n } else {\n return false;\n } // If we're starting a new unordered list right after\n // a paragraph, first line should not be empty.\n\n\n if (isTerminatingParagraph) {\n if (state.skipSpaces(posAfterMarker) >= state.eMarks[startLine]) return false;\n } // We should terminate list on style change. Remember first one to compare.\n\n\n markerCharCode = state.src.charCodeAt(posAfterMarker - 1); // For validation mode we can terminate immediately\n\n if (silent) {\n return true;\n } // Start list\n\n\n listTokIdx = state.tokens.length;\n\n if (isOrdered) {\n token = state.push('ordered_list_open', 'ol', 1);\n\n if (markerValue !== 1) {\n token.attrs = [['start', markerValue]];\n }\n } else {\n token = state.push('bullet_list_open', 'ul', 1);\n }\n\n token.map = listLines = [startLine, 0];\n token.markup = String.fromCharCode(markerCharCode); //\n // Iterate list items\n //\n\n nextLine = startLine;\n prevEmptyEnd = false;\n terminatorRules = state.md.block.ruler.getRules('list');\n oldParentType = state.parentType;\n state.parentType = 'list';\n\n while (nextLine < endLine) {\n pos = posAfterMarker;\n max = state.eMarks[nextLine];\n initial = offset = state.sCount[nextLine] + posAfterMarker - (state.bMarks[startLine] + state.tShift[startLine]);\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (ch === 0x09) {\n offset += 4 - (offset + state.bsCount[nextLine]) % 4;\n } else if (ch === 0x20) {\n offset++;\n } else {\n break;\n }\n\n pos++;\n }\n\n contentStart = pos;\n\n if (contentStart >= max) {\n // trimming space in \"- \\n 3\" case, indent is 1 here\n indentAfterMarker = 1;\n } else {\n indentAfterMarker = offset - initial;\n } // If we have more than 4 spaces, the indent is 1\n // (the rest is just indented code block)\n\n\n if (indentAfterMarker > 4) {\n indentAfterMarker = 1;\n } // \" - test\"\n // ^^^^^ - calculating total length of this thing\n\n\n indent = initial + indentAfterMarker; // Run subparser & write tokens\n\n token = state.push('list_item_open', 'li', 1);\n token.markup = String.fromCharCode(markerCharCode);\n token.map = itemLines = [startLine, 0];\n oldIndent = state.blkIndent;\n oldTight = state.tight;\n oldTShift = state.tShift[startLine];\n oldLIndent = state.sCount[startLine];\n state.blkIndent = indent;\n state.tight = true;\n state.tShift[startLine] = contentStart - state.bMarks[startLine];\n state.sCount[startLine] = offset;\n\n if (contentStart >= max && state.isEmpty(startLine + 1)) {\n // workaround for this case\n // (list item is empty, list terminates before \"foo\"):\n // ~~~~~~~~\n // -\n //\n // foo\n // ~~~~~~~~\n state.line = Math.min(state.line + 2, endLine);\n } else {\n state.md.block.tokenize(state, startLine, endLine, true);\n } // If any of list item is tight, mark list as tight\n\n\n if (!state.tight || prevEmptyEnd) {\n tight = false;\n } // Item become loose if finish with empty line,\n // but we should filter last element, because it means list finish\n\n\n prevEmptyEnd = state.line - startLine > 1 && state.isEmpty(state.line - 1);\n state.blkIndent = oldIndent;\n state.tShift[startLine] = oldTShift;\n state.sCount[startLine] = oldLIndent;\n state.tight = oldTight;\n token = state.push('list_item_close', 'li', -1);\n token.markup = String.fromCharCode(markerCharCode);\n nextLine = startLine = state.line;\n itemLines[1] = nextLine;\n contentStart = state.bMarks[startLine];\n\n if (nextLine >= endLine) {\n break;\n } //\n // Try to check if list is terminated or continued.\n //\n\n\n if (state.sCount[nextLine] < state.blkIndent) {\n break;\n } // fail if terminating block found\n\n\n terminate = false;\n\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n\n if (terminate) {\n break;\n } // fail if list has another type\n\n\n if (isOrdered) {\n posAfterMarker = skipOrderedListMarker(state, nextLine);\n\n if (posAfterMarker < 0) {\n break;\n }\n } else {\n posAfterMarker = skipBulletListMarker(state, nextLine);\n\n if (posAfterMarker < 0) {\n break;\n }\n }\n\n if (markerCharCode !== state.src.charCodeAt(posAfterMarker - 1)) {\n break;\n }\n } // Finalize list\n\n\n if (isOrdered) {\n token = state.push('ordered_list_close', 'ol', -1);\n } else {\n token = state.push('bullet_list_close', 'ul', -1);\n }\n\n token.markup = String.fromCharCode(markerCharCode);\n listLines[1] = nextLine;\n state.line = nextLine;\n state.parentType = oldParentType; // mark paragraphs tight if needed\n\n if (tight) {\n markTightParagraphs(state, listTokIdx);\n }\n\n return true;\n};","'use strict';\n\nvar normalizeReference = require('../common/utils').normalizeReference;\n\nvar isSpace = require('../common/utils').isSpace;\n\nmodule.exports = function reference(state, startLine, _endLine, silent) {\n var ch,\n destEndPos,\n destEndLineNo,\n endLine,\n href,\n i,\n l,\n label,\n labelEnd,\n oldParentType,\n res,\n start,\n str,\n terminate,\n terminatorRules,\n title,\n lines = 0,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine],\n nextLine = startLine + 1; // if it's indented more than 3 spaces, it should be a code block\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n if (state.src.charCodeAt(pos) !== 0x5B\n /* [ */\n ) {\n return false;\n } // Simple check to quickly interrupt scan on [link](url) at the start of line.\n // Can be useful on practice: https://github.com/markdown-it/markdown-it/issues/54\n\n\n while (++pos < max) {\n if (state.src.charCodeAt(pos) === 0x5D\n /* ] */\n && state.src.charCodeAt(pos - 1) !== 0x5C\n /* \\ */\n ) {\n if (pos + 1 === max) {\n return false;\n }\n\n if (state.src.charCodeAt(pos + 1) !== 0x3A\n /* : */\n ) {\n return false;\n }\n\n break;\n }\n }\n\n endLine = state.lineMax; // jump line-by-line until empty one or EOF\n\n terminatorRules = state.md.block.ruler.getRules('reference');\n oldParentType = state.parentType;\n state.parentType = 'reference';\n\n for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n // this would be a code block normally, but after paragraph\n // it's considered a lazy continuation regardless of what's there\n if (state.sCount[nextLine] - state.blkIndent > 3) {\n continue;\n } // quirk for blockquotes, this line should already be checked by that rule\n\n\n if (state.sCount[nextLine] < 0) {\n continue;\n } // Some tags can terminate paragraph without empty line.\n\n\n terminate = false;\n\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n\n if (terminate) {\n break;\n }\n }\n\n str = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n max = str.length;\n\n for (pos = 1; pos < max; pos++) {\n ch = str.charCodeAt(pos);\n\n if (ch === 0x5B\n /* [ */\n ) {\n return false;\n } else if (ch === 0x5D\n /* ] */\n ) {\n labelEnd = pos;\n break;\n } else if (ch === 0x0A\n /* \\n */\n ) {\n lines++;\n } else if (ch === 0x5C\n /* \\ */\n ) {\n pos++;\n\n if (pos < max && str.charCodeAt(pos) === 0x0A) {\n lines++;\n }\n }\n }\n\n if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 0x3A\n /* : */\n ) {\n return false;\n } // [label]: destination 'title'\n // ^^^ skip optional whitespace here\n\n\n for (pos = labelEnd + 2; pos < max; pos++) {\n ch = str.charCodeAt(pos);\n\n if (ch === 0x0A) {\n lines++;\n } else if (isSpace(ch)) {\n /*eslint no-empty:0*/\n } else {\n break;\n }\n } // [label]: destination 'title'\n // ^^^^^^^^^^^ parse this\n\n\n res = state.md.helpers.parseLinkDestination(str, pos, max);\n\n if (!res.ok) {\n return false;\n }\n\n href = state.md.normalizeLink(res.str);\n\n if (!state.md.validateLink(href)) {\n return false;\n }\n\n pos = res.pos;\n lines += res.lines; // save cursor state, we could require to rollback later\n\n destEndPos = pos;\n destEndLineNo = lines; // [label]: destination 'title'\n // ^^^ skipping those spaces\n\n start = pos;\n\n for (; pos < max; pos++) {\n ch = str.charCodeAt(pos);\n\n if (ch === 0x0A) {\n lines++;\n } else if (isSpace(ch)) {\n /*eslint no-empty:0*/\n } else {\n break;\n }\n } // [label]: destination 'title'\n // ^^^^^^^ parse this\n\n\n res = state.md.helpers.parseLinkTitle(str, pos, max);\n\n if (pos < max && start !== pos && res.ok) {\n title = res.str;\n pos = res.pos;\n lines += res.lines;\n } else {\n title = '';\n pos = destEndPos;\n lines = destEndLineNo;\n } // skip trailing spaces until the rest of the line\n\n\n while (pos < max) {\n ch = str.charCodeAt(pos);\n\n if (!isSpace(ch)) {\n break;\n }\n\n pos++;\n }\n\n if (pos < max && str.charCodeAt(pos) !== 0x0A) {\n if (title) {\n // garbage at the end of the line after title,\n // but it could still be a valid reference if we roll back\n title = '';\n pos = destEndPos;\n lines = destEndLineNo;\n\n while (pos < max) {\n ch = str.charCodeAt(pos);\n\n if (!isSpace(ch)) {\n break;\n }\n\n pos++;\n }\n }\n }\n\n if (pos < max && str.charCodeAt(pos) !== 0x0A) {\n // garbage at the end of the line\n return false;\n }\n\n label = normalizeReference(str.slice(1, labelEnd));\n\n if (!label) {\n // CommonMark 0.20 disallows empty labels\n return false;\n } // Reference can not terminate anything. This check is for safety only.\n\n /*istanbul ignore if*/\n\n\n if (silent) {\n return true;\n }\n\n if (typeof state.env.references === 'undefined') {\n state.env.references = {};\n }\n\n if (typeof state.env.references[label] === 'undefined') {\n state.env.references[label] = {\n title: title,\n href: href\n };\n }\n\n state.parentType = oldParentType;\n state.line = startLine + lines + 1;\n return true;\n};","// heading (#, ##, ...)\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\nmodule.exports = function heading(state, startLine, endLine, silent) {\n var ch,\n level,\n tmp,\n token,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine]; // if it's indented more than 3 spaces, it should be a code block\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n ch = state.src.charCodeAt(pos);\n\n if (ch !== 0x23\n /* # */\n || pos >= max) {\n return false;\n } // count heading level\n\n\n level = 1;\n ch = state.src.charCodeAt(++pos);\n\n while (ch === 0x23\n /* # */\n && pos < max && level <= 6) {\n level++;\n ch = state.src.charCodeAt(++pos);\n }\n\n if (level > 6 || pos < max && !isSpace(ch)) {\n return false;\n }\n\n if (silent) {\n return true;\n } // Let's cut tails like ' ### ' from the end of string\n\n\n max = state.skipSpacesBack(max, pos);\n tmp = state.skipCharsBack(max, 0x23, pos); // #\n\n if (tmp > pos && isSpace(state.src.charCodeAt(tmp - 1))) {\n max = tmp;\n }\n\n state.line = startLine + 1;\n token = state.push('heading_open', 'h' + String(level), 1);\n token.markup = '########'.slice(0, level);\n token.map = [startLine, state.line];\n token = state.push('inline', '', 0);\n token.content = state.src.slice(pos, max).trim();\n token.map = [startLine, state.line];\n token.children = [];\n token = state.push('heading_close', 'h' + String(level), -1);\n token.markup = '########'.slice(0, level);\n return true;\n};","// lheading (---, ===)\n'use strict';\n\nmodule.exports = function lheading(state, startLine, endLine\n/*, silent*/\n) {\n var content,\n terminate,\n i,\n l,\n token,\n pos,\n max,\n level,\n marker,\n nextLine = startLine + 1,\n oldParentType,\n terminatorRules = state.md.block.ruler.getRules('paragraph'); // if it's indented more than 3 spaces, it should be a code block\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n oldParentType = state.parentType;\n state.parentType = 'paragraph'; // use paragraph to match terminatorRules\n // jump line-by-line until empty one or EOF\n\n for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n // this would be a code block normally, but after paragraph\n // it's considered a lazy continuation regardless of what's there\n if (state.sCount[nextLine] - state.blkIndent > 3) {\n continue;\n } //\n // Check for underline in setext header\n //\n\n\n if (state.sCount[nextLine] >= state.blkIndent) {\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n\n if (pos < max) {\n marker = state.src.charCodeAt(pos);\n\n if (marker === 0x2D\n /* - */\n || marker === 0x3D\n /* = */\n ) {\n pos = state.skipChars(pos, marker);\n pos = state.skipSpaces(pos);\n\n if (pos >= max) {\n level = marker === 0x3D\n /* = */\n ? 1 : 2;\n break;\n }\n }\n }\n } // quirk for blockquotes, this line should already be checked by that rule\n\n\n if (state.sCount[nextLine] < 0) {\n continue;\n } // Some tags can terminate paragraph without empty line.\n\n\n terminate = false;\n\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n\n if (terminate) {\n break;\n }\n }\n\n if (!level) {\n // Didn't find valid underline\n return false;\n }\n\n content = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n state.line = nextLine + 1;\n token = state.push('heading_open', 'h' + String(level), 1);\n token.markup = String.fromCharCode(marker);\n token.map = [startLine, state.line];\n token = state.push('inline', '', 0);\n token.content = content;\n token.map = [startLine, state.line - 1];\n token.children = [];\n token = state.push('heading_close', 'h' + String(level), -1);\n token.markup = String.fromCharCode(marker);\n state.parentType = oldParentType;\n return true;\n};","// HTML block\n'use strict';\n\nvar block_names = require('../common/html_blocks');\n\nvar HTML_OPEN_CLOSE_TAG_RE = require('../common/html_re').HTML_OPEN_CLOSE_TAG_RE; // An array of opening and corresponding closing sequences for html tags,\n// last argument defines whether it can terminate a paragraph or not\n//\n\n\nvar HTML_SEQUENCES = [[/^<(script|pre|style)(?=(\\s|>|$))/i, /<\\/(script|pre|style)>/i, true], [/^/, true], [/^<\\?/, /\\?>/, true], [/^/, true], [/^/, true], [new RegExp('^|$))', 'i'), /^$/, true], [new RegExp(HTML_OPEN_CLOSE_TAG_RE.source + '\\\\s*$'), /^$/, false]];\n\nmodule.exports = function html_block(state, startLine, endLine, silent) {\n var i,\n nextLine,\n token,\n lineText,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine]; // if it's indented more than 3 spaces, it should be a code block\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n if (!state.md.options.html) {\n return false;\n }\n\n if (state.src.charCodeAt(pos) !== 0x3C\n /* < */\n ) {\n return false;\n }\n\n lineText = state.src.slice(pos, max);\n\n for (i = 0; i < HTML_SEQUENCES.length; i++) {\n if (HTML_SEQUENCES[i][0].test(lineText)) {\n break;\n }\n }\n\n if (i === HTML_SEQUENCES.length) {\n return false;\n }\n\n if (silent) {\n // true if this sequence can be a terminator, false otherwise\n return HTML_SEQUENCES[i][2];\n }\n\n nextLine = startLine + 1; // If we are here - we detected HTML block.\n // Let's roll down till block end.\n\n if (!HTML_SEQUENCES[i][1].test(lineText)) {\n for (; nextLine < endLine; nextLine++) {\n if (state.sCount[nextLine] < state.blkIndent) {\n break;\n }\n\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n lineText = state.src.slice(pos, max);\n\n if (HTML_SEQUENCES[i][1].test(lineText)) {\n if (lineText.length !== 0) {\n nextLine++;\n }\n\n break;\n }\n }\n }\n\n state.line = nextLine;\n token = state.push('html_block', '', 0);\n token.map = [startLine, nextLine];\n token.content = state.getLines(startLine, nextLine, state.blkIndent, true);\n return true;\n};","// List of valid html blocks names, accorting to commonmark spec\n// http://jgm.github.io/CommonMark/spec.html#html-blocks\n'use strict';\n\nmodule.exports = ['address', 'article', 'aside', 'base', 'basefont', 'blockquote', 'body', 'caption', 'center', 'col', 'colgroup', 'dd', 'details', 'dialog', 'dir', 'div', 'dl', 'dt', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hr', 'html', 'iframe', 'legend', 'li', 'link', 'main', 'menu', 'menuitem', 'meta', 'nav', 'noframes', 'ol', 'optgroup', 'option', 'p', 'param', 'section', 'source', 'summary', 'table', 'tbody', 'td', 'tfoot', 'th', 'thead', 'title', 'tr', 'track', 'ul'];","// Paragraph\n'use strict';\n\nmodule.exports = function paragraph(state, startLine\n/*, endLine*/\n) {\n var content,\n terminate,\n i,\n l,\n token,\n oldParentType,\n nextLine = startLine + 1,\n terminatorRules = state.md.block.ruler.getRules('paragraph'),\n endLine = state.lineMax;\n oldParentType = state.parentType;\n state.parentType = 'paragraph'; // jump line-by-line until empty one or EOF\n\n for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n // this would be a code block normally, but after paragraph\n // it's considered a lazy continuation regardless of what's there\n if (state.sCount[nextLine] - state.blkIndent > 3) {\n continue;\n } // quirk for blockquotes, this line should already be checked by that rule\n\n\n if (state.sCount[nextLine] < 0) {\n continue;\n } // Some tags can terminate paragraph without empty line.\n\n\n terminate = false;\n\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n\n if (terminate) {\n break;\n }\n }\n\n content = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n state.line = nextLine;\n token = state.push('paragraph_open', 'p', 1);\n token.map = [startLine, state.line];\n token = state.push('inline', '', 0);\n token.content = content;\n token.map = [startLine, state.line];\n token.children = [];\n token = state.push('paragraph_close', 'p', -1);\n state.parentType = oldParentType;\n return true;\n};","// Parser state class\n'use strict';\n\nvar Token = require('../token');\n\nvar isSpace = require('../common/utils').isSpace;\n\nfunction StateBlock(src, md, env, tokens) {\n var ch, s, start, pos, len, indent, offset, indent_found;\n this.src = src; // link to parser instance\n\n this.md = md;\n this.env = env; //\n // Internal state vartiables\n //\n\n this.tokens = tokens;\n this.bMarks = []; // line begin offsets for fast jumps\n\n this.eMarks = []; // line end offsets for fast jumps\n\n this.tShift = []; // offsets of the first non-space characters (tabs not expanded)\n\n this.sCount = []; // indents for each line (tabs expanded)\n // An amount of virtual spaces (tabs expanded) between beginning\n // of each line (bMarks) and real beginning of that line.\n //\n // It exists only as a hack because blockquotes override bMarks\n // losing information in the process.\n //\n // It's used only when expanding tabs, you can think about it as\n // an initial tab length, e.g. bsCount=21 applied to string `\\t123`\n // means first tab should be expanded to 4-21%4 === 3 spaces.\n //\n\n this.bsCount = []; // block parser variables\n\n this.blkIndent = 0; // required block content indent\n // (for example, if we are in list)\n\n this.line = 0; // line index in src\n\n this.lineMax = 0; // lines count\n\n this.tight = false; // loose/tight mode for lists\n\n this.ddIndent = -1; // indent of the current dd block (-1 if there isn't any)\n // can be 'blockquote', 'list', 'root', 'paragraph' or 'reference'\n // used in lists to determine if they interrupt a paragraph\n\n this.parentType = 'root';\n this.level = 0; // renderer\n\n this.result = ''; // Create caches\n // Generate markers.\n\n s = this.src;\n indent_found = false;\n\n for (start = pos = indent = offset = 0, len = s.length; pos < len; pos++) {\n ch = s.charCodeAt(pos);\n\n if (!indent_found) {\n if (isSpace(ch)) {\n indent++;\n\n if (ch === 0x09) {\n offset += 4 - offset % 4;\n } else {\n offset++;\n }\n\n continue;\n } else {\n indent_found = true;\n }\n }\n\n if (ch === 0x0A || pos === len - 1) {\n if (ch !== 0x0A) {\n pos++;\n }\n\n this.bMarks.push(start);\n this.eMarks.push(pos);\n this.tShift.push(indent);\n this.sCount.push(offset);\n this.bsCount.push(0);\n indent_found = false;\n indent = 0;\n offset = 0;\n start = pos + 1;\n }\n } // Push fake entry to simplify cache bounds checks\n\n\n this.bMarks.push(s.length);\n this.eMarks.push(s.length);\n this.tShift.push(0);\n this.sCount.push(0);\n this.bsCount.push(0);\n this.lineMax = this.bMarks.length - 1; // don't count last fake line\n} // Push new token to \"stream\".\n//\n\n\nStateBlock.prototype.push = function (type, tag, nesting) {\n var token = new Token(type, tag, nesting);\n token.block = true;\n\n if (nesting < 0) {\n this.level--;\n }\n\n token.level = this.level;\n\n if (nesting > 0) {\n this.level++;\n }\n\n this.tokens.push(token);\n return token;\n};\n\nStateBlock.prototype.isEmpty = function isEmpty(line) {\n return this.bMarks[line] + this.tShift[line] >= this.eMarks[line];\n};\n\nStateBlock.prototype.skipEmptyLines = function skipEmptyLines(from) {\n for (var max = this.lineMax; from < max; from++) {\n if (this.bMarks[from] + this.tShift[from] < this.eMarks[from]) {\n break;\n }\n }\n\n return from;\n}; // Skip spaces from given position.\n\n\nStateBlock.prototype.skipSpaces = function skipSpaces(pos) {\n var ch;\n\n for (var max = this.src.length; pos < max; pos++) {\n ch = this.src.charCodeAt(pos);\n\n if (!isSpace(ch)) {\n break;\n }\n }\n\n return pos;\n}; // Skip spaces from given position in reverse.\n\n\nStateBlock.prototype.skipSpacesBack = function skipSpacesBack(pos, min) {\n if (pos <= min) {\n return pos;\n }\n\n while (pos > min) {\n if (!isSpace(this.src.charCodeAt(--pos))) {\n return pos + 1;\n }\n }\n\n return pos;\n}; // Skip char codes from given position\n\n\nStateBlock.prototype.skipChars = function skipChars(pos, code) {\n for (var max = this.src.length; pos < max; pos++) {\n if (this.src.charCodeAt(pos) !== code) {\n break;\n }\n }\n\n return pos;\n}; // Skip char codes reverse from given position - 1\n\n\nStateBlock.prototype.skipCharsBack = function skipCharsBack(pos, code, min) {\n if (pos <= min) {\n return pos;\n }\n\n while (pos > min) {\n if (code !== this.src.charCodeAt(--pos)) {\n return pos + 1;\n }\n }\n\n return pos;\n}; // cut lines range from source.\n\n\nStateBlock.prototype.getLines = function getLines(begin, end, indent, keepLastLF) {\n var i,\n lineIndent,\n ch,\n first,\n last,\n queue,\n lineStart,\n line = begin;\n\n if (begin >= end) {\n return '';\n }\n\n queue = new Array(end - begin);\n\n for (i = 0; line < end; line++, i++) {\n lineIndent = 0;\n lineStart = first = this.bMarks[line];\n\n if (line + 1 < end || keepLastLF) {\n // No need for bounds check because we have fake entry on tail.\n last = this.eMarks[line] + 1;\n } else {\n last = this.eMarks[line];\n }\n\n while (first < last && lineIndent < indent) {\n ch = this.src.charCodeAt(first);\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n lineIndent += 4 - (lineIndent + this.bsCount[line]) % 4;\n } else {\n lineIndent++;\n }\n } else if (first - lineStart < this.tShift[line]) {\n // patched tShift masked characters to look like spaces (blockquotes, list markers)\n lineIndent++;\n } else {\n break;\n }\n\n first++;\n }\n\n if (lineIndent > indent) {\n // partially expanding tabs in code blocks, e.g '\\t\\tfoobar'\n // with indent=2 becomes ' \\tfoobar'\n queue[i] = new Array(lineIndent - indent + 1).join(' ') + this.src.slice(first, last);\n } else {\n queue[i] = this.src.slice(first, last);\n }\n }\n\n return queue.join('');\n}; // re-export Token class to use in block rules\n\n\nStateBlock.prototype.Token = Token;\nmodule.exports = StateBlock;","/** internal\n * class ParserInline\n *\n * Tokenizes paragraph content.\n **/\n'use strict';\n\nvar Ruler = require('./ruler'); ////////////////////////////////////////////////////////////////////////////////\n// Parser rules\n\n\nvar _rules = [['text', require('./rules_inline/text')], ['newline', require('./rules_inline/newline')], ['escape', require('./rules_inline/escape')], ['backticks', require('./rules_inline/backticks')], ['strikethrough', require('./rules_inline/strikethrough').tokenize], ['emphasis', require('./rules_inline/emphasis').tokenize], ['link', require('./rules_inline/link')], ['image', require('./rules_inline/image')], ['autolink', require('./rules_inline/autolink')], ['html_inline', require('./rules_inline/html_inline')], ['entity', require('./rules_inline/entity')]];\nvar _rules2 = [['balance_pairs', require('./rules_inline/balance_pairs')], ['strikethrough', require('./rules_inline/strikethrough').postProcess], ['emphasis', require('./rules_inline/emphasis').postProcess], ['text_collapse', require('./rules_inline/text_collapse')]];\n/**\n * new ParserInline()\n **/\n\nfunction ParserInline() {\n var i;\n /**\n * ParserInline#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of inline rules.\n **/\n\n this.ruler = new Ruler();\n\n for (i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1]);\n }\n /**\n * ParserInline#ruler2 -> Ruler\n *\n * [[Ruler]] instance. Second ruler used for post-processing\n * (e.g. in emphasis-like rules).\n **/\n\n\n this.ruler2 = new Ruler();\n\n for (i = 0; i < _rules2.length; i++) {\n this.ruler2.push(_rules2[i][0], _rules2[i][1]);\n }\n} // Skip single token by running all rules in validation mode;\n// returns `true` if any rule reported success\n//\n\n\nParserInline.prototype.skipToken = function (state) {\n var ok,\n i,\n pos = state.pos,\n rules = this.ruler.getRules(''),\n len = rules.length,\n maxNesting = state.md.options.maxNesting,\n cache = state.cache;\n\n if (typeof cache[pos] !== 'undefined') {\n state.pos = cache[pos];\n return;\n }\n\n if (state.level < maxNesting) {\n for (i = 0; i < len; i++) {\n // Increment state.level and decrement it later to limit recursion.\n // It's harmless to do here, because no tokens are created. But ideally,\n // we'd need a separate private state variable for this purpose.\n //\n state.level++;\n ok = rules[i](state, true);\n state.level--;\n\n if (ok) {\n break;\n }\n }\n } else {\n // Too much nesting, just skip until the end of the paragraph.\n //\n // NOTE: this will cause links to behave incorrectly in the following case,\n // when an amount of `[` is exactly equal to `maxNesting + 1`:\n //\n // [[[[[[[[[[[[[[[[[[[[[foo]()\n //\n // TODO: remove this workaround when CM standard will allow nested links\n // (we can replace it by preventing links from being parsed in\n // validation mode)\n //\n state.pos = state.posMax;\n }\n\n if (!ok) {\n state.pos++;\n }\n\n cache[pos] = state.pos;\n}; // Generate tokens for input range\n//\n\n\nParserInline.prototype.tokenize = function (state) {\n var ok,\n i,\n rules = this.ruler.getRules(''),\n len = rules.length,\n end = state.posMax,\n maxNesting = state.md.options.maxNesting;\n\n while (state.pos < end) {\n // Try all possible rules.\n // On success, rule should:\n //\n // - update `state.pos`\n // - update `state.tokens`\n // - return true\n if (state.level < maxNesting) {\n for (i = 0; i < len; i++) {\n ok = rules[i](state, false);\n\n if (ok) {\n break;\n }\n }\n }\n\n if (ok) {\n if (state.pos >= end) {\n break;\n }\n\n continue;\n }\n\n state.pending += state.src[state.pos++];\n }\n\n if (state.pending) {\n state.pushPending();\n }\n};\n/**\n * ParserInline.parse(str, md, env, outTokens)\n *\n * Process input string and push inline tokens into `outTokens`\n **/\n\n\nParserInline.prototype.parse = function (str, md, env, outTokens) {\n var i, rules, len;\n var state = new this.State(str, md, env, outTokens);\n this.tokenize(state);\n rules = this.ruler2.getRules('');\n len = rules.length;\n\n for (i = 0; i < len; i++) {\n rules[i](state);\n }\n};\n\nParserInline.prototype.State = require('./rules_inline/state_inline');\nmodule.exports = ParserInline;","// Skip text characters for text token, place those to pending buffer\n// and increment current pos\n'use strict'; // Rule to skip pure text\n// '{}$%@~+=:' reserved for extentions\n// !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n// !!!! Don't confuse with \"Markdown ASCII Punctuation\" chars\n// http://spec.commonmark.org/0.15/#ascii-punctuation-character\n\nfunction isTerminatorChar(ch) {\n switch (ch) {\n case 0x0A\n /* \\n */\n :\n case 0x21\n /* ! */\n :\n case 0x23\n /* # */\n :\n case 0x24\n /* $ */\n :\n case 0x25\n /* % */\n :\n case 0x26\n /* & */\n :\n case 0x2A\n /* * */\n :\n case 0x2B\n /* + */\n :\n case 0x2D\n /* - */\n :\n case 0x3A\n /* : */\n :\n case 0x3C\n /* < */\n :\n case 0x3D\n /* = */\n :\n case 0x3E\n /* > */\n :\n case 0x40\n /* @ */\n :\n case 0x5B\n /* [ */\n :\n case 0x5C\n /* \\ */\n :\n case 0x5D\n /* ] */\n :\n case 0x5E\n /* ^ */\n :\n case 0x5F\n /* _ */\n :\n case 0x60\n /* ` */\n :\n case 0x7B\n /* { */\n :\n case 0x7D\n /* } */\n :\n case 0x7E\n /* ~ */\n :\n return true;\n\n default:\n return false;\n }\n}\n\nmodule.exports = function text(state, silent) {\n var pos = state.pos;\n\n while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) {\n pos++;\n }\n\n if (pos === state.pos) {\n return false;\n }\n\n if (!silent) {\n state.pending += state.src.slice(state.pos, pos);\n }\n\n state.pos = pos;\n return true;\n}; // Alternative implementation, for memory.\n//\n// It costs 10% of performance, but allows extend terminators list, if place it\n// to `ParcerInline` property. Probably, will switch to it sometime, such\n// flexibility required.\n\n/*\nvar TERMINATOR_RE = /[\\n!#$%&*+\\-:<=>@[\\\\\\]^_`{}~]/;\n\nmodule.exports = function text(state, silent) {\n var pos = state.pos,\n idx = state.src.slice(pos).search(TERMINATOR_RE);\n\n // first char is terminator -> empty text\n if (idx === 0) { return false; }\n\n // no terminator -> text till end of string\n if (idx < 0) {\n if (!silent) { state.pending += state.src.slice(pos); }\n state.pos = state.src.length;\n return true;\n }\n\n if (!silent) { state.pending += state.src.slice(pos, pos + idx); }\n\n state.pos += idx;\n\n return true;\n};*/","// Proceess '\\n'\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\nmodule.exports = function newline(state, silent) {\n var pmax,\n max,\n pos = state.pos;\n\n if (state.src.charCodeAt(pos) !== 0x0A\n /* \\n */\n ) {\n return false;\n }\n\n pmax = state.pending.length - 1;\n max = state.posMax; // ' \\n' -> hardbreak\n // Lookup in pending chars is bad practice! Don't copy to other rules!\n // Pending string is stored in concat mode, indexed lookups will cause\n // convertion to flat mode.\n\n if (!silent) {\n if (pmax >= 0 && state.pending.charCodeAt(pmax) === 0x20) {\n if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 0x20) {\n state.pending = state.pending.replace(/ +$/, '');\n state.push('hardbreak', 'br', 0);\n } else {\n state.pending = state.pending.slice(0, -1);\n state.push('softbreak', 'br', 0);\n }\n } else {\n state.push('softbreak', 'br', 0);\n }\n }\n\n pos++; // skip heading spaces for next line\n\n while (pos < max && isSpace(state.src.charCodeAt(pos))) {\n pos++;\n }\n\n state.pos = pos;\n return true;\n};","// Process escaped chars and hardbreaks\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\nvar ESCAPED = [];\n\nfor (var i = 0; i < 256; i++) {\n ESCAPED.push(0);\n}\n\n'\\\\!\"#$%&\\'()*+,./:;<=>?@[]^_`{|}~-'.split('').forEach(function (ch) {\n ESCAPED[ch.charCodeAt(0)] = 1;\n});\n\nmodule.exports = function escape(state, silent) {\n var ch,\n pos = state.pos,\n max = state.posMax;\n\n if (state.src.charCodeAt(pos) !== 0x5C\n /* \\ */\n ) {\n return false;\n }\n\n pos++;\n\n if (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (ch < 256 && ESCAPED[ch] !== 0) {\n if (!silent) {\n state.pending += state.src[pos];\n }\n\n state.pos += 2;\n return true;\n }\n\n if (ch === 0x0A) {\n if (!silent) {\n state.push('hardbreak', 'br', 0);\n }\n\n pos++; // skip leading whitespaces from next line\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (!isSpace(ch)) {\n break;\n }\n\n pos++;\n }\n\n state.pos = pos;\n return true;\n }\n }\n\n if (!silent) {\n state.pending += '\\\\';\n }\n\n state.pos++;\n return true;\n};","// Parse backticks\n'use strict';\n\nmodule.exports = function backtick(state, silent) {\n var start,\n max,\n marker,\n matchStart,\n matchEnd,\n token,\n pos = state.pos,\n ch = state.src.charCodeAt(pos);\n\n if (ch !== 0x60\n /* ` */\n ) {\n return false;\n }\n\n start = pos;\n pos++;\n max = state.posMax;\n\n while (pos < max && state.src.charCodeAt(pos) === 0x60\n /* ` */\n ) {\n pos++;\n }\n\n marker = state.src.slice(start, pos);\n matchStart = matchEnd = pos;\n\n while ((matchStart = state.src.indexOf('`', matchEnd)) !== -1) {\n matchEnd = matchStart + 1;\n\n while (matchEnd < max && state.src.charCodeAt(matchEnd) === 0x60\n /* ` */\n ) {\n matchEnd++;\n }\n\n if (matchEnd - matchStart === marker.length) {\n if (!silent) {\n token = state.push('code_inline', 'code', 0);\n token.markup = marker;\n token.content = state.src.slice(pos, matchStart).replace(/[ \\n]+/g, ' ').trim();\n }\n\n state.pos = matchEnd;\n return true;\n }\n }\n\n if (!silent) {\n state.pending += marker;\n }\n\n state.pos += marker.length;\n return true;\n};","// Process [link]( \"stuff\")\n'use strict';\n\nvar normalizeReference = require('../common/utils').normalizeReference;\n\nvar isSpace = require('../common/utils').isSpace;\n\nmodule.exports = function link(state, silent) {\n var attrs,\n code,\n label,\n labelEnd,\n labelStart,\n pos,\n res,\n ref,\n title,\n token,\n href = '',\n oldPos = state.pos,\n max = state.posMax,\n start = state.pos,\n parseReference = true;\n\n if (state.src.charCodeAt(state.pos) !== 0x5B\n /* [ */\n ) {\n return false;\n }\n\n labelStart = state.pos + 1;\n labelEnd = state.md.helpers.parseLinkLabel(state, state.pos, true); // parser failed to find ']', so it's not a valid link\n\n if (labelEnd < 0) {\n return false;\n }\n\n pos = labelEnd + 1;\n\n if (pos < max && state.src.charCodeAt(pos) === 0x28\n /* ( */\n ) {\n //\n // Inline link\n //\n // might have found a valid shortcut link, disable reference parsing\n parseReference = false; // [link]( \"title\" )\n // ^^ skipping these spaces\n\n pos++;\n\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n\n if (!isSpace(code) && code !== 0x0A) {\n break;\n }\n }\n\n if (pos >= max) {\n return false;\n } // [link]( \"title\" )\n // ^^^^^^ parsing link destination\n\n\n start = pos;\n res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);\n\n if (res.ok) {\n href = state.md.normalizeLink(res.str);\n\n if (state.md.validateLink(href)) {\n pos = res.pos;\n } else {\n href = '';\n }\n } // [link]( \"title\" )\n // ^^ skipping these spaces\n\n\n start = pos;\n\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n\n if (!isSpace(code) && code !== 0x0A) {\n break;\n }\n } // [link]( \"title\" )\n // ^^^^^^^ parsing link title\n\n\n res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);\n\n if (pos < max && start !== pos && res.ok) {\n title = res.str;\n pos = res.pos; // [link]( \"title\" )\n // ^^ skipping these spaces\n\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n\n if (!isSpace(code) && code !== 0x0A) {\n break;\n }\n }\n } else {\n title = '';\n }\n\n if (pos >= max || state.src.charCodeAt(pos) !== 0x29\n /* ) */\n ) {\n // parsing a valid shortcut link failed, fallback to reference\n parseReference = true;\n }\n\n pos++;\n }\n\n if (parseReference) {\n //\n // Link reference\n //\n if (typeof state.env.references === 'undefined') {\n return false;\n }\n\n if (pos < max && state.src.charCodeAt(pos) === 0x5B\n /* [ */\n ) {\n start = pos + 1;\n pos = state.md.helpers.parseLinkLabel(state, pos);\n\n if (pos >= 0) {\n label = state.src.slice(start, pos++);\n } else {\n pos = labelEnd + 1;\n }\n } else {\n pos = labelEnd + 1;\n } // covers label === '' and label === undefined\n // (collapsed reference link and shortcut reference link respectively)\n\n\n if (!label) {\n label = state.src.slice(labelStart, labelEnd);\n }\n\n ref = state.env.references[normalizeReference(label)];\n\n if (!ref) {\n state.pos = oldPos;\n return false;\n }\n\n href = ref.href;\n title = ref.title;\n } //\n // We found the end of the link, and know for a fact it's a valid link;\n // so all that's left to do is to call tokenizer.\n //\n\n\n if (!silent) {\n state.pos = labelStart;\n state.posMax = labelEnd;\n token = state.push('link_open', 'a', 1);\n token.attrs = attrs = [['href', href]];\n\n if (title) {\n attrs.push(['title', title]);\n }\n\n state.md.inline.tokenize(state);\n token = state.push('link_close', 'a', -1);\n }\n\n state.pos = pos;\n state.posMax = max;\n return true;\n};","// Process ![image]( \"title\")\n'use strict';\n\nvar normalizeReference = require('../common/utils').normalizeReference;\n\nvar isSpace = require('../common/utils').isSpace;\n\nmodule.exports = function image(state, silent) {\n var attrs,\n code,\n content,\n label,\n labelEnd,\n labelStart,\n pos,\n ref,\n res,\n title,\n token,\n tokens,\n start,\n href = '',\n oldPos = state.pos,\n max = state.posMax;\n\n if (state.src.charCodeAt(state.pos) !== 0x21\n /* ! */\n ) {\n return false;\n }\n\n if (state.src.charCodeAt(state.pos + 1) !== 0x5B\n /* [ */\n ) {\n return false;\n }\n\n labelStart = state.pos + 2;\n labelEnd = state.md.helpers.parseLinkLabel(state, state.pos + 1, false); // parser failed to find ']', so it's not a valid link\n\n if (labelEnd < 0) {\n return false;\n }\n\n pos = labelEnd + 1;\n\n if (pos < max && state.src.charCodeAt(pos) === 0x28\n /* ( */\n ) {\n //\n // Inline link\n //\n // [link]( \"title\" )\n // ^^ skipping these spaces\n pos++;\n\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n\n if (!isSpace(code) && code !== 0x0A) {\n break;\n }\n }\n\n if (pos >= max) {\n return false;\n } // [link]( \"title\" )\n // ^^^^^^ parsing link destination\n\n\n start = pos;\n res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);\n\n if (res.ok) {\n href = state.md.normalizeLink(res.str);\n\n if (state.md.validateLink(href)) {\n pos = res.pos;\n } else {\n href = '';\n }\n } // [link]( \"title\" )\n // ^^ skipping these spaces\n\n\n start = pos;\n\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n\n if (!isSpace(code) && code !== 0x0A) {\n break;\n }\n } // [link]( \"title\" )\n // ^^^^^^^ parsing link title\n\n\n res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);\n\n if (pos < max && start !== pos && res.ok) {\n title = res.str;\n pos = res.pos; // [link]( \"title\" )\n // ^^ skipping these spaces\n\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n\n if (!isSpace(code) && code !== 0x0A) {\n break;\n }\n }\n } else {\n title = '';\n }\n\n if (pos >= max || state.src.charCodeAt(pos) !== 0x29\n /* ) */\n ) {\n state.pos = oldPos;\n return false;\n }\n\n pos++;\n } else {\n //\n // Link reference\n //\n if (typeof state.env.references === 'undefined') {\n return false;\n }\n\n if (pos < max && state.src.charCodeAt(pos) === 0x5B\n /* [ */\n ) {\n start = pos + 1;\n pos = state.md.helpers.parseLinkLabel(state, pos);\n\n if (pos >= 0) {\n label = state.src.slice(start, pos++);\n } else {\n pos = labelEnd + 1;\n }\n } else {\n pos = labelEnd + 1;\n } // covers label === '' and label === undefined\n // (collapsed reference link and shortcut reference link respectively)\n\n\n if (!label) {\n label = state.src.slice(labelStart, labelEnd);\n }\n\n ref = state.env.references[normalizeReference(label)];\n\n if (!ref) {\n state.pos = oldPos;\n return false;\n }\n\n href = ref.href;\n title = ref.title;\n } //\n // We found the end of the link, and know for a fact it's a valid link;\n // so all that's left to do is to call tokenizer.\n //\n\n\n if (!silent) {\n content = state.src.slice(labelStart, labelEnd);\n state.md.inline.parse(content, state.md, state.env, tokens = []);\n token = state.push('image', 'img', 0);\n token.attrs = attrs = [['src', href], ['alt', '']];\n token.children = tokens;\n token.content = content;\n\n if (title) {\n attrs.push(['title', title]);\n }\n }\n\n state.pos = pos;\n state.posMax = max;\n return true;\n};","// Process autolinks ''\n'use strict';\n/*eslint max-len:0*/\n\nvar EMAIL_RE = /^<([a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/;\nvar AUTOLINK_RE = /^<([a-zA-Z][a-zA-Z0-9+.\\-]{1,31}):([^<>\\x00-\\x20]*)>/;\n\nmodule.exports = function autolink(state, silent) {\n var tail,\n linkMatch,\n emailMatch,\n url,\n fullUrl,\n token,\n pos = state.pos;\n\n if (state.src.charCodeAt(pos) !== 0x3C\n /* < */\n ) {\n return false;\n }\n\n tail = state.src.slice(pos);\n\n if (tail.indexOf('>') < 0) {\n return false;\n }\n\n if (AUTOLINK_RE.test(tail)) {\n linkMatch = tail.match(AUTOLINK_RE);\n url = linkMatch[0].slice(1, -1);\n fullUrl = state.md.normalizeLink(url);\n\n if (!state.md.validateLink(fullUrl)) {\n return false;\n }\n\n if (!silent) {\n token = state.push('link_open', 'a', 1);\n token.attrs = [['href', fullUrl]];\n token.markup = 'autolink';\n token.info = 'auto';\n token = state.push('text', '', 0);\n token.content = state.md.normalizeLinkText(url);\n token = state.push('link_close', 'a', -1);\n token.markup = 'autolink';\n token.info = 'auto';\n }\n\n state.pos += linkMatch[0].length;\n return true;\n }\n\n if (EMAIL_RE.test(tail)) {\n emailMatch = tail.match(EMAIL_RE);\n url = emailMatch[0].slice(1, -1);\n fullUrl = state.md.normalizeLink('mailto:' + url);\n\n if (!state.md.validateLink(fullUrl)) {\n return false;\n }\n\n if (!silent) {\n token = state.push('link_open', 'a', 1);\n token.attrs = [['href', fullUrl]];\n token.markup = 'autolink';\n token.info = 'auto';\n token = state.push('text', '', 0);\n token.content = state.md.normalizeLinkText(url);\n token = state.push('link_close', 'a', -1);\n token.markup = 'autolink';\n token.info = 'auto';\n }\n\n state.pos += emailMatch[0].length;\n return true;\n }\n\n return false;\n};","// Process html tags\n'use strict';\n\nvar HTML_TAG_RE = require('../common/html_re').HTML_TAG_RE;\n\nfunction isLetter(ch) {\n /*eslint no-bitwise:0*/\n var lc = ch | 0x20; // to lower case\n\n return lc >= 0x61\n /* a */\n && lc <= 0x7a\n /* z */\n ;\n}\n\nmodule.exports = function html_inline(state, silent) {\n var ch,\n match,\n max,\n token,\n pos = state.pos;\n\n if (!state.md.options.html) {\n return false;\n } // Check start\n\n\n max = state.posMax;\n\n if (state.src.charCodeAt(pos) !== 0x3C\n /* < */\n || pos + 2 >= max) {\n return false;\n } // Quick fail on second char\n\n\n ch = state.src.charCodeAt(pos + 1);\n\n if (ch !== 0x21\n /* ! */\n && ch !== 0x3F\n /* ? */\n && ch !== 0x2F\n /* / */\n && !isLetter(ch)) {\n return false;\n }\n\n match = state.src.slice(pos).match(HTML_TAG_RE);\n\n if (!match) {\n return false;\n }\n\n if (!silent) {\n token = state.push('html_inline', '', 0);\n token.content = state.src.slice(pos, pos + match[0].length);\n }\n\n state.pos += match[0].length;\n return true;\n};","// Process html entity - {, ¯, ", ...\n'use strict';\n\nvar entities = require('../common/entities');\n\nvar has = require('../common/utils').has;\n\nvar isValidEntityCode = require('../common/utils').isValidEntityCode;\n\nvar fromCodePoint = require('../common/utils').fromCodePoint;\n\nvar DIGITAL_RE = /^&#((?:x[a-f0-9]{1,8}|[0-9]{1,8}));/i;\nvar NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i;\n\nmodule.exports = function entity(state, silent) {\n var ch,\n code,\n match,\n pos = state.pos,\n max = state.posMax;\n\n if (state.src.charCodeAt(pos) !== 0x26\n /* & */\n ) {\n return false;\n }\n\n if (pos + 1 < max) {\n ch = state.src.charCodeAt(pos + 1);\n\n if (ch === 0x23\n /* # */\n ) {\n match = state.src.slice(pos).match(DIGITAL_RE);\n\n if (match) {\n if (!silent) {\n code = match[1][0].toLowerCase() === 'x' ? parseInt(match[1].slice(1), 16) : parseInt(match[1], 10);\n state.pending += isValidEntityCode(code) ? fromCodePoint(code) : fromCodePoint(0xFFFD);\n }\n\n state.pos += match[0].length;\n return true;\n }\n } else {\n match = state.src.slice(pos).match(NAMED_RE);\n\n if (match) {\n if (has(entities, match[1])) {\n if (!silent) {\n state.pending += entities[match[1]];\n }\n\n state.pos += match[0].length;\n return true;\n }\n }\n }\n }\n\n if (!silent) {\n state.pending += '&';\n }\n\n state.pos++;\n return true;\n};","// For each opening emphasis-like marker find a matching closing one\n//\n'use strict';\n\nmodule.exports = function link_pairs(state) {\n var i,\n j,\n lastDelim,\n currDelim,\n delimiters = state.delimiters,\n max = state.delimiters.length;\n\n for (i = 0; i < max; i++) {\n lastDelim = delimiters[i];\n\n if (!lastDelim.close) {\n continue;\n }\n\n j = i - lastDelim.jump - 1;\n\n while (j >= 0) {\n currDelim = delimiters[j];\n\n if (currDelim.open && currDelim.marker === lastDelim.marker && currDelim.end < 0 && currDelim.level === lastDelim.level) {\n // typeofs are for backward compatibility with plugins\n var odd_match = (currDelim.close || lastDelim.open) && typeof currDelim.length !== 'undefined' && typeof lastDelim.length !== 'undefined' && (currDelim.length + lastDelim.length) % 3 === 0;\n\n if (!odd_match) {\n lastDelim.jump = i - j;\n lastDelim.open = false;\n currDelim.end = i;\n currDelim.jump = 0;\n break;\n }\n }\n\n j -= currDelim.jump + 1;\n }\n }\n};","// Merge adjacent text nodes into one, and re-calculate all token levels\n//\n'use strict';\n\nmodule.exports = function text_collapse(state) {\n var curr,\n last,\n level = 0,\n tokens = state.tokens,\n max = state.tokens.length;\n\n for (curr = last = 0; curr < max; curr++) {\n // re-calculate levels\n level += tokens[curr].nesting;\n tokens[curr].level = level;\n\n if (tokens[curr].type === 'text' && curr + 1 < max && tokens[curr + 1].type === 'text') {\n // collapse two adjacent text nodes\n tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content;\n } else {\n if (curr !== last) {\n tokens[last] = tokens[curr];\n }\n\n last++;\n }\n }\n\n if (curr !== last) {\n tokens.length = last;\n }\n};","// Inline parser state\n'use strict';\n\nvar Token = require('../token');\n\nvar isWhiteSpace = require('../common/utils').isWhiteSpace;\n\nvar isPunctChar = require('../common/utils').isPunctChar;\n\nvar isMdAsciiPunct = require('../common/utils').isMdAsciiPunct;\n\nfunction StateInline(src, md, env, outTokens) {\n this.src = src;\n this.env = env;\n this.md = md;\n this.tokens = outTokens;\n this.pos = 0;\n this.posMax = this.src.length;\n this.level = 0;\n this.pending = '';\n this.pendingLevel = 0;\n this.cache = {}; // Stores { start: end } pairs. Useful for backtrack\n // optimization of pairs parse (emphasis, strikes).\n\n this.delimiters = []; // Emphasis-like delimiters\n} // Flush pending text\n//\n\n\nStateInline.prototype.pushPending = function () {\n var token = new Token('text', '', 0);\n token.content = this.pending;\n token.level = this.pendingLevel;\n this.tokens.push(token);\n this.pending = '';\n return token;\n}; // Push new token to \"stream\".\n// If pending text exists - flush it as text token\n//\n\n\nStateInline.prototype.push = function (type, tag, nesting) {\n if (this.pending) {\n this.pushPending();\n }\n\n var token = new Token(type, tag, nesting);\n\n if (nesting < 0) {\n this.level--;\n }\n\n token.level = this.level;\n\n if (nesting > 0) {\n this.level++;\n }\n\n this.pendingLevel = this.level;\n this.tokens.push(token);\n return token;\n}; // Scan a sequence of emphasis-like markers, and determine whether\n// it can start an emphasis sequence or end an emphasis sequence.\n//\n// - start - position to scan from (it should point at a valid marker);\n// - canSplitWord - determine if these markers can be found inside a word\n//\n\n\nStateInline.prototype.scanDelims = function (start, canSplitWord) {\n var pos = start,\n lastChar,\n nextChar,\n count,\n can_open,\n can_close,\n isLastWhiteSpace,\n isLastPunctChar,\n isNextWhiteSpace,\n isNextPunctChar,\n left_flanking = true,\n right_flanking = true,\n max = this.posMax,\n marker = this.src.charCodeAt(start); // treat beginning of the line as a whitespace\n\n lastChar = start > 0 ? this.src.charCodeAt(start - 1) : 0x20;\n\n while (pos < max && this.src.charCodeAt(pos) === marker) {\n pos++;\n }\n\n count = pos - start; // treat end of the line as a whitespace\n\n nextChar = pos < max ? this.src.charCodeAt(pos) : 0x20;\n isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));\n isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));\n isLastWhiteSpace = isWhiteSpace(lastChar);\n isNextWhiteSpace = isWhiteSpace(nextChar);\n\n if (isNextWhiteSpace) {\n left_flanking = false;\n } else if (isNextPunctChar) {\n if (!(isLastWhiteSpace || isLastPunctChar)) {\n left_flanking = false;\n }\n }\n\n if (isLastWhiteSpace) {\n right_flanking = false;\n } else if (isLastPunctChar) {\n if (!(isNextWhiteSpace || isNextPunctChar)) {\n right_flanking = false;\n }\n }\n\n if (!canSplitWord) {\n can_open = left_flanking && (!right_flanking || isLastPunctChar);\n can_close = right_flanking && (!left_flanking || isNextPunctChar);\n } else {\n can_open = left_flanking;\n can_close = right_flanking;\n }\n\n return {\n can_open: can_open,\n can_close: can_close,\n length: count\n };\n}; // re-export Token class to use in block rules\n\n\nStateInline.prototype.Token = Token;\nmodule.exports = StateInline;","'use strict'; ////////////////////////////////////////////////////////////////////////////////\n// Helpers\n// Merge objects\n//\n\nfunction assign(obj\n/*from1, from2, from3, ...*/\n) {\n var sources = Array.prototype.slice.call(arguments, 1);\n sources.forEach(function (source) {\n if (!source) {\n return;\n }\n\n Object.keys(source).forEach(function (key) {\n obj[key] = source[key];\n });\n });\n return obj;\n}\n\nfunction _class(obj) {\n return Object.prototype.toString.call(obj);\n}\n\nfunction isString(obj) {\n return _class(obj) === '[object String]';\n}\n\nfunction isObject(obj) {\n return _class(obj) === '[object Object]';\n}\n\nfunction isRegExp(obj) {\n return _class(obj) === '[object RegExp]';\n}\n\nfunction isFunction(obj) {\n return _class(obj) === '[object Function]';\n}\n\nfunction escapeRE(str) {\n return str.replace(/[.?*+^$[\\]\\\\(){}|-]/g, '\\\\$&');\n} ////////////////////////////////////////////////////////////////////////////////\n\n\nvar defaultOptions = {\n fuzzyLink: true,\n fuzzyEmail: true,\n fuzzyIP: false\n};\n\nfunction isOptionsObj(obj) {\n return Object.keys(obj || {}).reduce(function (acc, k) {\n return acc || defaultOptions.hasOwnProperty(k);\n }, false);\n}\n\nvar defaultSchemas = {\n 'http:': {\n validate: function validate(text, pos, self) {\n var tail = text.slice(pos);\n\n if (!self.re.http) {\n // compile lazily, because \"host\"-containing variables can change on tlds update.\n self.re.http = new RegExp('^\\\\/\\\\/' + self.re.src_auth + self.re.src_host_port_strict + self.re.src_path, 'i');\n }\n\n if (self.re.http.test(tail)) {\n return tail.match(self.re.http)[0].length;\n }\n\n return 0;\n }\n },\n 'https:': 'http:',\n 'ftp:': 'http:',\n '//': {\n validate: function validate(text, pos, self) {\n var tail = text.slice(pos);\n\n if (!self.re.no_http) {\n // compile lazily, because \"host\"-containing variables can change on tlds update.\n self.re.no_http = new RegExp('^' + self.re.src_auth + // Don't allow single-level domains, because of false positives like '//test'\n // with code comments\n '(?:localhost|(?:(?:' + self.re.src_domain + ')\\\\.)+' + self.re.src_domain_root + ')' + self.re.src_port + self.re.src_host_terminator + self.re.src_path, 'i');\n }\n\n if (self.re.no_http.test(tail)) {\n // should not be `://` & `///`, that protects from errors in protocol name\n if (pos >= 3 && text[pos - 3] === ':') {\n return 0;\n }\n\n if (pos >= 3 && text[pos - 3] === '/') {\n return 0;\n }\n\n return tail.match(self.re.no_http)[0].length;\n }\n\n return 0;\n }\n },\n 'mailto:': {\n validate: function validate(text, pos, self) {\n var tail = text.slice(pos);\n\n if (!self.re.mailto) {\n self.re.mailto = new RegExp('^' + self.re.src_email_name + '@' + self.re.src_host_strict, 'i');\n }\n\n if (self.re.mailto.test(tail)) {\n return tail.match(self.re.mailto)[0].length;\n }\n\n return 0;\n }\n }\n};\n/*eslint-disable max-len*/\n// RE pattern for 2-character tlds (autogenerated by ./support/tlds_2char_gen.js)\n\nvar tlds_2ch_src_re = 'a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]'; // DON'T try to make PRs with changes. Extend TLDs with LinkifyIt.tlds() instead\n\nvar tlds_default = 'biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф'.split('|');\n/*eslint-enable max-len*/\n////////////////////////////////////////////////////////////////////////////////\n\nfunction resetScanCache(self) {\n self.__index__ = -1;\n self.__text_cache__ = '';\n}\n\nfunction createValidator(re) {\n return function (text, pos) {\n var tail = text.slice(pos);\n\n if (re.test(tail)) {\n return tail.match(re)[0].length;\n }\n\n return 0;\n };\n}\n\nfunction createNormalizer() {\n return function (match, self) {\n self.normalize(match);\n };\n} // Schemas compiler. Build regexps.\n//\n\n\nfunction compile(self) {\n // Load & clone RE patterns.\n var re = self.re = require('./lib/re')(self.__opts__); // Define dynamic patterns\n\n\n var tlds = self.__tlds__.slice();\n\n self.onCompile();\n\n if (!self.__tlds_replaced__) {\n tlds.push(tlds_2ch_src_re);\n }\n\n tlds.push(re.src_xn);\n re.src_tlds = tlds.join('|');\n\n function untpl(tpl) {\n return tpl.replace('%TLDS%', re.src_tlds);\n }\n\n re.email_fuzzy = RegExp(untpl(re.tpl_email_fuzzy), 'i');\n re.link_fuzzy = RegExp(untpl(re.tpl_link_fuzzy), 'i');\n re.link_no_ip_fuzzy = RegExp(untpl(re.tpl_link_no_ip_fuzzy), 'i');\n re.host_fuzzy_test = RegExp(untpl(re.tpl_host_fuzzy_test), 'i'); //\n // Compile each schema\n //\n\n var aliases = [];\n self.__compiled__ = {}; // Reset compiled data\n\n function schemaError(name, val) {\n throw new Error('(LinkifyIt) Invalid schema \"' + name + '\": ' + val);\n }\n\n Object.keys(self.__schemas__).forEach(function (name) {\n var val = self.__schemas__[name]; // skip disabled methods\n\n if (val === null) {\n return;\n }\n\n var compiled = {\n validate: null,\n link: null\n };\n self.__compiled__[name] = compiled;\n\n if (isObject(val)) {\n if (isRegExp(val.validate)) {\n compiled.validate = createValidator(val.validate);\n } else if (isFunction(val.validate)) {\n compiled.validate = val.validate;\n } else {\n schemaError(name, val);\n }\n\n if (isFunction(val.normalize)) {\n compiled.normalize = val.normalize;\n } else if (!val.normalize) {\n compiled.normalize = createNormalizer();\n } else {\n schemaError(name, val);\n }\n\n return;\n }\n\n if (isString(val)) {\n aliases.push(name);\n return;\n }\n\n schemaError(name, val);\n }); //\n // Compile postponed aliases\n //\n\n aliases.forEach(function (alias) {\n if (!self.__compiled__[self.__schemas__[alias]]) {\n // Silently fail on missed schemas to avoid errons on disable.\n // schemaError(alias, self.__schemas__[alias]);\n return;\n }\n\n self.__compiled__[alias].validate = self.__compiled__[self.__schemas__[alias]].validate;\n self.__compiled__[alias].normalize = self.__compiled__[self.__schemas__[alias]].normalize;\n }); //\n // Fake record for guessed links\n //\n\n self.__compiled__[''] = {\n validate: null,\n normalize: createNormalizer()\n }; //\n // Build schema condition\n //\n\n var slist = Object.keys(self.__compiled__).filter(function (name) {\n // Filter disabled & fake schemas\n return name.length > 0 && self.__compiled__[name];\n }).map(escapeRE).join('|'); // (?!_) cause 1.5x slowdown\n\n self.re.schema_test = RegExp(\"(^|(?!_)(?:[><\\uFF5C]|\" + re.src_ZPCc + '))(' + slist + ')', 'i');\n self.re.schema_search = RegExp(\"(^|(?!_)(?:[><\\uFF5C]|\" + re.src_ZPCc + '))(' + slist + ')', 'ig');\n self.re.pretest = RegExp('(' + self.re.schema_test.source + ')|(' + self.re.host_fuzzy_test.source + ')|@', 'i'); //\n // Cleanup\n //\n\n resetScanCache(self);\n}\n/**\n * class Match\n *\n * Match result. Single element of array, returned by [[LinkifyIt#match]]\n **/\n\n\nfunction Match(self, shift) {\n var start = self.__index__,\n end = self.__last_index__,\n text = self.__text_cache__.slice(start, end);\n /**\n * Match#schema -> String\n *\n * Prefix (protocol) for matched string.\n **/\n\n\n this.schema = self.__schema__.toLowerCase();\n /**\n * Match#index -> Number\n *\n * First position of matched string.\n **/\n\n this.index = start + shift;\n /**\n * Match#lastIndex -> Number\n *\n * Next position after matched string.\n **/\n\n this.lastIndex = end + shift;\n /**\n * Match#raw -> String\n *\n * Matched string.\n **/\n\n this.raw = text;\n /**\n * Match#text -> String\n *\n * Notmalized text of matched string.\n **/\n\n this.text = text;\n /**\n * Match#url -> String\n *\n * Normalized url of matched string.\n **/\n\n this.url = text;\n}\n\nfunction createMatch(self, shift) {\n var match = new Match(self, shift);\n\n self.__compiled__[match.schema].normalize(match, self);\n\n return match;\n}\n/**\n * class LinkifyIt\n **/\n\n/**\n * new LinkifyIt(schemas, options)\n * - schemas (Object): Optional. Additional schemas to validate (prefix/validator)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Creates new linkifier instance with optional additional schemas.\n * Can be called without `new` keyword for convenience.\n *\n * By default understands:\n *\n * - `http(s)://...` , `ftp://...`, `mailto:...` & `//...` links\n * - \"fuzzy\" links and emails (example.com, foo@bar.com).\n *\n * `schemas` is an object, where each key/value describes protocol/rule:\n *\n * - __key__ - link prefix (usually, protocol name with `:` at the end, `skype:`\n * for example). `linkify-it` makes shure that prefix is not preceeded with\n * alphanumeric char and symbols. Only whitespaces and punctuation allowed.\n * - __value__ - rule to check tail after link prefix\n * - _String_ - just alias to existing rule\n * - _Object_\n * - _validate_ - validator function (should return matched length on success),\n * or `RegExp`.\n * - _normalize_ - optional function to normalize text & url of matched result\n * (for example, for @twitter mentions).\n *\n * `options`:\n *\n * - __fuzzyLink__ - recognige URL-s without `http(s):` prefix. Default `true`.\n * - __fuzzyIP__ - allow IPs in fuzzy links above. Can conflict with some texts\n * like version numbers. Default `false`.\n * - __fuzzyEmail__ - recognize emails without `mailto:` prefix.\n *\n **/\n\n\nfunction LinkifyIt(schemas, options) {\n if (!(this instanceof LinkifyIt)) {\n return new LinkifyIt(schemas, options);\n }\n\n if (!options) {\n if (isOptionsObj(schemas)) {\n options = schemas;\n schemas = {};\n }\n }\n\n this.__opts__ = assign({}, defaultOptions, options); // Cache last tested result. Used to skip repeating steps on next `match` call.\n\n this.__index__ = -1;\n this.__last_index__ = -1; // Next scan position\n\n this.__schema__ = '';\n this.__text_cache__ = '';\n this.__schemas__ = assign({}, defaultSchemas, schemas);\n this.__compiled__ = {};\n this.__tlds__ = tlds_default;\n this.__tlds_replaced__ = false;\n this.re = {};\n compile(this);\n}\n/** chainable\n * LinkifyIt#add(schema, definition)\n * - schema (String): rule name (fixed pattern prefix)\n * - definition (String|RegExp|Object): schema definition\n *\n * Add new rule definition. See constructor description for details.\n **/\n\n\nLinkifyIt.prototype.add = function add(schema, definition) {\n this.__schemas__[schema] = definition;\n compile(this);\n return this;\n};\n/** chainable\n * LinkifyIt#set(options)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Set recognition options for links without schema.\n **/\n\n\nLinkifyIt.prototype.set = function set(options) {\n this.__opts__ = assign(this.__opts__, options);\n return this;\n};\n/**\n * LinkifyIt#test(text) -> Boolean\n *\n * Searches linkifiable pattern and returns `true` on success or `false` on fail.\n **/\n\n\nLinkifyIt.prototype.test = function test(text) {\n // Reset scan cache\n this.__text_cache__ = text;\n this.__index__ = -1;\n\n if (!text.length) {\n return false;\n }\n\n var m, ml, me, len, shift, next, re, tld_pos, at_pos; // try to scan for link with schema - that's the most simple rule\n\n if (this.re.schema_test.test(text)) {\n re = this.re.schema_search;\n re.lastIndex = 0;\n\n while ((m = re.exec(text)) !== null) {\n len = this.testSchemaAt(text, m[2], re.lastIndex);\n\n if (len) {\n this.__schema__ = m[2];\n this.__index__ = m.index + m[1].length;\n this.__last_index__ = m.index + m[0].length + len;\n break;\n }\n }\n }\n\n if (this.__opts__.fuzzyLink && this.__compiled__['http:']) {\n // guess schemaless links\n tld_pos = text.search(this.re.host_fuzzy_test);\n\n if (tld_pos >= 0) {\n // if tld is located after found link - no need to check fuzzy pattern\n if (this.__index__ < 0 || tld_pos < this.__index__) {\n if ((ml = text.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy)) !== null) {\n shift = ml.index + ml[1].length;\n\n if (this.__index__ < 0 || shift < this.__index__) {\n this.__schema__ = '';\n this.__index__ = shift;\n this.__last_index__ = ml.index + ml[0].length;\n }\n }\n }\n }\n }\n\n if (this.__opts__.fuzzyEmail && this.__compiled__['mailto:']) {\n // guess schemaless emails\n at_pos = text.indexOf('@');\n\n if (at_pos >= 0) {\n // We can't skip this check, because this cases are possible:\n // 192.168.1.1@gmail.com, my.in@example.com\n if ((me = text.match(this.re.email_fuzzy)) !== null) {\n shift = me.index + me[1].length;\n next = me.index + me[0].length;\n\n if (this.__index__ < 0 || shift < this.__index__ || shift === this.__index__ && next > this.__last_index__) {\n this.__schema__ = 'mailto:';\n this.__index__ = shift;\n this.__last_index__ = next;\n }\n }\n }\n }\n\n return this.__index__ >= 0;\n};\n/**\n * LinkifyIt#pretest(text) -> Boolean\n *\n * Very quick check, that can give false positives. Returns true if link MAY BE\n * can exists. Can be used for speed optimization, when you need to check that\n * link NOT exists.\n **/\n\n\nLinkifyIt.prototype.pretest = function pretest(text) {\n return this.re.pretest.test(text);\n};\n/**\n * LinkifyIt#testSchemaAt(text, name, position) -> Number\n * - text (String): text to scan\n * - name (String): rule (schema) name\n * - position (Number): text offset to check from\n *\n * Similar to [[LinkifyIt#test]] but checks only specific protocol tail exactly\n * at given position. Returns length of found pattern (0 on fail).\n **/\n\n\nLinkifyIt.prototype.testSchemaAt = function testSchemaAt(text, schema, pos) {\n // If not supported schema check requested - terminate\n if (!this.__compiled__[schema.toLowerCase()]) {\n return 0;\n }\n\n return this.__compiled__[schema.toLowerCase()].validate(text, pos, this);\n};\n/**\n * LinkifyIt#match(text) -> Array|null\n *\n * Returns array of found link descriptions or `null` on fail. We strongly\n * recommend to use [[LinkifyIt#test]] first, for best speed.\n *\n * ##### Result match description\n *\n * - __schema__ - link schema, can be empty for fuzzy links, or `//` for\n * protocol-neutral links.\n * - __index__ - offset of matched text\n * - __lastIndex__ - index of next char after mathch end\n * - __raw__ - matched text\n * - __text__ - normalized text\n * - __url__ - link, generated from matched text\n **/\n\n\nLinkifyIt.prototype.match = function match(text) {\n var shift = 0,\n result = []; // Try to take previous element from cache, if .test() called before\n\n if (this.__index__ >= 0 && this.__text_cache__ === text) {\n result.push(createMatch(this, shift));\n shift = this.__last_index__;\n } // Cut head if cache was used\n\n\n var tail = shift ? text.slice(shift) : text; // Scan string until end reached\n\n while (this.test(tail)) {\n result.push(createMatch(this, shift));\n tail = tail.slice(this.__last_index__);\n shift += this.__last_index__;\n }\n\n if (result.length) {\n return result;\n }\n\n return null;\n};\n/** chainable\n * LinkifyIt#tlds(list [, keepOld]) -> this\n * - list (Array): list of tlds\n * - keepOld (Boolean): merge with current list if `true` (`false` by default)\n *\n * Load (or merge) new tlds list. Those are user for fuzzy links (without prefix)\n * to avoid false positives. By default this algorythm used:\n *\n * - hostname with any 2-letter root zones are ok.\n * - biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф\n * are ok.\n * - encoded (`xn--...`) root zones are ok.\n *\n * If list is replaced, then exact match for 2-chars root zones will be checked.\n **/\n\n\nLinkifyIt.prototype.tlds = function tlds(list, keepOld) {\n list = Array.isArray(list) ? list : [list];\n\n if (!keepOld) {\n this.__tlds__ = list.slice();\n this.__tlds_replaced__ = true;\n compile(this);\n return this;\n }\n\n this.__tlds__ = this.__tlds__.concat(list).sort().filter(function (el, idx, arr) {\n return el !== arr[idx - 1];\n }).reverse();\n compile(this);\n return this;\n};\n/**\n * LinkifyIt#normalize(match)\n *\n * Default normalizer (if schema does not define it's own).\n **/\n\n\nLinkifyIt.prototype.normalize = function normalize(match) {\n // Do minimal possible changes by default. Need to collect feedback prior\n // to move forward https://github.com/markdown-it/linkify-it/issues/1\n if (!match.schema) {\n match.url = 'http://' + match.url;\n }\n\n if (match.schema === 'mailto:' && !/^mailto:/i.test(match.url)) {\n match.url = 'mailto:' + match.url;\n }\n};\n/**\n * LinkifyIt#onCompile()\n *\n * Override to modify basic RegExp-s.\n **/\n\n\nLinkifyIt.prototype.onCompile = function onCompile() {};\n\nmodule.exports = LinkifyIt;","'use strict';\n\nmodule.exports = function (opts) {\n var re = {}; // Use direct extract instead of `regenerate` to reduse browserified size\n\n re.src_Any = require('uc.micro/properties/Any/regex').source;\n re.src_Cc = require('uc.micro/categories/Cc/regex').source;\n re.src_Z = require('uc.micro/categories/Z/regex').source;\n re.src_P = require('uc.micro/categories/P/regex').source; // \\p{\\Z\\P\\Cc\\CF} (white spaces + control + format + punctuation)\n\n re.src_ZPCc = [re.src_Z, re.src_P, re.src_Cc].join('|'); // \\p{\\Z\\Cc} (white spaces + control)\n\n re.src_ZCc = [re.src_Z, re.src_Cc].join('|'); // Experimental. List of chars, completely prohibited in links\n // because can separate it from other part of text\n\n var text_separators = \"[><\\uFF5C]\"; // All possible word characters (everything without punctuation, spaces & controls)\n // Defined via punctuation & spaces to save space\n // Should be something like \\p{\\L\\N\\S\\M} (\\w but without `_`)\n\n re.src_pseudo_letter = '(?:(?!' + text_separators + '|' + re.src_ZPCc + ')' + re.src_Any + ')'; // The same as abothe but without [0-9]\n // var src_pseudo_letter_non_d = '(?:(?![0-9]|' + src_ZPCc + ')' + src_Any + ')';\n ////////////////////////////////////////////////////////////////////////////////\n\n re.src_ip4 = '(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'; // Prohibit any of \"@/[]()\" in user/pass to avoid wrong domain fetch.\n\n re.src_auth = '(?:(?:(?!' + re.src_ZCc + '|[@/\\\\[\\\\]()]).)+@)?';\n re.src_port = '(?::(?:6(?:[0-4]\\\\d{3}|5(?:[0-4]\\\\d{2}|5(?:[0-2]\\\\d|3[0-5])))|[1-5]?\\\\d{1,4}))?';\n re.src_host_terminator = '(?=$|' + text_separators + '|' + re.src_ZPCc + ')(?!-|_|:\\\\d|\\\\.-|\\\\.(?!$|' + re.src_ZPCc + '))';\n re.src_path = '(?:' + '[/?#]' + '(?:' + '(?!' + re.src_ZCc + '|' + text_separators + '|[()[\\\\]{}.,\"\\'?!\\\\-]).|' + '\\\\[(?:(?!' + re.src_ZCc + '|\\\\]).)*\\\\]|' + '\\\\((?:(?!' + re.src_ZCc + '|[)]).)*\\\\)|' + '\\\\{(?:(?!' + re.src_ZCc + '|[}]).)*\\\\}|' + '\\\\\"(?:(?!' + re.src_ZCc + '|[\"]).)+\\\\\"|' + \"\\\\'(?:(?!\" + re.src_ZCc + \"|[']).)+\\\\'|\" + \"\\\\'(?=\" + re.src_pseudo_letter + '|[-]).|' + // allow `I'm_king` if no pair found\n '\\\\.{2,4}[a-zA-Z0-9%/]|' + // github has ... in commit range links,\n // google has .... in links (issue #66)\n // Restrict to\n // - english\n // - percent-encoded\n // - parts of file path\n // until more examples found.\n '\\\\.(?!' + re.src_ZCc + '|[.]).|' + (opts && opts['---'] ? '\\\\-(?!--(?:[^-]|$))(?:-*)|' // `---` => long dash, terminate\n : '\\\\-+|') + '\\\\,(?!' + re.src_ZCc + ').|' + // allow `,,,` in paths\n '\\\\!(?!' + re.src_ZCc + '|[!]).|' + '\\\\?(?!' + re.src_ZCc + '|[?]).' + ')+' + '|\\\\/' + ')?'; // Allow anything in markdown spec, forbid quote (\") at the first position\n // because emails enclosed in quotes are far more common\n\n re.src_email_name = '[\\\\-;:&=\\\\+\\\\$,\\\\.a-zA-Z0-9_][\\\\-;:&=\\\\+\\\\$,\\\\\"\\\\.a-zA-Z0-9_]*';\n re.src_xn = 'xn--[a-z0-9\\\\-]{1,59}'; // More to read about domain names\n // http://serverfault.com/questions/638260/\n\n re.src_domain_root = // Allow letters & digits (http://test1)\n '(?:' + re.src_xn + '|' + re.src_pseudo_letter + '{1,63}' + ')';\n re.src_domain = '(?:' + re.src_xn + '|' + '(?:' + re.src_pseudo_letter + ')' + '|' + '(?:' + re.src_pseudo_letter + '(?:-|' + re.src_pseudo_letter + '){0,61}' + re.src_pseudo_letter + ')' + ')';\n re.src_host = '(?:' + // Don't need IP check, because digits are already allowed in normal domain names\n // src_ip4 +\n // '|' +\n '(?:(?:(?:' + re.src_domain + ')\\\\.)*' + re.src_domain\n /*_root*/\n + ')' + ')';\n re.tpl_host_fuzzy = '(?:' + re.src_ip4 + '|' + '(?:(?:(?:' + re.src_domain + ')\\\\.)+(?:%TLDS%))' + ')';\n re.tpl_host_no_ip_fuzzy = '(?:(?:(?:' + re.src_domain + ')\\\\.)+(?:%TLDS%))';\n re.src_host_strict = re.src_host + re.src_host_terminator;\n re.tpl_host_fuzzy_strict = re.tpl_host_fuzzy + re.src_host_terminator;\n re.src_host_port_strict = re.src_host + re.src_port + re.src_host_terminator;\n re.tpl_host_port_fuzzy_strict = re.tpl_host_fuzzy + re.src_port + re.src_host_terminator;\n re.tpl_host_port_no_ip_fuzzy_strict = re.tpl_host_no_ip_fuzzy + re.src_port + re.src_host_terminator; ////////////////////////////////////////////////////////////////////////////////\n // Main rules\n // Rude test fuzzy links by host, for quick deny\n\n re.tpl_host_fuzzy_test = 'localhost|www\\\\.|\\\\.\\\\d{1,3}\\\\.|(?:\\\\.(?:%TLDS%)(?:' + re.src_ZPCc + '|>|$))';\n re.tpl_email_fuzzy = '(^|' + text_separators + '|\"|\\\\(|' + re.src_ZCc + ')' + '(' + re.src_email_name + '@' + re.tpl_host_fuzzy_strict + ')';\n re.tpl_link_fuzzy = // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n // but can start with > (markdown blockquote)\n \"(^|(?![.:/\\\\-_@])(?:[$+<=>^`|\\uFF5C]|\" + re.src_ZPCc + '))' + \"((?![$+<=>^`|\\uFF5C])\" + re.tpl_host_port_fuzzy_strict + re.src_path + ')';\n re.tpl_link_no_ip_fuzzy = // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n // but can start with > (markdown blockquote)\n \"(^|(?![.:/\\\\-_@])(?:[$+<=>^`|\\uFF5C]|\" + re.src_ZPCc + '))' + \"((?![$+<=>^`|\\uFF5C])\" + re.tpl_host_port_no_ip_fuzzy_strict + re.src_path + ')';\n return re;\n};","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;\n\n(function (root) {\n /** Detect free variables */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n var freeModule = typeof module == 'object' && module && !module.nodeType && module;\n var freeGlobal = typeof global == 'object' && global;\n\n if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal) {\n root = freeGlobal;\n }\n /**\n * The `punycode` object.\n * @name punycode\n * @type Object\n */\n\n\n var punycode,\n\n /** Highest positive signed 32-bit float value */\n maxInt = 2147483647,\n // aka. 0x7FFFFFFF or 2^31-1\n\n /** Bootstring parameters */\n base = 36,\n tMin = 1,\n tMax = 26,\n skew = 38,\n damp = 700,\n initialBias = 72,\n initialN = 128,\n // 0x80\n delimiter = '-',\n // '\\x2D'\n\n /** Regular expressions */\n regexPunycode = /^xn--/,\n regexNonASCII = /[^\\x20-\\x7E]/,\n // unprintable ASCII chars + non-ASCII chars\n regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g,\n // RFC 3490 separators\n\n /** Error messages */\n errors = {\n 'overflow': 'Overflow: input needs wider integers to process',\n 'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n 'invalid-input': 'Invalid input'\n },\n\n /** Convenience shortcuts */\n baseMinusTMin = base - tMin,\n floor = Math.floor,\n stringFromCharCode = String.fromCharCode,\n\n /** Temporary variable */\n key;\n /*--------------------------------------------------------------------------*/\n\n /**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\n\n function error(type) {\n throw new RangeError(errors[type]);\n }\n /**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\n\n\n function map(array, fn) {\n var length = array.length;\n var result = [];\n\n while (length--) {\n result[length] = fn(array[length]);\n }\n\n return result;\n }\n /**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\n\n\n function mapDomain(string, fn) {\n var parts = string.split('@');\n var result = '';\n\n if (parts.length > 1) {\n // In email addresses, only the domain name should be punycoded. Leave\n // the local part (i.e. everything up to `@`) intact.\n result = parts[0] + '@';\n string = parts[1];\n } // Avoid `split(regex)` for IE8 compatibility. See #17.\n\n\n string = string.replace(regexSeparators, '\\x2E');\n var labels = string.split('.');\n var encoded = map(labels, fn).join('.');\n return result + encoded;\n }\n /**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see \n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\n\n\n function ucs2decode(string) {\n var output = [],\n counter = 0,\n length = string.length,\n value,\n extra;\n\n while (counter < length) {\n value = string.charCodeAt(counter++);\n\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // high surrogate, and there is a next character\n extra = string.charCodeAt(counter++);\n\n if ((extra & 0xFC00) == 0xDC00) {\n // low surrogate\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // unmatched surrogate; only append this code unit, in case the next\n // code unit is the high surrogate of a surrogate pair\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n\n return output;\n }\n /**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\n\n\n function ucs2encode(array) {\n return map(array, function (value) {\n var output = '';\n\n if (value > 0xFFFF) {\n value -= 0x10000;\n output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n value = 0xDC00 | value & 0x3FF;\n }\n\n output += stringFromCharCode(value);\n return output;\n }).join('');\n }\n /**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\n\n\n function basicToDigit(codePoint) {\n if (codePoint - 48 < 10) {\n return codePoint - 22;\n }\n\n if (codePoint - 65 < 26) {\n return codePoint - 65;\n }\n\n if (codePoint - 97 < 26) {\n return codePoint - 97;\n }\n\n return base;\n }\n /**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\n\n\n function digitToBasic(digit, flag) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n }\n /**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\n\n\n function adapt(delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n\n for (;\n /* no initialization */\n delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n }\n /**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\n\n\n function decode(input) {\n // Don't use UCS-2\n var output = [],\n inputLength = input.length,\n out,\n i = 0,\n n = initialN,\n bias = initialBias,\n basic,\n j,\n index,\n oldi,\n w,\n k,\n digit,\n t,\n\n /** Cached calculation results */\n baseMinusT; // Handle the basic code points: let `basic` be the number of input code\n // points before the last delimiter, or `0` if there is none, then copy\n // the first basic code points to the output.\n\n basic = input.lastIndexOf(delimiter);\n\n if (basic < 0) {\n basic = 0;\n }\n\n for (j = 0; j < basic; ++j) {\n // if it's not a basic code point\n if (input.charCodeAt(j) >= 0x80) {\n error('not-basic');\n }\n\n output.push(input.charCodeAt(j));\n } // Main decoding loop: start just after the last delimiter if any basic code\n // points were copied; start at the beginning otherwise.\n\n\n for (index = basic > 0 ? basic + 1 : 0; index < inputLength;)\n /* no final expression */\n {\n // `index` is the index of the next character to be consumed.\n // Decode a generalized variable-length integer into `delta`,\n // which gets added to `i`. The overflow checking is easier\n // if we increase `i` as we go, then subtract off its starting\n // value at the end to obtain `delta`.\n for (oldi = i, w = 1, k = base;;\n /* no condition */\n k += base) {\n if (index >= inputLength) {\n error('invalid-input');\n }\n\n digit = basicToDigit(input.charCodeAt(index++));\n\n if (digit >= base || digit > floor((maxInt - i) / w)) {\n error('overflow');\n }\n\n i += digit * w;\n t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\n if (digit < t) {\n break;\n }\n\n baseMinusT = base - t;\n\n if (w > floor(maxInt / baseMinusT)) {\n error('overflow');\n }\n\n w *= baseMinusT;\n }\n\n out = output.length + 1;\n bias = adapt(i - oldi, out, oldi == 0); // `i` was supposed to wrap around from `out` to `0`,\n // incrementing `n` each time, so we'll fix that now:\n\n if (floor(i / out) > maxInt - n) {\n error('overflow');\n }\n\n n += floor(i / out);\n i %= out; // Insert `n` at position `i` of the output\n\n output.splice(i++, 0, n);\n }\n\n return ucs2encode(output);\n }\n /**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\n\n\n function encode(input) {\n var n,\n delta,\n handledCPCount,\n basicLength,\n bias,\n j,\n m,\n q,\n k,\n t,\n currentValue,\n output = [],\n\n /** `inputLength` will hold the number of code points in `input`. */\n inputLength,\n\n /** Cached calculation results */\n handledCPCountPlusOne,\n baseMinusT,\n qMinusT; // Convert the input in UCS-2 to Unicode\n\n input = ucs2decode(input); // Cache the length\n\n inputLength = input.length; // Initialize the state\n\n n = initialN;\n delta = 0;\n bias = initialBias; // Handle the basic code points\n\n for (j = 0; j < inputLength; ++j) {\n currentValue = input[j];\n\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n\n handledCPCount = basicLength = output.length; // `handledCPCount` is the number of code points that have been handled;\n // `basicLength` is the number of basic code points.\n // Finish the basic string - if it is not empty - with a delimiter\n\n if (basicLength) {\n output.push(delimiter);\n } // Main encoding loop:\n\n\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next\n // larger one:\n for (m = maxInt, j = 0; j < inputLength; ++j) {\n currentValue = input[j];\n\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n } // Increase `delta` enough to advance the decoder's state to ,\n // but guard against overflow\n\n\n handledCPCountPlusOne = handledCPCount + 1;\n\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n error('overflow');\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (j = 0; j < inputLength; ++j) {\n currentValue = input[j];\n\n if (currentValue < n && ++delta > maxInt) {\n error('overflow');\n }\n\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer\n for (q = delta, k = base;;\n /* no condition */\n k += base) {\n t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\n if (q < t) {\n break;\n }\n\n qMinusT = q - t;\n baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)));\n q = floor(qMinusT / baseMinusT);\n }\n\n output.push(stringFromCharCode(digitToBasic(q, 0)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n\n ++delta;\n ++n;\n }\n\n return output.join('');\n }\n /**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\n\n\n function toUnicode(input) {\n return mapDomain(input, function (string) {\n return regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string;\n });\n }\n /**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\n\n\n function toASCII(input) {\n return mapDomain(input, function (string) {\n return regexNonASCII.test(string) ? 'xn--' + encode(string) : string;\n });\n }\n /*--------------------------------------------------------------------------*/\n\n /** Define the public API */\n\n\n punycode = {\n /**\n * A string representing the current Punycode.js version number.\n * @memberOf punycode\n * @type String\n */\n 'version': '1.4.1',\n\n /**\n * An object of methods to convert from JavaScript's internal character\n * representation (UCS-2) to Unicode code points, and back.\n * @see \n * @memberOf punycode\n * @type Object\n */\n 'ucs2': {\n 'decode': ucs2decode,\n 'encode': ucs2encode\n },\n 'decode': decode,\n 'encode': encode,\n 'toASCII': toASCII,\n 'toUnicode': toUnicode\n };\n /** Expose `punycode` */\n // Some AMD build optimizers, like r.js, check for specific condition patterns\n // like the following:\n\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n define('punycode', function () {\n return punycode;\n });\n } else if (freeExports && freeModule) {\n if (module.exports == freeExports) {\n // in Node.js, io.js, or RingoJS v0.8.0+\n freeModule.exports = punycode;\n } else {\n // in Narwhal or RingoJS v0.7.0-\n for (key in punycode) {\n punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n }\n }\n } else {\n // in Rhino or a web browser\n root.punycode = punycode;\n }\n})(this);","// markdown-it default options\n'use strict';\n\nmodule.exports = {\n options: {\n html: false,\n // Enable HTML tags in source\n xhtmlOut: false,\n // Use '/' to close single tags (
)\n breaks: false,\n // Convert '\\n' in paragraphs into
\n langPrefix: 'language-',\n // CSS language prefix for fenced blocks\n linkify: false,\n // autoconvert URL-like texts to links\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: \"\\u201C\\u201D\\u2018\\u2019\",\n\n /* “”‘’ */\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with )\n breaks: false,\n // Convert '\\n' in paragraphs into
\n langPrefix: 'language-',\n // CSS language prefix for fenced blocks\n linkify: false,\n // autoconvert URL-like texts to links\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: \"\\u201C\\u201D\\u2018\\u2019\",\n\n /* “”‘’ */\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with )\n breaks: false,\n // Convert '\\n' in paragraphs into
\n langPrefix: 'language-',\n // CSS language prefix for fenced blocks\n linkify: false,\n // autoconvert URL-like texts to links\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: \"\\u201C\\u201D\\u2018\\u2019\",\n\n /* “”‘’ */\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ {0,3}\\[(label)\\]: *\\n? *]+)>?(?:(?: +\\n? *| *\\n *)(title))? *(?:\\n+|$)/,\n table: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n paragraph: /^([^\\n]+(?:\\n?(?!hr|heading|lheading| {0,3}>|tag)[^\\n]+)+)/,\n text: /^[^\\n]+/\n };\n block._label = /(?:\\\\[\\[\\]]|[^\\[\\]])+/;\n block._title = /(?:\"(?:\\\\\"|[^\"]|\"[^\"\\n]*\")*\"|'\\n?(?:[^'\\n]+\\n?)*'|\\([^()]*\\))/;\n block.def = edit(block.def).replace('label', block._label).replace('title', block._title).getRegex();\n block.bullet = /(?:[*+-]|\\d+\\.)/;\n block.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\n block.item = edit(block.item, 'gm').replace(/bull/g, block.bullet).getRegex();\n block.list = edit(block.list).replace(/bull/g, block.bullet).replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))').replace('def', '\\\\n+(?=' + block.def.source + ')').getRegex();\n block._tag = '(?!(?:' + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code' + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo' + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b';\n block.html = edit(block.html).replace('comment', //).replace('closed', /<(tag)[\\s\\S]+?<\\/\\1>/).replace('closing', /\\s]*)*?\\/?>/).replace(/tag/g, block._tag).getRegex();\n block.paragraph = edit(block.paragraph).replace('hr', block.hr).replace('heading', block.heading).replace('lheading', block.lheading).replace('tag', '<' + block._tag).getRegex();\n block.blockquote = edit(block.blockquote).replace('paragraph', block.paragraph).getRegex();\n /**\n * Normal Block Grammar\n */\n\n block.normal = merge({}, block);\n /**\n * GFM Block Grammar\n */\n\n block.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\n? *\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n });\n block.gfm.paragraph = edit(block.paragraph).replace('(?!', '(?!' + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|' + block.list.source.replace('\\\\1', '\\\\3') + '|').getRegex();\n /**\n * GFM + Tables Block Grammar\n */\n\n block.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n });\n /**\n * Block Lexer\n */\n\n function Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n }\n /**\n * Expose Block Rules\n */\n\n\n Lexer.rules = block;\n /**\n * Static Lex Method\n */\n\n Lexer.lex = function (src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n };\n /**\n * Preprocessing\n */\n\n\n Lexer.prototype.lex = function (src) {\n src = src.replace(/\\r\\n|\\r/g, '\\n').replace(/\\t/g, ' ').replace(/\\u00a0/g, ' ').replace(/\\u2424/g, '\\n');\n return this.token(src, true);\n };\n /**\n * Lexing\n */\n\n\n Lexer.prototype.token = function (src, top) {\n src = src.replace(/^ +$/gm, '');\n var next, loose, cap, bull, b, item, space, i, tag, l, isordered;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n } // code\n\n\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic ? cap.replace(/\\n+$/, '') : cap\n });\n continue;\n } // fences (gfm)\n\n\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n } // heading\n\n\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n } // table no leading pipe (gfm)\n\n\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n continue;\n } // hr\n\n\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n } // blockquote\n\n\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'blockquote_start'\n });\n cap = cap[0].replace(/^ *> ?/gm, ''); // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n\n this.token(cap, top);\n this.tokens.push({\n type: 'blockquote_end'\n });\n continue;\n } // list\n\n\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n isordered = bull.length > 1;\n this.tokens.push({\n type: 'list_start',\n ordered: isordered,\n start: isordered ? +bull : ''\n }); // Get each top-level item.\n\n cap = cap[0].match(this.rules.item);\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i]; // Remove the list item's bullet\n // so it is seen as the next token.\n\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, ''); // Outdent whatever the\n // list item contains. Hacky.\n\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '') : item.replace(/^ {1,4}/gm, '');\n } // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n\n\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n } // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n\n\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose ? 'loose_item_start' : 'list_item_start'\n }); // Recurse.\n\n this.token(item, false);\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n continue;\n } // html\n\n\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize ? 'paragraph' : 'html',\n pre: !this.options.sanitizer && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n } // def\n\n\n if (top && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n tag = cap[1].toLowerCase();\n\n if (!this.tokens.links[tag]) {\n this.tokens.links[tag] = {\n href: cap[2],\n title: cap[3]\n };\n }\n\n continue;\n } // table (gfm)\n\n\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].replace(/^ *\\| *| *\\| *$/g, '').split(/ *\\| */);\n }\n\n this.tokens.push(item);\n continue;\n } // lheading\n\n\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n } // top-level paragraph\n\n\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n' ? cap[1].slice(0, -1) : cap[1]\n });\n continue;\n } // text\n\n\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n };\n /**\n * Inline-Level Grammar\n */\n\n\n var inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noop,\n tag: /^|^<\\/?[a-zA-Z0-9\\-]+(?:\"[^\"]*\"|'[^']*'|\\s[^<'\">\\/\\s]*)*?\\/?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^_([^\\s_](?:[^_]|__)+?[^\\s_])_\\b|^\\*((?:\\*\\*|[^*])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`]?)\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n inline.link = edit(inline.link).replace('inside', inline._inside).replace('href', inline._href).getRegex();\n inline.reflink = edit(inline.reflink).replace('inside', inline._inside).getRegex();\n /**\n * Normal Inline Grammar\n */\n\n inline.normal = merge({}, inline);\n /**\n * Pedantic Inline Grammar\n */\n\n inline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n });\n /**\n * GFM Inline Grammar\n */\n\n inline.gfm = merge({}, inline.normal, {\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/).replace('email', inline._email).getRegex(),\n _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: edit(inline.text).replace(']|', '~]|').replace('|', '|https?://|ftp://|www\\\\.|[a-zA-Z0-9.!#$%&\\'*+/=?^_`{\\\\|}~-]+@|').getRegex()\n });\n /**\n * GFM + Line Breaks Inline Grammar\n */\n\n inline.breaks = merge({}, inline.gfm, {\n br: edit(inline.br).replace('{2,}', '*').getRegex(),\n text: edit(inline.gfm.text).replace('{2,}', '*').getRegex()\n });\n /**\n * Inline Lexer & Compiler\n */\n\n function InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer();\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n }\n /**\n * Expose Inline Rules\n */\n\n\n InlineLexer.rules = inline;\n /**\n * Static Lexing/Compiling Method\n */\n\n InlineLexer.output = function (src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n };\n /**\n * Lexing/Compiling\n */\n\n\n InlineLexer.prototype.output = function (src) {\n var out = '',\n link,\n text,\n href,\n cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n } // autolink\n\n\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n\n if (cap[2] === '@') {\n text = escape(this.mangle(cap[1]));\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n out += this.renderer.link(href, null, text);\n continue;\n } // url (gfm)\n\n\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n cap[0] = this.rules._backpedal.exec(cap[0])[0];\n src = src.substring(cap[0].length);\n\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[0]);\n\n if (cap[1] === 'www.') {\n href = 'http://' + text;\n } else {\n href = text;\n }\n }\n\n out += this.renderer.link(href, null, text);\n continue;\n } // tag\n\n\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n\n src = src.substring(cap[0].length);\n out += this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0];\n continue;\n } // link\n\n\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n } // reflink, nolink\n\n\n if ((cap = this.rules.reflink.exec(src)) || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n } // strong\n\n\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n } // em\n\n\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n } // code\n\n\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2].trim(), true));\n continue;\n } // br\n\n\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n } // del (gfm)\n\n\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n } // text\n\n\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n };\n /**\n * Compile Link\n */\n\n\n InlineLexer.prototype.outputLink = function (cap, link) {\n var href = escape(link.href),\n title = link.title ? escape(link.title) : null;\n return cap[0].charAt(0) !== '!' ? this.renderer.link(href, title, this.output(cap[1])) : this.renderer.image(href, title, escape(cap[1]));\n };\n /**\n * Smartypants Transformations\n */\n\n\n InlineLexer.prototype.smartypants = function (text) {\n if (!this.options.smartypants) return text;\n return text // em-dashes\n .replace(/---/g, \"\\u2014\") // en-dashes\n .replace(/--/g, \"\\u2013\") // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, \"$1\\u2018\") // closing singles & apostrophes\n .replace(/'/g, \"\\u2019\") // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, \"$1\\u201C\") // closing doubles\n .replace(/\"/g, \"\\u201D\") // ellipses\n .replace(/\\.{3}/g, \"\\u2026\");\n };\n /**\n * Mangle Links\n */\n\n\n InlineLexer.prototype.mangle = function (text) {\n if (!this.options.mangle) return text;\n var out = '',\n l = text.length,\n i = 0,\n ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n\n out += '&#' + ch + ';';\n }\n\n return out;\n };\n /**\n * Renderer\n */\n\n\n function Renderer(options) {\n this.options = options || {};\n }\n\n Renderer.prototype.code = function (code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
' + (escaped ? code : escape(code, true)) + '\\n
';\n }\n\n return '
' + (escaped ? code : escape(code, true)) + '\\n
\\n';\n };\n\n Renderer.prototype.blockquote = function (quote) {\n return '
\\n' + quote + '
\\n';\n };\n\n Renderer.prototype.html = function (html) {\n return html;\n };\n\n Renderer.prototype.heading = function (text, level, raw) {\n return '' + text + '\\n';\n };\n\n Renderer.prototype.hr = function () {\n return this.options.xhtml ? '
\\n' : '
\\n';\n };\n\n Renderer.prototype.list = function (body, ordered, start) {\n var type = ordered ? 'ol' : 'ul',\n startatt = ordered && start !== 1 ? ' start=\"' + start + '\"' : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n };\n\n Renderer.prototype.listitem = function (text) {\n return '
  • ' + text + '
  • \\n';\n };\n\n Renderer.prototype.paragraph = function (text) {\n return '

    ' + text + '

    \\n';\n };\n\n Renderer.prototype.table = function (header, body) {\n return '\\n' + '\\n' + header + '\\n' + '\\n' + body + '\\n' + '
    \\n';\n };\n\n Renderer.prototype.tablerow = function (content) {\n return '\\n' + content + '\\n';\n };\n\n Renderer.prototype.tablecell = function (content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align ? '<' + type + ' style=\"text-align:' + flags.align + '\">' : '<' + type + '>';\n return tag + content + '\\n';\n }; // span level renderer\n\n\n Renderer.prototype.strong = function (text) {\n return '' + text + '';\n };\n\n Renderer.prototype.em = function (text) {\n return '' + text + '';\n };\n\n Renderer.prototype.codespan = function (text) {\n return '' + text + '';\n };\n\n Renderer.prototype.br = function () {\n return this.options.xhtml ? '
    ' : '
    ';\n };\n\n Renderer.prototype.del = function (text) {\n return '' + text + '';\n };\n\n Renderer.prototype.link = function (href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href)).replace(/[^\\w:]/g, '').toLowerCase();\n } catch (e) {\n return text;\n }\n\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return text;\n }\n }\n\n if (this.options.baseUrl && !originIndependentUrl.test(href)) {\n href = resolveUrl(this.options.baseUrl, href);\n }\n\n var out = '
    ';\n return out;\n };\n\n Renderer.prototype.image = function (href, title, text) {\n if (this.options.baseUrl && !originIndependentUrl.test(href)) {\n href = resolveUrl(this.options.baseUrl, href);\n }\n\n var out = '\"'' : '>';\n return out;\n };\n\n Renderer.prototype.text = function (text) {\n return text;\n };\n /**\n * TextRenderer\n * returns only the textual part of the token\n */\n\n\n function TextRenderer() {} // no need for block level renderers\n\n\n TextRenderer.prototype.strong = TextRenderer.prototype.em = TextRenderer.prototype.codespan = TextRenderer.prototype.del = TextRenderer.prototype.text = function (text) {\n return text;\n };\n\n TextRenderer.prototype.link = TextRenderer.prototype.image = function (href, title, text) {\n return '' + text;\n };\n\n TextRenderer.prototype.br = function () {\n return '';\n };\n /**\n * Parsing & Compiling\n */\n\n\n function Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n }\n /**\n * Static Parse Method\n */\n\n\n Parser.parse = function (src, options) {\n var parser = new Parser(options);\n return parser.parse(src);\n };\n /**\n * Parse Loop\n */\n\n\n Parser.prototype.parse = function (src) {\n this.inline = new InlineLexer(src.links, this.options); // use an InlineLexer with a TextRenderer to extract pure text\n\n this.inlineText = new InlineLexer(src.links, merge({}, this.options, {\n renderer: new TextRenderer()\n }));\n this.tokens = src.reverse();\n var out = '';\n\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n };\n /**\n * Next Token\n */\n\n\n Parser.prototype.next = function () {\n return this.token = this.tokens.pop();\n };\n /**\n * Preview Next Token\n */\n\n\n Parser.prototype.peek = function () {\n return this.tokens[this.tokens.length - 1] || 0;\n };\n /**\n * Parse Text Tokens\n */\n\n\n Parser.prototype.parseText = function () {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n };\n /**\n * Parse Current Token\n */\n\n\n Parser.prototype.tok = function () {\n switch (this.token.type) {\n case 'space':\n {\n return '';\n }\n\n case 'hr':\n {\n return this.renderer.hr();\n }\n\n case 'heading':\n {\n return this.renderer.heading(this.inline.output(this.token.text), this.token.depth, unescape(this.inlineText.output(this.token.text)));\n }\n\n case 'code':\n {\n return this.renderer.code(this.token.text, this.token.lang, this.token.escaped);\n }\n\n case 'table':\n {\n var header = '',\n body = '',\n i,\n row,\n cell,\n j; // header\n\n cell = '';\n\n for (i = 0; i < this.token.header.length; i++) {\n cell += this.renderer.tablecell(this.inline.output(this.token.header[i]), {\n header: true,\n align: this.token.align[i]\n });\n }\n\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n cell = '';\n\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(this.inline.output(row[j]), {\n header: false,\n align: this.token.align[j]\n });\n }\n\n body += this.renderer.tablerow(cell);\n }\n\n return this.renderer.table(header, body);\n }\n\n case 'blockquote_start':\n {\n body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n\n case 'list_start':\n {\n body = '';\n var ordered = this.token.ordered,\n start = this.token.start;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered, start);\n }\n\n case 'list_item_start':\n {\n body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text' ? this.parseText() : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n\n case 'loose_item_start':\n {\n body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n\n case 'html':\n {\n var html = !this.token.pre && !this.options.pedantic ? this.inline.output(this.token.text) : this.token.text;\n return this.renderer.html(html);\n }\n\n case 'paragraph':\n {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n\n case 'text':\n {\n return this.renderer.paragraph(this.parseText());\n }\n }\n };\n /**\n * Helpers\n */\n\n\n function escape(html, encode) {\n return html.replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&').replace(//g, '>').replace(/\"/g, '"').replace(/'/g, ''');\n }\n\n function unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig, function (_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x' ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1));\n }\n\n return '';\n });\n }\n\n function edit(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return {\n replace: function replace(name, val) {\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return this;\n },\n getRegex: function getRegex() {\n return new RegExp(regex, opt);\n }\n };\n }\n\n function resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (/^[^:]+:\\/*[^/]*$/.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = base.replace(/[^/]*$/, '');\n }\n }\n\n base = baseUrls[' ' + base];\n\n if (href.slice(0, 2) === '//') {\n return base.replace(/:[\\s\\S]*/, ':') + href;\n } else if (href.charAt(0) === '/') {\n return base.replace(/(:\\/*[^/]*)[\\s\\S]*/, '$1') + href;\n } else {\n return base + href;\n }\n }\n\n var baseUrls = {};\n var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\n function noop() {}\n\n noop.exec = noop;\n\n function merge(obj) {\n var i = 1,\n target,\n key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n }\n /**\n * Marked\n */\n\n\n function marked(src, opt, callback) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked(): input parameter is undefined or null');\n }\n\n if (typeof src !== 'string') {\n throw new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');\n }\n\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n var highlight = opt.highlight,\n tokens,\n pending,\n i = 0;\n\n try {\n tokens = Lexer.lex(src, opt);\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function done(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n return err ? callback(err) : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function (token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n\n return highlight(token.text, token.lang, function (err, code) {\n if (err) return done(err);\n\n if (code == null || code === token.text) {\n return --pending || done();\n }\n\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if ((opt || marked.defaults).silent) {\n return '

    An error occurred:

    ' + escape(e.message + '', true) + '
    ';\n }\n\n throw e;\n }\n }\n /**\n * Options\n */\n\n\n marked.options = marked.setOptions = function (opt) {\n merge(marked.defaults, opt);\n return marked;\n };\n\n marked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer(),\n xhtml: false,\n baseUrl: null\n };\n /**\n * Expose\n */\n\n marked.Parser = Parser;\n marked.parser = Parser.parse;\n marked.Renderer = Renderer;\n marked.TextRenderer = TextRenderer;\n marked.Lexer = Lexer;\n marked.lexer = Lexer.lex;\n marked.InlineLexer = InlineLexer;\n marked.inlineLexer = InlineLexer.output;\n marked.parse = marked;\n\n if (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n } else if (typeof define === 'function' && define.amd) {\n define(function () {\n return marked;\n });\n } else {\n root.marked = marked;\n }\n})(this || (typeof window !== 'undefined' ? window : global));","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n(function (mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);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\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 var marks = cm.findMarksAt(range.from);\n\n for (var i = 0; i < marks.length; ++i) {\n if (marks[i].__isFold && force !== \"fold\") {\n if (!allowFolded) return null;\n range.cleared = true;\n marks[i].clear();\n }\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 var myWidget = makeWidget(cm, options);\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) {\n var widget = getOption(cm, options, \"widget\");\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\n return widget;\n } // Clumsy backwards-compatible interface\n\n\n CodeMirror.newFoldFunction = function (rangeFinder, widget) {\n return function (cm, pos) {\n doFold(cm, pos, {\n rangeFinder: rangeFinder,\n widget: widget\n });\n };\n }; // New-style interface\n\n\n CodeMirror.defineExtension(\"foldCode\", function (pos, options, force) {\n doFold(this, pos, options, force);\n });\n CodeMirror.defineExtension(\"isFolded\", function (pos) {\n var marks = this.findMarksAt(pos);\n\n for (var i = 0; i < marks.length; ++i) {\n if (marks[i].__isFold) return true;\n }\n });\n\n CodeMirror.commands.toggleFold = function (cm) {\n cm.foldCode(cm.getCursor());\n };\n\n CodeMirror.commands.fold = function (cm) {\n cm.foldCode(cm.getCursor(), null, \"fold\");\n };\n\n CodeMirror.commands.unfold = function (cm) {\n cm.foldCode(cm.getCursor(), null, \"unfold\");\n };\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), null, \"fold\");\n }\n });\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), null, \"unfold\");\n }\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 CodeMirror.registerHelper(\"fold\", \"auto\", function (cm, start) {\n var helpers = cm.getHelpers(start, \"fold\");\n\n for (var i = 0; i < helpers.length; i++) {\n var cur = helpers[i](cm, start);\n if (cur) return cur;\n }\n });\n var defaultOptions = {\n rangeFinder: CodeMirror.fold.auto,\n widget: \"\\u2194\",\n minFoldSize: 0,\n scanUp: false,\n clearOnEnter: true\n };\n CodeMirror.defineOption(\"foldOptions\", null);\n\n function getOption(cm, options, name) {\n if (options && options[name] !== undefined) return options[name];\n var editorOptions = cm.options.foldOptions;\n if (editorOptions && editorOptions[name] !== undefined) return editorOptions[name];\n return defaultOptions[name];\n }\n\n CodeMirror.defineExtension(\"foldOption\", function (options, name) {\n return getOption(this, options, name);\n });\n});","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n/**\n * Supported keybindings:\n * Too many to list. Refer to defaultKeymap below.\n *\n * Supported Ex commands:\n * Refer to defaultExCommandMap below.\n *\n * Registers: unnamed, -, a-z, A-Z, 0-9\n * (Does not respect the special case for number registers when delete\n * operator is made with these commands: %, (, ), , /, ?, n, N, {, } )\n * TODO: Implement the remaining registers.\n *\n * Marks: a-z, A-Z, and 0-9\n * TODO: Implement the remaining special marks. They have more complex\n * behavior.\n *\n * Events:\n * 'vim-mode-change' - raised on the editor anytime the current mode changes,\n * Event object: {mode: \"visual\", subMode: \"linewise\"}\n *\n * Code structure:\n * 1. Default keymap\n * 2. Variable declarations and short basic helpers\n * 3. Instance (External API) implementation\n * 4. Internal state tracking objects (input state, counter) implementation\n * and instantiation\n * 5. Key handler (the main command dispatcher) implementation\n * 6. Motion, operator, and action implementations\n * 7. Helper functions for the key handler, motions, operators, and actions\n * 8. Set up Vim to work as a keymap for CodeMirror.\n * 9. Ex command implementations.\n */\n(function (mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../lib/codemirror\"), require(\"../addon/search/searchcursor\"), require(\"../addon/dialog/dialog\"), require(\"../addon/edit/matchbrackets.js\"));else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../lib/codemirror\", \"../addon/search/searchcursor\", \"../addon/dialog/dialog\", \"../addon/edit/matchbrackets\"], mod);else // Plain browser env\n mod(CodeMirror);\n})(function (CodeMirror) {\n 'use strict';\n\n var defaultKeymap = [// Key to key mapping. This goes first to make it possible to override\n // existing mappings.\n {\n keys: '',\n type: 'keyToKey',\n toKeys: 'h'\n }, {\n keys: '',\n type: 'keyToKey',\n toKeys: 'l'\n }, {\n keys: '',\n type: 'keyToKey',\n toKeys: 'k'\n }, {\n keys: '',\n type: 'keyToKey',\n toKeys: 'j'\n }, {\n keys: '',\n type: 'keyToKey',\n toKeys: 'l'\n }, {\n keys: '',\n type: 'keyToKey',\n toKeys: 'h',\n context: 'normal'\n }, {\n keys: '',\n type: 'keyToKey',\n toKeys: 'x',\n context: 'normal'\n }, {\n keys: '',\n type: 'keyToKey',\n toKeys: 'W'\n }, {\n keys: '',\n type: 'keyToKey',\n toKeys: 'B',\n context: 'normal'\n }, {\n keys: '',\n type: 'keyToKey',\n toKeys: 'w'\n }, {\n keys: '',\n type: 'keyToKey',\n toKeys: 'b',\n context: 'normal'\n }, {\n keys: '',\n type: 'keyToKey',\n toKeys: 'j'\n }, {\n keys: '',\n type: 'keyToKey',\n toKeys: 'k'\n }, {\n keys: '',\n type: 'keyToKey',\n toKeys: ''\n }, {\n keys: '',\n type: 'keyToKey',\n toKeys: ''\n }, {\n keys: '',\n type: 'keyToKey',\n toKeys: '',\n context: 'insert'\n }, {\n keys: '',\n type: 'keyToKey',\n toKeys: '',\n context: 'insert'\n }, {\n keys: 's',\n type: 'keyToKey',\n toKeys: 'cl',\n context: 'normal'\n }, {\n keys: 's',\n type: 'keyToKey',\n toKeys: 'c',\n context: 'visual'\n }, {\n keys: 'S',\n type: 'keyToKey',\n toKeys: 'cc',\n context: 'normal'\n }, {\n keys: 'S',\n type: 'keyToKey',\n toKeys: 'VdO',\n context: 'visual'\n }, {\n keys: '',\n type: 'keyToKey',\n toKeys: '0'\n }, {\n keys: '',\n type: 'keyToKey',\n toKeys: '$'\n }, {\n keys: '',\n type: 'keyToKey',\n toKeys: ''\n }, {\n keys: '',\n type: 'keyToKey',\n toKeys: ''\n }, {\n keys: '',\n type: 'keyToKey',\n toKeys: 'j^',\n context: 'normal'\n }, {\n keys: '',\n type: 'action',\n action: 'toggleOverwrite',\n context: 'insert'\n }, // Motions\n {\n keys: 'H',\n type: 'motion',\n motion: 'moveToTopLine',\n motionArgs: {\n linewise: true,\n toJumplist: true\n }\n }, {\n keys: 'M',\n type: 'motion',\n motion: 'moveToMiddleLine',\n motionArgs: {\n linewise: true,\n toJumplist: true\n }\n }, {\n keys: 'L',\n type: 'motion',\n motion: 'moveToBottomLine',\n motionArgs: {\n linewise: true,\n toJumplist: true\n }\n }, {\n keys: 'h',\n type: 'motion',\n motion: 'moveByCharacters',\n motionArgs: {\n forward: false\n }\n }, {\n keys: 'l',\n type: 'motion',\n motion: 'moveByCharacters',\n motionArgs: {\n forward: true\n }\n }, {\n keys: 'j',\n type: 'motion',\n motion: 'moveByLines',\n motionArgs: {\n forward: true,\n linewise: true\n }\n }, {\n keys: 'k',\n type: 'motion',\n motion: 'moveByLines',\n motionArgs: {\n forward: false,\n linewise: true\n }\n }, {\n keys: 'gj',\n type: 'motion',\n motion: 'moveByDisplayLines',\n motionArgs: {\n forward: true\n }\n }, {\n keys: 'gk',\n type: 'motion',\n motion: 'moveByDisplayLines',\n motionArgs: {\n forward: false\n }\n }, {\n keys: 'w',\n type: 'motion',\n motion: 'moveByWords',\n motionArgs: {\n forward: true,\n wordEnd: false\n }\n }, {\n keys: 'W',\n type: 'motion',\n motion: 'moveByWords',\n motionArgs: {\n forward: true,\n wordEnd: false,\n bigWord: true\n }\n }, {\n keys: 'e',\n type: 'motion',\n motion: 'moveByWords',\n motionArgs: {\n forward: true,\n wordEnd: true,\n inclusive: true\n }\n }, {\n keys: 'E',\n type: 'motion',\n motion: 'moveByWords',\n motionArgs: {\n forward: true,\n wordEnd: true,\n bigWord: true,\n inclusive: true\n }\n }, {\n keys: 'b',\n type: 'motion',\n motion: 'moveByWords',\n motionArgs: {\n forward: false,\n wordEnd: false\n }\n }, {\n keys: 'B',\n type: 'motion',\n motion: 'moveByWords',\n motionArgs: {\n forward: false,\n wordEnd: false,\n bigWord: true\n }\n }, {\n keys: 'ge',\n type: 'motion',\n motion: 'moveByWords',\n motionArgs: {\n forward: false,\n wordEnd: true,\n inclusive: true\n }\n }, {\n keys: 'gE',\n type: 'motion',\n motion: 'moveByWords',\n motionArgs: {\n forward: false,\n wordEnd: true,\n bigWord: true,\n inclusive: true\n }\n }, {\n keys: '{',\n type: 'motion',\n motion: 'moveByParagraph',\n motionArgs: {\n forward: false,\n toJumplist: true\n }\n }, {\n keys: '}',\n type: 'motion',\n motion: 'moveByParagraph',\n motionArgs: {\n forward: true,\n toJumplist: true\n }\n }, {\n keys: '(',\n type: 'motion',\n motion: 'moveBySentence',\n motionArgs: {\n forward: false\n }\n }, {\n keys: ')',\n type: 'motion',\n motion: 'moveBySentence',\n motionArgs: {\n forward: true\n }\n }, {\n keys: '',\n type: 'motion',\n motion: 'moveByPage',\n motionArgs: {\n forward: true\n }\n }, {\n keys: '',\n type: 'motion',\n motion: 'moveByPage',\n motionArgs: {\n forward: false\n }\n }, {\n keys: '',\n type: 'motion',\n motion: 'moveByScroll',\n motionArgs: {\n forward: true,\n explicitRepeat: true\n }\n }, {\n keys: '',\n type: 'motion',\n motion: 'moveByScroll',\n motionArgs: {\n forward: false,\n explicitRepeat: true\n }\n }, {\n keys: 'gg',\n type: 'motion',\n motion: 'moveToLineOrEdgeOfDocument',\n motionArgs: {\n forward: false,\n explicitRepeat: true,\n linewise: true,\n toJumplist: true\n }\n }, {\n keys: 'G',\n type: 'motion',\n motion: 'moveToLineOrEdgeOfDocument',\n motionArgs: {\n forward: true,\n explicitRepeat: true,\n linewise: true,\n toJumplist: true\n }\n }, {\n keys: '0',\n type: 'motion',\n motion: 'moveToStartOfLine'\n }, {\n keys: '^',\n type: 'motion',\n motion: 'moveToFirstNonWhiteSpaceCharacter'\n }, {\n keys: '+',\n type: 'motion',\n motion: 'moveByLines',\n motionArgs: {\n forward: true,\n toFirstChar: true\n }\n }, {\n keys: '-',\n type: 'motion',\n motion: 'moveByLines',\n motionArgs: {\n forward: false,\n toFirstChar: true\n }\n }, {\n keys: '_',\n type: 'motion',\n motion: 'moveByLines',\n motionArgs: {\n forward: true,\n toFirstChar: true,\n repeatOffset: -1\n }\n }, {\n keys: '$',\n type: 'motion',\n motion: 'moveToEol',\n motionArgs: {\n inclusive: true\n }\n }, {\n keys: '%',\n type: 'motion',\n motion: 'moveToMatchedSymbol',\n motionArgs: {\n inclusive: true,\n toJumplist: true\n }\n }, {\n keys: 'f',\n type: 'motion',\n motion: 'moveToCharacter',\n motionArgs: {\n forward: true,\n inclusive: true\n }\n }, {\n keys: 'F',\n type: 'motion',\n motion: 'moveToCharacter',\n motionArgs: {\n forward: false\n }\n }, {\n keys: 't',\n type: 'motion',\n motion: 'moveTillCharacter',\n motionArgs: {\n forward: true,\n inclusive: true\n }\n }, {\n keys: 'T',\n type: 'motion',\n motion: 'moveTillCharacter',\n motionArgs: {\n forward: false\n }\n }, {\n keys: ';',\n type: 'motion',\n motion: 'repeatLastCharacterSearch',\n motionArgs: {\n forward: true\n }\n }, {\n keys: ',',\n type: 'motion',\n motion: 'repeatLastCharacterSearch',\n motionArgs: {\n forward: false\n }\n }, {\n keys: '\\'',\n type: 'motion',\n motion: 'goToMark',\n motionArgs: {\n toJumplist: true,\n linewise: true\n }\n }, {\n keys: '`',\n type: 'motion',\n motion: 'goToMark',\n motionArgs: {\n toJumplist: true\n }\n }, {\n keys: ']`',\n type: 'motion',\n motion: 'jumpToMark',\n motionArgs: {\n forward: true\n }\n }, {\n keys: '[`',\n type: 'motion',\n motion: 'jumpToMark',\n motionArgs: {\n forward: false\n }\n }, {\n keys: ']\\'',\n type: 'motion',\n motion: 'jumpToMark',\n motionArgs: {\n forward: true,\n linewise: true\n }\n }, {\n keys: '[\\'',\n type: 'motion',\n motion: 'jumpToMark',\n motionArgs: {\n forward: false,\n linewise: true\n }\n }, // the next two aren't motions but must come before more general motion declarations\n {\n keys: ']p',\n type: 'action',\n action: 'paste',\n isEdit: true,\n actionArgs: {\n after: true,\n isEdit: true,\n matchIndent: true\n }\n }, {\n keys: '[p',\n type: 'action',\n action: 'paste',\n isEdit: true,\n actionArgs: {\n after: false,\n isEdit: true,\n matchIndent: true\n }\n }, {\n keys: ']',\n type: 'motion',\n motion: 'moveToSymbol',\n motionArgs: {\n forward: true,\n toJumplist: true\n }\n }, {\n keys: '[',\n type: 'motion',\n motion: 'moveToSymbol',\n motionArgs: {\n forward: false,\n toJumplist: true\n }\n }, {\n keys: '|',\n type: 'motion',\n motion: 'moveToColumn'\n }, {\n keys: 'o',\n type: 'motion',\n motion: 'moveToOtherHighlightedEnd',\n context: 'visual'\n }, {\n keys: 'O',\n type: 'motion',\n motion: 'moveToOtherHighlightedEnd',\n motionArgs: {\n sameLine: true\n },\n context: 'visual'\n }, // Operators\n {\n keys: 'd',\n type: 'operator',\n operator: 'delete'\n }, {\n keys: 'y',\n type: 'operator',\n operator: 'yank'\n }, {\n keys: 'c',\n type: 'operator',\n operator: 'change'\n }, {\n keys: '=',\n type: 'operator',\n operator: 'indentAuto'\n }, {\n keys: '>',\n type: 'operator',\n operator: 'indent',\n operatorArgs: {\n indentRight: true\n }\n }, {\n keys: '<',\n type: 'operator',\n operator: 'indent',\n operatorArgs: {\n indentRight: false\n }\n }, {\n keys: 'g~',\n type: 'operator',\n operator: 'changeCase'\n }, {\n keys: 'gu',\n type: 'operator',\n operator: 'changeCase',\n operatorArgs: {\n toLower: true\n },\n isEdit: true\n }, {\n keys: 'gU',\n type: 'operator',\n operator: 'changeCase',\n operatorArgs: {\n toLower: false\n },\n isEdit: true\n }, {\n keys: 'n',\n type: 'motion',\n motion: 'findNext',\n motionArgs: {\n forward: true,\n toJumplist: true\n }\n }, {\n keys: 'N',\n type: 'motion',\n motion: 'findNext',\n motionArgs: {\n forward: false,\n toJumplist: true\n }\n }, // Operator-Motion dual commands\n {\n keys: 'x',\n type: 'operatorMotion',\n operator: 'delete',\n motion: 'moveByCharacters',\n motionArgs: {\n forward: true\n },\n operatorMotionArgs: {\n visualLine: false\n }\n }, {\n keys: 'X',\n type: 'operatorMotion',\n operator: 'delete',\n motion: 'moveByCharacters',\n motionArgs: {\n forward: false\n },\n operatorMotionArgs: {\n visualLine: true\n }\n }, {\n keys: 'D',\n type: 'operatorMotion',\n operator: 'delete',\n motion: 'moveToEol',\n motionArgs: {\n inclusive: true\n },\n context: 'normal'\n }, {\n keys: 'D',\n type: 'operator',\n operator: 'delete',\n operatorArgs: {\n linewise: true\n },\n context: 'visual'\n }, {\n keys: 'Y',\n type: 'operatorMotion',\n operator: 'yank',\n motion: 'expandToLine',\n motionArgs: {\n linewise: true\n },\n context: 'normal'\n }, {\n keys: 'Y',\n type: 'operator',\n operator: 'yank',\n operatorArgs: {\n linewise: true\n },\n context: 'visual'\n }, {\n keys: 'C',\n type: 'operatorMotion',\n operator: 'change',\n motion: 'moveToEol',\n motionArgs: {\n inclusive: true\n },\n context: 'normal'\n }, {\n keys: 'C',\n type: 'operator',\n operator: 'change',\n operatorArgs: {\n linewise: true\n },\n context: 'visual'\n }, {\n keys: '~',\n type: 'operatorMotion',\n operator: 'changeCase',\n motion: 'moveByCharacters',\n motionArgs: {\n forward: true\n },\n operatorArgs: {\n shouldMoveCursor: true\n },\n context: 'normal'\n }, {\n keys: '~',\n type: 'operator',\n operator: 'changeCase',\n context: 'visual'\n }, {\n keys: '',\n type: 'operatorMotion',\n operator: 'delete',\n motion: 'moveByWords',\n motionArgs: {\n forward: false,\n wordEnd: false\n },\n context: 'insert'\n }, //ignore C-w in normal mode\n {\n keys: '',\n type: 'idle',\n context: 'normal'\n }, // Actions\n {\n keys: '',\n type: 'action',\n action: 'jumpListWalk',\n actionArgs: {\n forward: true\n }\n }, {\n keys: '',\n type: 'action',\n action: 'jumpListWalk',\n actionArgs: {\n forward: false\n }\n }, {\n keys: '',\n type: 'action',\n action: 'scroll',\n actionArgs: {\n forward: true,\n linewise: true\n }\n }, {\n keys: '',\n type: 'action',\n action: 'scroll',\n actionArgs: {\n forward: false,\n linewise: true\n }\n }, {\n keys: 'a',\n type: 'action',\n action: 'enterInsertMode',\n isEdit: true,\n actionArgs: {\n insertAt: 'charAfter'\n },\n context: 'normal'\n }, {\n keys: 'A',\n type: 'action',\n action: 'enterInsertMode',\n isEdit: true,\n actionArgs: {\n insertAt: 'eol'\n },\n context: 'normal'\n }, {\n keys: 'A',\n type: 'action',\n action: 'enterInsertMode',\n isEdit: true,\n actionArgs: {\n insertAt: 'endOfSelectedArea'\n },\n context: 'visual'\n }, {\n keys: 'i',\n type: 'action',\n action: 'enterInsertMode',\n isEdit: true,\n actionArgs: {\n insertAt: 'inplace'\n },\n context: 'normal'\n }, {\n keys: 'I',\n type: 'action',\n action: 'enterInsertMode',\n isEdit: true,\n actionArgs: {\n insertAt: 'firstNonBlank'\n },\n context: 'normal'\n }, {\n keys: 'I',\n type: 'action',\n action: 'enterInsertMode',\n isEdit: true,\n actionArgs: {\n insertAt: 'startOfSelectedArea'\n },\n context: 'visual'\n }, {\n keys: 'o',\n type: 'action',\n action: 'newLineAndEnterInsertMode',\n isEdit: true,\n interlaceInsertRepeat: true,\n actionArgs: {\n after: true\n },\n context: 'normal'\n }, {\n keys: 'O',\n type: 'action',\n action: 'newLineAndEnterInsertMode',\n isEdit: true,\n interlaceInsertRepeat: true,\n actionArgs: {\n after: false\n },\n context: 'normal'\n }, {\n keys: 'v',\n type: 'action',\n action: 'toggleVisualMode'\n }, {\n keys: 'V',\n type: 'action',\n action: 'toggleVisualMode',\n actionArgs: {\n linewise: true\n }\n }, {\n keys: '',\n type: 'action',\n action: 'toggleVisualMode',\n actionArgs: {\n blockwise: true\n }\n }, {\n keys: '',\n type: 'action',\n action: 'toggleVisualMode',\n actionArgs: {\n blockwise: true\n }\n }, {\n keys: 'gv',\n type: 'action',\n action: 'reselectLastSelection'\n }, {\n keys: 'J',\n type: 'action',\n action: 'joinLines',\n isEdit: true\n }, {\n keys: 'p',\n type: 'action',\n action: 'paste',\n isEdit: true,\n actionArgs: {\n after: true,\n isEdit: true\n }\n }, {\n keys: 'P',\n type: 'action',\n action: 'paste',\n isEdit: true,\n actionArgs: {\n after: false,\n isEdit: true\n }\n }, {\n keys: 'r',\n type: 'action',\n action: 'replace',\n isEdit: true\n }, {\n keys: '@',\n type: 'action',\n action: 'replayMacro'\n }, {\n keys: 'q',\n type: 'action',\n action: 'enterMacroRecordMode'\n }, // Handle Replace-mode as a special case of insert mode.\n {\n keys: 'R',\n type: 'action',\n action: 'enterInsertMode',\n isEdit: true,\n actionArgs: {\n replace: true\n }\n }, {\n keys: 'u',\n type: 'action',\n action: 'undo',\n context: 'normal'\n }, {\n keys: 'u',\n type: 'operator',\n operator: 'changeCase',\n operatorArgs: {\n toLower: true\n },\n context: 'visual',\n isEdit: true\n }, {\n keys: 'U',\n type: 'operator',\n operator: 'changeCase',\n operatorArgs: {\n toLower: false\n },\n context: 'visual',\n isEdit: true\n }, {\n keys: '',\n type: 'action',\n action: 'redo'\n }, {\n keys: 'm',\n type: 'action',\n action: 'setMark'\n }, {\n keys: '\"',\n type: 'action',\n action: 'setRegister'\n }, {\n keys: 'zz',\n type: 'action',\n action: 'scrollToCursor',\n actionArgs: {\n position: 'center'\n }\n }, {\n keys: 'z.',\n type: 'action',\n action: 'scrollToCursor',\n actionArgs: {\n position: 'center'\n },\n motion: 'moveToFirstNonWhiteSpaceCharacter'\n }, {\n keys: 'zt',\n type: 'action',\n action: 'scrollToCursor',\n actionArgs: {\n position: 'top'\n }\n }, {\n keys: 'z',\n type: 'action',\n action: 'scrollToCursor',\n actionArgs: {\n position: 'top'\n },\n motion: 'moveToFirstNonWhiteSpaceCharacter'\n }, {\n keys: 'z-',\n type: 'action',\n action: 'scrollToCursor',\n actionArgs: {\n position: 'bottom'\n }\n }, {\n keys: 'zb',\n type: 'action',\n action: 'scrollToCursor',\n actionArgs: {\n position: 'bottom'\n },\n motion: 'moveToFirstNonWhiteSpaceCharacter'\n }, {\n keys: '.',\n type: 'action',\n action: 'repeatLastEdit'\n }, {\n keys: '',\n type: 'action',\n action: 'incrementNumberToken',\n isEdit: true,\n actionArgs: {\n increase: true,\n backtrack: false\n }\n }, {\n keys: '',\n type: 'action',\n action: 'incrementNumberToken',\n isEdit: true,\n actionArgs: {\n increase: false,\n backtrack: false\n }\n }, {\n keys: '',\n type: 'action',\n action: 'indent',\n actionArgs: {\n indentRight: true\n },\n context: 'insert'\n }, {\n keys: '',\n type: 'action',\n action: 'indent',\n actionArgs: {\n indentRight: false\n },\n context: 'insert'\n }, // Text object motions\n {\n keys: 'a',\n type: 'motion',\n motion: 'textObjectManipulation'\n }, {\n keys: 'i',\n type: 'motion',\n motion: 'textObjectManipulation',\n motionArgs: {\n textObjectInner: true\n }\n }, // Search\n {\n keys: '/',\n type: 'search',\n searchArgs: {\n forward: true,\n querySrc: 'prompt',\n toJumplist: true\n }\n }, {\n keys: '?',\n type: 'search',\n searchArgs: {\n forward: false,\n querySrc: 'prompt',\n toJumplist: true\n }\n }, {\n keys: '*',\n type: 'search',\n searchArgs: {\n forward: true,\n querySrc: 'wordUnderCursor',\n wholeWordOnly: true,\n toJumplist: true\n }\n }, {\n keys: '#',\n type: 'search',\n searchArgs: {\n forward: false,\n querySrc: 'wordUnderCursor',\n wholeWordOnly: true,\n toJumplist: true\n }\n }, {\n keys: 'g*',\n type: 'search',\n searchArgs: {\n forward: true,\n querySrc: 'wordUnderCursor',\n toJumplist: true\n }\n }, {\n keys: 'g#',\n type: 'search',\n searchArgs: {\n forward: false,\n querySrc: 'wordUnderCursor',\n toJumplist: true\n }\n }, // Ex command\n {\n keys: ':',\n type: 'ex'\n }];\n var defaultKeymapLength = defaultKeymap.length;\n /**\n * Ex commands\n * Care must be taken when adding to the default Ex command map. For any\n * pair of commands that have a shared prefix, at least one of their\n * shortNames must not match the prefix of the other command.\n */\n\n var defaultExCommandMap = [{\n name: 'colorscheme',\n shortName: 'colo'\n }, {\n name: 'map'\n }, {\n name: 'imap',\n shortName: 'im'\n }, {\n name: 'nmap',\n shortName: 'nm'\n }, {\n name: 'vmap',\n shortName: 'vm'\n }, {\n name: 'unmap'\n }, {\n name: 'write',\n shortName: 'w'\n }, {\n name: 'undo',\n shortName: 'u'\n }, {\n name: 'redo',\n shortName: 'red'\n }, {\n name: 'set',\n shortName: 'se'\n }, {\n name: 'set',\n shortName: 'se'\n }, {\n name: 'setlocal',\n shortName: 'setl'\n }, {\n name: 'setglobal',\n shortName: 'setg'\n }, {\n name: 'sort',\n shortName: 'sor'\n }, {\n name: 'substitute',\n shortName: 's',\n possiblyAsync: true\n }, {\n name: 'nohlsearch',\n shortName: 'noh'\n }, {\n name: 'yank',\n shortName: 'y'\n }, {\n name: 'delmarks',\n shortName: 'delm'\n }, {\n name: 'registers',\n shortName: 'reg',\n excludeFromCommandHistory: true\n }, {\n name: 'global',\n shortName: 'g'\n }];\n var Pos = CodeMirror.Pos;\n\n var Vim = function Vim() {\n function enterVimMode(cm) {\n cm.setOption('disableInput', true);\n cm.setOption('showCursorWhenSelecting', false);\n CodeMirror.signal(cm, \"vim-mode-change\", {\n mode: \"normal\"\n });\n cm.on('cursorActivity', onCursorActivity);\n maybeInitVimState(cm);\n CodeMirror.on(cm.getInputField(), 'paste', getOnPasteFn(cm));\n }\n\n function leaveVimMode(cm) {\n cm.setOption('disableInput', false);\n cm.off('cursorActivity', onCursorActivity);\n CodeMirror.off(cm.getInputField(), 'paste', getOnPasteFn(cm));\n cm.state.vim = null;\n }\n\n function detachVimMap(cm, next) {\n if (this == CodeMirror.keyMap.vim) {\n CodeMirror.rmClass(cm.getWrapperElement(), \"cm-fat-cursor\");\n\n if (cm.getOption(\"inputStyle\") == \"contenteditable\" && document.body.style.caretColor != null) {\n disableFatCursorMark(cm);\n cm.getInputField().style.caretColor = \"\";\n }\n }\n\n if (!next || next.attach != attachVimMap) leaveVimMode(cm);\n }\n\n function attachVimMap(cm, prev) {\n if (this == CodeMirror.keyMap.vim) {\n CodeMirror.addClass(cm.getWrapperElement(), \"cm-fat-cursor\");\n\n if (cm.getOption(\"inputStyle\") == \"contenteditable\" && document.body.style.caretColor != null) {\n enableFatCursorMark(cm);\n cm.getInputField().style.caretColor = \"transparent\";\n }\n }\n\n if (!prev || prev.attach != attachVimMap) enterVimMode(cm);\n }\n\n function updateFatCursorMark(cm) {\n if (!cm.state.fatCursorMarks) return;\n clearFatCursorMark(cm);\n var ranges = cm.listSelections(),\n result = [];\n\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n\n if (range.empty()) {\n if (range.anchor.ch < cm.getLine(range.anchor.line).length) {\n result.push(cm.markText(range.anchor, Pos(range.anchor.line, range.anchor.ch + 1), {\n className: \"cm-fat-cursor-mark\"\n }));\n } else {\n var widget = document.createElement(\"span\");\n widget.textContent = \"\\xA0\";\n widget.className = \"cm-fat-cursor-mark\";\n result.push(cm.setBookmark(range.anchor, {\n widget: widget\n }));\n }\n }\n }\n\n cm.state.fatCursorMarks = result;\n }\n\n function clearFatCursorMark(cm) {\n var marks = cm.state.fatCursorMarks;\n if (marks) for (var i = 0; i < marks.length; i++) {\n marks[i].clear();\n }\n }\n\n function enableFatCursorMark(cm) {\n cm.state.fatCursorMarks = [];\n updateFatCursorMark(cm);\n cm.on(\"cursorActivity\", updateFatCursorMark);\n }\n\n function disableFatCursorMark(cm) {\n clearFatCursorMark(cm);\n cm.off(\"cursorActivity\", updateFatCursorMark); // explicitly set fatCursorMarks to null because event listener above\n // can be invoke after removing it, if off is called from operation\n\n cm.state.fatCursorMarks = null;\n } // Deprecated, simply setting the keymap works again.\n\n\n CodeMirror.defineOption('vimMode', false, function (cm, val, prev) {\n if (val && cm.getOption(\"keyMap\") != \"vim\") cm.setOption(\"keyMap\", \"vim\");else if (!val && prev != CodeMirror.Init && /^vim/.test(cm.getOption(\"keyMap\"))) cm.setOption(\"keyMap\", \"default\");\n });\n\n function cmKey(key, cm) {\n if (!cm) {\n return undefined;\n }\n\n if (this[key]) {\n return this[key];\n }\n\n var vimKey = cmKeyToVimKey(key);\n\n if (!vimKey) {\n return false;\n }\n\n var cmd = CodeMirror.Vim.findKey(cm, vimKey);\n\n if (typeof cmd == 'function') {\n CodeMirror.signal(cm, 'vim-keypress', vimKey);\n }\n\n return cmd;\n }\n\n var modifiers = {\n 'Shift': 'S',\n 'Ctrl': 'C',\n 'Alt': 'A',\n 'Cmd': 'D',\n 'Mod': 'A'\n };\n var specialKeys = {\n Enter: 'CR',\n Backspace: 'BS',\n Delete: 'Del',\n Insert: 'Ins'\n };\n\n function cmKeyToVimKey(key) {\n if (key.charAt(0) == '\\'') {\n // Keypress character binding of format \"'a'\"\n return key.charAt(1);\n }\n\n var pieces = key.split(/-(?!$)/);\n var lastPiece = pieces[pieces.length - 1];\n\n if (pieces.length == 1 && pieces[0].length == 1) {\n // No-modifier bindings use literal character bindings above. Skip.\n return false;\n } else if (pieces.length == 2 && pieces[0] == 'Shift' && lastPiece.length == 1) {\n // Ignore Shift+char bindings as they should be handled by literal character.\n return false;\n }\n\n var hasCharacter = false;\n\n for (var i = 0; i < pieces.length; i++) {\n var piece = pieces[i];\n\n if (piece in modifiers) {\n pieces[i] = modifiers[piece];\n } else {\n hasCharacter = true;\n }\n\n if (piece in specialKeys) {\n pieces[i] = specialKeys[piece];\n }\n }\n\n if (!hasCharacter) {\n // Vim does not support modifier only keys.\n return false;\n } // TODO: Current bindings expect the character to be lower case, but\n // it looks like vim key notation uses upper case.\n\n\n if (isUpperCase(lastPiece)) {\n pieces[pieces.length - 1] = lastPiece.toLowerCase();\n }\n\n return '<' + pieces.join('-') + '>';\n }\n\n function getOnPasteFn(cm) {\n var vim = cm.state.vim;\n\n if (!vim.onPasteFn) {\n vim.onPasteFn = function () {\n if (!vim.insertMode) {\n cm.setCursor(offsetCursor(cm.getCursor(), 0, 1));\n actions.enterInsertMode(cm, {}, vim);\n }\n };\n }\n\n return vim.onPasteFn;\n }\n\n var numberRegex = /[\\d]/;\n var wordCharTest = [CodeMirror.isWordChar, function (ch) {\n return ch && !CodeMirror.isWordChar(ch) && !/\\s/.test(ch);\n }],\n bigWordCharTest = [function (ch) {\n return /\\S/.test(ch);\n }];\n\n function makeKeyRange(start, size) {\n var keys = [];\n\n for (var i = start; i < start + size; i++) {\n keys.push(String.fromCharCode(i));\n }\n\n return keys;\n }\n\n var upperCaseAlphabet = makeKeyRange(65, 26);\n var lowerCaseAlphabet = makeKeyRange(97, 26);\n var numbers = makeKeyRange(48, 10);\n var validMarks = [].concat(upperCaseAlphabet, lowerCaseAlphabet, numbers, ['<', '>']);\n var validRegisters = [].concat(upperCaseAlphabet, lowerCaseAlphabet, numbers, ['-', '\"', '.', ':', '/']);\n\n function isLine(cm, line) {\n return line >= cm.firstLine() && line <= cm.lastLine();\n }\n\n function isLowerCase(k) {\n return /^[a-z]$/.test(k);\n }\n\n function isMatchableSymbol(k) {\n return '()[]{}'.indexOf(k) != -1;\n }\n\n function isNumber(k) {\n return numberRegex.test(k);\n }\n\n function isUpperCase(k) {\n return /^[A-Z]$/.test(k);\n }\n\n function isWhiteSpaceString(k) {\n return /^\\s*$/.test(k);\n }\n\n function isEndOfSentenceSymbol(k) {\n return '.?!'.indexOf(k) != -1;\n }\n\n function inArray(val, arr) {\n for (var i = 0; i < arr.length; i++) {\n if (arr[i] == val) {\n return true;\n }\n }\n\n return false;\n }\n\n var options = {};\n\n function defineOption(name, defaultValue, type, aliases, callback) {\n if (defaultValue === undefined && !callback) {\n throw Error('defaultValue is required unless callback is provided');\n }\n\n if (!type) {\n type = 'string';\n }\n\n options[name] = {\n type: type,\n defaultValue: defaultValue,\n callback: callback\n };\n\n if (aliases) {\n for (var i = 0; i < aliases.length; i++) {\n options[aliases[i]] = options[name];\n }\n }\n\n if (defaultValue) {\n setOption(name, defaultValue);\n }\n }\n\n function setOption(name, value, cm, cfg) {\n var option = options[name];\n cfg = cfg || {};\n var scope = cfg.scope;\n\n if (!option) {\n return new Error('Unknown option: ' + name);\n }\n\n if (option.type == 'boolean') {\n if (value && value !== true) {\n return new Error('Invalid argument: ' + name + '=' + value);\n } else if (value !== false) {\n // Boolean options are set to true if value is not defined.\n value = true;\n }\n }\n\n if (option.callback) {\n if (scope !== 'local') {\n option.callback(value, undefined);\n }\n\n if (scope !== 'global' && cm) {\n option.callback(value, cm);\n }\n } else {\n if (scope !== 'local') {\n option.value = option.type == 'boolean' ? !!value : value;\n }\n\n if (scope !== 'global' && cm) {\n cm.state.vim.options[name] = {\n value: value\n };\n }\n }\n }\n\n function getOption(name, cm, cfg) {\n var option = options[name];\n cfg = cfg || {};\n var scope = cfg.scope;\n\n if (!option) {\n return new Error('Unknown option: ' + name);\n }\n\n if (option.callback) {\n var local = cm && option.callback(undefined, cm);\n\n if (scope !== 'global' && local !== undefined) {\n return local;\n }\n\n if (scope !== 'local') {\n return option.callback();\n }\n\n return;\n } else {\n var local = scope !== 'global' && cm && cm.state.vim.options[name];\n return (local || scope !== 'local' && option || {}).value;\n }\n }\n\n defineOption('filetype', undefined, 'string', ['ft'], function (name, cm) {\n // Option is local. Do nothing for global.\n if (cm === undefined) {\n return;\n } // The 'filetype' option proxies to the CodeMirror 'mode' option.\n\n\n if (name === undefined) {\n var mode = cm.getOption('mode');\n return mode == 'null' ? '' : mode;\n } else {\n var mode = name == '' ? 'null' : name;\n cm.setOption('mode', mode);\n }\n });\n\n var createCircularJumpList = function createCircularJumpList() {\n var size = 100;\n var pointer = -1;\n var head = 0;\n var tail = 0;\n var buffer = new Array(size);\n\n function add(cm, oldCur, newCur) {\n var current = pointer % size;\n var curMark = buffer[current];\n\n function useNextSlot(cursor) {\n var next = ++pointer % size;\n var trashMark = buffer[next];\n\n if (trashMark) {\n trashMark.clear();\n }\n\n buffer[next] = cm.setBookmark(cursor);\n }\n\n if (curMark) {\n var markPos = curMark.find(); // avoid recording redundant cursor position\n\n if (markPos && !cursorEqual(markPos, oldCur)) {\n useNextSlot(oldCur);\n }\n } else {\n useNextSlot(oldCur);\n }\n\n useNextSlot(newCur);\n head = pointer;\n tail = pointer - size + 1;\n\n if (tail < 0) {\n tail = 0;\n }\n }\n\n function move(cm, offset) {\n pointer += offset;\n\n if (pointer > head) {\n pointer = head;\n } else if (pointer < tail) {\n pointer = tail;\n }\n\n var mark = buffer[(size + pointer) % size]; // skip marks that are temporarily removed from text buffer\n\n if (mark && !mark.find()) {\n var inc = offset > 0 ? 1 : -1;\n var newCur;\n var oldCur = cm.getCursor();\n\n do {\n pointer += inc;\n mark = buffer[(size + pointer) % size]; // skip marks that are the same as current position\n\n if (mark && (newCur = mark.find()) && !cursorEqual(oldCur, newCur)) {\n break;\n }\n } while (pointer < head && pointer > tail);\n }\n\n return mark;\n }\n\n return {\n cachedCursor: undefined,\n //used for # and * jumps\n add: add,\n move: move\n };\n }; // Returns an object to track the changes associated insert mode. It\n // clones the object that is passed in, or creates an empty object one if\n // none is provided.\n\n\n var createInsertModeChanges = function createInsertModeChanges(c) {\n if (c) {\n // Copy construction\n return {\n changes: c.changes,\n expectCursorActivityForChange: c.expectCursorActivityForChange\n };\n }\n\n return {\n // Change list\n changes: [],\n // Set to true on change, false on cursorActivity.\n expectCursorActivityForChange: false\n };\n };\n\n function MacroModeState() {\n this.latestRegister = undefined;\n this.isPlaying = false;\n this.isRecording = false;\n this.replaySearchQueries = [];\n this.onRecordingDone = undefined;\n this.lastInsertModeChanges = createInsertModeChanges();\n }\n\n MacroModeState.prototype = {\n exitMacroRecordMode: function exitMacroRecordMode() {\n var macroModeState = vimGlobalState.macroModeState;\n\n if (macroModeState.onRecordingDone) {\n macroModeState.onRecordingDone(); // close dialog\n }\n\n macroModeState.onRecordingDone = undefined;\n macroModeState.isRecording = false;\n },\n enterMacroRecordMode: function enterMacroRecordMode(cm, registerName) {\n var register = vimGlobalState.registerController.getRegister(registerName);\n\n if (register) {\n register.clear();\n this.latestRegister = registerName;\n\n if (cm.openDialog) {\n this.onRecordingDone = cm.openDialog('(recording)[' + registerName + ']', null, {\n bottom: true\n });\n }\n\n this.isRecording = true;\n }\n }\n };\n\n function maybeInitVimState(cm) {\n if (!cm.state.vim) {\n // Store instance state in the CodeMirror object.\n cm.state.vim = {\n inputState: new InputState(),\n // Vim's input state that triggered the last edit, used to repeat\n // motions and operators with '.'.\n lastEditInputState: undefined,\n // Vim's action command before the last edit, used to repeat actions\n // with '.' and insert mode repeat.\n lastEditActionCommand: undefined,\n // When using jk for navigation, if you move from a longer line to a\n // shorter line, the cursor may clip to the end of the shorter line.\n // If j is pressed again and cursor goes to the next line, the\n // cursor should go back to its horizontal position on the longer\n // line if it can. This is to keep track of the horizontal position.\n lastHPos: -1,\n // Doing the same with screen-position for gj/gk\n lastHSPos: -1,\n // The last motion command run. Cleared if a non-motion command gets\n // executed in between.\n lastMotion: null,\n marks: {},\n // Mark for rendering fake cursor for visual mode.\n fakeCursor: null,\n insertMode: false,\n // Repeat count for changes made in insert mode, triggered by key\n // sequences like 3,i. Only exists when insertMode is true.\n insertModeRepeat: undefined,\n visualMode: false,\n // If we are in visual line mode. No effect if visualMode is false.\n visualLine: false,\n visualBlock: false,\n lastSelection: null,\n lastPastedText: null,\n sel: {},\n // Buffer-local/window-local values of vim options.\n options: {}\n };\n }\n\n return cm.state.vim;\n }\n\n var vimGlobalState;\n\n function resetVimGlobalState() {\n vimGlobalState = {\n // The current search query.\n searchQuery: null,\n // Whether we are searching backwards.\n searchIsReversed: false,\n // Replace part of the last substituted pattern\n lastSubstituteReplacePart: undefined,\n jumpList: createCircularJumpList(),\n macroModeState: new MacroModeState(),\n // Recording latest f, t, F or T motion command.\n lastCharacterSearch: {\n increment: 0,\n forward: true,\n selectedCharacter: ''\n },\n registerController: new RegisterController({}),\n // search history buffer\n searchHistoryController: new HistoryController(),\n // ex Command history buffer\n exCommandHistoryController: new HistoryController()\n };\n\n for (var optionName in options) {\n var option = options[optionName];\n option.value = option.defaultValue;\n }\n }\n\n var lastInsertModeKeyTimer;\n var vimApi = {\n buildKeyMap: function buildKeyMap() {// TODO: Convert keymap into dictionary format for fast lookup.\n },\n // Testing hook, though it might be useful to expose the register\n // controller anyways.\n getRegisterController: function getRegisterController() {\n return vimGlobalState.registerController;\n },\n // Testing hook.\n resetVimGlobalState_: resetVimGlobalState,\n // Testing hook.\n getVimGlobalState_: function getVimGlobalState_() {\n return vimGlobalState;\n },\n // Testing hook.\n maybeInitVimState_: maybeInitVimState,\n suppressErrorLogging: false,\n InsertModeKey: InsertModeKey,\n map: function map(lhs, rhs, ctx) {\n // Add user defined key bindings.\n exCommandDispatcher.map(lhs, rhs, ctx);\n },\n unmap: function unmap(lhs, ctx) {\n exCommandDispatcher.unmap(lhs, ctx);\n },\n // Non-recursive map function.\n // NOTE: This will not create mappings to key maps that aren't present\n // in the default key map. See TODO at bottom of function.\n noremap: function noremap(lhs, rhs, ctx) {\n function toCtxArray(ctx) {\n return ctx ? [ctx] : ['normal', 'insert', 'visual'];\n }\n\n var ctxsToMap = toCtxArray(ctx); // Look through all actual defaults to find a map candidate.\n\n var actualLength = defaultKeymap.length,\n origLength = defaultKeymapLength;\n\n for (var i = actualLength - origLength; i < actualLength && ctxsToMap.length; i++) {\n var mapping = defaultKeymap[i]; // Omit mappings that operate in the wrong context(s) and those of invalid type.\n\n if (mapping.keys == rhs && (!ctx || !mapping.context || mapping.context === ctx) && mapping.type.substr(0, 2) !== 'ex' && mapping.type.substr(0, 3) !== 'key') {\n // Make a shallow copy of the original keymap entry.\n var newMapping = {};\n\n for (var key in mapping) {\n newMapping[key] = mapping[key];\n } // Modify it point to the new mapping with the proper context.\n\n\n newMapping.keys = lhs;\n\n if (ctx && !newMapping.context) {\n newMapping.context = ctx;\n } // Add it to the keymap with a higher priority than the original.\n\n\n this._mapCommand(newMapping); // Record the mapped contexts as complete.\n\n\n var mappedCtxs = toCtxArray(mapping.context);\n ctxsToMap = ctxsToMap.filter(function (el) {\n return mappedCtxs.indexOf(el) === -1;\n });\n }\n } // TODO: Create non-recursive keyToKey mappings for the unmapped contexts once those exist.\n\n },\n // Remove all user-defined mappings for the provided context.\n mapclear: function mapclear(ctx) {\n // Partition the existing keymap into user-defined and true defaults.\n var actualLength = defaultKeymap.length,\n origLength = defaultKeymapLength;\n var userKeymap = defaultKeymap.slice(0, actualLength - origLength);\n defaultKeymap = defaultKeymap.slice(actualLength - origLength);\n\n if (ctx) {\n // If a specific context is being cleared, we need to keep mappings\n // from all other contexts.\n for (var i = userKeymap.length - 1; i >= 0; i--) {\n var mapping = userKeymap[i];\n\n if (ctx !== mapping.context) {\n if (mapping.context) {\n this._mapCommand(mapping);\n } else {\n // `mapping` applies to all contexts so create keymap copies\n // for each context except the one being cleared.\n var contexts = ['normal', 'insert', 'visual'];\n\n for (var j in contexts) {\n if (contexts[j] !== ctx) {\n var newMapping = {};\n\n for (var key in mapping) {\n newMapping[key] = mapping[key];\n }\n\n newMapping.context = contexts[j];\n\n this._mapCommand(newMapping);\n }\n }\n }\n }\n }\n }\n },\n // TODO: Expose setOption and getOption as instance methods. Need to decide how to namespace\n // them, or somehow make them work with the existing CodeMirror setOption/getOption API.\n setOption: setOption,\n getOption: getOption,\n defineOption: defineOption,\n defineEx: function defineEx(name, prefix, func) {\n if (!prefix) {\n prefix = name;\n } else if (name.indexOf(prefix) !== 0) {\n throw new Error('(Vim.defineEx) \"' + prefix + '\" is not a prefix of \"' + name + '\", command not registered');\n }\n\n exCommands[name] = func;\n exCommandDispatcher.commandMap_[prefix] = {\n name: name,\n shortName: prefix,\n type: 'api'\n };\n },\n handleKey: function handleKey(cm, key, origin) {\n var command = this.findKey(cm, key, origin);\n\n if (typeof command === 'function') {\n return command();\n }\n },\n\n /**\n * This is the outermost function called by CodeMirror, after keys have\n * been mapped to their Vim equivalents.\n *\n * Finds a command based on the key (and cached keys if there is a\n * multi-key sequence). Returns `undefined` if no key is matched, a noop\n * function if a partial match is found (multi-key), and a function to\n * execute the bound command if a a key is matched. The function always\n * returns true.\n */\n findKey: function findKey(cm, key, origin) {\n var vim = maybeInitVimState(cm);\n\n function handleMacroRecording() {\n var macroModeState = vimGlobalState.macroModeState;\n\n if (macroModeState.isRecording) {\n if (key == 'q') {\n macroModeState.exitMacroRecordMode();\n clearInputState(cm);\n return true;\n }\n\n if (origin != 'mapping') {\n logKey(macroModeState, key);\n }\n }\n }\n\n function handleEsc() {\n if (key == '') {\n // Clear input state and get back to normal mode.\n clearInputState(cm);\n\n if (vim.visualMode) {\n exitVisualMode(cm);\n } else if (vim.insertMode) {\n exitInsertMode(cm);\n }\n\n return true;\n }\n }\n\n function doKeyToKey(keys) {\n // TODO: prevent infinite recursion.\n var match;\n\n while (keys) {\n // Pull off one command key, which is either a single character\n // or a special sequence wrapped in '<' and '>', e.g. ''.\n match = /<\\w+-.+?>|<\\w+>|./.exec(keys);\n key = match[0];\n keys = keys.substring(match.index + key.length);\n CodeMirror.Vim.handleKey(cm, key, 'mapping');\n }\n }\n\n function handleKeyInsertMode() {\n if (handleEsc()) {\n return true;\n }\n\n var keys = vim.inputState.keyBuffer = vim.inputState.keyBuffer + key;\n var keysAreChars = key.length == 1;\n var match = commandDispatcher.matchCommand(keys, defaultKeymap, vim.inputState, 'insert'); // Need to check all key substrings in insert mode.\n\n while (keys.length > 1 && match.type != 'full') {\n var keys = vim.inputState.keyBuffer = keys.slice(1);\n var thisMatch = commandDispatcher.matchCommand(keys, defaultKeymap, vim.inputState, 'insert');\n\n if (thisMatch.type != 'none') {\n match = thisMatch;\n }\n }\n\n if (match.type == 'none') {\n clearInputState(cm);\n return false;\n } else if (match.type == 'partial') {\n if (lastInsertModeKeyTimer) {\n window.clearTimeout(lastInsertModeKeyTimer);\n }\n\n lastInsertModeKeyTimer = window.setTimeout(function () {\n if (vim.insertMode && vim.inputState.keyBuffer) {\n clearInputState(cm);\n }\n }, getOption('insertModeEscKeysTimeout'));\n return !keysAreChars;\n }\n\n if (lastInsertModeKeyTimer) {\n window.clearTimeout(lastInsertModeKeyTimer);\n }\n\n if (keysAreChars) {\n var selections = cm.listSelections();\n\n for (var i = 0; i < selections.length; i++) {\n var here = selections[i].head;\n cm.replaceRange('', offsetCursor(here, 0, -(keys.length - 1)), here, '+input');\n }\n\n vimGlobalState.macroModeState.lastInsertModeChanges.changes.pop();\n }\n\n clearInputState(cm);\n return match.command;\n }\n\n function handleKeyNonInsertMode() {\n if (handleMacroRecording() || handleEsc()) {\n return true;\n }\n\n var keys = vim.inputState.keyBuffer = vim.inputState.keyBuffer + key;\n\n if (/^[1-9]\\d*$/.test(keys)) {\n return true;\n }\n\n var keysMatcher = /^(\\d*)(.*)$/.exec(keys);\n\n if (!keysMatcher) {\n clearInputState(cm);\n return false;\n }\n\n var context = vim.visualMode ? 'visual' : 'normal';\n var match = commandDispatcher.matchCommand(keysMatcher[2] || keysMatcher[1], defaultKeymap, vim.inputState, context);\n\n if (match.type == 'none') {\n clearInputState(cm);\n return false;\n } else if (match.type == 'partial') {\n return true;\n }\n\n vim.inputState.keyBuffer = '';\n var keysMatcher = /^(\\d*)(.*)$/.exec(keys);\n\n if (keysMatcher[1] && keysMatcher[1] != '0') {\n vim.inputState.pushRepeatDigit(keysMatcher[1]);\n }\n\n return match.command;\n }\n\n var command;\n\n if (vim.insertMode) {\n command = handleKeyInsertMode();\n } else {\n command = handleKeyNonInsertMode();\n }\n\n if (command === false) {\n return !vim.insertMode && key.length === 1 ? function () {\n return true;\n } : undefined;\n } else if (command === true) {\n // TODO: Look into using CodeMirror's multi-key handling.\n // Return no-op since we are caching the key. Counts as handled, but\n // don't want act on it just yet.\n return function () {\n return true;\n };\n } else {\n return function () {\n return cm.operation(function () {\n cm.curOp.isVimOp = true;\n\n try {\n if (command.type == 'keyToKey') {\n doKeyToKey(command.toKeys);\n } else {\n commandDispatcher.processCommand(cm, vim, command);\n }\n } catch (e) {\n // clear VIM state in case it's in a bad state.\n cm.state.vim = undefined;\n maybeInitVimState(cm);\n\n if (!CodeMirror.Vim.suppressErrorLogging) {\n console['log'](e);\n }\n\n throw e;\n }\n\n return true;\n });\n };\n }\n },\n handleEx: function handleEx(cm, input) {\n exCommandDispatcher.processCommand(cm, input);\n },\n defineMotion: defineMotion,\n defineAction: defineAction,\n defineOperator: defineOperator,\n mapCommand: mapCommand,\n _mapCommand: _mapCommand,\n defineRegister: defineRegister,\n exitVisualMode: exitVisualMode,\n exitInsertMode: exitInsertMode\n }; // Represents the current input state.\n\n function InputState() {\n this.prefixRepeat = [];\n this.motionRepeat = [];\n this.operator = null;\n this.operatorArgs = null;\n this.motion = null;\n this.motionArgs = null;\n this.keyBuffer = []; // For matching multi-key commands.\n\n this.registerName = null; // Defaults to the unnamed register.\n }\n\n InputState.prototype.pushRepeatDigit = function (n) {\n if (!this.operator) {\n this.prefixRepeat = this.prefixRepeat.concat(n);\n } else {\n this.motionRepeat = this.motionRepeat.concat(n);\n }\n };\n\n InputState.prototype.getRepeat = function () {\n var repeat = 0;\n\n if (this.prefixRepeat.length > 0 || this.motionRepeat.length > 0) {\n repeat = 1;\n\n if (this.prefixRepeat.length > 0) {\n repeat *= parseInt(this.prefixRepeat.join(''), 10);\n }\n\n if (this.motionRepeat.length > 0) {\n repeat *= parseInt(this.motionRepeat.join(''), 10);\n }\n }\n\n return repeat;\n };\n\n function clearInputState(cm, reason) {\n cm.state.vim.inputState = new InputState();\n CodeMirror.signal(cm, 'vim-command-done', reason);\n }\n /*\n * Register stores information about copy and paste registers. Besides\n * text, a register must store whether it is linewise (i.e., when it is\n * pasted, should it insert itself into a new line, or should the text be\n * inserted at the cursor position.)\n */\n\n\n function Register(text, linewise, blockwise) {\n this.clear();\n this.keyBuffer = [text || ''];\n this.insertModeChanges = [];\n this.searchQueries = [];\n this.linewise = !!linewise;\n this.blockwise = !!blockwise;\n }\n\n Register.prototype = {\n setText: function setText(text, linewise, blockwise) {\n this.keyBuffer = [text || ''];\n this.linewise = !!linewise;\n this.blockwise = !!blockwise;\n },\n pushText: function pushText(text, linewise) {\n // if this register has ever been set to linewise, use linewise.\n if (linewise) {\n if (!this.linewise) {\n this.keyBuffer.push('\\n');\n }\n\n this.linewise = true;\n }\n\n this.keyBuffer.push(text);\n },\n pushInsertModeChanges: function pushInsertModeChanges(changes) {\n this.insertModeChanges.push(createInsertModeChanges(changes));\n },\n pushSearchQuery: function pushSearchQuery(query) {\n this.searchQueries.push(query);\n },\n clear: function clear() {\n this.keyBuffer = [];\n this.insertModeChanges = [];\n this.searchQueries = [];\n this.linewise = false;\n },\n toString: function toString() {\n return this.keyBuffer.join('');\n }\n };\n /**\n * Defines an external register.\n *\n * The name should be a single character that will be used to reference the register.\n * The register should support setText, pushText, clear, and toString(). See Register\n * for a reference implementation.\n */\n\n function defineRegister(name, register) {\n var registers = vimGlobalState.registerController.registers;\n\n if (!name || name.length != 1) {\n throw Error('Register name must be 1 character');\n }\n\n if (registers[name]) {\n throw Error('Register already defined ' + name);\n }\n\n registers[name] = register;\n validRegisters.push(name);\n }\n /*\n * vim registers allow you to keep many independent copy and paste buffers.\n * See http://usevim.com/2012/04/13/registers/ for an introduction.\n *\n * RegisterController keeps the state of all the registers. An initial\n * state may be passed in. The unnamed register '\"' will always be\n * overridden.\n */\n\n\n function RegisterController(registers) {\n this.registers = registers;\n this.unnamedRegister = registers['\"'] = new Register();\n registers['.'] = new Register();\n registers[':'] = new Register();\n registers['/'] = new Register();\n }\n\n RegisterController.prototype = {\n pushText: function pushText(registerName, operator, text, linewise, blockwise) {\n if (linewise && text.charAt(text.length - 1) !== '\\n') {\n text += '\\n';\n } // Lowercase and uppercase registers refer to the same register.\n // Uppercase just means append.\n\n\n var register = this.isValidRegister(registerName) ? this.getRegister(registerName) : null; // if no register/an invalid register was specified, things go to the\n // default registers\n\n if (!register) {\n switch (operator) {\n case 'yank':\n // The 0 register contains the text from the most recent yank.\n this.registers['0'] = new Register(text, linewise, blockwise);\n break;\n\n case 'delete':\n case 'change':\n if (text.indexOf('\\n') == -1) {\n // Delete less than 1 line. Update the small delete register.\n this.registers['-'] = new Register(text, linewise);\n } else {\n // Shift down the contents of the numbered registers and put the\n // deleted text into register 1.\n this.shiftNumericRegisters_();\n this.registers['1'] = new Register(text, linewise);\n }\n\n break;\n } // Make sure the unnamed register is set to what just happened\n\n\n this.unnamedRegister.setText(text, linewise, blockwise);\n return;\n } // If we've gotten to this point, we've actually specified a register\n\n\n var append = isUpperCase(registerName);\n\n if (append) {\n register.pushText(text, linewise);\n } else {\n register.setText(text, linewise, blockwise);\n } // The unnamed register always has the same value as the last used\n // register.\n\n\n this.unnamedRegister.setText(register.toString(), linewise);\n },\n // Gets the register named @name. If one of @name doesn't already exist,\n // create it. If @name is invalid, return the unnamedRegister.\n getRegister: function getRegister(name) {\n if (!this.isValidRegister(name)) {\n return this.unnamedRegister;\n }\n\n name = name.toLowerCase();\n\n if (!this.registers[name]) {\n this.registers[name] = new Register();\n }\n\n return this.registers[name];\n },\n isValidRegister: function isValidRegister(name) {\n return name && inArray(name, validRegisters);\n },\n shiftNumericRegisters_: function shiftNumericRegisters_() {\n for (var i = 9; i >= 2; i--) {\n this.registers[i] = this.getRegister('' + (i - 1));\n }\n }\n };\n\n function HistoryController() {\n this.historyBuffer = [];\n this.iterator = 0;\n this.initialPrefix = null;\n }\n\n HistoryController.prototype = {\n // the input argument here acts a user entered prefix for a small time\n // until we start autocompletion in which case it is the autocompleted.\n nextMatch: function nextMatch(input, up) {\n var historyBuffer = this.historyBuffer;\n var dir = up ? -1 : 1;\n if (this.initialPrefix === null) this.initialPrefix = input;\n\n for (var i = this.iterator + dir; up ? i >= 0 : i < historyBuffer.length; i += dir) {\n var element = historyBuffer[i];\n\n for (var j = 0; j <= element.length; j++) {\n if (this.initialPrefix == element.substring(0, j)) {\n this.iterator = i;\n return element;\n }\n }\n } // should return the user input in case we reach the end of buffer.\n\n\n if (i >= historyBuffer.length) {\n this.iterator = historyBuffer.length;\n return this.initialPrefix;\n } // return the last autocompleted query or exCommand as it is.\n\n\n if (i < 0) return input;\n },\n pushInput: function pushInput(input) {\n var index = this.historyBuffer.indexOf(input);\n if (index > -1) this.historyBuffer.splice(index, 1);\n if (input.length) this.historyBuffer.push(input);\n },\n reset: function reset() {\n this.initialPrefix = null;\n this.iterator = this.historyBuffer.length;\n }\n };\n var commandDispatcher = {\n matchCommand: function matchCommand(keys, keyMap, inputState, context) {\n var matches = commandMatches(keys, keyMap, context, inputState);\n\n if (!matches.full && !matches.partial) {\n return {\n type: 'none'\n };\n } else if (!matches.full && matches.partial) {\n return {\n type: 'partial'\n };\n }\n\n var bestMatch;\n\n for (var i = 0; i < matches.full.length; i++) {\n var match = matches.full[i];\n\n if (!bestMatch) {\n bestMatch = match;\n }\n }\n\n if (bestMatch.keys.slice(-11) == '') {\n var character = lastChar(keys);\n if (!character) return {\n type: 'none'\n };\n inputState.selectedCharacter = character;\n }\n\n return {\n type: 'full',\n command: bestMatch\n };\n },\n processCommand: function processCommand(cm, vim, command) {\n vim.inputState.repeatOverride = command.repeatOverride;\n\n switch (command.type) {\n case 'motion':\n this.processMotion(cm, vim, command);\n break;\n\n case 'operator':\n this.processOperator(cm, vim, command);\n break;\n\n case 'operatorMotion':\n this.processOperatorMotion(cm, vim, command);\n break;\n\n case 'action':\n this.processAction(cm, vim, command);\n break;\n\n case 'search':\n this.processSearch(cm, vim, command);\n break;\n\n case 'ex':\n case 'keyToEx':\n this.processEx(cm, vim, command);\n break;\n\n default:\n break;\n }\n },\n processMotion: function processMotion(cm, vim, command) {\n vim.inputState.motion = command.motion;\n vim.inputState.motionArgs = copyArgs(command.motionArgs);\n this.evalInput(cm, vim);\n },\n processOperator: function processOperator(cm, vim, command) {\n var inputState = vim.inputState;\n\n if (inputState.operator) {\n if (inputState.operator == command.operator) {\n // Typing an operator twice like 'dd' makes the operator operate\n // linewise\n inputState.motion = 'expandToLine';\n inputState.motionArgs = {\n linewise: true\n };\n this.evalInput(cm, vim);\n return;\n } else {\n // 2 different operators in a row doesn't make sense.\n clearInputState(cm);\n }\n }\n\n inputState.operator = command.operator;\n inputState.operatorArgs = copyArgs(command.operatorArgs);\n\n if (vim.visualMode) {\n // Operating on a selection in visual mode. We don't need a motion.\n this.evalInput(cm, vim);\n }\n },\n processOperatorMotion: function processOperatorMotion(cm, vim, command) {\n var visualMode = vim.visualMode;\n var operatorMotionArgs = copyArgs(command.operatorMotionArgs);\n\n if (operatorMotionArgs) {\n // Operator motions may have special behavior in visual mode.\n if (visualMode && operatorMotionArgs.visualLine) {\n vim.visualLine = true;\n }\n }\n\n this.processOperator(cm, vim, command);\n\n if (!visualMode) {\n this.processMotion(cm, vim, command);\n }\n },\n processAction: function processAction(cm, vim, command) {\n var inputState = vim.inputState;\n var repeat = inputState.getRepeat();\n var repeatIsExplicit = !!repeat;\n var actionArgs = copyArgs(command.actionArgs) || {};\n\n if (inputState.selectedCharacter) {\n actionArgs.selectedCharacter = inputState.selectedCharacter;\n } // Actions may or may not have motions and operators. Do these first.\n\n\n if (command.operator) {\n this.processOperator(cm, vim, command);\n }\n\n if (command.motion) {\n this.processMotion(cm, vim, command);\n }\n\n if (command.motion || command.operator) {\n this.evalInput(cm, vim);\n }\n\n actionArgs.repeat = repeat || 1;\n actionArgs.repeatIsExplicit = repeatIsExplicit;\n actionArgs.registerName = inputState.registerName;\n clearInputState(cm);\n vim.lastMotion = null;\n\n if (command.isEdit) {\n this.recordLastEdit(vim, inputState, command);\n }\n\n actions[command.action](cm, actionArgs, vim);\n },\n processSearch: function processSearch(cm, vim, command) {\n if (!cm.getSearchCursor) {\n // Search depends on SearchCursor.\n return;\n }\n\n var forward = command.searchArgs.forward;\n var wholeWordOnly = command.searchArgs.wholeWordOnly;\n getSearchState(cm).setReversed(!forward);\n var promptPrefix = forward ? '/' : '?';\n var originalQuery = getSearchState(cm).getQuery();\n var originalScrollPos = cm.getScrollInfo();\n\n function handleQuery(query, ignoreCase, smartCase) {\n vimGlobalState.searchHistoryController.pushInput(query);\n vimGlobalState.searchHistoryController.reset();\n\n try {\n updateSearchQuery(cm, query, ignoreCase, smartCase);\n } catch (e) {\n showConfirm(cm, 'Invalid regex: ' + query);\n clearInputState(cm);\n return;\n }\n\n commandDispatcher.processMotion(cm, vim, {\n type: 'motion',\n motion: 'findNext',\n motionArgs: {\n forward: true,\n toJumplist: command.searchArgs.toJumplist\n }\n });\n }\n\n function onPromptClose(query) {\n cm.scrollTo(originalScrollPos.left, originalScrollPos.top);\n handleQuery(query, true\n /** ignoreCase */\n , true\n /** smartCase */\n );\n var macroModeState = vimGlobalState.macroModeState;\n\n if (macroModeState.isRecording) {\n logSearchQuery(macroModeState, query);\n }\n }\n\n function onPromptKeyUp(e, query, close) {\n var keyName = CodeMirror.keyName(e),\n up,\n offset;\n\n if (keyName == 'Up' || keyName == 'Down') {\n up = keyName == 'Up' ? true : false;\n offset = e.target ? e.target.selectionEnd : 0;\n query = vimGlobalState.searchHistoryController.nextMatch(query, up) || '';\n close(query);\n if (offset && e.target) e.target.selectionEnd = e.target.selectionStart = Math.min(offset, e.target.value.length);\n } else {\n if (keyName != 'Left' && keyName != 'Right' && keyName != 'Ctrl' && keyName != 'Alt' && keyName != 'Shift') vimGlobalState.searchHistoryController.reset();\n }\n\n var parsedQuery;\n\n try {\n parsedQuery = updateSearchQuery(cm, query, true\n /** ignoreCase */\n , true\n /** smartCase */\n );\n } catch (e) {// Swallow bad regexes for incremental search.\n }\n\n if (parsedQuery) {\n cm.scrollIntoView(_findNext(cm, !forward, parsedQuery), 30);\n } else {\n clearSearchHighlight(cm);\n cm.scrollTo(originalScrollPos.left, originalScrollPos.top);\n }\n }\n\n function onPromptKeyDown(e, query, close) {\n var keyName = CodeMirror.keyName(e);\n\n if (keyName == 'Esc' || keyName == 'Ctrl-C' || keyName == 'Ctrl-[' || keyName == 'Backspace' && query == '') {\n vimGlobalState.searchHistoryController.pushInput(query);\n vimGlobalState.searchHistoryController.reset();\n updateSearchQuery(cm, originalQuery);\n clearSearchHighlight(cm);\n cm.scrollTo(originalScrollPos.left, originalScrollPos.top);\n CodeMirror.e_stop(e);\n clearInputState(cm);\n close();\n cm.focus();\n } else if (keyName == 'Up' || keyName == 'Down') {\n CodeMirror.e_stop(e);\n } else if (keyName == 'Ctrl-U') {\n // Ctrl-U clears input.\n CodeMirror.e_stop(e);\n close('');\n }\n }\n\n switch (command.searchArgs.querySrc) {\n case 'prompt':\n var macroModeState = vimGlobalState.macroModeState;\n\n if (macroModeState.isPlaying) {\n var query = macroModeState.replaySearchQueries.shift();\n handleQuery(query, true\n /** ignoreCase */\n , false\n /** smartCase */\n );\n } else {\n showPrompt(cm, {\n onClose: onPromptClose,\n prefix: promptPrefix,\n desc: searchPromptDesc,\n onKeyUp: onPromptKeyUp,\n onKeyDown: onPromptKeyDown\n });\n }\n\n break;\n\n case 'wordUnderCursor':\n var word = expandWordUnderCursor(cm, false\n /** inclusive */\n , true\n /** forward */\n , false\n /** bigWord */\n , true\n /** noSymbol */\n );\n var isKeyword = true;\n\n if (!word) {\n word = expandWordUnderCursor(cm, false\n /** inclusive */\n , true\n /** forward */\n , false\n /** bigWord */\n , false\n /** noSymbol */\n );\n isKeyword = false;\n }\n\n if (!word) {\n return;\n }\n\n var query = cm.getLine(word.start.line).substring(word.start.ch, word.end.ch);\n\n if (isKeyword && wholeWordOnly) {\n query = '\\\\b' + query + '\\\\b';\n } else {\n query = escapeRegex(query);\n } // cachedCursor is used to save the old position of the cursor\n // when * or # causes vim to seek for the nearest word and shift\n // the cursor before entering the motion.\n\n\n vimGlobalState.jumpList.cachedCursor = cm.getCursor();\n cm.setCursor(word.start);\n handleQuery(query, true\n /** ignoreCase */\n , false\n /** smartCase */\n );\n break;\n }\n },\n processEx: function processEx(cm, vim, command) {\n function onPromptClose(input) {\n // Give the prompt some time to close so that if processCommand shows\n // an error, the elements don't overlap.\n vimGlobalState.exCommandHistoryController.pushInput(input);\n vimGlobalState.exCommandHistoryController.reset();\n exCommandDispatcher.processCommand(cm, input);\n }\n\n function onPromptKeyDown(e, input, close) {\n var keyName = CodeMirror.keyName(e),\n up,\n offset;\n\n if (keyName == 'Esc' || keyName == 'Ctrl-C' || keyName == 'Ctrl-[' || keyName == 'Backspace' && input == '') {\n vimGlobalState.exCommandHistoryController.pushInput(input);\n vimGlobalState.exCommandHistoryController.reset();\n CodeMirror.e_stop(e);\n clearInputState(cm);\n close();\n cm.focus();\n }\n\n if (keyName == 'Up' || keyName == 'Down') {\n CodeMirror.e_stop(e);\n up = keyName == 'Up' ? true : false;\n offset = e.target ? e.target.selectionEnd : 0;\n input = vimGlobalState.exCommandHistoryController.nextMatch(input, up) || '';\n close(input);\n if (offset && e.target) e.target.selectionEnd = e.target.selectionStart = Math.min(offset, e.target.value.length);\n } else if (keyName == 'Ctrl-U') {\n // Ctrl-U clears input.\n CodeMirror.e_stop(e);\n close('');\n } else {\n if (keyName != 'Left' && keyName != 'Right' && keyName != 'Ctrl' && keyName != 'Alt' && keyName != 'Shift') vimGlobalState.exCommandHistoryController.reset();\n }\n }\n\n if (command.type == 'keyToEx') {\n // Handle user defined Ex to Ex mappings\n exCommandDispatcher.processCommand(cm, command.exArgs.input);\n } else {\n if (vim.visualMode) {\n showPrompt(cm, {\n onClose: onPromptClose,\n prefix: ':',\n value: '\\'<,\\'>',\n onKeyDown: onPromptKeyDown,\n selectValueOnOpen: false\n });\n } else {\n showPrompt(cm, {\n onClose: onPromptClose,\n prefix: ':',\n onKeyDown: onPromptKeyDown\n });\n }\n }\n },\n evalInput: function evalInput(cm, vim) {\n // If the motion command is set, execute both the operator and motion.\n // Otherwise return.\n var inputState = vim.inputState;\n var motion = inputState.motion;\n var motionArgs = inputState.motionArgs || {};\n var operator = inputState.operator;\n var operatorArgs = inputState.operatorArgs || {};\n var registerName = inputState.registerName;\n var sel = vim.sel; // TODO: Make sure cm and vim selections are identical outside visual mode.\n\n var origHead = copyCursor(vim.visualMode ? clipCursorToContent(cm, sel.head) : cm.getCursor('head'));\n var origAnchor = copyCursor(vim.visualMode ? clipCursorToContent(cm, sel.anchor) : cm.getCursor('anchor'));\n var oldHead = copyCursor(origHead);\n var oldAnchor = copyCursor(origAnchor);\n var newHead, newAnchor;\n var repeat;\n\n if (operator) {\n this.recordLastEdit(vim, inputState);\n }\n\n if (inputState.repeatOverride !== undefined) {\n // If repeatOverride is specified, that takes precedence over the\n // input state's repeat. Used by Ex mode and can be user defined.\n repeat = inputState.repeatOverride;\n } else {\n repeat = inputState.getRepeat();\n }\n\n if (repeat > 0 && motionArgs.explicitRepeat) {\n motionArgs.repeatIsExplicit = true;\n } else if (motionArgs.noRepeat || !motionArgs.explicitRepeat && repeat === 0) {\n repeat = 1;\n motionArgs.repeatIsExplicit = false;\n }\n\n if (inputState.selectedCharacter) {\n // If there is a character input, stick it in all of the arg arrays.\n motionArgs.selectedCharacter = operatorArgs.selectedCharacter = inputState.selectedCharacter;\n }\n\n motionArgs.repeat = repeat;\n clearInputState(cm);\n\n if (motion) {\n var motionResult = motions[motion](cm, origHead, motionArgs, vim);\n vim.lastMotion = motions[motion];\n\n if (!motionResult) {\n return;\n }\n\n if (motionArgs.toJumplist) {\n var jumpList = vimGlobalState.jumpList; // if the current motion is # or *, use cachedCursor\n\n var cachedCursor = jumpList.cachedCursor;\n\n if (cachedCursor) {\n recordJumpPosition(cm, cachedCursor, motionResult);\n delete jumpList.cachedCursor;\n } else {\n recordJumpPosition(cm, origHead, motionResult);\n }\n }\n\n if (motionResult instanceof Array) {\n newAnchor = motionResult[0];\n newHead = motionResult[1];\n } else {\n newHead = motionResult;\n } // TODO: Handle null returns from motion commands better.\n\n\n if (!newHead) {\n newHead = copyCursor(origHead);\n }\n\n if (vim.visualMode) {\n if (!(vim.visualBlock && newHead.ch === Infinity)) {\n newHead = clipCursorToContent(cm, newHead, vim.visualBlock);\n }\n\n if (newAnchor) {\n newAnchor = clipCursorToContent(cm, newAnchor, true);\n }\n\n newAnchor = newAnchor || oldAnchor;\n sel.anchor = newAnchor;\n sel.head = newHead;\n updateCmSelection(cm);\n updateMark(cm, vim, '<', cursorIsBefore(newAnchor, newHead) ? newAnchor : newHead);\n updateMark(cm, vim, '>', cursorIsBefore(newAnchor, newHead) ? newHead : newAnchor);\n } else if (!operator) {\n newHead = clipCursorToContent(cm, newHead);\n cm.setCursor(newHead.line, newHead.ch);\n }\n }\n\n if (operator) {\n if (operatorArgs.lastSel) {\n // Replaying a visual mode operation\n newAnchor = oldAnchor;\n var lastSel = operatorArgs.lastSel;\n var lineOffset = Math.abs(lastSel.head.line - lastSel.anchor.line);\n var chOffset = Math.abs(lastSel.head.ch - lastSel.anchor.ch);\n\n if (lastSel.visualLine) {\n // Linewise Visual mode: The same number of lines.\n newHead = Pos(oldAnchor.line + lineOffset, oldAnchor.ch);\n } else if (lastSel.visualBlock) {\n // Blockwise Visual mode: The same number of lines and columns.\n newHead = Pos(oldAnchor.line + lineOffset, oldAnchor.ch + chOffset);\n } else if (lastSel.head.line == lastSel.anchor.line) {\n // Normal Visual mode within one line: The same number of characters.\n newHead = Pos(oldAnchor.line, oldAnchor.ch + chOffset);\n } else {\n // Normal Visual mode with several lines: The same number of lines, in the\n // last line the same number of characters as in the last line the last time.\n newHead = Pos(oldAnchor.line + lineOffset, oldAnchor.ch);\n }\n\n vim.visualMode = true;\n vim.visualLine = lastSel.visualLine;\n vim.visualBlock = lastSel.visualBlock;\n sel = vim.sel = {\n anchor: newAnchor,\n head: newHead\n };\n updateCmSelection(cm);\n } else if (vim.visualMode) {\n operatorArgs.lastSel = {\n anchor: copyCursor(sel.anchor),\n head: copyCursor(sel.head),\n visualBlock: vim.visualBlock,\n visualLine: vim.visualLine\n };\n }\n\n var curStart, curEnd, linewise, mode;\n var cmSel;\n\n if (vim.visualMode) {\n // Init visual op\n curStart = cursorMin(sel.head, sel.anchor);\n curEnd = cursorMax(sel.head, sel.anchor);\n linewise = vim.visualLine || operatorArgs.linewise;\n mode = vim.visualBlock ? 'block' : linewise ? 'line' : 'char';\n cmSel = makeCmSelection(cm, {\n anchor: curStart,\n head: curEnd\n }, mode);\n\n if (linewise) {\n var ranges = cmSel.ranges;\n\n if (mode == 'block') {\n // Linewise operators in visual block mode extend to end of line\n for (var i = 0; i < ranges.length; i++) {\n ranges[i].head.ch = lineLength(cm, ranges[i].head.line);\n }\n } else if (mode == 'line') {\n ranges[0].head = Pos(ranges[0].head.line + 1, 0);\n }\n }\n } else {\n // Init motion op\n curStart = copyCursor(newAnchor || oldAnchor);\n curEnd = copyCursor(newHead || oldHead);\n\n if (cursorIsBefore(curEnd, curStart)) {\n var tmp = curStart;\n curStart = curEnd;\n curEnd = tmp;\n }\n\n linewise = motionArgs.linewise || operatorArgs.linewise;\n\n if (linewise) {\n // Expand selection to entire line.\n expandSelectionToLine(cm, curStart, curEnd);\n } else if (motionArgs.forward) {\n // Clip to trailing newlines only if the motion goes forward.\n clipToLine(cm, curStart, curEnd);\n }\n\n mode = 'char';\n var exclusive = !motionArgs.inclusive || linewise;\n cmSel = makeCmSelection(cm, {\n anchor: curStart,\n head: curEnd\n }, mode, exclusive);\n }\n\n cm.setSelections(cmSel.ranges, cmSel.primary);\n vim.lastMotion = null;\n operatorArgs.repeat = repeat; // For indent in visual mode.\n\n operatorArgs.registerName = registerName; // Keep track of linewise as it affects how paste and change behave.\n\n operatorArgs.linewise = linewise;\n var operatorMoveTo = operators[operator](cm, operatorArgs, cmSel.ranges, oldAnchor, newHead);\n\n if (vim.visualMode) {\n exitVisualMode(cm, operatorMoveTo != null);\n }\n\n if (operatorMoveTo) {\n cm.setCursor(operatorMoveTo);\n }\n }\n },\n recordLastEdit: function recordLastEdit(vim, inputState, actionCommand) {\n var macroModeState = vimGlobalState.macroModeState;\n\n if (macroModeState.isPlaying) {\n return;\n }\n\n vim.lastEditInputState = inputState;\n vim.lastEditActionCommand = actionCommand;\n macroModeState.lastInsertModeChanges.changes = [];\n macroModeState.lastInsertModeChanges.expectCursorActivityForChange = false;\n macroModeState.lastInsertModeChanges.visualBlock = vim.visualBlock ? vim.sel.head.line - vim.sel.anchor.line : 0;\n }\n };\n /**\n * typedef {Object{line:number,ch:number}} Cursor An object containing the\n * position of the cursor.\n */\n // All of the functions below return Cursor objects.\n\n var motions = {\n moveToTopLine: function moveToTopLine(cm, _head, motionArgs) {\n var line = getUserVisibleLines(cm).top + motionArgs.repeat - 1;\n return Pos(line, findFirstNonWhiteSpaceCharacter(cm.getLine(line)));\n },\n moveToMiddleLine: function moveToMiddleLine(cm) {\n var range = getUserVisibleLines(cm);\n var line = Math.floor((range.top + range.bottom) * 0.5);\n return Pos(line, findFirstNonWhiteSpaceCharacter(cm.getLine(line)));\n },\n moveToBottomLine: function moveToBottomLine(cm, _head, motionArgs) {\n var line = getUserVisibleLines(cm).bottom - motionArgs.repeat + 1;\n return Pos(line, findFirstNonWhiteSpaceCharacter(cm.getLine(line)));\n },\n expandToLine: function expandToLine(_cm, head, motionArgs) {\n // Expands forward to end of line, and then to next line if repeat is\n // >1. Does not handle backward motion!\n var cur = head;\n return Pos(cur.line + motionArgs.repeat - 1, Infinity);\n },\n findNext: function findNext(cm, _head, motionArgs) {\n var state = getSearchState(cm);\n var query = state.getQuery();\n\n if (!query) {\n return;\n }\n\n var prev = !motionArgs.forward; // If search is initiated with ? instead of /, negate direction.\n\n prev = state.isReversed() ? !prev : prev;\n highlightSearchMatches(cm, query);\n return _findNext(cm, prev\n /** prev */\n , query, motionArgs.repeat);\n },\n goToMark: function goToMark(cm, _head, motionArgs, vim) {\n var pos = getMarkPos(cm, vim, motionArgs.selectedCharacter);\n\n if (pos) {\n return motionArgs.linewise ? {\n line: pos.line,\n ch: findFirstNonWhiteSpaceCharacter(cm.getLine(pos.line))\n } : pos;\n }\n\n return null;\n },\n moveToOtherHighlightedEnd: function moveToOtherHighlightedEnd(cm, _head, motionArgs, vim) {\n if (vim.visualBlock && motionArgs.sameLine) {\n var sel = vim.sel;\n return [clipCursorToContent(cm, Pos(sel.anchor.line, sel.head.ch)), clipCursorToContent(cm, Pos(sel.head.line, sel.anchor.ch))];\n } else {\n return [vim.sel.head, vim.sel.anchor];\n }\n },\n jumpToMark: function jumpToMark(cm, head, motionArgs, vim) {\n var best = head;\n\n for (var i = 0; i < motionArgs.repeat; i++) {\n var cursor = best;\n\n for (var key in vim.marks) {\n if (!isLowerCase(key)) {\n continue;\n }\n\n var mark = vim.marks[key].find();\n var isWrongDirection = motionArgs.forward ? cursorIsBefore(mark, cursor) : cursorIsBefore(cursor, mark);\n\n if (isWrongDirection) {\n continue;\n }\n\n if (motionArgs.linewise && mark.line == cursor.line) {\n continue;\n }\n\n var equal = cursorEqual(cursor, best);\n var between = motionArgs.forward ? cursorIsBetween(cursor, mark, best) : cursorIsBetween(best, mark, cursor);\n\n if (equal || between) {\n best = mark;\n }\n }\n }\n\n if (motionArgs.linewise) {\n // Vim places the cursor on the first non-whitespace character of\n // the line if there is one, else it places the cursor at the end\n // of the line, regardless of whether a mark was found.\n best = Pos(best.line, findFirstNonWhiteSpaceCharacter(cm.getLine(best.line)));\n }\n\n return best;\n },\n moveByCharacters: function moveByCharacters(_cm, head, motionArgs) {\n var cur = head;\n var repeat = motionArgs.repeat;\n var ch = motionArgs.forward ? cur.ch + repeat : cur.ch - repeat;\n return Pos(cur.line, ch);\n },\n moveByLines: function moveByLines(cm, head, motionArgs, vim) {\n var cur = head;\n var endCh = cur.ch; // Depending what our last motion was, we may want to do different\n // things. If our last motion was moving vertically, we want to\n // preserve the HPos from our last horizontal move. If our last motion\n // was going to the end of a line, moving vertically we should go to\n // the end of the line, etc.\n\n switch (vim.lastMotion) {\n case this.moveByLines:\n case this.moveByDisplayLines:\n case this.moveByScroll:\n case this.moveToColumn:\n case this.moveToEol:\n endCh = vim.lastHPos;\n break;\n\n default:\n vim.lastHPos = endCh;\n }\n\n var repeat = motionArgs.repeat + (motionArgs.repeatOffset || 0);\n var line = motionArgs.forward ? cur.line + repeat : cur.line - repeat;\n var first = cm.firstLine();\n var last = cm.lastLine(); // Vim go to line begin or line end when cursor at first/last line and\n // move to previous/next line is triggered.\n\n if (line < first && cur.line == first) {\n return this.moveToStartOfLine(cm, head, motionArgs, vim);\n } else if (line > last && cur.line == last) {\n return this.moveToEol(cm, head, motionArgs, vim, true);\n }\n\n if (motionArgs.toFirstChar) {\n endCh = findFirstNonWhiteSpaceCharacter(cm.getLine(line));\n vim.lastHPos = endCh;\n }\n\n vim.lastHSPos = cm.charCoords(Pos(line, endCh), 'div').left;\n return Pos(line, endCh);\n },\n moveByDisplayLines: function moveByDisplayLines(cm, head, motionArgs, vim) {\n var cur = head;\n\n switch (vim.lastMotion) {\n case this.moveByDisplayLines:\n case this.moveByScroll:\n case this.moveByLines:\n case this.moveToColumn:\n case this.moveToEol:\n break;\n\n default:\n vim.lastHSPos = cm.charCoords(cur, 'div').left;\n }\n\n var repeat = motionArgs.repeat;\n var res = cm.findPosV(cur, motionArgs.forward ? repeat : -repeat, 'line', vim.lastHSPos);\n\n if (res.hitSide) {\n if (motionArgs.forward) {\n var lastCharCoords = cm.charCoords(res, 'div');\n var goalCoords = {\n top: lastCharCoords.top + 8,\n left: vim.lastHSPos\n };\n var res = cm.coordsChar(goalCoords, 'div');\n } else {\n var resCoords = cm.charCoords(Pos(cm.firstLine(), 0), 'div');\n resCoords.left = vim.lastHSPos;\n res = cm.coordsChar(resCoords, 'div');\n }\n }\n\n vim.lastHPos = res.ch;\n return res;\n },\n moveByPage: function moveByPage(cm, head, motionArgs) {\n // CodeMirror only exposes functions that move the cursor page down, so\n // doing this bad hack to move the cursor and move it back. evalInput\n // will move the cursor to where it should be in the end.\n var curStart = head;\n var repeat = motionArgs.repeat;\n return cm.findPosV(curStart, motionArgs.forward ? repeat : -repeat, 'page');\n },\n moveByParagraph: function moveByParagraph(cm, head, motionArgs) {\n var dir = motionArgs.forward ? 1 : -1;\n return findParagraph(cm, head, motionArgs.repeat, dir);\n },\n moveBySentence: function moveBySentence(cm, head, motionArgs) {\n var dir = motionArgs.forward ? 1 : -1;\n return findSentence(cm, head, motionArgs.repeat, dir);\n },\n moveByScroll: function moveByScroll(cm, head, motionArgs, vim) {\n var scrollbox = cm.getScrollInfo();\n var curEnd = null;\n var repeat = motionArgs.repeat;\n\n if (!repeat) {\n repeat = scrollbox.clientHeight / (2 * cm.defaultTextHeight());\n }\n\n var orig = cm.charCoords(head, 'local');\n motionArgs.repeat = repeat;\n var curEnd = motions.moveByDisplayLines(cm, head, motionArgs, vim);\n\n if (!curEnd) {\n return null;\n }\n\n var dest = cm.charCoords(curEnd, 'local');\n cm.scrollTo(null, scrollbox.top + dest.top - orig.top);\n return curEnd;\n },\n moveByWords: function moveByWords(cm, head, motionArgs) {\n return moveToWord(cm, head, motionArgs.repeat, !!motionArgs.forward, !!motionArgs.wordEnd, !!motionArgs.bigWord);\n },\n moveTillCharacter: function moveTillCharacter(cm, _head, motionArgs) {\n var repeat = motionArgs.repeat;\n\n var curEnd = _moveToCharacter(cm, repeat, motionArgs.forward, motionArgs.selectedCharacter);\n\n var increment = motionArgs.forward ? -1 : 1;\n recordLastCharacterSearch(increment, motionArgs);\n if (!curEnd) return null;\n curEnd.ch += increment;\n return curEnd;\n },\n moveToCharacter: function moveToCharacter(cm, head, motionArgs) {\n var repeat = motionArgs.repeat;\n recordLastCharacterSearch(0, motionArgs);\n return _moveToCharacter(cm, repeat, motionArgs.forward, motionArgs.selectedCharacter) || head;\n },\n moveToSymbol: function moveToSymbol(cm, head, motionArgs) {\n var repeat = motionArgs.repeat;\n return findSymbol(cm, repeat, motionArgs.forward, motionArgs.selectedCharacter) || head;\n },\n moveToColumn: function moveToColumn(cm, head, motionArgs, vim) {\n var repeat = motionArgs.repeat; // repeat is equivalent to which column we want to move to!\n\n vim.lastHPos = repeat - 1;\n vim.lastHSPos = cm.charCoords(head, 'div').left;\n return _moveToColumn(cm, repeat);\n },\n moveToEol: function moveToEol(cm, head, motionArgs, vim, keepHPos) {\n var cur = head;\n var retval = Pos(cur.line + motionArgs.repeat - 1, Infinity);\n var end = cm.clipPos(retval);\n end.ch--;\n\n if (!keepHPos) {\n vim.lastHPos = Infinity;\n vim.lastHSPos = cm.charCoords(end, 'div').left;\n }\n\n return retval;\n },\n moveToFirstNonWhiteSpaceCharacter: function moveToFirstNonWhiteSpaceCharacter(cm, head) {\n // Go to the start of the line where the text begins, or the end for\n // whitespace-only lines\n var cursor = head;\n return Pos(cursor.line, findFirstNonWhiteSpaceCharacter(cm.getLine(cursor.line)));\n },\n moveToMatchedSymbol: function moveToMatchedSymbol(cm, head) {\n var cursor = head;\n var line = cursor.line;\n var ch = cursor.ch;\n var lineText = cm.getLine(line);\n var symbol;\n\n for (; ch < lineText.length; ch++) {\n symbol = lineText.charAt(ch);\n\n if (symbol && isMatchableSymbol(symbol)) {\n var style = cm.getTokenTypeAt(Pos(line, ch + 1));\n\n if (style !== \"string\" && style !== \"comment\") {\n break;\n }\n }\n }\n\n if (ch < lineText.length) {\n // Only include angle brackets in analysis if they are being matched.\n var re = ch === '<' || ch === '>' ? /[(){}[\\]<>]/ : /[(){}[\\]]/;\n var matched = cm.findMatchingBracket(Pos(line, ch), {\n bracketRegex: re\n });\n return matched.to;\n } else {\n return cursor;\n }\n },\n moveToStartOfLine: function moveToStartOfLine(_cm, head) {\n return Pos(head.line, 0);\n },\n moveToLineOrEdgeOfDocument: function moveToLineOrEdgeOfDocument(cm, _head, motionArgs) {\n var lineNum = motionArgs.forward ? cm.lastLine() : cm.firstLine();\n\n if (motionArgs.repeatIsExplicit) {\n lineNum = motionArgs.repeat - cm.getOption('firstLineNumber');\n }\n\n return Pos(lineNum, findFirstNonWhiteSpaceCharacter(cm.getLine(lineNum)));\n },\n textObjectManipulation: function textObjectManipulation(cm, head, motionArgs, vim) {\n // TODO: lots of possible exceptions that can be thrown here. Try da(\n // outside of a () block.\n var mirroredPairs = {\n '(': ')',\n ')': '(',\n '{': '}',\n '}': '{',\n '[': ']',\n ']': '[',\n '<': '>',\n '>': '<'\n };\n var selfPaired = {\n '\\'': true,\n '\"': true,\n '`': true\n };\n var character = motionArgs.selectedCharacter; // 'b' refers to '()' block.\n // 'B' refers to '{}' block.\n\n if (character == 'b') {\n character = '(';\n } else if (character == 'B') {\n character = '{';\n } // Inclusive is the difference between a and i\n // TODO: Instead of using the additional text object map to perform text\n // object operations, merge the map into the defaultKeyMap and use\n // motionArgs to define behavior. Define separate entries for 'aw',\n // 'iw', 'a[', 'i[', etc.\n\n\n var inclusive = !motionArgs.textObjectInner;\n var tmp;\n\n if (mirroredPairs[character]) {\n tmp = selectCompanionObject(cm, head, character, inclusive);\n } else if (selfPaired[character]) {\n tmp = findBeginningAndEnd(cm, head, character, inclusive);\n } else if (character === 'W') {\n tmp = expandWordUnderCursor(cm, inclusive, true\n /** forward */\n , true\n /** bigWord */\n );\n } else if (character === 'w') {\n tmp = expandWordUnderCursor(cm, inclusive, true\n /** forward */\n , false\n /** bigWord */\n );\n } else if (character === 'p') {\n tmp = findParagraph(cm, head, motionArgs.repeat, 0, inclusive);\n motionArgs.linewise = true;\n\n if (vim.visualMode) {\n if (!vim.visualLine) {\n vim.visualLine = true;\n }\n } else {\n var operatorArgs = vim.inputState.operatorArgs;\n\n if (operatorArgs) {\n operatorArgs.linewise = true;\n }\n\n tmp.end.line--;\n }\n } else {\n // No text object defined for this, don't move.\n return null;\n }\n\n if (!cm.state.vim.visualMode) {\n return [tmp.start, tmp.end];\n } else {\n return expandSelection(cm, tmp.start, tmp.end);\n }\n },\n repeatLastCharacterSearch: function repeatLastCharacterSearch(cm, head, motionArgs) {\n var lastSearch = vimGlobalState.lastCharacterSearch;\n var repeat = motionArgs.repeat;\n var forward = motionArgs.forward === lastSearch.forward;\n var increment = (lastSearch.increment ? 1 : 0) * (forward ? -1 : 1);\n cm.moveH(-increment, 'char');\n motionArgs.inclusive = forward ? true : false;\n\n var curEnd = _moveToCharacter(cm, repeat, forward, lastSearch.selectedCharacter);\n\n if (!curEnd) {\n cm.moveH(increment, 'char');\n return head;\n }\n\n curEnd.ch += increment;\n return curEnd;\n }\n };\n\n function defineMotion(name, fn) {\n motions[name] = fn;\n }\n\n function fillArray(val, times) {\n var arr = [];\n\n for (var i = 0; i < times; i++) {\n arr.push(val);\n }\n\n return arr;\n }\n /**\n * An operator acts on a text selection. It receives the list of selections\n * as input. The corresponding CodeMirror selection is guaranteed to\n * match the input selection.\n */\n\n\n var operators = {\n change: function change(cm, args, ranges) {\n var finalHead, text;\n var vim = cm.state.vim;\n\n if (!vim.visualMode) {\n var anchor = ranges[0].anchor,\n head = ranges[0].head;\n text = cm.getRange(anchor, head);\n var lastState = vim.lastEditInputState || {};\n\n if (lastState.motion == \"moveByWords\" && !isWhiteSpaceString(text)) {\n // Exclude trailing whitespace if the range is not all whitespace.\n var match = /\\s+$/.exec(text);\n\n if (match && lastState.motionArgs && lastState.motionArgs.forward) {\n head = offsetCursor(head, 0, -match[0].length);\n text = text.slice(0, -match[0].length);\n }\n }\n\n var prevLineEnd = new Pos(anchor.line - 1, Number.MAX_VALUE);\n var wasLastLine = cm.firstLine() == cm.lastLine();\n\n if (head.line > cm.lastLine() && args.linewise && !wasLastLine) {\n cm.replaceRange('', prevLineEnd, head);\n } else {\n cm.replaceRange('', anchor, head);\n }\n\n if (args.linewise) {\n // Push the next line back down, if there is a next line.\n if (!wasLastLine) {\n cm.setCursor(prevLineEnd);\n CodeMirror.commands.newlineAndIndent(cm);\n } // make sure cursor ends up at the end of the line.\n\n\n anchor.ch = Number.MAX_VALUE;\n }\n\n finalHead = anchor;\n } else {\n text = cm.getSelection();\n var replacement = fillArray('', ranges.length);\n cm.replaceSelections(replacement);\n finalHead = cursorMin(ranges[0].head, ranges[0].anchor);\n }\n\n vimGlobalState.registerController.pushText(args.registerName, 'change', text, args.linewise, ranges.length > 1);\n actions.enterInsertMode(cm, {\n head: finalHead\n }, cm.state.vim);\n },\n // delete is a javascript keyword.\n 'delete': function _delete(cm, args, ranges) {\n var finalHead, text;\n var vim = cm.state.vim;\n\n if (!vim.visualBlock) {\n var anchor = ranges[0].anchor,\n head = ranges[0].head;\n\n if (args.linewise && head.line != cm.firstLine() && anchor.line == cm.lastLine() && anchor.line == head.line - 1) {\n // Special case for dd on last line (and first line).\n if (anchor.line == cm.firstLine()) {\n anchor.ch = 0;\n } else {\n anchor = Pos(anchor.line - 1, lineLength(cm, anchor.line - 1));\n }\n }\n\n text = cm.getRange(anchor, head);\n cm.replaceRange('', anchor, head);\n finalHead = anchor;\n\n if (args.linewise) {\n finalHead = motions.moveToFirstNonWhiteSpaceCharacter(cm, anchor);\n }\n } else {\n text = cm.getSelection();\n var replacement = fillArray('', ranges.length);\n cm.replaceSelections(replacement);\n finalHead = ranges[0].anchor;\n }\n\n vimGlobalState.registerController.pushText(args.registerName, 'delete', text, args.linewise, vim.visualBlock);\n var includeLineBreak = vim.insertMode;\n return clipCursorToContent(cm, finalHead, includeLineBreak);\n },\n indent: function indent(cm, args, ranges) {\n var vim = cm.state.vim;\n var startLine = ranges[0].anchor.line;\n var endLine = vim.visualBlock ? ranges[ranges.length - 1].anchor.line : ranges[0].head.line; // In visual mode, n> shifts the selection right n times, instead of\n // shifting n lines right once.\n\n var repeat = vim.visualMode ? args.repeat : 1;\n\n if (args.linewise) {\n // The only way to delete a newline is to delete until the start of\n // the next line, so in linewise mode evalInput will include the next\n // line. We don't want this in indent, so we go back a line.\n endLine--;\n }\n\n for (var i = startLine; i <= endLine; i++) {\n for (var j = 0; j < repeat; j++) {\n cm.indentLine(i, args.indentRight);\n }\n }\n\n return motions.moveToFirstNonWhiteSpaceCharacter(cm, ranges[0].anchor);\n },\n indentAuto: function indentAuto(cm, _args, ranges) {\n cm.execCommand(\"indentAuto\");\n return motions.moveToFirstNonWhiteSpaceCharacter(cm, ranges[0].anchor);\n },\n changeCase: function changeCase(cm, args, ranges, oldAnchor, newHead) {\n var selections = cm.getSelections();\n var swapped = [];\n var toLower = args.toLower;\n\n for (var j = 0; j < selections.length; j++) {\n var toSwap = selections[j];\n var text = '';\n\n if (toLower === true) {\n text = toSwap.toLowerCase();\n } else if (toLower === false) {\n text = toSwap.toUpperCase();\n } else {\n for (var i = 0; i < toSwap.length; i++) {\n var character = toSwap.charAt(i);\n text += isUpperCase(character) ? character.toLowerCase() : character.toUpperCase();\n }\n }\n\n swapped.push(text);\n }\n\n cm.replaceSelections(swapped);\n\n if (args.shouldMoveCursor) {\n return newHead;\n } else if (!cm.state.vim.visualMode && args.linewise && ranges[0].anchor.line + 1 == ranges[0].head.line) {\n return motions.moveToFirstNonWhiteSpaceCharacter(cm, oldAnchor);\n } else if (args.linewise) {\n return oldAnchor;\n } else {\n return cursorMin(ranges[0].anchor, ranges[0].head);\n }\n },\n yank: function yank(cm, args, ranges, oldAnchor) {\n var vim = cm.state.vim;\n var text = cm.getSelection();\n var endPos = vim.visualMode ? cursorMin(vim.sel.anchor, vim.sel.head, ranges[0].head, ranges[0].anchor) : oldAnchor;\n vimGlobalState.registerController.pushText(args.registerName, 'yank', text, args.linewise, vim.visualBlock);\n return endPos;\n }\n };\n\n function defineOperator(name, fn) {\n operators[name] = fn;\n }\n\n var actions = {\n jumpListWalk: function jumpListWalk(cm, actionArgs, vim) {\n if (vim.visualMode) {\n return;\n }\n\n var repeat = actionArgs.repeat;\n var forward = actionArgs.forward;\n var jumpList = vimGlobalState.jumpList;\n var mark = jumpList.move(cm, forward ? repeat : -repeat);\n var markPos = mark ? mark.find() : undefined;\n markPos = markPos ? markPos : cm.getCursor();\n cm.setCursor(markPos);\n },\n scroll: function scroll(cm, actionArgs, vim) {\n if (vim.visualMode) {\n return;\n }\n\n var repeat = actionArgs.repeat || 1;\n var lineHeight = cm.defaultTextHeight();\n var top = cm.getScrollInfo().top;\n var delta = lineHeight * repeat;\n var newPos = actionArgs.forward ? top + delta : top - delta;\n var cursor = copyCursor(cm.getCursor());\n var cursorCoords = cm.charCoords(cursor, 'local');\n\n if (actionArgs.forward) {\n if (newPos > cursorCoords.top) {\n cursor.line += (newPos - cursorCoords.top) / lineHeight;\n cursor.line = Math.ceil(cursor.line);\n cm.setCursor(cursor);\n cursorCoords = cm.charCoords(cursor, 'local');\n cm.scrollTo(null, cursorCoords.top);\n } else {\n // Cursor stays within bounds. Just reposition the scroll window.\n cm.scrollTo(null, newPos);\n }\n } else {\n var newBottom = newPos + cm.getScrollInfo().clientHeight;\n\n if (newBottom < cursorCoords.bottom) {\n cursor.line -= (cursorCoords.bottom - newBottom) / lineHeight;\n cursor.line = Math.floor(cursor.line);\n cm.setCursor(cursor);\n cursorCoords = cm.charCoords(cursor, 'local');\n cm.scrollTo(null, cursorCoords.bottom - cm.getScrollInfo().clientHeight);\n } else {\n // Cursor stays within bounds. Just reposition the scroll window.\n cm.scrollTo(null, newPos);\n }\n }\n },\n scrollToCursor: function scrollToCursor(cm, actionArgs) {\n var lineNum = cm.getCursor().line;\n var charCoords = cm.charCoords(Pos(lineNum, 0), 'local');\n var height = cm.getScrollInfo().clientHeight;\n var y = charCoords.top;\n var lineHeight = charCoords.bottom - y;\n\n switch (actionArgs.position) {\n case 'center':\n y = y - height / 2 + lineHeight;\n break;\n\n case 'bottom':\n y = y - height + lineHeight;\n break;\n }\n\n cm.scrollTo(null, y);\n },\n replayMacro: function replayMacro(cm, actionArgs, vim) {\n var registerName = actionArgs.selectedCharacter;\n var repeat = actionArgs.repeat;\n var macroModeState = vimGlobalState.macroModeState;\n\n if (registerName == '@') {\n registerName = macroModeState.latestRegister;\n } else {\n macroModeState.latestRegister = registerName;\n }\n\n while (repeat--) {\n executeMacroRegister(cm, vim, macroModeState, registerName);\n }\n },\n enterMacroRecordMode: function enterMacroRecordMode(cm, actionArgs) {\n var macroModeState = vimGlobalState.macroModeState;\n var registerName = actionArgs.selectedCharacter;\n\n if (vimGlobalState.registerController.isValidRegister(registerName)) {\n macroModeState.enterMacroRecordMode(cm, registerName);\n }\n },\n toggleOverwrite: function toggleOverwrite(cm) {\n if (!cm.state.overwrite) {\n cm.toggleOverwrite(true);\n cm.setOption('keyMap', 'vim-replace');\n CodeMirror.signal(cm, \"vim-mode-change\", {\n mode: \"replace\"\n });\n } else {\n cm.toggleOverwrite(false);\n cm.setOption('keyMap', 'vim-insert');\n CodeMirror.signal(cm, \"vim-mode-change\", {\n mode: \"insert\"\n });\n }\n },\n enterInsertMode: function enterInsertMode(cm, actionArgs, vim) {\n if (cm.getOption('readOnly')) {\n return;\n }\n\n vim.insertMode = true;\n vim.insertModeRepeat = actionArgs && actionArgs.repeat || 1;\n var insertAt = actionArgs ? actionArgs.insertAt : null;\n var sel = vim.sel;\n var head = actionArgs.head || cm.getCursor('head');\n var height = cm.listSelections().length;\n\n if (insertAt == 'eol') {\n head = Pos(head.line, lineLength(cm, head.line));\n } else if (insertAt == 'charAfter') {\n head = offsetCursor(head, 0, 1);\n } else if (insertAt == 'firstNonBlank') {\n head = motions.moveToFirstNonWhiteSpaceCharacter(cm, head);\n } else if (insertAt == 'startOfSelectedArea') {\n if (!vim.visualMode) return;\n\n if (!vim.visualBlock) {\n if (sel.head.line < sel.anchor.line) {\n head = sel.head;\n } else {\n head = Pos(sel.anchor.line, 0);\n }\n } else {\n head = Pos(Math.min(sel.head.line, sel.anchor.line), Math.min(sel.head.ch, sel.anchor.ch));\n height = Math.abs(sel.head.line - sel.anchor.line) + 1;\n }\n } else if (insertAt == 'endOfSelectedArea') {\n if (!vim.visualMode) return;\n\n if (!vim.visualBlock) {\n if (sel.head.line >= sel.anchor.line) {\n head = offsetCursor(sel.head, 0, 1);\n } else {\n head = Pos(sel.anchor.line, 0);\n }\n } else {\n head = Pos(Math.min(sel.head.line, sel.anchor.line), Math.max(sel.head.ch + 1, sel.anchor.ch));\n height = Math.abs(sel.head.line - sel.anchor.line) + 1;\n }\n } else if (insertAt == 'inplace') {\n if (vim.visualMode) {\n return;\n }\n }\n\n cm.setOption('disableInput', false);\n\n if (actionArgs && actionArgs.replace) {\n // Handle Replace-mode as a special case of insert mode.\n cm.toggleOverwrite(true);\n cm.setOption('keyMap', 'vim-replace');\n CodeMirror.signal(cm, \"vim-mode-change\", {\n mode: \"replace\"\n });\n } else {\n cm.toggleOverwrite(false);\n cm.setOption('keyMap', 'vim-insert');\n CodeMirror.signal(cm, \"vim-mode-change\", {\n mode: \"insert\"\n });\n }\n\n if (!vimGlobalState.macroModeState.isPlaying) {\n // Only record if not replaying.\n cm.on('change', onChange);\n CodeMirror.on(cm.getInputField(), 'keydown', onKeyEventTargetKeyDown);\n }\n\n if (vim.visualMode) {\n exitVisualMode(cm);\n }\n\n selectForInsert(cm, head, height);\n },\n toggleVisualMode: function toggleVisualMode(cm, actionArgs, vim) {\n var repeat = actionArgs.repeat;\n var anchor = cm.getCursor();\n var head; // TODO: The repeat should actually select number of characters/lines\n // equal to the repeat times the size of the previous visual\n // operation.\n\n if (!vim.visualMode) {\n // Entering visual mode\n vim.visualMode = true;\n vim.visualLine = !!actionArgs.linewise;\n vim.visualBlock = !!actionArgs.blockwise;\n head = clipCursorToContent(cm, Pos(anchor.line, anchor.ch + repeat - 1), true\n /** includeLineBreak */\n );\n vim.sel = {\n anchor: anchor,\n head: head\n };\n CodeMirror.signal(cm, \"vim-mode-change\", {\n mode: \"visual\",\n subMode: vim.visualLine ? \"linewise\" : vim.visualBlock ? \"blockwise\" : \"\"\n });\n updateCmSelection(cm);\n updateMark(cm, vim, '<', cursorMin(anchor, head));\n updateMark(cm, vim, '>', cursorMax(anchor, head));\n } else if (vim.visualLine ^ actionArgs.linewise || vim.visualBlock ^ actionArgs.blockwise) {\n // Toggling between modes\n vim.visualLine = !!actionArgs.linewise;\n vim.visualBlock = !!actionArgs.blockwise;\n CodeMirror.signal(cm, \"vim-mode-change\", {\n mode: \"visual\",\n subMode: vim.visualLine ? \"linewise\" : vim.visualBlock ? \"blockwise\" : \"\"\n });\n updateCmSelection(cm);\n } else {\n exitVisualMode(cm);\n }\n },\n reselectLastSelection: function reselectLastSelection(cm, _actionArgs, vim) {\n var lastSelection = vim.lastSelection;\n\n if (vim.visualMode) {\n updateLastSelection(cm, vim);\n }\n\n if (lastSelection) {\n var anchor = lastSelection.anchorMark.find();\n var head = lastSelection.headMark.find();\n\n if (!anchor || !head) {\n // If the marks have been destroyed due to edits, do nothing.\n return;\n }\n\n vim.sel = {\n anchor: anchor,\n head: head\n };\n vim.visualMode = true;\n vim.visualLine = lastSelection.visualLine;\n vim.visualBlock = lastSelection.visualBlock;\n updateCmSelection(cm);\n updateMark(cm, vim, '<', cursorMin(anchor, head));\n updateMark(cm, vim, '>', cursorMax(anchor, head));\n CodeMirror.signal(cm, 'vim-mode-change', {\n mode: 'visual',\n subMode: vim.visualLine ? 'linewise' : vim.visualBlock ? 'blockwise' : ''\n });\n }\n },\n joinLines: function joinLines(cm, actionArgs, vim) {\n var curStart, curEnd;\n\n if (vim.visualMode) {\n curStart = cm.getCursor('anchor');\n curEnd = cm.getCursor('head');\n\n if (cursorIsBefore(curEnd, curStart)) {\n var tmp = curEnd;\n curEnd = curStart;\n curStart = tmp;\n }\n\n curEnd.ch = lineLength(cm, curEnd.line) - 1;\n } else {\n // Repeat is the number of lines to join. Minimum 2 lines.\n var repeat = Math.max(actionArgs.repeat, 2);\n curStart = cm.getCursor();\n curEnd = clipCursorToContent(cm, Pos(curStart.line + repeat - 1, Infinity));\n }\n\n var finalCh = 0;\n\n for (var i = curStart.line; i < curEnd.line; i++) {\n finalCh = lineLength(cm, curStart.line);\n var tmp = Pos(curStart.line + 1, lineLength(cm, curStart.line + 1));\n var text = cm.getRange(curStart, tmp);\n text = text.replace(/\\n\\s*/g, ' ');\n cm.replaceRange(text, curStart, tmp);\n }\n\n var curFinalPos = Pos(curStart.line, finalCh);\n\n if (vim.visualMode) {\n exitVisualMode(cm, false);\n }\n\n cm.setCursor(curFinalPos);\n },\n newLineAndEnterInsertMode: function newLineAndEnterInsertMode(cm, actionArgs, vim) {\n vim.insertMode = true;\n var insertAt = copyCursor(cm.getCursor());\n\n if (insertAt.line === cm.firstLine() && !actionArgs.after) {\n // Special case for inserting newline before start of document.\n cm.replaceRange('\\n', Pos(cm.firstLine(), 0));\n cm.setCursor(cm.firstLine(), 0);\n } else {\n insertAt.line = actionArgs.after ? insertAt.line : insertAt.line - 1;\n insertAt.ch = lineLength(cm, insertAt.line);\n cm.setCursor(insertAt);\n var newlineFn = CodeMirror.commands.newlineAndIndentContinueComment || CodeMirror.commands.newlineAndIndent;\n newlineFn(cm);\n }\n\n this.enterInsertMode(cm, {\n repeat: actionArgs.repeat\n }, vim);\n },\n paste: function paste(cm, actionArgs, vim) {\n var cur = copyCursor(cm.getCursor());\n var register = vimGlobalState.registerController.getRegister(actionArgs.registerName);\n var text = register.toString();\n\n if (!text) {\n return;\n }\n\n if (actionArgs.matchIndent) {\n var tabSize = cm.getOption(\"tabSize\"); // length that considers tabs and tabSize\n\n var whitespaceLength = function whitespaceLength(str) {\n var tabs = str.split(\"\\t\").length - 1;\n var spaces = str.split(\" \").length - 1;\n return tabs * tabSize + spaces * 1;\n };\n\n var currentLine = cm.getLine(cm.getCursor().line);\n var indent = whitespaceLength(currentLine.match(/^\\s*/)[0]); // chomp last newline b/c don't want it to match /^\\s*/gm\n\n var chompedText = text.replace(/\\n$/, '');\n var wasChomped = text !== chompedText;\n var firstIndent = whitespaceLength(text.match(/^\\s*/)[0]);\n var text = chompedText.replace(/^\\s*/gm, function (wspace) {\n var newIndent = indent + (whitespaceLength(wspace) - firstIndent);\n\n if (newIndent < 0) {\n return \"\";\n } else if (cm.getOption(\"indentWithTabs\")) {\n var quotient = Math.floor(newIndent / tabSize);\n return Array(quotient + 1).join('\\t');\n } else {\n return Array(newIndent + 1).join(' ');\n }\n });\n text += wasChomped ? \"\\n\" : \"\";\n }\n\n if (actionArgs.repeat > 1) {\n var text = Array(actionArgs.repeat + 1).join(text);\n }\n\n var linewise = register.linewise;\n var blockwise = register.blockwise;\n\n if (blockwise) {\n text = text.split('\\n');\n\n if (linewise) {\n text.pop();\n }\n\n for (var i = 0; i < text.length; i++) {\n text[i] = text[i] == '' ? ' ' : text[i];\n }\n\n cur.ch += actionArgs.after ? 1 : 0;\n cur.ch = Math.min(lineLength(cm, cur.line), cur.ch);\n } else if (linewise) {\n if (vim.visualMode) {\n text = vim.visualLine ? text.slice(0, -1) : '\\n' + text.slice(0, text.length - 1) + '\\n';\n } else if (actionArgs.after) {\n // Move the newline at the end to the start instead, and paste just\n // before the newline character of the line we are on right now.\n text = '\\n' + text.slice(0, text.length - 1);\n cur.ch = lineLength(cm, cur.line);\n } else {\n cur.ch = 0;\n }\n } else {\n cur.ch += actionArgs.after ? 1 : 0;\n }\n\n var curPosFinal;\n var idx;\n\n if (vim.visualMode) {\n // save the pasted text for reselection if the need arises\n vim.lastPastedText = text;\n var lastSelectionCurEnd;\n var selectedArea = getSelectedAreaRange(cm, vim);\n var selectionStart = selectedArea[0];\n var selectionEnd = selectedArea[1];\n var selectedText = cm.getSelection();\n var selections = cm.listSelections();\n var emptyStrings = new Array(selections.length).join('1').split('1'); // save the curEnd marker before it get cleared due to cm.replaceRange.\n\n if (vim.lastSelection) {\n lastSelectionCurEnd = vim.lastSelection.headMark.find();\n } // push the previously selected text to unnamed register\n\n\n vimGlobalState.registerController.unnamedRegister.setText(selectedText);\n\n if (blockwise) {\n // first delete the selected text\n cm.replaceSelections(emptyStrings); // Set new selections as per the block length of the yanked text\n\n selectionEnd = Pos(selectionStart.line + text.length - 1, selectionStart.ch);\n cm.setCursor(selectionStart);\n selectBlock(cm, selectionEnd);\n cm.replaceSelections(text);\n curPosFinal = selectionStart;\n } else if (vim.visualBlock) {\n cm.replaceSelections(emptyStrings);\n cm.setCursor(selectionStart);\n cm.replaceRange(text, selectionStart, selectionStart);\n curPosFinal = selectionStart;\n } else {\n cm.replaceRange(text, selectionStart, selectionEnd);\n curPosFinal = cm.posFromIndex(cm.indexFromPos(selectionStart) + text.length - 1);\n } // restore the the curEnd marker\n\n\n if (lastSelectionCurEnd) {\n vim.lastSelection.headMark = cm.setBookmark(lastSelectionCurEnd);\n }\n\n if (linewise) {\n curPosFinal.ch = 0;\n }\n } else {\n if (blockwise) {\n cm.setCursor(cur);\n\n for (var i = 0; i < text.length; i++) {\n var line = cur.line + i;\n\n if (line > cm.lastLine()) {\n cm.replaceRange('\\n', Pos(line, 0));\n }\n\n var lastCh = lineLength(cm, line);\n\n if (lastCh < cur.ch) {\n extendLineToColumn(cm, line, cur.ch);\n }\n }\n\n cm.setCursor(cur);\n selectBlock(cm, Pos(cur.line + text.length - 1, cur.ch));\n cm.replaceSelections(text);\n curPosFinal = cur;\n } else {\n cm.replaceRange(text, cur); // Now fine tune the cursor to where we want it.\n\n if (linewise && actionArgs.after) {\n curPosFinal = Pos(cur.line + 1, findFirstNonWhiteSpaceCharacter(cm.getLine(cur.line + 1)));\n } else if (linewise && !actionArgs.after) {\n curPosFinal = Pos(cur.line, findFirstNonWhiteSpaceCharacter(cm.getLine(cur.line)));\n } else if (!linewise && actionArgs.after) {\n idx = cm.indexFromPos(cur);\n curPosFinal = cm.posFromIndex(idx + text.length - 1);\n } else {\n idx = cm.indexFromPos(cur);\n curPosFinal = cm.posFromIndex(idx + text.length);\n }\n }\n }\n\n if (vim.visualMode) {\n exitVisualMode(cm, false);\n }\n\n cm.setCursor(curPosFinal);\n },\n undo: function undo(cm, actionArgs) {\n cm.operation(function () {\n repeatFn(cm, CodeMirror.commands.undo, actionArgs.repeat)();\n cm.setCursor(cm.getCursor('anchor'));\n });\n },\n redo: function redo(cm, actionArgs) {\n repeatFn(cm, CodeMirror.commands.redo, actionArgs.repeat)();\n },\n setRegister: function setRegister(_cm, actionArgs, vim) {\n vim.inputState.registerName = actionArgs.selectedCharacter;\n },\n setMark: function setMark(cm, actionArgs, vim) {\n var markName = actionArgs.selectedCharacter;\n updateMark(cm, vim, markName, cm.getCursor());\n },\n replace: function replace(cm, actionArgs, vim) {\n var replaceWith = actionArgs.selectedCharacter;\n var curStart = cm.getCursor();\n var replaceTo;\n var curEnd;\n var selections = cm.listSelections();\n\n if (vim.visualMode) {\n curStart = cm.getCursor('start');\n curEnd = cm.getCursor('end');\n } else {\n var line = cm.getLine(curStart.line);\n replaceTo = curStart.ch + actionArgs.repeat;\n\n if (replaceTo > line.length) {\n replaceTo = line.length;\n }\n\n curEnd = Pos(curStart.line, replaceTo);\n }\n\n if (replaceWith == '\\n') {\n if (!vim.visualMode) cm.replaceRange('', curStart, curEnd); // special case, where vim help says to replace by just one line-break\n\n (CodeMirror.commands.newlineAndIndentContinueComment || CodeMirror.commands.newlineAndIndent)(cm);\n } else {\n var replaceWithStr = cm.getRange(curStart, curEnd); //replace all characters in range by selected, but keep linebreaks\n\n replaceWithStr = replaceWithStr.replace(/[^\\n]/g, replaceWith);\n\n if (vim.visualBlock) {\n // Tabs are split in visua block before replacing\n var spaces = new Array(cm.getOption(\"tabSize\") + 1).join(' ');\n replaceWithStr = cm.getSelection();\n replaceWithStr = replaceWithStr.replace(/\\t/g, spaces).replace(/[^\\n]/g, replaceWith).split('\\n');\n cm.replaceSelections(replaceWithStr);\n } else {\n cm.replaceRange(replaceWithStr, curStart, curEnd);\n }\n\n if (vim.visualMode) {\n curStart = cursorIsBefore(selections[0].anchor, selections[0].head) ? selections[0].anchor : selections[0].head;\n cm.setCursor(curStart);\n exitVisualMode(cm, false);\n } else {\n cm.setCursor(offsetCursor(curEnd, 0, -1));\n }\n }\n },\n incrementNumberToken: function incrementNumberToken(cm, actionArgs) {\n var cur = cm.getCursor();\n var lineStr = cm.getLine(cur.line);\n var re = /(-?)(?:(0x)([\\da-f]+)|(0b|0|)(\\d+))/gi;\n var match;\n var start;\n var end;\n var numberStr;\n\n while ((match = re.exec(lineStr)) !== null) {\n start = match.index;\n end = start + match[0].length;\n if (cur.ch < end) break;\n }\n\n if (!actionArgs.backtrack && end <= cur.ch) return;\n\n if (match) {\n var baseStr = match[2] || match[4];\n var digits = match[3] || match[5];\n var increment = actionArgs.increase ? 1 : -1;\n var base = {\n '0b': 2,\n '0': 8,\n '': 10,\n '0x': 16\n }[baseStr.toLowerCase()];\n var number = parseInt(match[1] + digits, base) + increment * actionArgs.repeat;\n numberStr = number.toString(base);\n var zeroPadding = baseStr ? new Array(digits.length - numberStr.length + 1 + match[1].length).join('0') : '';\n\n if (numberStr.charAt(0) === '-') {\n numberStr = '-' + baseStr + zeroPadding + numberStr.substr(1);\n } else {\n numberStr = baseStr + zeroPadding + numberStr;\n }\n\n var from = Pos(cur.line, start);\n var to = Pos(cur.line, end);\n cm.replaceRange(numberStr, from, to);\n } else {\n return;\n }\n\n cm.setCursor(Pos(cur.line, start + numberStr.length - 1));\n },\n repeatLastEdit: function repeatLastEdit(cm, actionArgs, vim) {\n var lastEditInputState = vim.lastEditInputState;\n\n if (!lastEditInputState) {\n return;\n }\n\n var repeat = actionArgs.repeat;\n\n if (repeat && actionArgs.repeatIsExplicit) {\n vim.lastEditInputState.repeatOverride = repeat;\n } else {\n repeat = vim.lastEditInputState.repeatOverride || repeat;\n }\n\n _repeatLastEdit(cm, vim, repeat, false\n /** repeatForInsert */\n );\n },\n indent: function indent(cm, actionArgs) {\n cm.indentLine(cm.getCursor().line, actionArgs.indentRight);\n },\n exitInsertMode: exitInsertMode\n };\n\n function defineAction(name, fn) {\n actions[name] = fn;\n }\n /*\n * Below are miscellaneous utility functions used by vim.js\n */\n\n /**\n * Clips cursor to ensure that line is within the buffer's range\n * If includeLineBreak is true, then allow cur.ch == lineLength.\n */\n\n\n function clipCursorToContent(cm, cur, includeLineBreak) {\n var line = Math.min(Math.max(cm.firstLine(), cur.line), cm.lastLine());\n var maxCh = lineLength(cm, line) - 1;\n maxCh = includeLineBreak ? maxCh + 1 : maxCh;\n var ch = Math.min(Math.max(0, cur.ch), maxCh);\n return Pos(line, ch);\n }\n\n function copyArgs(args) {\n var ret = {};\n\n for (var prop in args) {\n if (args.hasOwnProperty(prop)) {\n ret[prop] = args[prop];\n }\n }\n\n return ret;\n }\n\n function offsetCursor(cur, offsetLine, offsetCh) {\n if (typeof offsetLine === 'object') {\n offsetCh = offsetLine.ch;\n offsetLine = offsetLine.line;\n }\n\n return Pos(cur.line + offsetLine, cur.ch + offsetCh);\n }\n\n function commandMatches(keys, keyMap, context, inputState) {\n // Partial matches are not applied. They inform the key handler\n // that the current key sequence is a subsequence of a valid key\n // sequence, so that the key buffer is not cleared.\n var match,\n partial = [],\n full = [];\n\n for (var i = 0; i < keyMap.length; i++) {\n var command = keyMap[i];\n\n if (context == 'insert' && command.context != 'insert' || command.context && command.context != context || inputState.operator && command.type == 'action' || !(match = commandMatch(keys, command.keys))) {\n continue;\n }\n\n if (match == 'partial') {\n partial.push(command);\n }\n\n if (match == 'full') {\n full.push(command);\n }\n }\n\n return {\n partial: partial.length && partial,\n full: full.length && full\n };\n }\n\n function commandMatch(pressed, mapped) {\n if (mapped.slice(-11) == '') {\n // Last character matches anything.\n var prefixLen = mapped.length - 11;\n var pressedPrefix = pressed.slice(0, prefixLen);\n var mappedPrefix = mapped.slice(0, prefixLen);\n return pressedPrefix == mappedPrefix && pressed.length > prefixLen ? 'full' : mappedPrefix.indexOf(pressedPrefix) == 0 ? 'partial' : false;\n } else {\n return pressed == mapped ? 'full' : mapped.indexOf(pressed) == 0 ? 'partial' : false;\n }\n }\n\n function lastChar(keys) {\n var match = /^.*(<[^>]+>)$/.exec(keys);\n var selectedCharacter = match ? match[1] : keys.slice(-1);\n\n if (selectedCharacter.length > 1) {\n switch (selectedCharacter) {\n case '':\n selectedCharacter = '\\n';\n break;\n\n case '':\n selectedCharacter = ' ';\n break;\n\n default:\n selectedCharacter = '';\n break;\n }\n }\n\n return selectedCharacter;\n }\n\n function repeatFn(cm, fn, repeat) {\n return function () {\n for (var i = 0; i < repeat; i++) {\n fn(cm);\n }\n };\n }\n\n function copyCursor(cur) {\n return Pos(cur.line, cur.ch);\n }\n\n function cursorEqual(cur1, cur2) {\n return cur1.ch == cur2.ch && cur1.line == cur2.line;\n }\n\n function cursorIsBefore(cur1, cur2) {\n if (cur1.line < cur2.line) {\n return true;\n }\n\n if (cur1.line == cur2.line && cur1.ch < cur2.ch) {\n return true;\n }\n\n return false;\n }\n\n function cursorMin(cur1, cur2) {\n if (arguments.length > 2) {\n cur2 = cursorMin.apply(undefined, Array.prototype.slice.call(arguments, 1));\n }\n\n return cursorIsBefore(cur1, cur2) ? cur1 : cur2;\n }\n\n function cursorMax(cur1, cur2) {\n if (arguments.length > 2) {\n cur2 = cursorMax.apply(undefined, Array.prototype.slice.call(arguments, 1));\n }\n\n return cursorIsBefore(cur1, cur2) ? cur2 : cur1;\n }\n\n function cursorIsBetween(cur1, cur2, cur3) {\n // returns true if cur2 is between cur1 and cur3.\n var cur1before2 = cursorIsBefore(cur1, cur2);\n var cur2before3 = cursorIsBefore(cur2, cur3);\n return cur1before2 && cur2before3;\n }\n\n function lineLength(cm, lineNum) {\n return cm.getLine(lineNum).length;\n }\n\n function trim(s) {\n if (s.trim) {\n return s.trim();\n }\n\n return s.replace(/^\\s+|\\s+$/g, '');\n }\n\n function escapeRegex(s) {\n return s.replace(/([.?*+$\\[\\]\\/\\\\(){}|\\-])/g, '\\\\$1');\n }\n\n function extendLineToColumn(cm, lineNum, column) {\n var endCh = lineLength(cm, lineNum);\n var spaces = new Array(column - endCh + 1).join(' ');\n cm.setCursor(Pos(lineNum, endCh));\n cm.replaceRange(spaces, cm.getCursor());\n } // This functions selects a rectangular block\n // of text with selectionEnd as any of its corner\n // Height of block:\n // Difference in selectionEnd.line and first/last selection.line\n // Width of the block:\n // Distance between selectionEnd.ch and any(first considered here) selection.ch\n\n\n function selectBlock(cm, selectionEnd) {\n var selections = [],\n ranges = cm.listSelections();\n var head = copyCursor(cm.clipPos(selectionEnd));\n var isClipped = !cursorEqual(selectionEnd, head);\n var curHead = cm.getCursor('head');\n var primIndex = getIndex(ranges, curHead);\n var wasClipped = cursorEqual(ranges[primIndex].head, ranges[primIndex].anchor);\n var max = ranges.length - 1;\n var index = max - primIndex > primIndex ? max : 0;\n var base = ranges[index].anchor;\n var firstLine = Math.min(base.line, head.line);\n var lastLine = Math.max(base.line, head.line);\n var baseCh = base.ch,\n headCh = head.ch;\n var dir = ranges[index].head.ch - baseCh;\n var newDir = headCh - baseCh;\n\n if (dir > 0 && newDir <= 0) {\n baseCh++;\n\n if (!isClipped) {\n headCh--;\n }\n } else if (dir < 0 && newDir >= 0) {\n baseCh--;\n\n if (!wasClipped) {\n headCh++;\n }\n } else if (dir < 0 && newDir == -1) {\n baseCh--;\n headCh++;\n }\n\n for (var line = firstLine; line <= lastLine; line++) {\n var range = {\n anchor: new Pos(line, baseCh),\n head: new Pos(line, headCh)\n };\n selections.push(range);\n }\n\n cm.setSelections(selections);\n selectionEnd.ch = headCh;\n base.ch = baseCh;\n return base;\n }\n\n function selectForInsert(cm, head, height) {\n var sel = [];\n\n for (var i = 0; i < height; i++) {\n var lineHead = offsetCursor(head, i, 0);\n sel.push({\n anchor: lineHead,\n head: lineHead\n });\n }\n\n cm.setSelections(sel, 0);\n } // getIndex returns the index of the cursor in the selections.\n\n\n function getIndex(ranges, cursor, end) {\n for (var i = 0; i < ranges.length; i++) {\n var atAnchor = end != 'head' && cursorEqual(ranges[i].anchor, cursor);\n var atHead = end != 'anchor' && cursorEqual(ranges[i].head, cursor);\n\n if (atAnchor || atHead) {\n return i;\n }\n }\n\n return -1;\n }\n\n function getSelectedAreaRange(cm, vim) {\n var lastSelection = vim.lastSelection;\n\n var getCurrentSelectedAreaRange = function getCurrentSelectedAreaRange() {\n var selections = cm.listSelections();\n var start = selections[0];\n var end = selections[selections.length - 1];\n var selectionStart = cursorIsBefore(start.anchor, start.head) ? start.anchor : start.head;\n var selectionEnd = cursorIsBefore(end.anchor, end.head) ? end.head : end.anchor;\n return [selectionStart, selectionEnd];\n };\n\n var getLastSelectedAreaRange = function getLastSelectedAreaRange() {\n var selectionStart = cm.getCursor();\n var selectionEnd = cm.getCursor();\n var block = lastSelection.visualBlock;\n\n if (block) {\n var width = block.width;\n var height = block.height;\n selectionEnd = Pos(selectionStart.line + height, selectionStart.ch + width);\n var selections = []; // selectBlock creates a 'proper' rectangular block.\n // We do not want that in all cases, so we manually set selections.\n\n for (var i = selectionStart.line; i < selectionEnd.line; i++) {\n var anchor = Pos(i, selectionStart.ch);\n var head = Pos(i, selectionEnd.ch);\n var range = {\n anchor: anchor,\n head: head\n };\n selections.push(range);\n }\n\n cm.setSelections(selections);\n } else {\n var start = lastSelection.anchorMark.find();\n var end = lastSelection.headMark.find();\n var line = end.line - start.line;\n var ch = end.ch - start.ch;\n selectionEnd = {\n line: selectionEnd.line + line,\n ch: line ? selectionEnd.ch : ch + selectionEnd.ch\n };\n\n if (lastSelection.visualLine) {\n selectionStart = Pos(selectionStart.line, 0);\n selectionEnd = Pos(selectionEnd.line, lineLength(cm, selectionEnd.line));\n }\n\n cm.setSelection(selectionStart, selectionEnd);\n }\n\n return [selectionStart, selectionEnd];\n };\n\n if (!vim.visualMode) {\n // In case of replaying the action.\n return getLastSelectedAreaRange();\n } else {\n return getCurrentSelectedAreaRange();\n }\n } // Updates the previous selection with the current selection's values. This\n // should only be called in visual mode.\n\n\n function updateLastSelection(cm, vim) {\n var anchor = vim.sel.anchor;\n var head = vim.sel.head; // To accommodate the effect of lastPastedText in the last selection\n\n if (vim.lastPastedText) {\n head = cm.posFromIndex(cm.indexFromPos(anchor) + vim.lastPastedText.length);\n vim.lastPastedText = null;\n }\n\n vim.lastSelection = {\n 'anchorMark': cm.setBookmark(anchor),\n 'headMark': cm.setBookmark(head),\n 'anchor': copyCursor(anchor),\n 'head': copyCursor(head),\n 'visualMode': vim.visualMode,\n 'visualLine': vim.visualLine,\n 'visualBlock': vim.visualBlock\n };\n }\n\n function expandSelection(cm, start, end) {\n var sel = cm.state.vim.sel;\n var head = sel.head;\n var anchor = sel.anchor;\n var tmp;\n\n if (cursorIsBefore(end, start)) {\n tmp = end;\n end = start;\n start = tmp;\n }\n\n if (cursorIsBefore(head, anchor)) {\n head = cursorMin(start, head);\n anchor = cursorMax(anchor, end);\n } else {\n anchor = cursorMin(start, anchor);\n head = cursorMax(head, end);\n head = offsetCursor(head, 0, -1);\n\n if (head.ch == -1 && head.line != cm.firstLine()) {\n head = Pos(head.line - 1, lineLength(cm, head.line - 1));\n }\n }\n\n return [anchor, head];\n }\n /**\n * Updates the CodeMirror selection to match the provided vim selection.\n * If no arguments are given, it uses the current vim selection state.\n */\n\n\n function updateCmSelection(cm, sel, mode) {\n var vim = cm.state.vim;\n sel = sel || vim.sel;\n var mode = mode || vim.visualLine ? 'line' : vim.visualBlock ? 'block' : 'char';\n var cmSel = makeCmSelection(cm, sel, mode);\n cm.setSelections(cmSel.ranges, cmSel.primary);\n updateFakeCursor(cm);\n }\n\n function makeCmSelection(cm, sel, mode, exclusive) {\n var head = copyCursor(sel.head);\n var anchor = copyCursor(sel.anchor);\n\n if (mode == 'char') {\n var headOffset = !exclusive && !cursorIsBefore(sel.head, sel.anchor) ? 1 : 0;\n var anchorOffset = cursorIsBefore(sel.head, sel.anchor) ? 1 : 0;\n head = offsetCursor(sel.head, 0, headOffset);\n anchor = offsetCursor(sel.anchor, 0, anchorOffset);\n return {\n ranges: [{\n anchor: anchor,\n head: head\n }],\n primary: 0\n };\n } else if (mode == 'line') {\n if (!cursorIsBefore(sel.head, sel.anchor)) {\n anchor.ch = 0;\n var lastLine = cm.lastLine();\n\n if (head.line > lastLine) {\n head.line = lastLine;\n }\n\n head.ch = lineLength(cm, head.line);\n } else {\n head.ch = 0;\n anchor.ch = lineLength(cm, anchor.line);\n }\n\n return {\n ranges: [{\n anchor: anchor,\n head: head\n }],\n primary: 0\n };\n } else if (mode == 'block') {\n var top = Math.min(anchor.line, head.line),\n left = Math.min(anchor.ch, head.ch),\n bottom = Math.max(anchor.line, head.line),\n right = Math.max(anchor.ch, head.ch) + 1;\n var height = bottom - top + 1;\n var primary = head.line == top ? 0 : height - 1;\n var ranges = [];\n\n for (var i = 0; i < height; i++) {\n ranges.push({\n anchor: Pos(top + i, left),\n head: Pos(top + i, right)\n });\n }\n\n return {\n ranges: ranges,\n primary: primary\n };\n }\n }\n\n function getHead(cm) {\n var cur = cm.getCursor('head');\n\n if (cm.getSelection().length == 1) {\n // Small corner case when only 1 character is selected. The \"real\"\n // head is the left of head and anchor.\n cur = cursorMin(cur, cm.getCursor('anchor'));\n }\n\n return cur;\n }\n /**\n * If moveHead is set to false, the CodeMirror selection will not be\n * touched. The caller assumes the responsibility of putting the cursor\n * in the right place.\n */\n\n\n function exitVisualMode(cm, moveHead) {\n var vim = cm.state.vim;\n\n if (moveHead !== false) {\n cm.setCursor(clipCursorToContent(cm, vim.sel.head));\n }\n\n updateLastSelection(cm, vim);\n vim.visualMode = false;\n vim.visualLine = false;\n vim.visualBlock = false;\n CodeMirror.signal(cm, \"vim-mode-change\", {\n mode: \"normal\"\n });\n\n if (vim.fakeCursor) {\n vim.fakeCursor.clear();\n }\n } // Remove any trailing newlines from the selection. For\n // example, with the caret at the start of the last word on the line,\n // 'dw' should word, but not the newline, while 'w' should advance the\n // caret to the first character of the next line.\n\n\n function clipToLine(cm, curStart, curEnd) {\n var selection = cm.getRange(curStart, curEnd); // Only clip if the selection ends with trailing newline + whitespace\n\n if (/\\n\\s*$/.test(selection)) {\n var lines = selection.split('\\n'); // We know this is all whitespace.\n\n lines.pop(); // Cases:\n // 1. Last word is an empty line - do not clip the trailing '\\n'\n // 2. Last word is not an empty line - clip the trailing '\\n'\n\n var line; // Find the line containing the last word, and clip all whitespace up\n // to it.\n\n for (var line = lines.pop(); lines.length > 0 && line && isWhiteSpaceString(line); line = lines.pop()) {\n curEnd.line--;\n curEnd.ch = 0;\n } // If the last word is not an empty line, clip an additional newline\n\n\n if (line) {\n curEnd.line--;\n curEnd.ch = lineLength(cm, curEnd.line);\n } else {\n curEnd.ch = 0;\n }\n }\n } // Expand the selection to line ends.\n\n\n function expandSelectionToLine(_cm, curStart, curEnd) {\n curStart.ch = 0;\n curEnd.ch = 0;\n curEnd.line++;\n }\n\n function findFirstNonWhiteSpaceCharacter(text) {\n if (!text) {\n return 0;\n }\n\n var firstNonWS = text.search(/\\S/);\n return firstNonWS == -1 ? text.length : firstNonWS;\n }\n\n function expandWordUnderCursor(cm, inclusive, _forward, bigWord, noSymbol) {\n var cur = getHead(cm);\n var line = cm.getLine(cur.line);\n var idx = cur.ch; // Seek to first word or non-whitespace character, depending on if\n // noSymbol is true.\n\n var test = noSymbol ? wordCharTest[0] : bigWordCharTest[0];\n\n while (!test(line.charAt(idx))) {\n idx++;\n\n if (idx >= line.length) {\n return null;\n }\n }\n\n if (bigWord) {\n test = bigWordCharTest[0];\n } else {\n test = wordCharTest[0];\n\n if (!test(line.charAt(idx))) {\n test = wordCharTest[1];\n }\n }\n\n var end = idx,\n start = idx;\n\n while (test(line.charAt(end)) && end < line.length) {\n end++;\n }\n\n while (test(line.charAt(start)) && start >= 0) {\n start--;\n }\n\n start++;\n\n if (inclusive) {\n // If present, include all whitespace after word.\n // Otherwise, include all whitespace before word, except indentation.\n var wordEnd = end;\n\n while (/\\s/.test(line.charAt(end)) && end < line.length) {\n end++;\n }\n\n if (wordEnd == end) {\n var wordStart = start;\n\n while (/\\s/.test(line.charAt(start - 1)) && start > 0) {\n start--;\n }\n\n if (!start) {\n start = wordStart;\n }\n }\n }\n\n return {\n start: Pos(cur.line, start),\n end: Pos(cur.line, end)\n };\n }\n\n function recordJumpPosition(cm, oldCur, newCur) {\n if (!cursorEqual(oldCur, newCur)) {\n vimGlobalState.jumpList.add(cm, oldCur, newCur);\n }\n }\n\n function recordLastCharacterSearch(increment, args) {\n vimGlobalState.lastCharacterSearch.increment = increment;\n vimGlobalState.lastCharacterSearch.forward = args.forward;\n vimGlobalState.lastCharacterSearch.selectedCharacter = args.selectedCharacter;\n }\n\n var symbolToMode = {\n '(': 'bracket',\n ')': 'bracket',\n '{': 'bracket',\n '}': 'bracket',\n '[': 'section',\n ']': 'section',\n '*': 'comment',\n '/': 'comment',\n 'm': 'method',\n 'M': 'method',\n '#': 'preprocess'\n };\n var findSymbolModes = {\n bracket: {\n isComplete: function isComplete(state) {\n if (state.nextCh === state.symb) {\n state.depth++;\n if (state.depth >= 1) return true;\n } else if (state.nextCh === state.reverseSymb) {\n state.depth--;\n }\n\n return false;\n }\n },\n section: {\n init: function init(state) {\n state.curMoveThrough = true;\n state.symb = (state.forward ? ']' : '[') === state.symb ? '{' : '}';\n },\n isComplete: function isComplete(state) {\n return state.index === 0 && state.nextCh === state.symb;\n }\n },\n comment: {\n isComplete: function isComplete(state) {\n var found = state.lastCh === '*' && state.nextCh === '/';\n state.lastCh = state.nextCh;\n return found;\n }\n },\n // TODO: The original Vim implementation only operates on level 1 and 2.\n // The current implementation doesn't check for code block level and\n // therefore it operates on any levels.\n method: {\n init: function init(state) {\n state.symb = state.symb === 'm' ? '{' : '}';\n state.reverseSymb = state.symb === '{' ? '}' : '{';\n },\n isComplete: function isComplete(state) {\n if (state.nextCh === state.symb) return true;\n return false;\n }\n },\n preprocess: {\n init: function init(state) {\n state.index = 0;\n },\n isComplete: function isComplete(state) {\n if (state.nextCh === '#') {\n var token = state.lineText.match(/#(\\w+)/)[1];\n\n if (token === 'endif') {\n if (state.forward && state.depth === 0) {\n return true;\n }\n\n state.depth++;\n } else if (token === 'if') {\n if (!state.forward && state.depth === 0) {\n return true;\n }\n\n state.depth--;\n }\n\n if (token === 'else' && state.depth === 0) return true;\n }\n\n return false;\n }\n }\n };\n\n function findSymbol(cm, repeat, forward, symb) {\n var cur = copyCursor(cm.getCursor());\n var increment = forward ? 1 : -1;\n var endLine = forward ? cm.lineCount() : -1;\n var curCh = cur.ch;\n var line = cur.line;\n var lineText = cm.getLine(line);\n var state = {\n lineText: lineText,\n nextCh: lineText.charAt(curCh),\n lastCh: null,\n index: curCh,\n symb: symb,\n reverseSymb: (forward ? {\n ')': '(',\n '}': '{'\n } : {\n '(': ')',\n '{': '}'\n })[symb],\n forward: forward,\n depth: 0,\n curMoveThrough: false\n };\n var mode = symbolToMode[symb];\n if (!mode) return cur;\n var init = findSymbolModes[mode].init;\n var isComplete = findSymbolModes[mode].isComplete;\n\n if (init) {\n init(state);\n }\n\n while (line !== endLine && repeat) {\n state.index += increment;\n state.nextCh = state.lineText.charAt(state.index);\n\n if (!state.nextCh) {\n line += increment;\n state.lineText = cm.getLine(line) || '';\n\n if (increment > 0) {\n state.index = 0;\n } else {\n var lineLen = state.lineText.length;\n state.index = lineLen > 0 ? lineLen - 1 : 0;\n }\n\n state.nextCh = state.lineText.charAt(state.index);\n }\n\n if (isComplete(state)) {\n cur.line = line;\n cur.ch = state.index;\n repeat--;\n }\n }\n\n if (state.nextCh || state.curMoveThrough) {\n return Pos(line, state.index);\n }\n\n return cur;\n }\n /*\n * Returns the boundaries of the next word. If the cursor in the middle of\n * the word, then returns the boundaries of the current word, starting at\n * the cursor. If the cursor is at the start/end of a word, and we are going\n * forward/backward, respectively, find the boundaries of the next word.\n *\n * @param {CodeMirror} cm CodeMirror object.\n * @param {Cursor} cur The cursor position.\n * @param {boolean} forward True to search forward. False to search\n * backward.\n * @param {boolean} bigWord True if punctuation count as part of the word.\n * False if only [a-zA-Z0-9] characters count as part of the word.\n * @param {boolean} emptyLineIsWord True if empty lines should be treated\n * as words.\n * @return {Object{from:number, to:number, line: number}} The boundaries of\n * the word, or null if there are no more words.\n */\n\n\n function findWord(cm, cur, forward, bigWord, emptyLineIsWord) {\n var lineNum = cur.line;\n var pos = cur.ch;\n var line = cm.getLine(lineNum);\n var dir = forward ? 1 : -1;\n var charTests = bigWord ? bigWordCharTest : wordCharTest;\n\n if (emptyLineIsWord && line == '') {\n lineNum += dir;\n line = cm.getLine(lineNum);\n\n if (!isLine(cm, lineNum)) {\n return null;\n }\n\n pos = forward ? 0 : line.length;\n }\n\n while (true) {\n if (emptyLineIsWord && line == '') {\n return {\n from: 0,\n to: 0,\n line: lineNum\n };\n }\n\n var stop = dir > 0 ? line.length : -1;\n var wordStart = stop,\n wordEnd = stop; // Find bounds of next word.\n\n while (pos != stop) {\n var foundWord = false;\n\n for (var i = 0; i < charTests.length && !foundWord; ++i) {\n if (charTests[i](line.charAt(pos))) {\n wordStart = pos; // Advance to end of word.\n\n while (pos != stop && charTests[i](line.charAt(pos))) {\n pos += dir;\n }\n\n wordEnd = pos;\n foundWord = wordStart != wordEnd;\n\n if (wordStart == cur.ch && lineNum == cur.line && wordEnd == wordStart + dir) {\n // We started at the end of a word. Find the next one.\n continue;\n } else {\n return {\n from: Math.min(wordStart, wordEnd + 1),\n to: Math.max(wordStart, wordEnd),\n line: lineNum\n };\n }\n }\n }\n\n if (!foundWord) {\n pos += dir;\n }\n } // Advance to next/prev line.\n\n\n lineNum += dir;\n\n if (!isLine(cm, lineNum)) {\n return null;\n }\n\n line = cm.getLine(lineNum);\n pos = dir > 0 ? 0 : line.length;\n }\n }\n /**\n * @param {CodeMirror} cm CodeMirror object.\n * @param {Pos} cur The position to start from.\n * @param {int} repeat Number of words to move past.\n * @param {boolean} forward True to search forward. False to search\n * backward.\n * @param {boolean} wordEnd True to move to end of word. False to move to\n * beginning of word.\n * @param {boolean} bigWord True if punctuation count as part of the word.\n * False if only alphabet characters count as part of the word.\n * @return {Cursor} The position the cursor should move to.\n */\n\n\n function moveToWord(cm, cur, repeat, forward, wordEnd, bigWord) {\n var curStart = copyCursor(cur);\n var words = [];\n\n if (forward && !wordEnd || !forward && wordEnd) {\n repeat++;\n } // For 'e', empty lines are not considered words, go figure.\n\n\n var emptyLineIsWord = !(forward && wordEnd);\n\n for (var i = 0; i < repeat; i++) {\n var word = findWord(cm, cur, forward, bigWord, emptyLineIsWord);\n\n if (!word) {\n var eodCh = lineLength(cm, cm.lastLine());\n words.push(forward ? {\n line: cm.lastLine(),\n from: eodCh,\n to: eodCh\n } : {\n line: 0,\n from: 0,\n to: 0\n });\n break;\n }\n\n words.push(word);\n cur = Pos(word.line, forward ? word.to - 1 : word.from);\n }\n\n var shortCircuit = words.length != repeat;\n var firstWord = words[0];\n var lastWord = words.pop();\n\n if (forward && !wordEnd) {\n // w\n if (!shortCircuit && (firstWord.from != curStart.ch || firstWord.line != curStart.line)) {\n // We did not start in the middle of a word. Discard the extra word at the end.\n lastWord = words.pop();\n }\n\n return Pos(lastWord.line, lastWord.from);\n } else if (forward && wordEnd) {\n return Pos(lastWord.line, lastWord.to - 1);\n } else if (!forward && wordEnd) {\n // ge\n if (!shortCircuit && (firstWord.to != curStart.ch || firstWord.line != curStart.line)) {\n // We did not start in the middle of a word. Discard the extra word at the end.\n lastWord = words.pop();\n }\n\n return Pos(lastWord.line, lastWord.to);\n } else {\n // b\n return Pos(lastWord.line, lastWord.from);\n }\n }\n\n function _moveToCharacter(cm, repeat, forward, character) {\n var cur = cm.getCursor();\n var start = cur.ch;\n var idx;\n\n for (var i = 0; i < repeat; i++) {\n var line = cm.getLine(cur.line);\n idx = charIdxInLine(start, line, character, forward, true);\n\n if (idx == -1) {\n return null;\n }\n\n start = idx;\n }\n\n return Pos(cm.getCursor().line, idx);\n }\n\n function _moveToColumn(cm, repeat) {\n // repeat is always >= 1, so repeat - 1 always corresponds\n // to the column we want to go to.\n var line = cm.getCursor().line;\n return clipCursorToContent(cm, Pos(line, repeat - 1));\n }\n\n function updateMark(cm, vim, markName, pos) {\n if (!inArray(markName, validMarks)) {\n return;\n }\n\n if (vim.marks[markName]) {\n vim.marks[markName].clear();\n }\n\n vim.marks[markName] = cm.setBookmark(pos);\n }\n\n function charIdxInLine(start, line, character, forward, includeChar) {\n // Search for char in line.\n // motion_options: {forward, includeChar}\n // If includeChar = true, include it too.\n // If forward = true, search forward, else search backwards.\n // If char is not found on this line, do nothing\n var idx;\n\n if (forward) {\n idx = line.indexOf(character, start + 1);\n\n if (idx != -1 && !includeChar) {\n idx -= 1;\n }\n } else {\n idx = line.lastIndexOf(character, start - 1);\n\n if (idx != -1 && !includeChar) {\n idx += 1;\n }\n }\n\n return idx;\n }\n\n function findParagraph(cm, head, repeat, dir, inclusive) {\n var line = head.line;\n var min = cm.firstLine();\n var max = cm.lastLine();\n var start,\n end,\n i = line;\n\n function isEmpty(i) {\n return !cm.getLine(i);\n }\n\n function isBoundary(i, dir, any) {\n if (any) {\n return isEmpty(i) != isEmpty(i + dir);\n }\n\n return !isEmpty(i) && isEmpty(i + dir);\n }\n\n if (dir) {\n while (min <= i && i <= max && repeat > 0) {\n if (isBoundary(i, dir)) {\n repeat--;\n }\n\n i += dir;\n }\n\n return new Pos(i, 0);\n }\n\n var vim = cm.state.vim;\n\n if (vim.visualLine && isBoundary(line, 1, true)) {\n var anchor = vim.sel.anchor;\n\n if (isBoundary(anchor.line, -1, true)) {\n if (!inclusive || anchor.line != line) {\n line += 1;\n }\n }\n }\n\n var startState = isEmpty(line);\n\n for (i = line; i <= max && repeat; i++) {\n if (isBoundary(i, 1, true)) {\n if (!inclusive || isEmpty(i) != startState) {\n repeat--;\n }\n }\n }\n\n end = new Pos(i, 0); // select boundary before paragraph for the last one\n\n if (i > max && !startState) {\n startState = true;\n } else {\n inclusive = false;\n }\n\n for (i = line; i > min; i--) {\n if (!inclusive || isEmpty(i) == startState || i == line) {\n if (isBoundary(i, -1, true)) {\n break;\n }\n }\n }\n\n start = new Pos(i, 0);\n return {\n start: start,\n end: end\n };\n }\n\n function findSentence(cm, cur, repeat, dir) {\n /*\n Takes an index object\n {\n line: the line string,\n ln: line number,\n pos: index in line,\n dir: direction of traversal (-1 or 1)\n }\n and modifies the line, ln, and pos members to represent the\n next valid position or sets them to null if there are\n no more valid positions.\n */\n function nextChar(cm, idx) {\n if (idx.pos + idx.dir < 0 || idx.pos + idx.dir >= idx.line.length) {\n idx.ln += idx.dir;\n\n if (!isLine(cm, idx.ln)) {\n idx.line = null;\n idx.ln = null;\n idx.pos = null;\n return;\n }\n\n idx.line = cm.getLine(idx.ln);\n idx.pos = idx.dir > 0 ? 0 : idx.line.length - 1;\n } else {\n idx.pos += idx.dir;\n }\n }\n /*\n Performs one iteration of traversal in forward direction\n Returns an index object of the new location\n */\n\n\n function forward(cm, ln, pos, dir) {\n var line = cm.getLine(ln);\n var stop = line === \"\";\n var curr = {\n line: line,\n ln: ln,\n pos: pos,\n dir: dir\n };\n var last_valid = {\n ln: curr.ln,\n pos: curr.pos\n };\n var skip_empty_lines = curr.line === \"\"; // Move one step to skip character we start on\n\n nextChar(cm, curr);\n\n while (curr.line !== null) {\n last_valid.ln = curr.ln;\n last_valid.pos = curr.pos;\n\n if (curr.line === \"\" && !skip_empty_lines) {\n return {\n ln: curr.ln,\n pos: curr.pos\n };\n } else if (stop && curr.line !== \"\" && !isWhiteSpaceString(curr.line[curr.pos])) {\n return {\n ln: curr.ln,\n pos: curr.pos\n };\n } else if (isEndOfSentenceSymbol(curr.line[curr.pos]) && !stop && (curr.pos === curr.line.length - 1 || isWhiteSpaceString(curr.line[curr.pos + 1]))) {\n stop = true;\n }\n\n nextChar(cm, curr);\n }\n /*\n Set the position to the last non whitespace character on the last\n valid line in the case that we reach the end of the document.\n */\n\n\n var line = cm.getLine(last_valid.ln);\n last_valid.pos = 0;\n\n for (var i = line.length - 1; i >= 0; --i) {\n if (!isWhiteSpaceString(line[i])) {\n last_valid.pos = i;\n break;\n }\n }\n\n return last_valid;\n }\n /*\n Performs one iteration of traversal in reverse direction\n Returns an index object of the new location\n */\n\n\n function reverse(cm, ln, pos, dir) {\n var line = cm.getLine(ln);\n var curr = {\n line: line,\n ln: ln,\n pos: pos,\n dir: dir\n };\n var last_valid = {\n ln: curr.ln,\n pos: null\n };\n var skip_empty_lines = curr.line === \"\"; // Move one step to skip character we start on\n\n nextChar(cm, curr);\n\n while (curr.line !== null) {\n if (curr.line === \"\" && !skip_empty_lines) {\n if (last_valid.pos !== null) {\n return last_valid;\n } else {\n return {\n ln: curr.ln,\n pos: curr.pos\n };\n }\n } else if (isEndOfSentenceSymbol(curr.line[curr.pos]) && last_valid.pos !== null && !(curr.ln === last_valid.ln && curr.pos + 1 === last_valid.pos)) {\n return last_valid;\n } else if (curr.line !== \"\" && !isWhiteSpaceString(curr.line[curr.pos])) {\n skip_empty_lines = false;\n last_valid = {\n ln: curr.ln,\n pos: curr.pos\n };\n }\n\n nextChar(cm, curr);\n }\n /*\n Set the position to the first non whitespace character on the last\n valid line in the case that we reach the beginning of the document.\n */\n\n\n var line = cm.getLine(last_valid.ln);\n last_valid.pos = 0;\n\n for (var i = 0; i < line.length; ++i) {\n if (!isWhiteSpaceString(line[i])) {\n last_valid.pos = i;\n break;\n }\n }\n\n return last_valid;\n }\n\n var curr_index = {\n ln: cur.line,\n pos: cur.ch\n };\n\n while (repeat > 0) {\n if (dir < 0) {\n curr_index = reverse(cm, curr_index.ln, curr_index.pos, dir);\n } else {\n curr_index = forward(cm, curr_index.ln, curr_index.pos, dir);\n }\n\n repeat--;\n }\n\n return Pos(curr_index.ln, curr_index.pos);\n } // TODO: perhaps this finagling of start and end positions belonds\n // in codemirror/replaceRange?\n\n\n function selectCompanionObject(cm, head, symb, inclusive) {\n var cur = head,\n start,\n end;\n var bracketRegexp = {\n '(': /[()]/,\n ')': /[()]/,\n '[': /[[\\]]/,\n ']': /[[\\]]/,\n '{': /[{}]/,\n '}': /[{}]/,\n '<': /[<>]/,\n '>': /[<>]/\n }[symb];\n var openSym = {\n '(': '(',\n ')': '(',\n '[': '[',\n ']': '[',\n '{': '{',\n '}': '{',\n '<': '<',\n '>': '<'\n }[symb];\n var curChar = cm.getLine(cur.line).charAt(cur.ch); // Due to the behavior of scanForBracket, we need to add an offset if the\n // cursor is on a matching open bracket.\n\n var offset = curChar === openSym ? 1 : 0;\n start = cm.scanForBracket(Pos(cur.line, cur.ch + offset), -1, undefined, {\n 'bracketRegex': bracketRegexp\n });\n end = cm.scanForBracket(Pos(cur.line, cur.ch + offset), 1, undefined, {\n 'bracketRegex': bracketRegexp\n });\n\n if (!start || !end) {\n return {\n start: cur,\n end: cur\n };\n }\n\n start = start.pos;\n end = end.pos;\n\n if (start.line == end.line && start.ch > end.ch || start.line > end.line) {\n var tmp = start;\n start = end;\n end = tmp;\n }\n\n if (inclusive) {\n end.ch += 1;\n } else {\n start.ch += 1;\n }\n\n return {\n start: start,\n end: end\n };\n } // Takes in a symbol and a cursor and tries to simulate text objects that\n // have identical opening and closing symbols\n // TODO support across multiple lines\n\n\n function findBeginningAndEnd(cm, head, symb, inclusive) {\n var cur = copyCursor(head);\n var line = cm.getLine(cur.line);\n var chars = line.split('');\n var start, end, i, len;\n var firstIndex = chars.indexOf(symb); // the decision tree is to always look backwards for the beginning first,\n // but if the cursor is in front of the first instance of the symb,\n // then move the cursor forward\n\n if (cur.ch < firstIndex) {\n cur.ch = firstIndex; // Why is this line even here???\n // cm.setCursor(cur.line, firstIndex+1);\n } // otherwise if the cursor is currently on the closing symbol\n else if (firstIndex < cur.ch && chars[cur.ch] == symb) {\n end = cur.ch; // assign end to the current cursor\n\n --cur.ch; // make sure to look backwards\n } // if we're currently on the symbol, we've got a start\n\n\n if (chars[cur.ch] == symb && !end) {\n start = cur.ch + 1; // assign start to ahead of the cursor\n } else {\n // go backwards to find the start\n for (i = cur.ch; i > -1 && !start; i--) {\n if (chars[i] == symb) {\n start = i + 1;\n }\n }\n } // look forwards for the end symbol\n\n\n if (start && !end) {\n for (i = start, len = chars.length; i < len && !end; i++) {\n if (chars[i] == symb) {\n end = i;\n }\n }\n } // nothing found\n\n\n if (!start || !end) {\n return {\n start: cur,\n end: cur\n };\n } // include the symbols\n\n\n if (inclusive) {\n --start;\n ++end;\n }\n\n return {\n start: Pos(cur.line, start),\n end: Pos(cur.line, end)\n };\n } // Search functions\n\n\n defineOption('pcre', true, 'boolean');\n\n function SearchState() {}\n\n SearchState.prototype = {\n getQuery: function getQuery() {\n return vimGlobalState.query;\n },\n setQuery: function setQuery(query) {\n vimGlobalState.query = query;\n },\n getOverlay: function getOverlay() {\n return this.searchOverlay;\n },\n setOverlay: function setOverlay(overlay) {\n this.searchOverlay = overlay;\n },\n isReversed: function isReversed() {\n return vimGlobalState.isReversed;\n },\n setReversed: function setReversed(reversed) {\n vimGlobalState.isReversed = reversed;\n },\n getScrollbarAnnotate: function getScrollbarAnnotate() {\n return this.annotate;\n },\n setScrollbarAnnotate: function setScrollbarAnnotate(annotate) {\n this.annotate = annotate;\n }\n };\n\n function getSearchState(cm) {\n var vim = cm.state.vim;\n return vim.searchState_ || (vim.searchState_ = new SearchState());\n }\n\n function dialog(cm, template, shortText, onClose, options) {\n if (cm.openDialog) {\n cm.openDialog(template, onClose, {\n bottom: true,\n value: options.value,\n onKeyDown: options.onKeyDown,\n onKeyUp: options.onKeyUp,\n selectValueOnOpen: false\n });\n } else {\n onClose(prompt(shortText, ''));\n }\n }\n\n function splitBySlash(argString) {\n return splitBySeparator(argString, '/');\n }\n\n function findUnescapedSlashes(argString) {\n return findUnescapedSeparators(argString, '/');\n }\n\n function splitBySeparator(argString, separator) {\n var slashes = findUnescapedSeparators(argString, separator) || [];\n if (!slashes.length) return [];\n var tokens = []; // in case of strings like foo/bar\n\n if (slashes[0] !== 0) return;\n\n for (var i = 0; i < slashes.length; i++) {\n if (typeof slashes[i] == 'number') tokens.push(argString.substring(slashes[i] + 1, slashes[i + 1]));\n }\n\n return tokens;\n }\n\n function findUnescapedSeparators(str, separator) {\n if (!separator) separator = '/';\n var escapeNextChar = false;\n var slashes = [];\n\n for (var i = 0; i < str.length; i++) {\n var c = str.charAt(i);\n\n if (!escapeNextChar && c == separator) {\n slashes.push(i);\n }\n\n escapeNextChar = !escapeNextChar && c == '\\\\';\n }\n\n return slashes;\n } // Translates a search string from ex (vim) syntax into javascript form.\n\n\n function translateRegex(str) {\n // When these match, add a '\\' if unescaped or remove one if escaped.\n var specials = '|(){'; // Remove, but never add, a '\\' for these.\n\n var unescape = '}';\n var escapeNextChar = false;\n var out = [];\n\n for (var i = -1; i < str.length; i++) {\n var c = str.charAt(i) || '';\n var n = str.charAt(i + 1) || '';\n var specialComesNext = n && specials.indexOf(n) != -1;\n\n if (escapeNextChar) {\n if (c !== '\\\\' || !specialComesNext) {\n out.push(c);\n }\n\n escapeNextChar = false;\n } else {\n if (c === '\\\\') {\n escapeNextChar = true; // Treat the unescape list as special for removing, but not adding '\\'.\n\n if (n && unescape.indexOf(n) != -1) {\n specialComesNext = true;\n } // Not passing this test means removing a '\\'.\n\n\n if (!specialComesNext || n === '\\\\') {\n out.push(c);\n }\n } else {\n out.push(c);\n\n if (specialComesNext && n !== '\\\\') {\n out.push('\\\\');\n }\n }\n }\n }\n\n return out.join('');\n } // Translates the replace part of a search and replace from ex (vim) syntax into\n // javascript form. Similar to translateRegex, but additionally fixes back references\n // (translates '\\[0..9]' to '$[0..9]') and follows different rules for escaping '$'.\n\n\n var charUnescapes = {\n '\\\\n': '\\n',\n '\\\\r': '\\r',\n '\\\\t': '\\t'\n };\n\n function translateRegexReplace(str) {\n var escapeNextChar = false;\n var out = [];\n\n for (var i = -1; i < str.length; i++) {\n var c = str.charAt(i) || '';\n var n = str.charAt(i + 1) || '';\n\n if (charUnescapes[c + n]) {\n out.push(charUnescapes[c + n]);\n i++;\n } else if (escapeNextChar) {\n // At any point in the loop, escapeNextChar is true if the previous\n // character was a '\\' and was not escaped.\n out.push(c);\n escapeNextChar = false;\n } else {\n if (c === '\\\\') {\n escapeNextChar = true;\n\n if (isNumber(n) || n === '$') {\n out.push('$');\n } else if (n !== '/' && n !== '\\\\') {\n out.push('\\\\');\n }\n } else {\n if (c === '$') {\n out.push('$');\n }\n\n out.push(c);\n\n if (n === '/') {\n out.push('\\\\');\n }\n }\n }\n }\n\n return out.join('');\n } // Unescape \\ and / in the replace part, for PCRE mode.\n\n\n var unescapes = {\n '\\\\/': '/',\n '\\\\\\\\': '\\\\',\n '\\\\n': '\\n',\n '\\\\r': '\\r',\n '\\\\t': '\\t',\n '\\\\&': '&'\n };\n\n function unescapeRegexReplace(str) {\n var stream = new CodeMirror.StringStream(str);\n var output = [];\n\n while (!stream.eol()) {\n // Search for \\.\n while (stream.peek() && stream.peek() != '\\\\') {\n output.push(stream.next());\n }\n\n var matched = false;\n\n for (var matcher in unescapes) {\n if (stream.match(matcher, true)) {\n matched = true;\n output.push(unescapes[matcher]);\n break;\n }\n }\n\n if (!matched) {\n // Don't change anything\n output.push(stream.next());\n }\n }\n\n return output.join('');\n }\n /**\n * Extract the regular expression from the query and return a Regexp object.\n * Returns null if the query is blank.\n * If ignoreCase is passed in, the Regexp object will have the 'i' flag set.\n * If smartCase is passed in, and the query contains upper case letters,\n * then ignoreCase is overridden, and the 'i' flag will not be set.\n * If the query contains the /i in the flag part of the regular expression,\n * then both ignoreCase and smartCase are ignored, and 'i' will be passed\n * through to the Regex object.\n */\n\n\n function parseQuery(query, ignoreCase, smartCase) {\n // First update the last search register\n var lastSearchRegister = vimGlobalState.registerController.getRegister('/');\n lastSearchRegister.setText(query); // Check if the query is already a regex.\n\n if (query instanceof RegExp) {\n return query;\n } // First try to extract regex + flags from the input. If no flags found,\n // extract just the regex. IE does not accept flags directly defined in\n // the regex string in the form /regex/flags\n\n\n var slashes = findUnescapedSlashes(query);\n var regexPart;\n var forceIgnoreCase;\n\n if (!slashes.length) {\n // Query looks like 'regexp'\n regexPart = query;\n } else {\n // Query looks like 'regexp/...'\n regexPart = query.substring(0, slashes[0]);\n var flagsPart = query.substring(slashes[0]);\n forceIgnoreCase = flagsPart.indexOf('i') != -1;\n }\n\n if (!regexPart) {\n return null;\n }\n\n if (!getOption('pcre')) {\n regexPart = translateRegex(regexPart);\n }\n\n if (smartCase) {\n ignoreCase = /^[^A-Z]*$/.test(regexPart);\n }\n\n var regexp = new RegExp(regexPart, ignoreCase || forceIgnoreCase ? 'i' : undefined);\n return regexp;\n }\n\n function showConfirm(cm, text) {\n if (cm.openNotification) {\n cm.openNotification('' + text + '', {\n bottom: true,\n duration: 5000\n });\n } else {\n alert(text);\n }\n }\n\n function makePrompt(prefix, desc) {\n var raw = '' + (prefix || \"\") + '';\n if (desc) raw += ' ' + desc + '';\n return raw;\n }\n\n var searchPromptDesc = '(Javascript regexp)';\n\n function showPrompt(cm, options) {\n var shortText = (options.prefix || '') + ' ' + (options.desc || '');\n var prompt = makePrompt(options.prefix, options.desc);\n dialog(cm, prompt, shortText, options.onClose, options);\n }\n\n function regexEqual(r1, r2) {\n if (r1 instanceof RegExp && r2 instanceof RegExp) {\n var props = ['global', 'multiline', 'ignoreCase', 'source'];\n\n for (var i = 0; i < props.length; i++) {\n var prop = props[i];\n\n if (r1[prop] !== r2[prop]) {\n return false;\n }\n }\n\n return true;\n }\n\n return false;\n } // Returns true if the query is valid.\n\n\n function updateSearchQuery(cm, rawQuery, ignoreCase, smartCase) {\n if (!rawQuery) {\n return;\n }\n\n var state = getSearchState(cm);\n var query = parseQuery(rawQuery, !!ignoreCase, !!smartCase);\n\n if (!query) {\n return;\n }\n\n highlightSearchMatches(cm, query);\n\n if (regexEqual(query, state.getQuery())) {\n return query;\n }\n\n state.setQuery(query);\n return query;\n }\n\n function searchOverlay(query) {\n if (query.source.charAt(0) == '^') {\n var matchSol = true;\n }\n\n return {\n token: function token(stream) {\n if (matchSol && !stream.sol()) {\n stream.skipToEnd();\n return;\n }\n\n var match = stream.match(query, false);\n\n if (match) {\n if (match[0].length == 0) {\n // Matched empty string, skip to next.\n stream.next();\n return 'searching';\n }\n\n if (!stream.sol()) {\n // Backtrack 1 to match \\b\n stream.backUp(1);\n\n if (!query.exec(stream.next() + match[0])) {\n stream.next();\n return null;\n }\n }\n\n stream.match(query);\n return 'searching';\n }\n\n while (!stream.eol()) {\n stream.next();\n if (stream.match(query, false)) break;\n }\n },\n query: query\n };\n }\n\n var highlightTimeout = 0;\n\n function highlightSearchMatches(cm, query) {\n clearTimeout(highlightTimeout);\n highlightTimeout = setTimeout(function () {\n var searchState = getSearchState(cm);\n var overlay = searchState.getOverlay();\n\n if (!overlay || query != overlay.query) {\n if (overlay) {\n cm.removeOverlay(overlay);\n }\n\n overlay = searchOverlay(query);\n cm.addOverlay(overlay);\n\n if (cm.showMatchesOnScrollbar) {\n if (searchState.getScrollbarAnnotate()) {\n searchState.getScrollbarAnnotate().clear();\n }\n\n searchState.setScrollbarAnnotate(cm.showMatchesOnScrollbar(query));\n }\n\n searchState.setOverlay(overlay);\n }\n }, 50);\n }\n\n function _findNext(cm, prev, query, repeat) {\n if (repeat === undefined) {\n repeat = 1;\n }\n\n return cm.operation(function () {\n var pos = cm.getCursor();\n var cursor = cm.getSearchCursor(query, pos);\n\n for (var i = 0; i < repeat; i++) {\n var found = cursor.find(prev);\n\n if (i == 0 && found && cursorEqual(cursor.from(), pos)) {\n found = cursor.find(prev);\n }\n\n if (!found) {\n // SearchCursor may have returned null because it hit EOF, wrap\n // around and try again.\n cursor = cm.getSearchCursor(query, prev ? Pos(cm.lastLine()) : Pos(cm.firstLine(), 0));\n\n if (!cursor.find(prev)) {\n return;\n }\n }\n }\n\n return cursor.from();\n });\n }\n\n function clearSearchHighlight(cm) {\n var state = getSearchState(cm);\n cm.removeOverlay(getSearchState(cm).getOverlay());\n state.setOverlay(null);\n\n if (state.getScrollbarAnnotate()) {\n state.getScrollbarAnnotate().clear();\n state.setScrollbarAnnotate(null);\n }\n }\n /**\n * Check if pos is in the specified range, INCLUSIVE.\n * Range can be specified with 1 or 2 arguments.\n * If the first range argument is an array, treat it as an array of line\n * numbers. Match pos against any of the lines.\n * If the first range argument is a number,\n * if there is only 1 range argument, check if pos has the same line\n * number\n * if there are 2 range arguments, then check if pos is in between the two\n * range arguments.\n */\n\n\n function isInRange(pos, start, end) {\n if (typeof pos != 'number') {\n // Assume it is a cursor position. Get the line number.\n pos = pos.line;\n }\n\n if (start instanceof Array) {\n return inArray(pos, start);\n } else {\n if (end) {\n return pos >= start && pos <= end;\n } else {\n return pos == start;\n }\n }\n }\n\n function getUserVisibleLines(cm) {\n var scrollInfo = cm.getScrollInfo();\n var occludeToleranceTop = 6;\n var occludeToleranceBottom = 10;\n var from = cm.coordsChar({\n left: 0,\n top: occludeToleranceTop + scrollInfo.top\n }, 'local');\n var bottomY = scrollInfo.clientHeight - occludeToleranceBottom + scrollInfo.top;\n var to = cm.coordsChar({\n left: 0,\n top: bottomY\n }, 'local');\n return {\n top: from.line,\n bottom: to.line\n };\n }\n\n function getMarkPos(cm, vim, markName) {\n if (markName == '\\'') {\n var history = cm.doc.history.done;\n var event = history[history.length - 2];\n return event && event.ranges && event.ranges[0].head;\n } else if (markName == '.') {\n if (cm.doc.history.lastModTime == 0) {\n return; // If no changes, bail out; don't bother to copy or reverse history array.\n } else {\n var changeHistory = cm.doc.history.done.filter(function (el) {\n if (el.changes !== undefined) {\n return el;\n }\n });\n changeHistory.reverse();\n var lastEditPos = changeHistory[0].changes[0].to;\n }\n\n return lastEditPos;\n }\n\n var mark = vim.marks[markName];\n return mark && mark.find();\n }\n\n var ExCommandDispatcher = function ExCommandDispatcher() {\n this.buildCommandMap_();\n };\n\n ExCommandDispatcher.prototype = {\n processCommand: function processCommand(cm, input, opt_params) {\n var that = this;\n cm.operation(function () {\n cm.curOp.isVimOp = true;\n\n that._processCommand(cm, input, opt_params);\n });\n },\n _processCommand: function _processCommand(cm, input, opt_params) {\n var vim = cm.state.vim;\n var commandHistoryRegister = vimGlobalState.registerController.getRegister(':');\n var previousCommand = commandHistoryRegister.toString();\n\n if (vim.visualMode) {\n exitVisualMode(cm);\n }\n\n var inputStream = new CodeMirror.StringStream(input); // update \": with the latest command whether valid or invalid\n\n commandHistoryRegister.setText(input);\n var params = opt_params || {};\n params.input = input;\n\n try {\n this.parseInput_(cm, inputStream, params);\n } catch (e) {\n showConfirm(cm, e);\n throw e;\n }\n\n var command;\n var commandName;\n\n if (!params.commandName) {\n // If only a line range is defined, move to the line.\n if (params.line !== undefined) {\n commandName = 'move';\n }\n } else {\n command = this.matchCommand_(params.commandName);\n\n if (command) {\n commandName = command.name;\n\n if (command.excludeFromCommandHistory) {\n commandHistoryRegister.setText(previousCommand);\n }\n\n this.parseCommandArgs_(inputStream, params, command);\n\n if (command.type == 'exToKey') {\n // Handle Ex to Key mapping.\n for (var i = 0; i < command.toKeys.length; i++) {\n CodeMirror.Vim.handleKey(cm, command.toKeys[i], 'mapping');\n }\n\n return;\n } else if (command.type == 'exToEx') {\n // Handle Ex to Ex mapping.\n this.processCommand(cm, command.toInput);\n return;\n }\n }\n }\n\n if (!commandName) {\n showConfirm(cm, 'Not an editor command \":' + input + '\"');\n return;\n }\n\n try {\n exCommands[commandName](cm, params); // Possibly asynchronous commands (e.g. substitute, which might have a\n // user confirmation), are responsible for calling the callback when\n // done. All others have it taken care of for them here.\n\n if ((!command || !command.possiblyAsync) && params.callback) {\n params.callback();\n }\n } catch (e) {\n showConfirm(cm, e);\n throw e;\n }\n },\n parseInput_: function parseInput_(cm, inputStream, result) {\n inputStream.eatWhile(':'); // Parse range.\n\n if (inputStream.eat('%')) {\n result.line = cm.firstLine();\n result.lineEnd = cm.lastLine();\n } else {\n result.line = this.parseLineSpec_(cm, inputStream);\n\n if (result.line !== undefined && inputStream.eat(',')) {\n result.lineEnd = this.parseLineSpec_(cm, inputStream);\n }\n } // Parse command name.\n\n\n var commandMatch = inputStream.match(/^(\\w+)/);\n\n if (commandMatch) {\n result.commandName = commandMatch[1];\n } else {\n result.commandName = inputStream.match(/.*/)[0];\n }\n\n return result;\n },\n parseLineSpec_: function parseLineSpec_(cm, inputStream) {\n var numberMatch = inputStream.match(/^(\\d+)/);\n\n if (numberMatch) {\n // Absolute line number plus offset (N+M or N-M) is probably a typo,\n // not something the user actually wanted. (NB: vim does allow this.)\n return parseInt(numberMatch[1], 10) - 1;\n }\n\n switch (inputStream.next()) {\n case '.':\n return this.parseLineSpecOffset_(inputStream, cm.getCursor().line);\n\n case '$':\n return this.parseLineSpecOffset_(inputStream, cm.lastLine());\n\n case '\\'':\n var markName = inputStream.next();\n var markPos = getMarkPos(cm, cm.state.vim, markName);\n if (!markPos) throw new Error('Mark not set');\n return this.parseLineSpecOffset_(inputStream, markPos.line);\n\n case '-':\n case '+':\n inputStream.backUp(1); // Offset is relative to current line if not otherwise specified.\n\n return this.parseLineSpecOffset_(inputStream, cm.getCursor().line);\n\n default:\n inputStream.backUp(1);\n return undefined;\n }\n },\n parseLineSpecOffset_: function parseLineSpecOffset_(inputStream, line) {\n var offsetMatch = inputStream.match(/^([+-])?(\\d+)/);\n\n if (offsetMatch) {\n var offset = parseInt(offsetMatch[2], 10);\n\n if (offsetMatch[1] == \"-\") {\n line -= offset;\n } else {\n line += offset;\n }\n }\n\n return line;\n },\n parseCommandArgs_: function parseCommandArgs_(inputStream, params, command) {\n if (inputStream.eol()) {\n return;\n }\n\n params.argString = inputStream.match(/.*/)[0]; // Parse command-line arguments\n\n var delim = command.argDelimiter || /\\s+/;\n var args = trim(params.argString).split(delim);\n\n if (args.length && args[0]) {\n params.args = args;\n }\n },\n matchCommand_: function matchCommand_(commandName) {\n // Return the command in the command map that matches the shortest\n // prefix of the passed in command name. The match is guaranteed to be\n // unambiguous if the defaultExCommandMap's shortNames are set up\n // correctly. (see @code{defaultExCommandMap}).\n for (var i = commandName.length; i > 0; i--) {\n var prefix = commandName.substring(0, i);\n\n if (this.commandMap_[prefix]) {\n var command = this.commandMap_[prefix];\n\n if (command.name.indexOf(commandName) === 0) {\n return command;\n }\n }\n }\n\n return null;\n },\n buildCommandMap_: function buildCommandMap_() {\n this.commandMap_ = {};\n\n for (var i = 0; i < defaultExCommandMap.length; i++) {\n var command = defaultExCommandMap[i];\n var key = command.shortName || command.name;\n this.commandMap_[key] = command;\n }\n },\n map: function map(lhs, rhs, ctx) {\n if (lhs != ':' && lhs.charAt(0) == ':') {\n if (ctx) {\n throw Error('Mode not supported for ex mappings');\n }\n\n var commandName = lhs.substring(1);\n\n if (rhs != ':' && rhs.charAt(0) == ':') {\n // Ex to Ex mapping\n this.commandMap_[commandName] = {\n name: commandName,\n type: 'exToEx',\n toInput: rhs.substring(1),\n user: true\n };\n } else {\n // Ex to key mapping\n this.commandMap_[commandName] = {\n name: commandName,\n type: 'exToKey',\n toKeys: rhs,\n user: true\n };\n }\n } else {\n if (rhs != ':' && rhs.charAt(0) == ':') {\n // Key to Ex mapping.\n var mapping = {\n keys: lhs,\n type: 'keyToEx',\n exArgs: {\n input: rhs.substring(1)\n }\n };\n\n if (ctx) {\n mapping.context = ctx;\n }\n\n defaultKeymap.unshift(mapping);\n } else {\n // Key to key mapping\n var mapping = {\n keys: lhs,\n type: 'keyToKey',\n toKeys: rhs\n };\n\n if (ctx) {\n mapping.context = ctx;\n }\n\n defaultKeymap.unshift(mapping);\n }\n }\n },\n unmap: function unmap(lhs, ctx) {\n if (lhs != ':' && lhs.charAt(0) == ':') {\n // Ex to Ex or Ex to key mapping\n if (ctx) {\n throw Error('Mode not supported for ex mappings');\n }\n\n var commandName = lhs.substring(1);\n\n if (this.commandMap_[commandName] && this.commandMap_[commandName].user) {\n delete this.commandMap_[commandName];\n return;\n }\n } else {\n // Key to Ex or key to key mapping\n var keys = lhs;\n\n for (var i = 0; i < defaultKeymap.length; i++) {\n if (keys == defaultKeymap[i].keys && defaultKeymap[i].context === ctx) {\n defaultKeymap.splice(i, 1);\n return;\n }\n }\n }\n\n throw Error('No such mapping.');\n }\n };\n var exCommands = {\n colorscheme: function colorscheme(cm, params) {\n if (!params.args || params.args.length < 1) {\n showConfirm(cm, cm.getOption('theme'));\n return;\n }\n\n cm.setOption('theme', params.args[0]);\n },\n map: function map(cm, params, ctx) {\n var mapArgs = params.args;\n\n if (!mapArgs || mapArgs.length < 2) {\n if (cm) {\n showConfirm(cm, 'Invalid mapping: ' + params.input);\n }\n\n return;\n }\n\n exCommandDispatcher.map(mapArgs[0], mapArgs[1], ctx);\n },\n imap: function imap(cm, params) {\n this.map(cm, params, 'insert');\n },\n nmap: function nmap(cm, params) {\n this.map(cm, params, 'normal');\n },\n vmap: function vmap(cm, params) {\n this.map(cm, params, 'visual');\n },\n unmap: function unmap(cm, params, ctx) {\n var mapArgs = params.args;\n\n if (!mapArgs || mapArgs.length < 1) {\n if (cm) {\n showConfirm(cm, 'No such mapping: ' + params.input);\n }\n\n return;\n }\n\n exCommandDispatcher.unmap(mapArgs[0], ctx);\n },\n move: function move(cm, params) {\n commandDispatcher.processCommand(cm, cm.state.vim, {\n type: 'motion',\n motion: 'moveToLineOrEdgeOfDocument',\n motionArgs: {\n forward: false,\n explicitRepeat: true,\n linewise: true\n },\n repeatOverride: params.line + 1\n });\n },\n set: function set(cm, params) {\n var setArgs = params.args; // Options passed through to the setOption/getOption calls. May be passed in by the\n // local/global versions of the set command\n\n var setCfg = params.setCfg || {};\n\n if (!setArgs || setArgs.length < 1) {\n if (cm) {\n showConfirm(cm, 'Invalid mapping: ' + params.input);\n }\n\n return;\n }\n\n var expr = setArgs[0].split('=');\n var optionName = expr[0];\n var value = expr[1];\n var forceGet = false;\n\n if (optionName.charAt(optionName.length - 1) == '?') {\n // If post-fixed with ?, then the set is actually a get.\n if (value) {\n throw Error('Trailing characters: ' + params.argString);\n }\n\n optionName = optionName.substring(0, optionName.length - 1);\n forceGet = true;\n }\n\n if (value === undefined && optionName.substring(0, 2) == 'no') {\n // To set boolean options to false, the option name is prefixed with\n // 'no'.\n optionName = optionName.substring(2);\n value = false;\n }\n\n var optionIsBoolean = options[optionName] && options[optionName].type == 'boolean';\n\n if (optionIsBoolean && value == undefined) {\n // Calling set with a boolean option sets it to true.\n value = true;\n } // If no value is provided, then we assume this is a get.\n\n\n if (!optionIsBoolean && value === undefined || forceGet) {\n var oldValue = getOption(optionName, cm, setCfg);\n\n if (oldValue instanceof Error) {\n showConfirm(cm, oldValue.message);\n } else if (oldValue === true || oldValue === false) {\n showConfirm(cm, ' ' + (oldValue ? '' : 'no') + optionName);\n } else {\n showConfirm(cm, ' ' + optionName + '=' + oldValue);\n }\n } else {\n var setOptionReturn = setOption(optionName, value, cm, setCfg);\n\n if (setOptionReturn instanceof Error) {\n showConfirm(cm, setOptionReturn.message);\n }\n }\n },\n setlocal: function setlocal(cm, params) {\n // setCfg is passed through to setOption\n params.setCfg = {\n scope: 'local'\n };\n this.set(cm, params);\n },\n setglobal: function setglobal(cm, params) {\n // setCfg is passed through to setOption\n params.setCfg = {\n scope: 'global'\n };\n this.set(cm, params);\n },\n registers: function registers(cm, params) {\n var regArgs = params.args;\n var registers = vimGlobalState.registerController.registers;\n var regInfo = '----------Registers----------

    ';\n\n if (!regArgs) {\n for (var registerName in registers) {\n var text = registers[registerName].toString();\n\n if (text.length) {\n regInfo += '\"' + registerName + ' ' + text + '
    ';\n }\n }\n } else {\n var registerName;\n regArgs = regArgs.join('');\n\n for (var i = 0; i < regArgs.length; i++) {\n registerName = regArgs.charAt(i);\n\n if (!vimGlobalState.registerController.isValidRegister(registerName)) {\n continue;\n }\n\n var register = registers[registerName] || new Register();\n regInfo += '\"' + registerName + ' ' + register.toString() + '
    ';\n }\n }\n\n showConfirm(cm, regInfo);\n },\n sort: function sort(cm, params) {\n var reverse, ignoreCase, unique, number, pattern;\n\n function parseArgs() {\n if (params.argString) {\n var args = new CodeMirror.StringStream(params.argString);\n\n if (args.eat('!')) {\n reverse = true;\n }\n\n if (args.eol()) {\n return;\n }\n\n if (!args.eatSpace()) {\n return 'Invalid arguments';\n }\n\n var opts = args.match(/([dinuox]+)?\\s*(\\/.+\\/)?\\s*/);\n\n if (!opts && !args.eol()) {\n return 'Invalid arguments';\n }\n\n if (opts[1]) {\n ignoreCase = opts[1].indexOf('i') != -1;\n unique = opts[1].indexOf('u') != -1;\n var decimal = opts[1].indexOf('d') != -1 || opts[1].indexOf('n') != -1 && 1;\n var hex = opts[1].indexOf('x') != -1 && 1;\n var octal = opts[1].indexOf('o') != -1 && 1;\n\n if (decimal + hex + octal > 1) {\n return 'Invalid arguments';\n }\n\n number = decimal && 'decimal' || hex && 'hex' || octal && 'octal';\n }\n\n if (opts[2]) {\n pattern = new RegExp(opts[2].substr(1, opts[2].length - 2), ignoreCase ? 'i' : '');\n }\n }\n }\n\n var err = parseArgs();\n\n if (err) {\n showConfirm(cm, err + ': ' + params.argString);\n return;\n }\n\n var lineStart = params.line || cm.firstLine();\n var lineEnd = params.lineEnd || params.line || cm.lastLine();\n\n if (lineStart == lineEnd) {\n return;\n }\n\n var curStart = Pos(lineStart, 0);\n var curEnd = Pos(lineEnd, lineLength(cm, lineEnd));\n var text = cm.getRange(curStart, curEnd).split('\\n');\n var numberRegex = pattern ? pattern : number == 'decimal' ? /(-?)([\\d]+)/ : number == 'hex' ? /(-?)(?:0x)?([0-9a-f]+)/i : number == 'octal' ? /([0-7]+)/ : null;\n var radix = number == 'decimal' ? 10 : number == 'hex' ? 16 : number == 'octal' ? 8 : null;\n var numPart = [],\n textPart = [];\n\n if (number || pattern) {\n for (var i = 0; i < text.length; i++) {\n var matchPart = pattern ? text[i].match(pattern) : null;\n\n if (matchPart && matchPart[0] != '') {\n numPart.push(matchPart);\n } else if (!pattern && numberRegex.exec(text[i])) {\n numPart.push(text[i]);\n } else {\n textPart.push(text[i]);\n }\n }\n } else {\n textPart = text;\n }\n\n function compareFn(a, b) {\n if (reverse) {\n var tmp;\n tmp = a;\n a = b;\n b = tmp;\n }\n\n if (ignoreCase) {\n a = a.toLowerCase();\n b = b.toLowerCase();\n }\n\n var anum = number && numberRegex.exec(a);\n var bnum = number && numberRegex.exec(b);\n\n if (!anum) {\n return a < b ? -1 : 1;\n }\n\n anum = parseInt((anum[1] + anum[2]).toLowerCase(), radix);\n bnum = parseInt((bnum[1] + bnum[2]).toLowerCase(), radix);\n return anum - bnum;\n }\n\n function comparePatternFn(a, b) {\n if (reverse) {\n var tmp;\n tmp = a;\n a = b;\n b = tmp;\n }\n\n if (ignoreCase) {\n a[0] = a[0].toLowerCase();\n b[0] = b[0].toLowerCase();\n }\n\n return a[0] < b[0] ? -1 : 1;\n }\n\n numPart.sort(pattern ? comparePatternFn : compareFn);\n\n if (pattern) {\n for (var i = 0; i < numPart.length; i++) {\n numPart[i] = numPart[i].input;\n }\n } else if (!number) {\n textPart.sort(compareFn);\n }\n\n text = !reverse ? textPart.concat(numPart) : numPart.concat(textPart);\n\n if (unique) {\n // Remove duplicate lines\n var textOld = text;\n var lastLine;\n text = [];\n\n for (var i = 0; i < textOld.length; i++) {\n if (textOld[i] != lastLine) {\n text.push(textOld[i]);\n }\n\n lastLine = textOld[i];\n }\n }\n\n cm.replaceRange(text.join('\\n'), curStart, curEnd);\n },\n global: function global(cm, params) {\n // a global command is of the form\n // :[range]g/pattern/[cmd]\n // argString holds the string /pattern/[cmd]\n var argString = params.argString;\n\n if (!argString) {\n showConfirm(cm, 'Regular Expression missing from global');\n return;\n } // range is specified here\n\n\n var lineStart = params.line !== undefined ? params.line : cm.firstLine();\n var lineEnd = params.lineEnd || params.line || cm.lastLine(); // get the tokens from argString\n\n var tokens = splitBySlash(argString);\n var regexPart = argString,\n cmd;\n\n if (tokens.length) {\n regexPart = tokens[0];\n cmd = tokens.slice(1, tokens.length).join('/');\n }\n\n if (regexPart) {\n // If regex part is empty, then use the previous query. Otherwise\n // use the regex part as the new query.\n try {\n updateSearchQuery(cm, regexPart, true\n /** ignoreCase */\n , true\n /** smartCase */\n );\n } catch (e) {\n showConfirm(cm, 'Invalid regex: ' + regexPart);\n return;\n }\n } // now that we have the regexPart, search for regex matches in the\n // specified range of lines\n\n\n var query = getSearchState(cm).getQuery();\n var matchedLines = [],\n content = '';\n\n for (var i = lineStart; i <= lineEnd; i++) {\n var matched = query.test(cm.getLine(i));\n\n if (matched) {\n matchedLines.push(i + 1);\n content += cm.getLine(i) + '
    ';\n }\n } // if there is no [cmd], just display the list of matched lines\n\n\n if (!cmd) {\n showConfirm(cm, content);\n return;\n }\n\n var index = 0;\n\n var nextCommand = function nextCommand() {\n if (index < matchedLines.length) {\n var command = matchedLines[index] + cmd;\n exCommandDispatcher.processCommand(cm, command, {\n callback: nextCommand\n });\n }\n\n index++;\n };\n\n nextCommand();\n },\n substitute: function substitute(cm, params) {\n if (!cm.getSearchCursor) {\n throw new Error('Search feature not available. Requires searchcursor.js or ' + 'any other getSearchCursor implementation.');\n }\n\n var argString = params.argString;\n var tokens = argString ? splitBySeparator(argString, argString[0]) : [];\n var regexPart,\n replacePart = '',\n trailing,\n flagsPart,\n count;\n var confirm = false; // Whether to confirm each replace.\n\n var global = false; // True to replace all instances on a line, false to replace only 1.\n\n if (tokens.length) {\n regexPart = tokens[0];\n\n if (getOption('pcre') && regexPart !== '') {\n regexPart = new RegExp(regexPart).source; //normalize not escaped characters\n }\n\n replacePart = tokens[1];\n\n if (regexPart && regexPart[regexPart.length - 1] === '$') {\n regexPart = regexPart.slice(0, regexPart.length - 1) + '\\\\n';\n replacePart = replacePart ? replacePart + '\\n' : '\\n';\n }\n\n if (replacePart !== undefined) {\n if (getOption('pcre')) {\n replacePart = unescapeRegexReplace(replacePart.replace(/([^\\\\])&/g, \"$1$$&\"));\n } else {\n replacePart = translateRegexReplace(replacePart);\n }\n\n vimGlobalState.lastSubstituteReplacePart = replacePart;\n }\n\n trailing = tokens[2] ? tokens[2].split(' ') : [];\n } else {\n // either the argString is empty or its of the form ' hello/world'\n // actually splitBySlash returns a list of tokens\n // only if the string starts with a '/'\n if (argString && argString.length) {\n showConfirm(cm, 'Substitutions should be of the form ' + ':s/pattern/replace/');\n return;\n }\n } // After the 3rd slash, we can have flags followed by a space followed\n // by count.\n\n\n if (trailing) {\n flagsPart = trailing[0];\n count = parseInt(trailing[1]);\n\n if (flagsPart) {\n if (flagsPart.indexOf('c') != -1) {\n confirm = true;\n flagsPart.replace('c', '');\n }\n\n if (flagsPart.indexOf('g') != -1) {\n global = true;\n flagsPart.replace('g', '');\n }\n\n if (getOption('pcre')) {\n regexPart = regexPart + '/' + flagsPart;\n } else {\n regexPart = regexPart.replace(/\\//g, \"\\\\/\") + '/' + flagsPart;\n }\n }\n }\n\n if (regexPart) {\n // If regex part is empty, then use the previous query. Otherwise use\n // the regex part as the new query.\n try {\n updateSearchQuery(cm, regexPart, true\n /** ignoreCase */\n , true\n /** smartCase */\n );\n } catch (e) {\n showConfirm(cm, 'Invalid regex: ' + regexPart);\n return;\n }\n }\n\n replacePart = replacePart || vimGlobalState.lastSubstituteReplacePart;\n\n if (replacePart === undefined) {\n showConfirm(cm, 'No previous substitute regular expression');\n return;\n }\n\n var state = getSearchState(cm);\n var query = state.getQuery();\n var lineStart = params.line !== undefined ? params.line : cm.getCursor().line;\n var lineEnd = params.lineEnd || lineStart;\n\n if (lineStart == cm.firstLine() && lineEnd == cm.lastLine()) {\n lineEnd = Infinity;\n }\n\n if (count) {\n lineStart = lineEnd;\n lineEnd = lineStart + count - 1;\n }\n\n var startPos = clipCursorToContent(cm, Pos(lineStart, 0));\n var cursor = cm.getSearchCursor(query, startPos);\n doReplace(cm, confirm, global, lineStart, lineEnd, cursor, query, replacePart, params.callback);\n },\n redo: CodeMirror.commands.redo,\n undo: CodeMirror.commands.undo,\n write: function write(cm) {\n if (CodeMirror.commands.save) {\n // If a save command is defined, call it.\n CodeMirror.commands.save(cm);\n } else if (cm.save) {\n // Saves to text area if no save command is defined and cm.save() is available.\n cm.save();\n }\n },\n nohlsearch: function nohlsearch(cm) {\n clearSearchHighlight(cm);\n },\n yank: function yank(cm) {\n var cur = copyCursor(cm.getCursor());\n var line = cur.line;\n var lineText = cm.getLine(line);\n vimGlobalState.registerController.pushText('0', 'yank', lineText, true, true);\n },\n delmarks: function delmarks(cm, params) {\n if (!params.argString || !trim(params.argString)) {\n showConfirm(cm, 'Argument required');\n return;\n }\n\n var state = cm.state.vim;\n var stream = new CodeMirror.StringStream(trim(params.argString));\n\n while (!stream.eol()) {\n stream.eatSpace(); // Record the streams position at the beginning of the loop for use\n // in error messages.\n\n var count = stream.pos;\n\n if (!stream.match(/[a-zA-Z]/, false)) {\n showConfirm(cm, 'Invalid argument: ' + params.argString.substring(count));\n return;\n }\n\n var sym = stream.next(); // Check if this symbol is part of a range\n\n if (stream.match('-', true)) {\n // This symbol is part of a range.\n // The range must terminate at an alphabetic character.\n if (!stream.match(/[a-zA-Z]/, false)) {\n showConfirm(cm, 'Invalid argument: ' + params.argString.substring(count));\n return;\n }\n\n var startMark = sym;\n var finishMark = stream.next(); // The range must terminate at an alphabetic character which\n // shares the same case as the start of the range.\n\n if (isLowerCase(startMark) && isLowerCase(finishMark) || isUpperCase(startMark) && isUpperCase(finishMark)) {\n var start = startMark.charCodeAt(0);\n var finish = finishMark.charCodeAt(0);\n\n if (start >= finish) {\n showConfirm(cm, 'Invalid argument: ' + params.argString.substring(count));\n return;\n } // Because marks are always ASCII values, and we have\n // determined that they are the same case, we can use\n // their char codes to iterate through the defined range.\n\n\n for (var j = 0; j <= finish - start; j++) {\n var mark = String.fromCharCode(start + j);\n delete state.marks[mark];\n }\n } else {\n showConfirm(cm, 'Invalid argument: ' + startMark + '-');\n return;\n }\n } else {\n // This symbol is a valid mark, and is not part of a range.\n delete state.marks[sym];\n }\n }\n }\n };\n var exCommandDispatcher = new ExCommandDispatcher();\n /**\n * @param {CodeMirror} cm CodeMirror instance we are in.\n * @param {boolean} confirm Whether to confirm each replace.\n * @param {Cursor} lineStart Line to start replacing from.\n * @param {Cursor} lineEnd Line to stop replacing at.\n * @param {RegExp} query Query for performing matches with.\n * @param {string} replaceWith Text to replace matches with. May contain $1,\n * $2, etc for replacing captured groups using Javascript replace.\n * @param {function()} callback A callback for when the replace is done.\n */\n\n function doReplace(cm, confirm, global, lineStart, lineEnd, searchCursor, query, replaceWith, callback) {\n // Set up all the functions.\n cm.state.vim.exMode = true;\n var done = false;\n var lastPos = searchCursor.from();\n\n function replaceAll() {\n cm.operation(function () {\n while (!done) {\n replace();\n next();\n }\n\n stop();\n });\n }\n\n function replace() {\n var text = cm.getRange(searchCursor.from(), searchCursor.to());\n var newText = text.replace(query, replaceWith);\n searchCursor.replace(newText);\n }\n\n function next() {\n // The below only loops to skip over multiple occurrences on the same\n // line when 'global' is not true.\n while (searchCursor.findNext() && isInRange(searchCursor.from(), lineStart, lineEnd)) {\n if (!global && lastPos && searchCursor.from().line == lastPos.line) {\n continue;\n }\n\n cm.scrollIntoView(searchCursor.from(), 30);\n cm.setSelection(searchCursor.from(), searchCursor.to());\n lastPos = searchCursor.from();\n done = false;\n return;\n }\n\n done = true;\n }\n\n function stop(close) {\n if (close) {\n close();\n }\n\n cm.focus();\n\n if (lastPos) {\n cm.setCursor(lastPos);\n var vim = cm.state.vim;\n vim.exMode = false;\n vim.lastHPos = vim.lastHSPos = lastPos.ch;\n }\n\n if (callback) {\n callback();\n }\n }\n\n function onPromptKeyDown(e, _value, close) {\n // Swallow all keys.\n CodeMirror.e_stop(e);\n var keyName = CodeMirror.keyName(e);\n\n switch (keyName) {\n case 'Y':\n replace();\n next();\n break;\n\n case 'N':\n next();\n break;\n\n case 'A':\n // replaceAll contains a call to close of its own. We don't want it\n // to fire too early or multiple times.\n var savedCallback = callback;\n callback = undefined;\n cm.operation(replaceAll);\n callback = savedCallback;\n break;\n\n case 'L':\n replace();\n // fall through and exit.\n\n case 'Q':\n case 'Esc':\n case 'Ctrl-C':\n case 'Ctrl-[':\n stop(close);\n break;\n }\n\n if (done) {\n stop(close);\n }\n\n return true;\n } // Actually do replace.\n\n\n next();\n\n if (done) {\n showConfirm(cm, 'No matches for ' + query.source);\n return;\n }\n\n if (!confirm) {\n replaceAll();\n\n if (callback) {\n callback();\n }\n\n return;\n }\n\n showPrompt(cm, {\n prefix: 'replace with ' + replaceWith + ' (y/n/a/q/l)',\n onKeyDown: onPromptKeyDown\n });\n }\n\n CodeMirror.keyMap.vim = {\n attach: attachVimMap,\n detach: detachVimMap,\n call: cmKey\n };\n\n function exitInsertMode(cm) {\n var vim = cm.state.vim;\n var macroModeState = vimGlobalState.macroModeState;\n var insertModeChangeRegister = vimGlobalState.registerController.getRegister('.');\n var isPlaying = macroModeState.isPlaying;\n var lastChange = macroModeState.lastInsertModeChanges;\n\n if (!isPlaying) {\n cm.off('change', onChange);\n CodeMirror.off(cm.getInputField(), 'keydown', onKeyEventTargetKeyDown);\n }\n\n if (!isPlaying && vim.insertModeRepeat > 1) {\n // Perform insert mode repeat for commands like 3,a and 3,o.\n _repeatLastEdit(cm, vim, vim.insertModeRepeat - 1, true\n /** repeatForInsert */\n );\n\n vim.lastEditInputState.repeatOverride = vim.insertModeRepeat;\n }\n\n delete vim.insertModeRepeat;\n vim.insertMode = false;\n cm.setCursor(cm.getCursor().line, cm.getCursor().ch - 1);\n cm.setOption('keyMap', 'vim');\n cm.setOption('disableInput', true);\n cm.toggleOverwrite(false); // exit replace mode if we were in it.\n // update the \". register before exiting insert mode\n\n insertModeChangeRegister.setText(lastChange.changes.join(''));\n CodeMirror.signal(cm, \"vim-mode-change\", {\n mode: \"normal\"\n });\n\n if (macroModeState.isRecording) {\n logInsertModeChange(macroModeState);\n }\n }\n\n function _mapCommand(command) {\n defaultKeymap.unshift(command);\n }\n\n function mapCommand(keys, type, name, args, extra) {\n var command = {\n keys: keys,\n type: type\n };\n command[type] = name;\n command[type + \"Args\"] = args;\n\n for (var key in extra) {\n command[key] = extra[key];\n }\n\n _mapCommand(command);\n } // The timeout in milliseconds for the two-character ESC keymap should be\n // adjusted according to your typing speed to prevent false positives.\n\n\n defineOption('insertModeEscKeysTimeout', 200, 'number');\n CodeMirror.keyMap['vim-insert'] = {\n // TODO: override navigation keys so that Esc will cancel automatic\n // indentation from o, O, i_\n fallthrough: ['default'],\n attach: attachVimMap,\n detach: detachVimMap,\n call: cmKey\n };\n CodeMirror.keyMap['vim-replace'] = {\n 'Backspace': 'goCharLeft',\n fallthrough: ['vim-insert'],\n attach: attachVimMap,\n detach: detachVimMap,\n call: cmKey\n };\n\n function executeMacroRegister(cm, vim, macroModeState, registerName) {\n var register = vimGlobalState.registerController.getRegister(registerName);\n\n if (registerName == ':') {\n // Read-only register containing last Ex command.\n if (register.keyBuffer[0]) {\n exCommandDispatcher.processCommand(cm, register.keyBuffer[0]);\n }\n\n macroModeState.isPlaying = false;\n return;\n }\n\n var keyBuffer = register.keyBuffer;\n var imc = 0;\n macroModeState.isPlaying = true;\n macroModeState.replaySearchQueries = register.searchQueries.slice(0);\n\n for (var i = 0; i < keyBuffer.length; i++) {\n var text = keyBuffer[i];\n var match, key;\n\n while (text) {\n // Pull off one command key, which is either a single character\n // or a special sequence wrapped in '<' and '>', e.g. ''.\n match = /<\\w+-.+?>|<\\w+>|./.exec(text);\n key = match[0];\n text = text.substring(match.index + key.length);\n CodeMirror.Vim.handleKey(cm, key, 'macro');\n\n if (vim.insertMode) {\n var changes = register.insertModeChanges[imc++].changes;\n vimGlobalState.macroModeState.lastInsertModeChanges.changes = changes;\n repeatInsertModeChanges(cm, changes, 1);\n exitInsertMode(cm);\n }\n }\n }\n\n macroModeState.isPlaying = false;\n }\n\n function logKey(macroModeState, key) {\n if (macroModeState.isPlaying) {\n return;\n }\n\n var registerName = macroModeState.latestRegister;\n var register = vimGlobalState.registerController.getRegister(registerName);\n\n if (register) {\n register.pushText(key);\n }\n }\n\n function logInsertModeChange(macroModeState) {\n if (macroModeState.isPlaying) {\n return;\n }\n\n var registerName = macroModeState.latestRegister;\n var register = vimGlobalState.registerController.getRegister(registerName);\n\n if (register && register.pushInsertModeChanges) {\n register.pushInsertModeChanges(macroModeState.lastInsertModeChanges);\n }\n }\n\n function logSearchQuery(macroModeState, query) {\n if (macroModeState.isPlaying) {\n return;\n }\n\n var registerName = macroModeState.latestRegister;\n var register = vimGlobalState.registerController.getRegister(registerName);\n\n if (register && register.pushSearchQuery) {\n register.pushSearchQuery(query);\n }\n }\n /**\n * Listens for changes made in insert mode.\n * Should only be active in insert mode.\n */\n\n\n function onChange(cm, changeObj) {\n var macroModeState = vimGlobalState.macroModeState;\n var lastChange = macroModeState.lastInsertModeChanges;\n\n if (!macroModeState.isPlaying) {\n while (changeObj) {\n lastChange.expectCursorActivityForChange = true;\n\n if (lastChange.ignoreCount > 1) {\n lastChange.ignoreCount--;\n } else if (changeObj.origin == '+input' || changeObj.origin == 'paste' || changeObj.origin === undefined\n /* only in testing */\n ) {\n var selectionCount = cm.listSelections().length;\n if (selectionCount > 1) lastChange.ignoreCount = selectionCount;\n var text = changeObj.text.join('\\n');\n\n if (lastChange.maybeReset) {\n lastChange.changes = [];\n lastChange.maybeReset = false;\n }\n\n if (text) {\n if (cm.state.overwrite && !/\\n/.test(text)) {\n lastChange.changes.push([text]);\n } else {\n lastChange.changes.push(text);\n }\n }\n } // Change objects may be chained with next.\n\n\n changeObj = changeObj.next;\n }\n }\n }\n /**\n * Listens for any kind of cursor activity on CodeMirror.\n */\n\n\n function onCursorActivity(cm) {\n var vim = cm.state.vim;\n\n if (vim.insertMode) {\n // Tracking cursor activity in insert mode (for macro support).\n var macroModeState = vimGlobalState.macroModeState;\n\n if (macroModeState.isPlaying) {\n return;\n }\n\n var lastChange = macroModeState.lastInsertModeChanges;\n\n if (lastChange.expectCursorActivityForChange) {\n lastChange.expectCursorActivityForChange = false;\n } else {\n // Cursor moved outside the context of an edit. Reset the change.\n lastChange.maybeReset = true;\n }\n } else if (!cm.curOp.isVimOp) {\n handleExternalSelection(cm, vim);\n }\n\n if (vim.visualMode) {\n updateFakeCursor(cm);\n }\n }\n\n function updateFakeCursor(cm) {\n var vim = cm.state.vim;\n var from = clipCursorToContent(cm, copyCursor(vim.sel.head));\n var to = offsetCursor(from, 0, 1);\n\n if (vim.fakeCursor) {\n vim.fakeCursor.clear();\n }\n\n vim.fakeCursor = cm.markText(from, to, {\n className: 'cm-animate-fat-cursor'\n });\n }\n\n function handleExternalSelection(cm, vim) {\n var anchor = cm.getCursor('anchor');\n var head = cm.getCursor('head'); // Enter or exit visual mode to match mouse selection.\n\n if (vim.visualMode && !cm.somethingSelected()) {\n exitVisualMode(cm, false);\n } else if (!vim.visualMode && !vim.insertMode && cm.somethingSelected()) {\n vim.visualMode = true;\n vim.visualLine = false;\n CodeMirror.signal(cm, \"vim-mode-change\", {\n mode: \"visual\"\n });\n }\n\n if (vim.visualMode) {\n // Bind CodeMirror selection model to vim selection model.\n // Mouse selections are considered visual characterwise.\n var headOffset = !cursorIsBefore(head, anchor) ? -1 : 0;\n var anchorOffset = cursorIsBefore(head, anchor) ? -1 : 0;\n head = offsetCursor(head, 0, headOffset);\n anchor = offsetCursor(anchor, 0, anchorOffset);\n vim.sel = {\n anchor: anchor,\n head: head\n };\n updateMark(cm, vim, '<', cursorMin(head, anchor));\n updateMark(cm, vim, '>', cursorMax(head, anchor));\n } else if (!vim.insertMode) {\n // Reset lastHPos if selection was modified by something outside of vim mode e.g. by mouse.\n vim.lastHPos = cm.getCursor().ch;\n }\n }\n /** Wrapper for special keys pressed in insert mode */\n\n\n function InsertModeKey(keyName) {\n this.keyName = keyName;\n }\n /**\n * Handles raw key down events from the text area.\n * - Should only be active in insert mode.\n * - For recording deletes in insert mode.\n */\n\n\n function onKeyEventTargetKeyDown(e) {\n var macroModeState = vimGlobalState.macroModeState;\n var lastChange = macroModeState.lastInsertModeChanges;\n var keyName = CodeMirror.keyName(e);\n\n if (!keyName) {\n return;\n }\n\n function onKeyFound() {\n if (lastChange.maybeReset) {\n lastChange.changes = [];\n lastChange.maybeReset = false;\n }\n\n lastChange.changes.push(new InsertModeKey(keyName));\n return true;\n }\n\n if (keyName.indexOf('Delete') != -1 || keyName.indexOf('Backspace') != -1) {\n CodeMirror.lookupKey(keyName, 'vim-insert', onKeyFound);\n }\n }\n /**\n * Repeats the last edit, which includes exactly 1 command and at most 1\n * insert. Operator and motion commands are read from lastEditInputState,\n * while action commands are read from lastEditActionCommand.\n *\n * If repeatForInsert is true, then the function was called by\n * exitInsertMode to repeat the insert mode changes the user just made. The\n * corresponding enterInsertMode call was made with a count.\n */\n\n\n function _repeatLastEdit(cm, vim, repeat, repeatForInsert) {\n var macroModeState = vimGlobalState.macroModeState;\n macroModeState.isPlaying = true;\n var isAction = !!vim.lastEditActionCommand;\n var cachedInputState = vim.inputState;\n\n function repeatCommand() {\n if (isAction) {\n commandDispatcher.processAction(cm, vim, vim.lastEditActionCommand);\n } else {\n commandDispatcher.evalInput(cm, vim);\n }\n }\n\n function repeatInsert(repeat) {\n if (macroModeState.lastInsertModeChanges.changes.length > 0) {\n // For some reason, repeat cw in desktop VIM does not repeat\n // insert mode changes. Will conform to that behavior.\n repeat = !vim.lastEditActionCommand ? 1 : repeat;\n var changeObject = macroModeState.lastInsertModeChanges;\n repeatInsertModeChanges(cm, changeObject.changes, repeat);\n }\n }\n\n vim.inputState = vim.lastEditInputState;\n\n if (isAction && vim.lastEditActionCommand.interlaceInsertRepeat) {\n // o and O repeat have to be interlaced with insert repeats so that the\n // insertions appear on separate lines instead of the last line.\n for (var i = 0; i < repeat; i++) {\n repeatCommand();\n repeatInsert(1);\n }\n } else {\n if (!repeatForInsert) {\n // Hack to get the cursor to end up at the right place. If I is\n // repeated in insert mode repeat, cursor will be 1 insert\n // change set left of where it should be.\n repeatCommand();\n }\n\n repeatInsert(repeat);\n }\n\n vim.inputState = cachedInputState;\n\n if (vim.insertMode && !repeatForInsert) {\n // Don't exit insert mode twice. If repeatForInsert is set, then we\n // were called by an exitInsertMode call lower on the stack.\n exitInsertMode(cm);\n }\n\n macroModeState.isPlaying = false;\n }\n\n function repeatInsertModeChanges(cm, changes, repeat) {\n function keyHandler(binding) {\n if (typeof binding == 'string') {\n CodeMirror.commands[binding](cm);\n } else {\n binding(cm);\n }\n\n return true;\n }\n\n var head = cm.getCursor('head');\n var visualBlock = vimGlobalState.macroModeState.lastInsertModeChanges.visualBlock;\n\n if (visualBlock) {\n // Set up block selection again for repeating the changes.\n selectForInsert(cm, head, visualBlock + 1);\n repeat = cm.listSelections().length;\n cm.setCursor(head);\n }\n\n for (var i = 0; i < repeat; i++) {\n if (visualBlock) {\n cm.setCursor(offsetCursor(head, i, 0));\n }\n\n for (var j = 0; j < changes.length; j++) {\n var change = changes[j];\n\n if (change instanceof InsertModeKey) {\n CodeMirror.lookupKey(change.keyName, 'vim-insert', keyHandler);\n } else if (typeof change == \"string\") {\n var cur = cm.getCursor();\n cm.replaceRange(change, cur, cur);\n } else {\n var start = cm.getCursor();\n var end = offsetCursor(start, 0, change[0].length);\n cm.replaceRange(change[0], start, end);\n }\n }\n }\n\n if (visualBlock) {\n cm.setCursor(offsetCursor(head, 0, 1));\n }\n }\n\n resetVimGlobalState();\n return vimApi;\n }; // Initialize Vim and make it available as an API.\n\n\n CodeMirror.Vim = Vim();\n});","'use strict';\n\nvar _codemirror = require('codemirror');\n\nvar _codemirror2 = _interopRequireDefault(_codemirror);\n\nvar _graphqlLanguageServiceInterface = require('graphql-language-service-interface');\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n/**\n * Registers a \"hint\" helper for CodeMirror.\n *\n * Using CodeMirror's \"hint\" addon: https://codemirror.net/demo/complete.html\n * Given an editor, this helper will take the token at the cursor and return a\n * list of suggested tokens.\n *\n * Options:\n *\n * - schema: GraphQLSchema provides the hinter with positionally relevant info\n *\n * Additional Events:\n *\n * - hasCompletion (codemirror, data, token) - signaled when the hinter has a\n * new list of completion suggestions.\n *\n */\n\n/**\n * Copyright (c) 2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n\n_codemirror2.default.registerHelper('hint', 'graphql', function (editor, options) {\n var schema = options.schema;\n\n if (!schema) {\n return;\n }\n\n var cur = editor.getCursor();\n var token = editor.getTokenAt(cur);\n var rawResults = (0, _graphqlLanguageServiceInterface.getAutocompleteSuggestions)(schema, editor.getValue(), cur, token);\n /**\n * GraphQL language service responds to the autocompletion request with\n * a different format:\n * type CompletionItem = {\n * label: string,\n * kind?: number,\n * detail?: string,\n * documentation?: string,\n * // GraphQL Deprecation information\n * isDeprecated?: ?string,\n * deprecationReason?: ?string,\n * };\n *\n * Switch to codemirror-compliant format before returning results.\n */\n\n var tokenStart = token.type !== null && /\"|\\w/.test(token.string[0]) ? token.start : token.end;\n var results = {\n list: rawResults.map(function (item) {\n return {\n text: item.label,\n type: String(item.detail),\n description: item.documentation,\n isDeprecated: item.isDeprecated,\n deprecationReason: item.deprecationReason\n };\n }),\n from: {\n line: cur.line,\n column: tokenStart\n },\n to: {\n line: cur.line,\n column: token.end\n }\n };\n\n if (results && results.list && results.list.length > 0) {\n results.from = _codemirror2.default.Pos(results.from.line, results.from.column);\n results.to = _codemirror2.default.Pos(results.to.line, results.to.column);\n\n _codemirror2.default.signal(editor, 'hasCompletion', editor, results, token);\n }\n\n return results;\n});","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getASTNodeAtPosition = getASTNodeAtPosition;\nexports.pointToOffset = pointToOffset;\n\nvar _Range = require('./Range');\n\nvar _graphql = require('graphql');\n\nfunction getASTNodeAtPosition(query, ast, point) {\n var offset = pointToOffset(query, point);\n var nodeContainingPosition = void 0;\n (0, _graphql.visit)(ast, {\n enter: function enter(node) {\n if (node.kind !== 'Name' && // We're usually interested in their parents\n node.loc && node.loc.start <= offset && offset <= node.loc.end) {\n nodeContainingPosition = node;\n } else {\n return false;\n }\n },\n leave: function leave(node) {\n if (node.loc && node.loc.start <= offset && offset <= node.loc.end) {\n return false;\n }\n }\n });\n return nodeContainingPosition;\n}\n/**\n * Copyright (c) Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n\nfunction pointToOffset(text, point) {\n var linesUntilPosition = text.split('\\n').slice(0, point.line);\n return point.character + linesUntilPosition.map(function (line) {\n return line.length + 1;\n } // count EOL\n ).reduce(function (a, b) {\n return a + b;\n }, 0);\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.validateWithCustomRules = validateWithCustomRules;\n\nvar _graphql = require('graphql');\n/**\n * Validate a GraphQL Document optionally with custom validation rules.\n */\n\n\nfunction validateWithCustomRules(schema, ast, customRules, isRelayCompatMode) {\n // Because every fragment is considered for determing model subsets that may\n // be used anywhere in the codebase they're all technically \"used\" by clients\n // of graphql-data. So we remove this rule from the validators.\n var _require = require('graphql/validation/rules/NoUnusedFragments'),\n NoUnusedFragments = _require.NoUnusedFragments;\n\n var _require2 = require('graphql/validation/rules/ExecutableDefinitions'),\n ExecutableDefinitions = _require2.ExecutableDefinitions;\n\n var rulesToSkip = [NoUnusedFragments, ExecutableDefinitions];\n\n if (isRelayCompatMode) {\n var _require3 = require('graphql/validation/rules/KnownFragmentNames'),\n KnownFragmentNames = _require3.KnownFragmentNames;\n\n rulesToSkip.push(KnownFragmentNames);\n }\n\n var rules = _graphql.specifiedRules.filter(function (rule) {\n return !rulesToSkip.some(function (r) {\n return r === rule;\n });\n });\n\n var typeInfo = new _graphql.TypeInfo(schema);\n\n if (customRules) {\n Array.prototype.push.apply(rules, customRules);\n }\n\n var errors = (0, _graphql.validate)(schema, ast, rules, typeInfo);\n\n if (errors.length > 0) {\n return errors.filter(function (error) {\n if (error.message.indexOf('Unknown directive') === -1) {\n return true;\n }\n\n return !(error.nodes && error.nodes[0] && error.nodes[0].name && error.nodes[0].name.value === 'arguments' || error.nodes && error.nodes[0] && error.nodes[0].name && error.nodes[0].name.value && error.nodes[0].name.value === 'argumentDefinitions');\n });\n }\n\n return [];\n}\n/**\n * Copyright (c) Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors || function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n\n return descriptors;\n};\n\nvar formatRegExp = /%[sdj%]/g;\n\nexports.format = function (f) {\n if (!isString(f)) {\n var objects = [];\n\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function (x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n\n switch (x) {\n case '%s':\n return String(args[i++]);\n\n case '%d':\n return Number(args[i++]);\n\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n\n default:\n return x;\n }\n });\n\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n\n return str;\n}; // Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\n\n\nexports.deprecate = function (fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n } // Allow for deprecating things in the process of starting up.\n\n\n if (typeof process === 'undefined') {\n return function () {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n\n warned = true;\n }\n\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\nvar debugs = {};\nvar debugEnviron;\n\nexports.debuglog = function (set) {\n if (isUndefined(debugEnviron)) debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n\n debugs[set] = function () {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function () {};\n }\n }\n\n return debugs[set];\n};\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n\n/* legacy: obj, showHidden, depth, colors*/\n\n\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n }; // legacy...\n\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n } // set default options\n\n\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\n\nexports.inspect = inspect; // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\n\ninspect.colors = {\n 'bold': [1, 22],\n 'italic': [3, 23],\n 'underline': [4, 24],\n 'inverse': [7, 27],\n 'white': [37, 39],\n 'grey': [90, 39],\n 'black': [30, 39],\n 'blue': [34, 39],\n 'cyan': [36, 39],\n 'green': [32, 39],\n 'magenta': [35, 39],\n 'red': [31, 39],\n 'yellow': [33, 39]\n}; // Don't use 'blue' not visible on cmd.exe\n\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return \"\\x1B[\" + inspect.colors[style][0] + 'm' + str + \"\\x1B[\" + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\nfunction arrayToHash(array) {\n var hash = {};\n array.forEach(function (val, idx) {\n hash[val] = true;\n });\n return hash;\n}\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect && value && isFunction(value.inspect) && // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect && // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n\n return ret;\n } // Primitive types cannot have properties\n\n\n var primitive = formatPrimitive(ctx, value);\n\n if (primitive) {\n return primitive;\n } // Look up the keys of the object.\n\n\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n } // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n\n\n if (isError(value) && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n } // Some type of object without properties can be shortcutted.\n\n\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '',\n array = false,\n braces = ['{', '}']; // Make Array say that they are Array\n\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n } // Make functions say that they are functions\n\n\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n } // Make RegExps say that they are RegExps\n\n\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n } // Make dates with properties first say the date\n\n\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n } // Make error with message first say the error\n\n\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n var output;\n\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function (key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n return reduceToSingleString(output, base, braces);\n}\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value)) return ctx.stylize('undefined', 'undefined');\n\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '').replace(/'/g, \"\\\\'\").replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n\n if (isNumber(value)) return ctx.stylize('' + value, 'number');\n if (isBoolean(value)) return ctx.stylize('' + value, 'boolean'); // For some reason typeof null is \"object\", so special case here.\n\n if (isNull(value)) return ctx.stylize('null', 'null');\n}\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, String(i), true));\n } else {\n output.push('');\n }\n }\n\n keys.forEach(function (key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, key, true));\n }\n });\n return output;\n}\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || {\n value: value[key]\n };\n\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function (line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function (line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n\n name = JSON.stringify('' + key);\n\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\").replace(/\\\\\"/g, '\"').replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function (prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] + (base === '' ? '' : base + '\\n ') + ' ' + output.join(',\\n ') + ' ' + braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n} // NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\n\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\n\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\n\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\n\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\n\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\n\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\n\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\n\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\n\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) && (objectToString(e) === '[object Error]' || e instanceof Error);\n}\n\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null || typeof arg === 'boolean' || typeof arg === 'number' || typeof arg === 'string' || typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\n\nexports.isPrimitive = isPrimitive;\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; // 26 Feb 16:19:34\n\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()), pad(d.getMinutes()), pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n} // log is just a thin wrapper to console.log that prepends a timestamp\n\n\nexports.log = function () {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\n\n\nexports.inherits = require('inherits');\n\nexports._extend = function (origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n var keys = Object.keys(add);\n var i = keys.length;\n\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function') throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn,\n enumerable: false,\n writable: false,\n configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n var args = [];\n\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn,\n enumerable: false,\n writable: false,\n configurable: true\n });\n return Object.defineProperties(fn, getOwnPropertyDescriptors(original));\n};\n\nexports.promisify.custom = kCustomPromisifiedSymbol;\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n } // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n\n\n function callbackified() {\n var args = [];\n\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n\n var self = this;\n\n var cb = function cb() {\n return maybeCb.apply(self, arguments);\n }; // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n\n\n original.apply(this, args).then(function (ret) {\n process.nextTick(cb, null, ret);\n }, function (rej) {\n process.nextTick(callbackifyOnRejected, rej, cb);\n });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified, getOwnPropertyDescriptors(original));\n return callbackified;\n}\n\nexports.callbackify = callbackify;","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object' && typeof arg.copy === 'function' && typeof arg.fill === 'function' && typeof arg.readUInt8 === 'function';\n};","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n };\n}","module.exports = __webpack_public_path__ + \"static/media/GraphQLLanguageService.js.5ab204b9.flow\";","module.exports = __webpack_public_path__ + \"static/media/autocompleteUtils.js.4ce7ba19.flow\";","module.exports = __webpack_public_path__ + \"static/media/getAutocompleteSuggestions.js.7f98f032.flow\";","module.exports = __webpack_public_path__ + \"static/media/getDefinition.js.4dbec62f.flow\";","module.exports = __webpack_public_path__ + \"static/media/getDiagnostics.js.65b0979a.flow\";","module.exports = __webpack_public_path__ + \"static/media/getHoverInformation.js.d9411837.flow\";","module.exports = __webpack_public_path__ + \"static/media/getOutline.js.c04e3998.flow\";","module.exports = __webpack_public_path__ + \"static/media/index.js.02c24280.flow\";","'use strict';\n\nvar _codemirror = require('codemirror');\n\nvar _codemirror2 = _interopRequireDefault(_codemirror);\n\nvar _graphqlLanguageServiceInterface = require('graphql-language-service-interface');\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n/**\n * Copyright (c) 2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n\nvar SEVERITY = ['error', 'warning', 'information', 'hint'];\nvar TYPE = {\n 'GraphQL: Validation': 'validation',\n 'GraphQL: Deprecation': 'deprecation',\n 'GraphQL: Syntax': 'syntax'\n};\n/**\n * Registers a \"lint\" helper for CodeMirror.\n *\n * Using CodeMirror's \"lint\" addon: https://codemirror.net/demo/lint.html\n * Given the text within an editor, this helper will take that text and return\n * a list of linter issues, derived from GraphQL's parse and validate steps.\n * Also, this uses `graphql-language-service-parser` to power the diagnostics\n * service.\n *\n * Options:\n *\n * - schema: GraphQLSchema provides the linter with positionally relevant info\n *\n */\n\n_codemirror2.default.registerHelper('lint', 'graphql', function (text, options) {\n var schema = options.schema;\n var rawResults = (0, _graphqlLanguageServiceInterface.getDiagnostics)(text, schema);\n var results = rawResults.map(function (error) {\n return {\n message: error.message,\n severity: SEVERITY[error.severity - 1],\n type: TYPE[error.source],\n from: _codemirror2.default.Pos(error.range.start.line, error.range.start.character),\n to: _codemirror2.default.Pos(error.range.end.line, error.range.end.character)\n };\n });\n return results;\n});","'use strict';\n\nvar _graphql = require('graphql');\n\nvar _codemirror = require('codemirror');\n\nvar _codemirror2 = _interopRequireDefault(_codemirror);\n\nvar _getTypeInfo = require('./utils/getTypeInfo');\n\nvar _getTypeInfo2 = _interopRequireDefault(_getTypeInfo);\n\nvar _SchemaReference = require('./utils/SchemaReference');\n\nrequire('./utils/info-addon');\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n/**\n * Registers GraphQL \"info\" tooltips for CodeMirror.\n *\n * When hovering over a token, this presents a tooltip explaining it.\n *\n * Options:\n *\n * - schema: GraphQLSchema provides positionally relevant info.\n * - hoverTime: The number of ms to wait before showing info. (Default 500)\n * - renderDescription: Convert a description to some HTML, Useful since\n * descriptions are often Markdown formatted.\n * - onClick: A function called when a named thing is clicked.\n *\n */\n\n\n_codemirror2.default.registerHelper('info', 'graphql', function (token, options) {\n if (!options.schema || !token.state) {\n return;\n }\n\n var state = token.state;\n var kind = state.kind;\n var step = state.step;\n var typeInfo = (0, _getTypeInfo2.default)(options.schema, token.state); // Given a Schema and a Token, produce the contents of an info tooltip.\n // To do this, create a div element that we will render \"into\" and then pass\n // it to various rendering functions.\n\n if (kind === 'Field' && step === 0 && typeInfo.fieldDef || kind === 'AliasedField' && step === 2 && typeInfo.fieldDef) {\n var into = document.createElement('div');\n renderField(into, typeInfo, options);\n renderDescription(into, options, typeInfo.fieldDef);\n return into;\n } else if (kind === 'Directive' && step === 1 && typeInfo.directiveDef) {\n var _into = document.createElement('div');\n\n renderDirective(_into, typeInfo, options);\n renderDescription(_into, options, typeInfo.directiveDef);\n return _into;\n } else if (kind === 'Argument' && step === 0 && typeInfo.argDef) {\n var _into2 = document.createElement('div');\n\n renderArg(_into2, typeInfo, options);\n renderDescription(_into2, options, typeInfo.argDef);\n return _into2;\n } else if (kind === 'EnumValue' && typeInfo.enumValue && typeInfo.enumValue.description) {\n var _into3 = document.createElement('div');\n\n renderEnumValue(_into3, typeInfo, options);\n renderDescription(_into3, options, typeInfo.enumValue);\n return _into3;\n } else if (kind === 'NamedType' && typeInfo.type && typeInfo.type.description) {\n var _into4 = document.createElement('div');\n\n renderType(_into4, typeInfo, options, typeInfo.type);\n renderDescription(_into4, options, typeInfo.type);\n return _into4;\n }\n});\n/**\n * Copyright (c) 2017, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n\nfunction renderField(into, typeInfo, options) {\n renderQualifiedField(into, typeInfo, options);\n renderTypeAnnotation(into, typeInfo, options, typeInfo.type);\n}\n\nfunction renderQualifiedField(into, typeInfo, options) {\n var fieldName = typeInfo.fieldDef.name;\n\n if (fieldName.slice(0, 2) !== '__') {\n renderType(into, typeInfo, options, typeInfo.parentType);\n text(into, '.');\n }\n\n text(into, fieldName, 'field-name', options, (0, _SchemaReference.getFieldReference)(typeInfo));\n}\n\nfunction renderDirective(into, typeInfo, options) {\n var name = '@' + typeInfo.directiveDef.name;\n text(into, name, 'directive-name', options, (0, _SchemaReference.getDirectiveReference)(typeInfo));\n}\n\nfunction renderArg(into, typeInfo, options) {\n if (typeInfo.directiveDef) {\n renderDirective(into, typeInfo, options);\n } else if (typeInfo.fieldDef) {\n renderQualifiedField(into, typeInfo, options);\n }\n\n var name = typeInfo.argDef.name;\n text(into, '(');\n text(into, name, 'arg-name', options, (0, _SchemaReference.getArgumentReference)(typeInfo));\n renderTypeAnnotation(into, typeInfo, options, typeInfo.inputType);\n text(into, ')');\n}\n\nfunction renderTypeAnnotation(into, typeInfo, options, t) {\n text(into, ': ');\n renderType(into, typeInfo, options, t);\n}\n\nfunction renderEnumValue(into, typeInfo, options) {\n var name = typeInfo.enumValue.name;\n renderType(into, typeInfo, options, typeInfo.inputType);\n text(into, '.');\n text(into, name, 'enum-value', options, (0, _SchemaReference.getEnumValueReference)(typeInfo));\n}\n\nfunction renderType(into, typeInfo, options, t) {\n if (t instanceof _graphql.GraphQLNonNull) {\n renderType(into, typeInfo, options, t.ofType);\n text(into, '!');\n } else if (t instanceof _graphql.GraphQLList) {\n text(into, '[');\n renderType(into, typeInfo, options, t.ofType);\n text(into, ']');\n } else {\n text(into, t.name, 'type-name', options, (0, _SchemaReference.getTypeReference)(typeInfo, t));\n }\n}\n\nfunction renderDescription(into, options, def) {\n var description = def.description;\n\n if (description) {\n var descriptionDiv = document.createElement('div');\n descriptionDiv.className = 'info-description';\n\n if (options.renderDescription) {\n descriptionDiv.innerHTML = options.renderDescription(description);\n } else {\n descriptionDiv.appendChild(document.createTextNode(description));\n }\n\n into.appendChild(descriptionDiv);\n }\n\n renderDeprecation(into, options, def);\n}\n\nfunction renderDeprecation(into, options, def) {\n var reason = def.deprecationReason;\n\n if (reason) {\n var deprecationDiv = document.createElement('div');\n deprecationDiv.className = 'info-deprecation';\n\n if (options.renderDescription) {\n deprecationDiv.innerHTML = options.renderDescription(reason);\n } else {\n deprecationDiv.appendChild(document.createTextNode(reason));\n }\n\n var label = document.createElement('span');\n label.className = 'info-deprecation-label';\n label.appendChild(document.createTextNode('Deprecated: '));\n deprecationDiv.insertBefore(label, deprecationDiv.firstChild);\n into.appendChild(deprecationDiv);\n }\n}\n\nfunction text(into, content, className, options, ref) {\n if (className) {\n var onClick = options.onClick;\n var node = document.createElement(onClick ? 'a' : 'span');\n\n if (onClick) {\n // Providing a href forces proper a tag behavior, though we don't actually\n // want clicking the node to navigate anywhere.\n node.href = 'javascript:void 0'; // eslint-disable-line no-script-url\n\n node.addEventListener('click', function (e) {\n onClick(ref, e);\n });\n }\n\n node.className = className;\n node.appendChild(document.createTextNode(content));\n into.appendChild(node);\n } else {\n into.appendChild(document.createTextNode(content));\n }\n}","'use strict';\n\nvar _codemirror = require('codemirror');\n\nvar _codemirror2 = _interopRequireDefault(_codemirror);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\n_codemirror2.default.defineOption('info', false, function (cm, options, old) {\n if (old && old !== _codemirror2.default.Init) {\n var oldOnMouseOver = cm.state.info.onMouseOver;\n\n _codemirror2.default.off(cm.getWrapperElement(), 'mouseover', oldOnMouseOver);\n\n clearTimeout(cm.state.info.hoverTimeout);\n delete cm.state.info;\n }\n\n if (options) {\n var state = cm.state.info = createState(options);\n state.onMouseOver = onMouseOver.bind(null, cm);\n\n _codemirror2.default.on(cm.getWrapperElement(), 'mouseover', state.onMouseOver);\n }\n});\n/**\n * Copyright (c) 2017, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n\nfunction createState(options) {\n return {\n options: options instanceof Function ? {\n render: options\n } : options === true ? {} : options\n };\n}\n\nfunction getHoverTime(cm) {\n var options = cm.state.info.options;\n return options && options.hoverTime || 500;\n}\n\nfunction onMouseOver(cm, e) {\n var state = cm.state.info;\n var target = e.target || e.srcElement;\n\n if (target.nodeName !== 'SPAN' || state.hoverTimeout !== undefined) {\n return;\n }\n\n var box = target.getBoundingClientRect();\n var hoverTime = getHoverTime(cm);\n state.hoverTimeout = setTimeout(onHover, hoverTime);\n\n var onMouseMove = function onMouseMove() {\n clearTimeout(state.hoverTimeout);\n state.hoverTimeout = setTimeout(onHover, hoverTime);\n };\n\n var onMouseOut = function onMouseOut() {\n _codemirror2.default.off(document, 'mousemove', onMouseMove);\n\n _codemirror2.default.off(cm.getWrapperElement(), 'mouseout', onMouseOut);\n\n clearTimeout(state.hoverTimeout);\n state.hoverTimeout = undefined;\n };\n\n var onHover = function onHover() {\n _codemirror2.default.off(document, 'mousemove', onMouseMove);\n\n _codemirror2.default.off(cm.getWrapperElement(), 'mouseout', onMouseOut);\n\n state.hoverTimeout = undefined;\n onMouseHover(cm, box);\n };\n\n _codemirror2.default.on(document, 'mousemove', onMouseMove);\n\n _codemirror2.default.on(cm.getWrapperElement(), 'mouseout', onMouseOut);\n}\n\nfunction onMouseHover(cm, box) {\n var pos = cm.coordsChar({\n left: (box.left + box.right) / 2,\n top: (box.top + box.bottom) / 2\n });\n var state = cm.state.info;\n var options = state.options;\n var render = options.render || cm.getHelper(pos, 'info');\n\n if (render) {\n var token = cm.getTokenAt(pos, true);\n\n if (token) {\n var info = render(token, options, cm, pos);\n\n if (info) {\n showPopup(cm, box, info);\n }\n }\n }\n}\n\nfunction showPopup(cm, box, info) {\n var popup = document.createElement('div');\n popup.className = 'CodeMirror-info';\n popup.appendChild(info);\n document.body.appendChild(popup);\n var popupBox = popup.getBoundingClientRect();\n var popupStyle = popup.currentStyle || window.getComputedStyle(popup);\n var popupWidth = popupBox.right - popupBox.left + parseFloat(popupStyle.marginLeft) + parseFloat(popupStyle.marginRight);\n var popupHeight = popupBox.bottom - popupBox.top + parseFloat(popupStyle.marginTop) + parseFloat(popupStyle.marginBottom);\n var topPos = box.bottom;\n\n if (popupHeight > window.innerHeight - box.bottom - 15 && box.top > window.innerHeight - box.bottom) {\n topPos = box.top - popupHeight;\n }\n\n if (topPos < 0) {\n topPos = box.bottom;\n }\n\n var leftPos = Math.max(0, window.innerWidth - popupWidth - 15);\n\n if (leftPos > box.left) {\n leftPos = box.left;\n }\n\n popup.style.opacity = 1;\n popup.style.top = topPos + 'px';\n popup.style.left = leftPos + 'px';\n var popupTimeout = void 0;\n\n var onMouseOverPopup = function onMouseOverPopup() {\n clearTimeout(popupTimeout);\n };\n\n var onMouseOut = function onMouseOut() {\n clearTimeout(popupTimeout);\n popupTimeout = setTimeout(hidePopup, 200);\n };\n\n var hidePopup = function hidePopup() {\n _codemirror2.default.off(popup, 'mouseover', onMouseOverPopup);\n\n _codemirror2.default.off(popup, 'mouseout', onMouseOut);\n\n _codemirror2.default.off(cm.getWrapperElement(), 'mouseout', onMouseOut);\n\n if (popup.style.opacity) {\n popup.style.opacity = 0;\n setTimeout(function () {\n if (popup.parentNode) {\n popup.parentNode.removeChild(popup);\n }\n }, 600);\n } else if (popup.parentNode) {\n popup.parentNode.removeChild(popup);\n }\n };\n\n _codemirror2.default.on(popup, 'mouseover', onMouseOverPopup);\n\n _codemirror2.default.on(popup, 'mouseout', onMouseOut);\n\n _codemirror2.default.on(cm.getWrapperElement(), 'mouseout', onMouseOut);\n}","'use strict';\n\nvar _codemirror = require('codemirror');\n\nvar _codemirror2 = _interopRequireDefault(_codemirror);\n\nvar _getTypeInfo = require('./utils/getTypeInfo');\n\nvar _getTypeInfo2 = _interopRequireDefault(_getTypeInfo);\n\nvar _SchemaReference = require('./utils/SchemaReference');\n\nrequire('./utils/jump-addon');\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n/**\n * Registers GraphQL \"jump\" links for CodeMirror.\n *\n * When command-hovering over a token, this converts it to a link, which when\n * pressed will call the provided onClick handler.\n *\n * Options:\n *\n * - schema: GraphQLSchema provides positionally relevant info.\n * - onClick: A function called when a named thing is clicked.\n *\n */\n\n/**\n * Copyright (c) 2017, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n\n_codemirror2.default.registerHelper('jump', 'graphql', function (token, options) {\n if (!options.schema || !options.onClick || !token.state) {\n return;\n } // Given a Schema and a Token, produce a \"SchemaReference\" which refers to\n // the particular artifact from the schema (such as a type, field, argument,\n // or directive) that token references.\n\n\n var state = token.state;\n var kind = state.kind;\n var step = state.step;\n var typeInfo = (0, _getTypeInfo2.default)(options.schema, state);\n\n if (kind === 'Field' && step === 0 && typeInfo.fieldDef || kind === 'AliasedField' && step === 2 && typeInfo.fieldDef) {\n return (0, _SchemaReference.getFieldReference)(typeInfo);\n } else if (kind === 'Directive' && step === 1 && typeInfo.directiveDef) {\n return (0, _SchemaReference.getDirectiveReference)(typeInfo);\n } else if (kind === 'Argument' && step === 0 && typeInfo.argDef) {\n return (0, _SchemaReference.getArgumentReference)(typeInfo);\n } else if (kind === 'EnumValue' && typeInfo.enumValue) {\n return (0, _SchemaReference.getEnumValueReference)(typeInfo);\n } else if (kind === 'NamedType' && typeInfo.type) {\n return (0, _SchemaReference.getTypeReference)(typeInfo);\n }\n});","'use strict';\n\nvar _codemirror = require('codemirror');\n\nvar _codemirror2 = _interopRequireDefault(_codemirror);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\n_codemirror2.default.defineOption('jump', false, function (cm, options, old) {\n if (old && old !== _codemirror2.default.Init) {\n var oldOnMouseOver = cm.state.jump.onMouseOver;\n\n _codemirror2.default.off(cm.getWrapperElement(), 'mouseover', oldOnMouseOver);\n\n var oldOnMouseOut = cm.state.jump.onMouseOut;\n\n _codemirror2.default.off(cm.getWrapperElement(), 'mouseout', oldOnMouseOut);\n\n _codemirror2.default.off(document, 'keydown', cm.state.jump.onKeyDown);\n\n delete cm.state.jump;\n }\n\n if (options) {\n var state = cm.state.jump = {\n options: options,\n onMouseOver: onMouseOver.bind(null, cm),\n onMouseOut: onMouseOut.bind(null, cm),\n onKeyDown: onKeyDown.bind(null, cm)\n };\n\n _codemirror2.default.on(cm.getWrapperElement(), 'mouseover', state.onMouseOver);\n\n _codemirror2.default.on(cm.getWrapperElement(), 'mouseout', state.onMouseOut);\n\n _codemirror2.default.on(document, 'keydown', state.onKeyDown);\n }\n});\n/**\n * Copyright (c) 2017, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n\nfunction onMouseOver(cm, event) {\n var target = event.target || event.srcElement;\n\n if (target.nodeName !== 'SPAN') {\n return;\n }\n\n var box = target.getBoundingClientRect();\n var cursor = {\n left: (box.left + box.right) / 2,\n top: (box.top + box.bottom) / 2\n };\n cm.state.jump.cursor = cursor;\n\n if (cm.state.jump.isHoldingModifier) {\n enableJumpMode(cm);\n }\n}\n\nfunction onMouseOut(cm) {\n if (!cm.state.jump.isHoldingModifier && cm.state.jump.cursor) {\n cm.state.jump.cursor = null;\n return;\n }\n\n if (cm.state.jump.isHoldingModifier && cm.state.jump.marker) {\n disableJumpMode(cm);\n }\n}\n\nfunction onKeyDown(cm, event) {\n if (cm.state.jump.isHoldingModifier || !isJumpModifier(event.key)) {\n return;\n }\n\n cm.state.jump.isHoldingModifier = true;\n\n if (cm.state.jump.cursor) {\n enableJumpMode(cm);\n }\n\n var onKeyUp = function onKeyUp(upEvent) {\n if (upEvent.code !== event.code) {\n return;\n }\n\n cm.state.jump.isHoldingModifier = false;\n\n if (cm.state.jump.marker) {\n disableJumpMode(cm);\n }\n\n _codemirror2.default.off(document, 'keyup', onKeyUp);\n\n _codemirror2.default.off(document, 'click', onClick);\n\n cm.off('mousedown', onMouseDown);\n };\n\n var onClick = function onClick(clickEvent) {\n var destination = cm.state.jump.destination;\n\n if (destination) {\n cm.state.jump.options.onClick(destination, clickEvent);\n }\n };\n\n var onMouseDown = function onMouseDown(_, downEvent) {\n if (cm.state.jump.destination) {\n downEvent.codemirrorIgnore = true;\n }\n };\n\n _codemirror2.default.on(document, 'keyup', onKeyUp);\n\n _codemirror2.default.on(document, 'click', onClick);\n\n cm.on('mousedown', onMouseDown);\n}\n\nvar isMac = navigator && navigator.appVersion.indexOf('Mac') !== -1;\n\nfunction isJumpModifier(key) {\n return key === (isMac ? 'Meta' : 'Control');\n}\n\nfunction enableJumpMode(cm) {\n if (cm.state.jump.marker) {\n return;\n }\n\n var cursor = cm.state.jump.cursor;\n var pos = cm.coordsChar(cursor);\n var token = cm.getTokenAt(pos, true);\n var options = cm.state.jump.options;\n var getDestination = options.getDestination || cm.getHelper(pos, 'jump');\n\n if (getDestination) {\n var destination = getDestination(token, options, cm);\n\n if (destination) {\n var marker = cm.markText({\n line: pos.line,\n ch: token.start\n }, {\n line: pos.line,\n ch: token.end\n }, {\n className: 'CodeMirror-jump-token'\n });\n cm.state.jump.marker = marker;\n cm.state.jump.destination = destination;\n }\n }\n}\n\nfunction disableJumpMode(cm) {\n var marker = cm.state.jump.marker;\n cm.state.jump.marker = null;\n cm.state.jump.destination = null;\n marker.clear();\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n/**\n * Copyright (c) Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * When a containing DOM node's height has been altered, trigger a resize of\n * the related CodeMirror instance so that it is always correctly sized.\n */\n\n\nvar CodeMirrorSizer = function () {\n function CodeMirrorSizer() {\n _classCallCheck(this, CodeMirrorSizer);\n\n this.sizes = [];\n }\n\n _createClass(CodeMirrorSizer, [{\n key: \"updateSizes\",\n value: function updateSizes(components) {\n var _this = this;\n\n components.forEach(function (component, i) {\n var size = component.getClientHeight();\n\n if (i <= _this.sizes.length && size !== _this.sizes[i]) {\n component.getCodeMirror().setSize();\n }\n\n _this.sizes[i] = size;\n });\n }\n }]);\n\n return CodeMirrorSizer;\n}();\n\nexports.default = CodeMirrorSizer;","module.exports = function () {\n var selection = document.getSelection();\n\n if (!selection.rangeCount) {\n return function () {};\n }\n\n var active = document.activeElement;\n var ranges = [];\n\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) {\n // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' && selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function (range) {\n selection.addRange(range);\n });\n }\n\n active && active.focus();\n };\n};","\"use strict\";\n\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar Icons_1 = require(\"./Icons\");\n\nvar ToggleButton_1 = require(\"./ToggleButton\");\n\nvar Tooltip_1 = require(\"./Tooltip\");\n\nvar Button_1 = require(\"./Button\");\n\nvar Copy_1 = require(\"./Copy\");\n\nvar styled_1 = require(\"../styled\");\n\nvar react_redux_1 = require(\"react-redux\");\n\nvar reselect_1 = require(\"reselect\");\n\nvar selectors_1 = require(\"../state/sharing/selectors\");\n\nvar actions_1 = require(\"../state/sharing/actions\");\n\nvar Share =\n/** @class */\nfunction (_super) {\n __extends(Share, _super);\n\n function Share(props) {\n var _this = _super.call(this, props) || this;\n\n _this.share = function () {\n _this.props.share();\n };\n\n _this.renderAuthSharingWarning = function () {\n if (!_this.props.isSharingAuthorization) {\n return null;\n }\n\n return React.createElement(AuthSharingWarning, null);\n };\n\n _this.toggleTooltip = function () {\n _this.setState(function (state) {\n return {\n open: !state.open\n };\n });\n };\n\n _this.state = {\n open: false\n };\n return _this;\n }\n\n Share.prototype.render = function () {\n var open = this.state.open;\n var _a = this.props,\n allTabs = _a.allTabs,\n headers = _a.headers,\n history = _a.history,\n shareUrl = _a.shareUrl,\n reshare = _a.reshare,\n theme = _a.theme;\n return React.createElement(Wrapper, null, React.createElement(IconWrapper, null, React.createElement(\"div\", {\n onClick: this.toggleTooltip\n }, this.props.children), open && React.createElement(TooltipWrapper, null, React.createElement(Tooltip_1.default, {\n open: open,\n onClose: this.toggleTooltip,\n anchorOrigin: {\n horizontal: 'right',\n vertical: 'bottom'\n },\n renderAfterContent: this.renderAuthSharingWarning\n }, React.createElement(\"div\", null, React.createElement(Row, null, React.createElement(TooltipText, {\n onClick: this.props.toggleShareAllTabs\n }, \"Share all tabs\", ' '), React.createElement(ToggleButton_1.default, {\n checked: allTabs,\n onChange: this.props.toggleShareAllTabs\n })), React.createElement(Row, null, React.createElement(TooltipText, {\n onClick: this.props.toggleShareHeaders\n }, \"HTTP headers\", ' '), React.createElement(ToggleButton_1.default, {\n checked: headers,\n onChange: this.props.toggleShareHeaders\n })), React.createElement(Row, null, React.createElement(TooltipText, {\n onClick: this.props.toggleShareHistory\n }, \"History\", ' '), React.createElement(ToggleButton_1.default, {\n checked: history,\n onChange: this.props.toggleShareHistory\n })), shareUrl && React.createElement(Row, null, React.createElement(Input, {\n value: shareUrl,\n disabled: true\n }), React.createElement(CopyWrapper, null, React.createElement(Copy_1.default, {\n text: shareUrl\n }, React.createElement(Icons_1.ShareIcon, {\n color: theme.colours.darkBlue30,\n width: 25,\n height: 25,\n title: \"Copy URL to Clipboard\"\n })))), React.createElement(Row, null, React.createElement(\"div\", null), React.createElement(Button_1.Button, {\n hideArrow: true,\n onClick: this.share\n }, reshare && shareUrl ? 'Reshare' : 'Share')))))));\n };\n\n return Share;\n}(React.Component);\n\nvar mapStateToProps = reselect_1.createStructuredSelector({\n history: selectors_1.getSharingHistory,\n headers: selectors_1.getSharingHeaders,\n allTabs: selectors_1.getSharingAllTabs,\n shareUrl: selectors_1.getShareUrl\n});\nexports.default = styled_1.withTheme(react_redux_1.connect(mapStateToProps, {\n toggleShareAllTabs: actions_1.toggleShareAllTabs,\n toggleShareHeaders: actions_1.toggleShareHeaders,\n toggleShareHistory: actions_1.toggleShareHistory,\n share: actions_1.share\n})(Share));\n\nvar AuthSharingWarning = function AuthSharingWarning() {\n return React.createElement(Message, null, React.createElement(MessageTitle, null, \"Watch out!\"), \"You\\u2019re sharing your \", React.createElement(\"code\", null, \"Authorization\"), \" header with the world!\");\n}; // TODO: use theme\n\n\nvar pulse = styled_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 0% {\\n transform: scale(1.04);\\n }\\n\\n 100% {\\n transform: scale(1);\\n }\\n\"], [\"\\n 0% {\\n transform: scale(1.04);\\n }\\n\\n 100% {\\n transform: scale(1);\\n }\\n\"])));\nvar Message = styled_1.styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n padding: 12px 16px;\\n margin-top: 10px;\\n\\n font-size: 14px;\\n letter-spacing: normal;\\n\\n cursor: default;\\n border-radius: 2px;\\n background: #f3f4f4;\\n box-shadow: 0 1px 6px 0 rgba(0, 0, 0, 0.15);\\n\\n animation: \", \" 0.7s ease-in-out infinite alternate;\\n\"], [\"\\n padding: 12px 16px;\\n margin-top: 10px;\\n\\n font-size: 14px;\\n letter-spacing: normal;\\n\\n cursor: default;\\n border-radius: 2px;\\n background: #f3f4f4;\\n box-shadow: 0 1px 6px 0 rgba(0, 0, 0, 0.15);\\n\\n animation: \", \" 0.7s ease-in-out infinite alternate;\\n\"])), pulse);\nvar MessageTitle = styled_1.styled.div(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n margin-right: 3px;\\n margin-bottom: 2px;\\n font-weight: bold;\\n color: #2a7ed2;\\n\"], [\"\\n margin-right: 3px;\\n margin-bottom: 2px;\\n font-weight: bold;\\n color: #2a7ed2;\\n\" // Main styled components\n]))); // Main styled components\n\nvar Wrapper = styled_1.styled.div(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n z-index: 1005;\\n height: 100%;\\n margin-left: 6px;\\n\"], [\"\\n z-index: 1005;\\n height: 100%;\\n margin-left: 6px;\\n\"])));\nvar TooltipText = styled_1.styled.div(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n margin-right: 10px;\\n\\n font-size: \", \";\\n font-weight: \", \";\\n text-transform: uppercase;\\n letter-spacing: 0.53px;\\n\\n color: \", \";\\n\"], [\"\\n margin-right: 10px;\\n\\n font-size: \", \";\\n font-weight: \", \";\\n text-transform: uppercase;\\n letter-spacing: 0.53px;\\n\\n color: \", \";\\n\"])), function (p) {\n return p.theme.sizes.fontSmall;\n}, function (p) {\n return p.theme.sizes.fontSemiBold;\n}, function (p) {\n return p.theme.colours.darkBlue50;\n});\nvar IconWrapper = styled_1.styled.div(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n position: relative;\\n cursor: pointer;\\n\"], [\"\\n position: relative;\\n cursor: pointer;\\n\"])));\nvar TooltipWrapper = styled_1.styled.div(templateObject_7 || (templateObject_7 = __makeTemplateObject([\"\\n position: absolute;\\n right: 0px;\\n\"], [\"\\n position: absolute;\\n right: 0px;\\n\"])));\nvar Row = styled_1.styled.div(templateObject_8 || (templateObject_8 = __makeTemplateObject([\"\\n position: relative;\\n min-width: 245px;\\n margin-top: \", \";\\n\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n\\n &:first-child {\\n margin-top: 0;\\n }\\n\"], [\"\\n position: relative;\\n min-width: 245px;\\n margin-top: \", \";\\n\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n\\n &:first-child {\\n margin-top: 0;\\n }\\n\"])), function (p) {\n return p.theme.sizes.small16;\n});\nvar CopyWrapper = styled_1.styled.div(templateObject_9 || (templateObject_9 = __makeTemplateObject([\"\\n position: absolute;\\n right: 0;\\n\\n &:hover {\\n svg {\\n fill: \", \";\\n }\\n }\\n\"], [\"\\n position: absolute;\\n right: 0;\\n\\n &:hover {\\n svg {\\n fill: \", \";\\n }\\n }\\n\"])), function (p) {\n return p.theme.colours.darkBlue60;\n});\nvar Input = styled_1.styled.input(templateObject_10 || (templateObject_10 = __makeTemplateObject([\"\\n display: block;\\n width: 100%;\\n padding: \", \" \", \";\\n padding-right: 25px;\\n\\n font-weight: \", \";\\n font-size: \", \";\\n\\n border-radius: \", \";\\n background: \", \";\\n color: \", \";\\n\"], [\"\\n display: block;\\n width: 100%;\\n padding: \", \" \", \";\\n padding-right: 25px;\\n\\n font-weight: \", \";\\n font-size: \", \";\\n\\n border-radius: \", \";\\n background: \", \";\\n color: \", \";\\n\"])), function (p) {\n return p.theme.sizes.small6;\n}, function (p) {\n return p.theme.sizes.small10;\n}, function (p) {\n return p.theme.sizes.fontSemiBold;\n}, function (p) {\n return p.theme.sizes.fontTiny;\n}, function (p) {\n return p.theme.sizes.smallRadius;\n}, function (p) {\n return p.theme.colours.darkBlue10;\n}, function (p) {\n return p.theme.colours.darkBlue;\n});\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10;","\"use strict\";\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar styled_1 = require(\"../styled\");\n\nvar ToggleButton = function ToggleButton(_a) {\n var checked = _a.checked,\n onChange = _a.onChange,\n className = _a.className;\n return React.createElement(Wrapper, {\n className: className,\n onClick: onChange\n }, React.createElement(Input, {\n type: \"checkbox\",\n checked: checked,\n readOnly: true\n }), React.createElement(Slider, {\n checked: checked\n }));\n};\n\nexports.default = ToggleButton;\nvar Wrapper = styled_1.styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n position: relative;\\n display: inline-block;\\n\\n width: 39px;\\n height: 21px;\\n\"], [\"\\n position: relative;\\n display: inline-block;\\n\\n width: 39px;\\n height: 21px;\\n\"])));\nvar Input = styled_1.styled.input(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n display: none;\\n\"], [\"\\n display: none;\\n\"])));\nvar Slider = styled_1.styled('div')(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n\\n transition: transform 70ms linear;\\n border-radius: 23px;\\n cursor: pointer;\\n\\n background: \", \";\\n\\n &:before {\\n position: absolute;\\n content: '';\\n height: 23px;\\n width: 23px;\\n left: -1px;\\n bottom: -1px;\\n background-color: white;\\n border-radius: 50%;\\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25);\\n transition: transform 70ms linear;\\n\\n transform: \", \";\\n }\\n\"], [\"\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n\\n transition: transform 70ms linear;\\n border-radius: 23px;\\n cursor: pointer;\\n\\n background: \", \";\\n\\n &:before {\\n position: absolute;\\n content: '';\\n height: 23px;\\n width: 23px;\\n left: -1px;\\n bottom: -1px;\\n background-color: white;\\n border-radius: 50%;\\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25);\\n transition: transform 70ms linear;\\n\\n transform: \", \";\\n }\\n\"])), function (p) {\n return p.checked ? p.theme.colours.green : p.theme.colours.black40;\n}, function (p) {\n return p.checked ? 'translateX(19px)' : '';\n});\nvar templateObject_1, templateObject_2, templateObject_3;","\"use strict\";\n\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar ReactDOM = require(\"react-dom\");\n\nvar styled_1 = require(\"../styled\");\n\nvar Tooltip =\n/** @class */\nfunction (_super) {\n __extends(Tooltip, _super);\n\n function Tooltip() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.handleClickOutside = function (event) {\n if (!_this.props.open) {\n return;\n }\n\n try {\n var domNode = ReactDOM.findDOMNode(_this);\n\n if ((!domNode || !domNode.contains(event.target)) && typeof _this.props.onClose !== 'undefined') {\n _this.props.onClose(event);\n }\n } catch (e) {//\n }\n };\n\n return _this;\n }\n\n Tooltip.prototype.componentDidMount = function () {\n document.addEventListener('click', this.handleClickOutside, true);\n };\n\n Tooltip.prototype.componentWillUnmount = function () {\n document.removeEventListener('click', this.handleClickOutside.bind(this), true);\n };\n\n Tooltip.prototype.render = function () {\n var _a = this.props,\n open = _a.open,\n children = _a.children,\n renderAfterContent = _a.renderAfterContent,\n onClick = _a.onClick;\n var anchorOrigin = this.props.anchorOrigin;\n return React.createElement(Wrapper, {\n visible: open,\n anchorTop: anchorOrigin.vertical === 'top',\n anchorBottom: anchorOrigin.vertical === 'bottom',\n anchorLeft: anchorOrigin.horizontal === 'left',\n anchorRight: anchorOrigin.horizontal === 'right',\n anchorCenter: anchorOrigin.horizontal === 'center'\n }, React.createElement(Content, {\n onClick: onClick\n }, React.createElement(BigTriangle, null), children), renderAfterContent && renderAfterContent());\n };\n\n Tooltip.defaultProps = {\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n };\n return Tooltip;\n}(React.PureComponent);\n\nexports.default = Tooltip;\nvar Wrapper = styled_1.styled.div(templateObject_8 || (templateObject_8 = __makeTemplateObject([\"\\n position: absolute;\\n z-index: 9999;\\n\\n text-align: left;\\n transform: translateX(-50%);\\n\\n transition: opacity ease-out 0.2s;\\n\\n \", \" \", \" \", \" \", \" \", \" \", \";\\n\"], [\"\\n position: absolute;\\n z-index: 9999;\\n\\n text-align: left;\\n transform: translateX(-50%);\\n\\n transition: opacity ease-out 0.2s;\\n\\n \", \" \", \" \", \" \", \" \", \" \", \";\\n\"])), function (p) {\n return p.visible ? styled_1.css(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n visibility: visible;\\n opacity: 1;\\n \"], [\"\\n visibility: visible;\\n opacity: 1;\\n \"]))) : styled_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n visibility: hidden;\\n opacity: 0;\\n \"], [\"\\n visibility: hidden;\\n opacity: 0;\\n \"])));\n}, function (p) {\n return p.anchorTop ? styled_1.css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n bottom: 100%;\\n margin-bottom: 16px;\\n\\n \", \" {\\n bottom: -10px;\\n }\\n \"], [\"\\n bottom: 100%;\\n margin-bottom: 16px;\\n\\n \", \" {\\n bottom: -10px;\\n }\\n \"])), BigTriangle) : '';\n}, function (p) {\n return p.anchorBottom ? styled_1.css(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n top: 100%;\\n margin-top: 16px;\\n\\n \", \" {\\n top: -10px;\\n border-width: 0 10px 10px 10px;\\n border-color: \", \" transparent\\n \", \" transparent;\\n }\\n \"], [\"\\n top: 100%;\\n margin-top: 16px;\\n\\n \", \" {\\n top: -10px;\\n border-width: 0 10px 10px 10px;\\n border-color: \", \" transparent\\n \", \" transparent;\\n }\\n \"])), BigTriangle, function (k) {\n return k.theme.colours.paleGrey;\n }, function (k) {\n return k.theme.colours.paleGrey;\n }) : '';\n}, function (p) {\n return p.anchorLeft ? styled_1.css(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n left: 0;\\n transform: none;\\n\\n \", \" {\\n left: 25px;\\n }\\n \"], [\"\\n left: 0;\\n transform: none;\\n\\n \", \" {\\n left: 25px;\\n }\\n \"])), BigTriangle) : '';\n}, function (p) {\n return p.anchorRight ? styled_1.css(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n right: 0;\\n transform: none;\\n\\n \", \" {\\n right: 25px;\\n }\\n \"], [\"\\n right: 0;\\n transform: none;\\n\\n \", \" {\\n right: 25px;\\n }\\n \"])), BigTriangle) : '';\n}, function (p) {\n return p.anchorCenter ? styled_1.css(templateObject_7 || (templateObject_7 = __makeTemplateObject([\"\\n left: 50%;\\n\\n \", \" {\\n left: calc(50% - 10px);\\n }\\n \"], [\"\\n left: 50%;\\n\\n \", \" {\\n left: calc(50% - 10px);\\n }\\n \"])), BigTriangle) : '';\n});\nvar Content = styled_1.styled.div(templateObject_9 || (templateObject_9 = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n\\n padding: \", \" \", \";\\n white-space: nowrap;\\n\\n box-shadow: 0 1px 6px 0 rgba(0, 0, 0, 0.15);\\n background-color: \", \";\\n border-radius: \", \";\\n color: \", \";\\n\"], [\"\\n display: flex;\\n align-items: center;\\n\\n padding: \", \" \", \";\\n white-space: nowrap;\\n\\n box-shadow: 0 1px 6px 0 rgba(0, 0, 0, 0.15);\\n background-color: \", \";\\n border-radius: \", \";\\n color: \", \";\\n\"])), function (p) {\n return p.theme.sizes.small12;\n}, function (p) {\n return p.theme.sizes.small16;\n}, function (p) {\n return p.theme.colours.paleGrey;\n}, function (p) {\n return p.theme.sizes.smallRadius;\n}, function (p) {\n return p.theme.colours.paleText;\n});\nvar BigTriangle = styled_1.styled.div(templateObject_10 || (templateObject_10 = __makeTemplateObject([\"\\n position: absolute;\\n width: 0;\\n height: 0;\\n\\n border-style: solid;\\n border-width: 10px 10px 0 10px;\\n border-color: \", \" transparent transparent\\n transparent;\\n\"], [\"\\n position: absolute;\\n width: 0;\\n height: 0;\\n\\n border-style: solid;\\n border-width: 10px 10px 0 10px;\\n border-color: \", \" transparent transparent\\n transparent;\\n\"])), function (p) {\n return p.theme.colours.paleGrey;\n});\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10;","\"use strict\";\n\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar styled_1 = require(\"../styled\");\n\nvar CopyToClipboard = require(\"react-copy-to-clipboard\");\n\nvar Copy =\n/** @class */\nfunction (_super) {\n __extends(Copy, _super);\n\n function Copy(props) {\n var _this = _super.call(this, props) || this;\n\n _this.onCopy = function () {\n _this.setState({\n copied: true\n });\n\n _this.copyTimer = window.setTimeout(function () {\n return _this.setState({\n copied: false\n });\n }, 500);\n };\n\n _this.state = {\n copied: false\n };\n return _this;\n }\n\n Copy.prototype.componentWillUnmount = function () {\n clearTimeout(this.copyTimer);\n };\n\n Copy.prototype.render = function () {\n var _a = this.props,\n text = _a.text,\n color = _a.color;\n return React.createElement(CopyToClipboard, {\n text: text,\n onCopy: this.onCopy\n }, React.createElement(CopyBox, null, this.state.copied && React.createElement(Indicator, {\n color: color\n }, \"Copied\"), this.props.children));\n };\n\n return Copy;\n}(React.Component);\n\nexports.default = Copy;\nvar CopyBox = styled_1.styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n position: relative;\\n\"], [\"\\n position: relative;\\n\"])));\nvar Indicator = styled_1.styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n position: absolute;\\n top: -20px;\\n left: 50%;\\n transform: translate(-50%, 0);\\n animation: copying 700ms linear;\\n color: \", \";\\n\\n @keyframes copying {\\n 0% {\\n opacity: 0;\\n transform: translate(-50%, 0);\\n }\\n\\n 50% {\\n opacity: 1;\\n }\\n\\n 100% {\\n opacity: 0;\\n transform: translate(-50%, -50px);\\n }\\n }\\n\"], [\"\\n position: absolute;\\n top: -20px;\\n left: 50%;\\n transform: translate(-50%, 0);\\n animation: copying 700ms linear;\\n color: \", \";\\n\\n @keyframes copying {\\n 0% {\\n opacity: 0;\\n transform: translate(-50%, 0);\\n }\\n\\n 50% {\\n opacity: 1;\\n }\\n\\n 100% {\\n opacity: 0;\\n transform: translate(-50%, -50px);\\n }\\n }\\n\"])), function (p) {\n return p.color ? p.color : p.theme.colours.darkBlue30;\n});\nvar templateObject_1, templateObject_2;","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar CopyToClipboard =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n function CopyToClipboard() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(CopyToClipboard)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, [\"text\", \"onCopy\", \"options\", \"children\"]);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return _react[\"default\"].cloneElement(elem, _objectSpread({}, props, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar Reload_1 = require(\"./Reload\");\n\nvar Polling_1 = require(\"./Polling\");\n\nvar reselect_1 = require(\"reselect\");\n\nvar selectors_1 = require(\"../../../state/sessions/selectors\");\n\nvar react_redux_1 = require(\"react-redux\");\n\nvar SchemaReload = function SchemaReload(props) {\n if (props.isPollingSchema) {\n return React.createElement(Polling_1.default, {\n interval: props.settings['schema.polling.interval'],\n onReloadSchema: props.onReloadSchema\n });\n }\n\n return React.createElement(Reload_1.default, {\n isReloadingSchema: props.isReloadingSchema,\n onReloadSchema: props.onReloadSchema\n });\n};\n\nvar mapStateToProps = reselect_1.createStructuredSelector({\n isReloadingSchema: selectors_1.getIsReloadingSchema\n});\nexports.default = react_redux_1.connect(mapStateToProps)(SchemaReload);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar ReloadIcon_1 = require(\"./ReloadIcon\");\n\nvar Reload = function Reload(props) {\n return React.createElement(ReloadIcon_1.default, {\n animate: props.isReloadingSchema,\n onClick: props.onReloadSchema\n });\n};\n\nexports.default = Reload;","\"use strict\";\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar index_1 = require(\"../../../styled/index\");\n\nvar Positioner_1 = require(\"./Positioner\");\n\nvar ReloadIcon = function ReloadIcon(props) {\n return React.createElement(Positioner, {\n onClick: props.onClick,\n title: \"Reload Schema\",\n disabled: props.disabled\n }, React.createElement(Svg, {\n viewBox: \"0 0 20 20\",\n disabled: props.disabled\n }, React.createElement(Circle, {\n cx: \"9.5\",\n cy: \"10\",\n r: \"6\",\n strokeWidth: \"1.5\",\n fill: \"none\",\n strokeLinecap: \"round\",\n animate: props.animate\n }), React.createElement(Icon, {\n d: \"M4.83 4.86a6.92 6.92 0 0 1 11.3 2.97l.41-1.23c.13-.4.56-.6.95-.47.4.13.6.56.47.95l-1.13 3.33a.76.76 0 0 1-.7.5.72.72 0 0 1-.43-.12l-2.88-1.92a.76.76 0 0 1-.2-1.04.75.75 0 0 1 1.03-.2l1.06.7A5.34 5.34 0 0 0 9.75 4.5a5.44 5.44 0 0 0-5.64 5.22 5.42 5.42 0 0 0 5.24 5.62c.41 0 .74.36.72.78a.75.75 0 0 1-.75.72H9.3a6.9 6.9 0 0 1-6.68-7.18 6.88 6.88 0 0 1 2.22-4.81z\",\n animate: props.animate\n })));\n};\n\nexports.default = ReloadIcon;\nvar refreshFrames = index_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n0% {\\n transform: rotate(0deg);\\n stroke-dashoffset: 7.92;\\n}\\n\\n50% {\\n transform: rotate(720deg);\\n stroke-dashoffset: 37.68;\\n}\\n\\n100% {\\n transform: rotate(1080deg);\\n stroke-dashoffset: 7.92;\\n}\\n\"], [\"\\n0% {\\n transform: rotate(0deg);\\n stroke-dashoffset: 7.92;\\n}\\n\\n50% {\\n transform: rotate(720deg);\\n stroke-dashoffset: 37.68;\\n}\\n\\n100% {\\n transform: rotate(1080deg);\\n stroke-dashoffset: 7.92;\\n}\\n\" // same result for these 2 keyframes, however when the props change\n// it makes the element animated with these keyframes to trigger\n// again the animation\n]))); // same result for these 2 keyframes, however when the props change\n// it makes the element animated with these keyframes to trigger\n// again the animation\n\nvar reloadAction = function reloadAction(props) {\n return index_1.keyframes(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n0% {\\n transform: rotate(\", \"deg);\\n}\\n\\n100% {\\n transform: rotate(\", \"deg);\\n}\"], [\"\\n0% {\\n transform: rotate(\", \"deg);\\n}\\n\\n100% {\\n transform: rotate(\", \"deg);\\n}\"])), props.animate ? 0 : 360, props.animate ? 360 : 720);\n};\n\nvar Svg = index_1.styled.svg(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n fill: \", \";\\n transition: 0.1s linear all;\\n \", \";\\n\"], [\"\\n fill: \", \";\\n transition: 0.1s linear all;\\n \", \";\\n\"])), function (p) {\n return p.theme.editorColours.icon;\n}, function (p) {\n return p.disabled ? undefined : index_1.css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n &:hover {\\n fill: \", \";\\n }\\n \"], [\"\\n &:hover {\\n fill: \", \";\\n }\\n \"])), function (p) {\n return p.theme.editorColours.iconHover;\n });\n});\nvar Positioner = index_1.styled(Positioner_1.default)(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n cursor: \", \";\\n transform: rotateY(180deg);\\n\"], [\"\\n cursor: \", \";\\n transform: rotateY(180deg);\\n\"])), function (_a) {\n var _b = _a.disabled,\n disabled = _b === void 0 ? false : _b;\n return disabled ? 'auto' : 'pointer';\n});\nvar Circle = index_1.styled('circle')(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n fill: none;\\n stroke: \", \";\\n stroke-dasharray: 37.68;\\n transition: opacity 0.3s ease-in-out;\\n opacity: \", \";\\n transform-origin: 9.5px 10px;\\n animation: \", \" 2s linear \", \";\\n\"], [\"\\n fill: none;\\n stroke: \", \";\\n stroke-dasharray: 37.68;\\n transition: opacity 0.3s ease-in-out;\\n opacity: \", \";\\n transform-origin: 9.5px 10px;\\n animation: \", \" 2s linear \", \";\\n\"])), function (p) {\n return p.theme.editorColours.icon;\n}, function (p) {\n return p.animate ? 1 : 0;\n}, refreshFrames, function (p) {\n return p.animate ? 'infinite' : '';\n});\nvar Icon = index_1.styled('path')(templateObject_7 || (templateObject_7 = __makeTemplateObject([\"\\n transition: opacity 0.3s ease-in-out;\\n opacity: \", \";\\n transform-origin: 9.5px 10px;\\n animation: \", \" 0.5s linear;\\n\"], [\"\\n transition: opacity 0.3s ease-in-out;\\n opacity: \", \";\\n transform-origin: 9.5px 10px;\\n animation: \", \" 0.5s linear;\\n\"])), function (p) {\n return p.animate ? 0 : 1;\n}, reloadAction);\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7;","\"use strict\";\n\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar PollingIcon_1 = require(\"./PollingIcon\");\n\nvar SchemaPolling =\n/** @class */\nfunction (_super) {\n __extends(SchemaPolling, _super);\n\n function SchemaPolling(props) {\n var _this = _super.call(this, props) || this;\n\n _this.setWindowVisibility = function () {\n if (document.visibilityState === 'visible') {\n _this.setState({\n windowVisible: true\n }, _this.updatePolling);\n }\n\n if (document.visibilityState === 'hidden') {\n _this.setState({\n windowVisible: false\n }, _this.updatePolling);\n }\n };\n\n _this.updatePolling = function (props) {\n if (props === void 0) {\n props = _this.props;\n }\n\n _this.clearTimer();\n\n if (_this.state.windowVisible) {\n // timer starts only when introspection not in flight\n _this.timer = setInterval(function () {\n return props.onReloadSchema();\n }, props.interval);\n }\n };\n\n _this.state = {\n windowVisible: true\n };\n return _this;\n }\n\n SchemaPolling.prototype.componentDidMount = function () {\n this.updatePolling();\n document.addEventListener('visibilitychange', this.setWindowVisibility);\n };\n\n SchemaPolling.prototype.componentWillUnmount = function () {\n this.clearTimer();\n document.removeEventListener('visibilitychange', this.setWindowVisibility);\n };\n\n SchemaPolling.prototype.componentWillReceiveProps = function (nextProps) {\n this.updatePolling(nextProps);\n };\n\n SchemaPolling.prototype.render = function () {\n return React.createElement(PollingIcon_1.default, {\n animate: this.state.windowVisible\n });\n };\n\n SchemaPolling.prototype.clearTimer = function () {\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n };\n\n return SchemaPolling;\n}(React.Component);\n\nexports.default = SchemaPolling;","\"use strict\";\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar index_1 = require(\"../../../styled/index\");\n\nvar Positioner_1 = require(\"./Positioner\");\n\nvar PollingIcon = function PollingIcon(props) {\n return React.createElement(Positioner, {\n onClick: props.onClick,\n title: \"Polling Schema\"\n }, React.createElement(Icon, {\n animate: props.animate\n }));\n};\n\nexports.default = PollingIcon;\nvar pulse = index_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n0% {\\n box-shadow: 0 0 0 0 rgba(139, 149, 156, 0.4);\\n}\\n70% {\\n box-shadow: 0 0 0 10px rgba(139, 149, 156, 0);\\n}\\n100% {\\n box-shadow: 0 0 0 0 rgba(139, 149, 156, 0);\\n}\\n\"], [\"\\n0% {\\n box-shadow: 0 0 0 0 rgba(139, 149, 156, 0.4);\\n}\\n70% {\\n box-shadow: 0 0 0 10px rgba(139, 149, 156, 0);\\n}\\n100% {\\n box-shadow: 0 0 0 0 rgba(139, 149, 156, 0);\\n}\\n\"])));\nvar Positioner = index_1.styled(Positioner_1.default)(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n\"], [\"\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n\"])));\nvar Icon = index_1.styled.div(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n display: block;\\n width: 8px;\\n height: 8px;\\n border-radius: 50%;\\n background: \", \";\\n box-shadow: 0 0 0 \", \";\\n \", \";\\n\"], [\"\\n display: block;\\n width: 8px;\\n height: 8px;\\n border-radius: 50%;\\n background: \", \";\\n box-shadow: 0 0 0 \", \";\\n \", \";\\n\"])), function (p) {\n return p.theme.editorColours.pollingIcon;\n}, function (p) {\n return p.theme.editorColours.pollingIconShadow;\n}, function (p) {\n return p.animate ? index_1.css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n animation: \", \" 2s infinite;\\n \"], [\"\\n animation: \", \" 2s infinite;\\n \"])), pulse) : undefined;\n});\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4;","\"use strict\";\n/**\n * Copyright (c) Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar onHasCompletion_1 = require(\"./onHasCompletion\");\n\nvar react_redux_1 = require(\"react-redux\");\n\nvar actions_1 = require(\"../../state/sessions/actions\");\n\nvar selectors_1 = require(\"../../state/sessions/selectors\");\n\nvar reselect_1 = require(\"reselect\");\n\nvar styled_1 = require(\"../../styled\");\n/**\n * VariableEditor\n *\n * An instance of CodeMirror for editing variables defined in QueryEditor.\n *\n * Props:\n *\n * - variableToType: A mapping of variable name to GraphQLType.\n * - value: The text of the editor.\n * - onEdit: A function called when the editor changes, given the edited text.\n * - readOnly: Turns the editor to read-only mode.\n *\n */\n\n\nvar VariableEditor =\n/** @class */\nfunction (_super) {\n __extends(VariableEditor, _super);\n\n function VariableEditor(props) {\n var _this = _super.call(this, props) || this;\n\n _this._onKeyUp = function (cm, event) {\n var code = event.keyCode;\n\n if (code >= 65 && code <= 90 || // letters\n !event.shiftKey && code >= 48 && code <= 57 || // numbers\n event.shiftKey && code === 189 || // underscore\n event.shiftKey && code === 222 // \"\n ) {\n _this.editor.execCommand('autocomplete');\n }\n };\n\n _this._onEdit = function () {\n if (!_this.ignoreChangeEvent) {\n _this.cachedValue = _this.editor.getValue();\n\n _this.props.onChange(_this.cachedValue);\n }\n };\n\n _this._onHasCompletion = function (cm, data) {\n onHasCompletion_1.default(cm, data, _this.props.onHintInformationRender);\n }; // Keep a cached version of the value, this cache will be updated when the\n // editor is updated, which can later be used to protect the editor from\n // unnecessary updates during the update lifecycle.\n\n\n _this.cachedValue = props.value || '';\n\n if (_this.props.getRef) {\n _this.props.getRef(_this);\n }\n\n return _this;\n }\n\n VariableEditor.prototype.componentDidMount = function () {\n var _this = this; // Lazily require to ensure requiring GraphiQL outside of a Browser context\n // does not produce an error.\n\n\n var CodeMirror = require('codemirror');\n\n require('codemirror/addon/hint/show-hint');\n\n require('codemirror/addon/edit/matchbrackets');\n\n require('codemirror/addon/edit/closebrackets');\n\n require('codemirror/addon/fold/brace-fold');\n\n require('codemirror/addon/fold/foldgutter');\n\n require('codemirror/addon/lint/lint');\n\n require('codemirror/addon/search/searchcursor');\n\n require('codemirror/addon/search/jump-to-line');\n\n require('codemirror/addon/dialog/dialog');\n\n require('codemirror/keymap/sublime');\n\n require('codemirror-graphql/variables/hint');\n\n require('codemirror-graphql/variables/lint');\n\n require('codemirror-graphql/variables/mode');\n\n this.editor = CodeMirror(this._node, {\n value: this.props.value || '',\n lineNumbers: true,\n tabSize: 2,\n mode: 'graphql-variables',\n theme: 'graphiql',\n keyMap: 'sublime',\n autoCloseBrackets: true,\n matchBrackets: true,\n showCursorWhenSelecting: true,\n readOnly: false,\n foldGutter: {\n minFoldSize: 4\n },\n lint: {\n variableToType: this.props.variableToType ? this.props.variableToType.toJS() : undefined\n },\n hintOptions: {\n variableToType: this.props.variableToType ? this.props.variableToType.toJS() : undefined,\n closeOnUnfocus: false,\n completeSingle: false\n },\n gutters: ['CodeMirror-linenumbers', 'CodeMirror-foldgutter'],\n extraKeys: {\n 'Cmd-Space': function CmdSpace() {\n return _this.editor.showHint({\n completeSingle: false\n });\n },\n 'Ctrl-Space': function CtrlSpace() {\n return _this.editor.showHint({\n completeSingle: false\n });\n },\n 'Alt-Space': function AltSpace() {\n return _this.editor.showHint({\n completeSingle: false\n });\n },\n 'Shift-Space': function ShiftSpace() {\n return _this.editor.showHint({\n completeSingle: false\n });\n },\n 'Cmd-Enter': function CmdEnter() {\n if (_this.props.onRunQuery) {\n _this.props.onRunQuery();\n }\n },\n 'Ctrl-Enter': function CtrlEnter() {\n if (_this.props.onRunQuery) {\n _this.props.onRunQuery();\n }\n },\n 'Shift-Ctrl-P': function ShiftCtrlP() {\n if (_this.props.prettifyQuery) {\n _this.props.prettifyQuery();\n }\n },\n // Persistent search box in Query Editor\n 'Cmd-F': 'findPersistent',\n 'Ctrl-F': 'findPersistent',\n // Editor improvements\n 'Ctrl-Left': 'goSubwordLeft',\n 'Ctrl-Right': 'goSubwordRight',\n 'Alt-Left': 'goGroupLeft',\n 'Alt-Right': 'goGroupRight'\n }\n });\n this.editor.on('change', this._onEdit);\n this.editor.on('keyup', this._onKeyUp);\n this.editor.on('hasCompletion', this._onHasCompletion);\n };\n\n VariableEditor.prototype.componentDidUpdate = function (prevProps) {\n var CodeMirror = require('codemirror'); // Ensure the changes caused by this update are not interpretted as\n // user-input changes which could otherwise result in an infinite\n // event loop.\n\n\n this.ignoreChangeEvent = true;\n\n if (this.props.variableToType !== prevProps.variableToType) {\n this.editor.options.lint.variableToType = this.props.variableToType ? this.props.variableToType.toJS() : undefined;\n this.editor.options.hintOptions.variableToType = this.props.variableToType ? this.props.variableToType.toJS() : undefined;\n CodeMirror.signal(this.editor, 'change', this.editor);\n }\n\n if (this.props.value !== prevProps.value && this.props.value !== this.cachedValue) {\n this.cachedValue = this.props.value;\n this.editor.setValue(this.props.value);\n }\n\n this.ignoreChangeEvent = false;\n };\n\n VariableEditor.prototype.componentWillUnmount = function () {\n this.editor.off('change', this._onEdit);\n this.editor.off('keyup', this._onKeyUp);\n this.editor.off('hasCompletion', this._onHasCompletion);\n this.editor = null;\n };\n\n VariableEditor.prototype.render = function () {\n var _this = this;\n\n return React.createElement(Editor, {\n ref: function ref(node) {\n _this._node = node;\n }\n });\n };\n /**\n * Public API for retrieving the CodeMirror instance from this\n * React component.\n */\n\n\n VariableEditor.prototype.getCodeMirror = function () {\n return this.editor;\n };\n /**\n * Public API for retrieving the DOM client height for this component.\n */\n\n\n VariableEditor.prototype.getClientHeight = function () {\n return this._node && this._node.clientHeight;\n };\n\n return VariableEditor;\n}(React.PureComponent);\n\nvar mapStateToVariablesProps = reselect_1.createStructuredSelector({\n value: selectors_1.getVariables,\n variableToType: selectors_1.getVariableToType\n});\nexports.VariableEditorComponent = react_redux_1.connect(mapStateToVariablesProps, {\n onChange: actions_1.editVariables\n})(VariableEditor);\nvar mapStateToHeadersProps = reselect_1.createStructuredSelector({\n value: selectors_1.getHeaders\n});\nexports.HeadersEditorComponent = react_redux_1.connect(mapStateToHeadersProps, {\n onChange: actions_1.editHeaders\n})(VariableEditor);\nvar Editor = styled_1.styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n flex: 1;\\n height: 100%;\\n position: relative;\\n\"], [\"\\n flex: 1;\\n height: 100%;\\n position: relative;\\n\"])));\nvar templateObject_1;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = hintList;\n/**\n * Copyright (c) 2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n// Create the expected hint response given a possible list and a token\n\nfunction hintList(cursor, token, list) {\n var hints = filterAndSortList(list, normalizeText(token.string));\n\n if (!hints) {\n return;\n }\n\n var tokenStart = token.type !== null && /\"|\\w/.test(token.string[0]) ? token.start : token.end;\n return {\n list: hints,\n from: {\n line: cursor.line,\n column: tokenStart\n },\n to: {\n line: cursor.line,\n column: token.end\n }\n };\n} // Given a list of hint entries and currently typed text, sort and filter to\n// provide a concise list.\n\n\nfunction filterAndSortList(list, text) {\n if (!text) {\n return filterNonEmpty(list, function (entry) {\n return !entry.isDeprecated;\n });\n }\n\n var byProximity = list.map(function (entry) {\n return {\n proximity: getProximity(normalizeText(entry.text), text),\n entry: entry\n };\n });\n var conciseMatches = filterNonEmpty(filterNonEmpty(byProximity, function (pair) {\n return pair.proximity <= 2;\n }), function (pair) {\n return !pair.entry.isDeprecated;\n });\n var sortedMatches = conciseMatches.sort(function (a, b) {\n return (a.entry.isDeprecated ? 1 : 0) - (b.entry.isDeprecated ? 1 : 0) || a.proximity - b.proximity || a.entry.text.length - b.entry.text.length;\n });\n return sortedMatches.map(function (pair) {\n return pair.entry;\n });\n} // Filters the array by the predicate, unless it results in an empty array,\n// in which case return the original array.\n\n\nfunction filterNonEmpty(array, predicate) {\n var filtered = array.filter(predicate);\n return filtered.length === 0 ? array : filtered;\n}\n\nfunction normalizeText(text) {\n return text.toLowerCase().replace(/\\W/g, '');\n} // Determine a numeric proximity for a suggestion based on current text.\n\n\nfunction getProximity(suggestion, text) {\n // start with lexical distance\n var proximity = lexicalDistance(text, suggestion);\n\n if (suggestion.length > text.length) {\n // do not penalize long suggestions.\n proximity -= suggestion.length - text.length - 1; // penalize suggestions not starting with this phrase\n\n proximity += suggestion.indexOf(text) === 0 ? 0 : 0.5;\n }\n\n return proximity;\n}\n/**\n * Computes the lexical distance between strings A and B.\n *\n * The \"distance\" between two strings is given by counting the minimum number\n * of edits needed to transform string A into string B. An edit can be an\n * insertion, deletion, or substitution of a single character, or a swap of two\n * adjacent characters.\n *\n * This distance can be useful for detecting typos in input or sorting\n *\n * @param {string} a\n * @param {string} b\n * @return {int} distance in number of edits\n */\n\n\nfunction lexicalDistance(a, b) {\n var i = void 0;\n var j = void 0;\n var d = [];\n var aLength = a.length;\n var bLength = b.length;\n\n for (i = 0; i <= aLength; i++) {\n d[i] = [i];\n }\n\n for (j = 1; j <= bLength; j++) {\n d[0][j] = j;\n }\n\n for (i = 1; i <= aLength; i++) {\n for (j = 1; j <= bLength; j++) {\n var cost = a[i - 1] === b[j - 1] ? 0 : 1;\n d[i][j] = Math.min(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1] + cost);\n\n if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) {\n d[i][j] = Math.min(d[i][j], d[i - 2][j - 2] + cost);\n }\n }\n }\n\n return d[aLength][bLength];\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = jsonParse;\n/**\n * Copyright (c) 2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * This JSON parser simply walks the input, generating an AST. Use this in lieu\n * of JSON.parse if you need character offset parse errors and an AST parse tree\n * with location information.\n *\n * If an error is encountered, a SyntaxError will be thrown, with properties:\n *\n * - message: string\n * - start: int - the start inclusive offset of the syntax error\n * - end: int - the end exclusive offset of the syntax error\n *\n */\n\nfunction jsonParse(str) {\n string = str;\n strLen = str.length;\n start = end = lastEnd = -1;\n ch();\n lex();\n var ast = parseObj();\n expect('EOF');\n return ast;\n}\n\nvar string = void 0;\nvar strLen = void 0;\nvar start = void 0;\nvar end = void 0;\nvar lastEnd = void 0;\nvar code = void 0;\nvar kind = void 0;\n\nfunction parseObj() {\n var nodeStart = start;\n var members = [];\n expect('{');\n\n if (!skip('}')) {\n do {\n members.push(parseMember());\n } while (skip(','));\n\n expect('}');\n }\n\n return {\n kind: 'Object',\n start: nodeStart,\n end: lastEnd,\n members: members\n };\n}\n\nfunction parseMember() {\n var nodeStart = start;\n var key = kind === 'String' ? curToken() : null;\n expect('String');\n expect(':');\n var value = parseVal();\n return {\n kind: 'Member',\n start: nodeStart,\n end: lastEnd,\n key: key,\n value: value\n };\n}\n\nfunction parseArr() {\n var nodeStart = start;\n var values = [];\n expect('[');\n\n if (!skip(']')) {\n do {\n values.push(parseVal());\n } while (skip(','));\n\n expect(']');\n }\n\n return {\n kind: 'Array',\n start: nodeStart,\n end: lastEnd,\n values: values\n };\n}\n\nfunction parseVal() {\n switch (kind) {\n case '[':\n return parseArr();\n\n case '{':\n return parseObj();\n\n case 'String':\n case 'Number':\n case 'Boolean':\n case 'Null':\n var token = curToken();\n lex();\n return token;\n }\n\n return expect('Value');\n}\n\nfunction curToken() {\n return {\n kind: kind,\n start: start,\n end: end,\n value: JSON.parse(string.slice(start, end))\n };\n}\n\nfunction expect(str) {\n if (kind === str) {\n lex();\n return;\n }\n\n var found = void 0;\n\n if (kind === 'EOF') {\n found = '[end of file]';\n } else if (end - start > 1) {\n found = '`' + string.slice(start, end) + '`';\n } else {\n var match = string.slice(start).match(/^.+?\\b/);\n found = '`' + (match ? match[0] : string[start]) + '`';\n }\n\n throw syntaxError('Expected ' + str + ' but found ' + found + '.');\n}\n\nfunction syntaxError(message) {\n return {\n message: message,\n start: start,\n end: end\n };\n}\n\nfunction skip(k) {\n if (kind === k) {\n lex();\n return true;\n }\n}\n\nfunction ch() {\n if (end < strLen) {\n end++;\n code = end === strLen ? 0 : string.charCodeAt(end);\n }\n}\n\nfunction lex() {\n lastEnd = end;\n\n while (code === 9 || code === 10 || code === 13 || code === 32) {\n ch();\n }\n\n if (code === 0) {\n kind = 'EOF';\n return;\n }\n\n start = end;\n\n switch (code) {\n // \"\n case 34:\n kind = 'String';\n return readString();\n // -, 0-9\n\n case 45:\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n kind = 'Number';\n return readNumber();\n // f\n\n case 102:\n if (string.slice(start, start + 5) !== 'false') {\n break;\n }\n\n end += 4;\n ch();\n kind = 'Boolean';\n return;\n // n\n\n case 110:\n if (string.slice(start, start + 4) !== 'null') {\n break;\n }\n\n end += 3;\n ch();\n kind = 'Null';\n return;\n // t\n\n case 116:\n if (string.slice(start, start + 4) !== 'true') {\n break;\n }\n\n end += 3;\n ch();\n kind = 'Boolean';\n return;\n }\n\n kind = string[start];\n ch();\n}\n\nfunction readString() {\n ch();\n\n while (code !== 34 && code > 31) {\n if (code === 92) {\n // \\\n ch();\n\n switch (code) {\n case 34: // \"\n\n case 47: // /\n\n case 92: // \\\n\n case 98: // b\n\n case 102: // f\n\n case 110: // n\n\n case 114: // r\n\n case 116:\n // t\n ch();\n break;\n\n case 117:\n // u\n ch();\n readHex();\n readHex();\n readHex();\n readHex();\n break;\n\n default:\n throw syntaxError('Bad character escape sequence.');\n }\n } else if (end === strLen) {\n throw syntaxError('Unterminated string.');\n } else {\n ch();\n }\n }\n\n if (code === 34) {\n ch();\n return;\n }\n\n throw syntaxError('Unterminated string.');\n}\n\nfunction readHex() {\n if (code >= 48 && code <= 57 || // 0-9\n code >= 65 && code <= 70 || // A-F\n code >= 97 && code <= 102 // a-f\n ) {\n return ch();\n }\n\n throw syntaxError('Expected hexadecimal digit.');\n}\n\nfunction readNumber() {\n if (code === 45) {\n // -\n ch();\n }\n\n if (code === 48) {\n // 0\n ch();\n } else {\n readDigits();\n }\n\n if (code === 46) {\n // .\n ch();\n readDigits();\n }\n\n if (code === 69 || code === 101) {\n // E e\n ch();\n\n if (code === 43 || code === 45) {\n // + -\n ch();\n }\n\n readDigits();\n }\n}\n\nfunction readDigits() {\n if (code < 48 || code > 57) {\n // 0 - 9\n throw syntaxError('Expected decimal digit.');\n }\n\n do {\n ch();\n } while (code >= 48 && code <= 57); // 0 - 9\n\n}","\"use strict\";\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar ageOfDate_1 = require(\"./util/ageOfDate\");\n\nvar ResultViewer_1 = require(\"./ResultViewer\");\n\nvar react_redux_1 = require(\"react-redux\");\n\nvar reselect_1 = require(\"reselect\");\n\nvar selectors_1 = require(\"../../state/sessions/selectors\");\n\nvar styled_1 = require(\"../../styled\");\n\nvar reducers_1 = require(\"../../state/sessions/reducers\");\n\nvar defaultResponseRecord = new reducers_1.ResponseRecord({\n date: '',\n time: new Date(),\n resultID: 'default-id'\n});\n\nvar Results = function Results(_a) {\n var setRef = _a.setRef,\n responses = _a.responses;\n var response1 = responses.get(0) || defaultResponseRecord;\n var isSubscription = responses.size > 1;\n return React.createElement(ResultWindow, {\n ref: setRef,\n isSubscription: isSubscription\n }, responses.size <= 1 ? React.createElement(Response, {\n key: 'first',\n isSubscription: isSubscription\n }, responses.size > 1 && response1.time && React.createElement(SubscriptionTime, null, React.createElement(SubscriptionTimeText, null, ageOfDate_1.default(response1.time))), React.createElement(ResultWrapper, {\n isSubscription: isSubscription\n }, React.createElement(ResultViewer_1.ResultViewer, {\n value: response1.date,\n isSubscription: isSubscription\n }))) : responses.map(function (response) {\n return React.createElement(Response, {\n key: response.resultID || String(response.time),\n isSubscription: isSubscription\n }, responses.size > 1 && response.time && React.createElement(SubscriptionTime, null, React.createElement(SubscriptionTimeText, null, ageOfDate_1.default(response.time))), React.createElement(ResultWrapper, {\n isSubscription: responses.size > 1\n }, React.createElement(ResultViewer_1.ResultViewer, {\n value: response.date,\n isSubscription: isSubscription\n })));\n }));\n};\n\nvar mapStateToProps = reselect_1.createStructuredSelector({\n responses: selectors_1.getResponses\n});\nexports.default = react_redux_1.connect(mapStateToProps)(Results);\nvar ResultWindow = styled_1.styled('div')(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n flex: 1;\\n height: auto;\\n position: relative;\\n overflow: \", \";\\n max-height: none !important;\\n\\n .cm-string {\\n color: rgb(41, 185, 115);\\n }\\n\\n .cm-def {\\n color: rgb(241, 143, 1);\\n }\\n\\n .cm-property {\\n color: rgb(51, 147, 220);\\n }\\n\\n &::-webkit-scrollbar {\\n display: none;\\n }\\n\\n .CodeMirror {\\n background: \", \";\\n }\\n .CodeMirror-gutters {\\n cursor: col-resize;\\n }\\n .CodeMirror-foldgutter,\\n .CodeMirror-foldgutter-open:after,\\n .CodeMirror-foldgutter-folded:after {\\n padding-left: 3px;\\n }\\n\"], [\"\\n flex: 1;\\n height: auto;\\n position: relative;\\n overflow: \", \";\\n max-height: none !important;\\n\\n .cm-string {\\n color: rgb(41, 185, 115);\\n }\\n\\n .cm-def {\\n color: rgb(241, 143, 1);\\n }\\n\\n .cm-property {\\n color: rgb(51, 147, 220);\\n }\\n\\n &::-webkit-scrollbar {\\n display: none;\\n }\\n\\n .CodeMirror {\\n background: \", \";\\n }\\n .CodeMirror-gutters {\\n cursor: col-resize;\\n }\\n .CodeMirror-foldgutter,\\n .CodeMirror-foldgutter-open:after,\\n .CodeMirror-foldgutter-folded:after {\\n padding-left: 3px;\\n }\\n\"])), function (props) {\n return props.isSubscription ? 'auto' : 'visible';\n}, function (p) {\n return p.theme.editorColours.resultBackground;\n});\nvar Response = styled_1.styled('div')(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n position: relative;\\n display: flex;\\n flex: 1;\\n height: \", \";\\n flex-direction: column;\\n &:not(:first-child):last-of-type {\\n margin-bottom: 48px;\\n }\\n\"], [\"\\n position: relative;\\n display: flex;\\n flex: 1;\\n height: \", \";\\n flex-direction: column;\\n &:not(:first-child):last-of-type {\\n margin-bottom: 48px;\\n }\\n\"])), function (props) {\n return props.isSubscription ? \"auto\" : '100%';\n});\nvar SubscriptionTime = styled_1.styled.div(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n position: relative;\\n height: 17px;\\n margin-top: 12px;\\n margin-bottom: 4px;\\n &:before {\\n position: absolute;\\n width: 100%;\\n content: '';\\n top: 9px;\\n left: 95px;\\n border-top: 1px solid\\n \", \";\\n }\\n\"], [\"\\n position: relative;\\n height: 17px;\\n margin-top: 12px;\\n margin-bottom: 4px;\\n &:before {\\n position: absolute;\\n width: 100%;\\n content: '';\\n top: 9px;\\n left: 95px;\\n border-top: 1px solid\\n \", \";\\n }\\n\"])), function (p) {\n return p.theme.editorColours.subscriptionTimeBoaderTop;\n});\nvar SubscriptionTimeText = styled_1.styled.div(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n font-size: 12px;\\n color: \", \";\\n padding-left: 15px;\\n\"], [\"\\n font-size: 12px;\\n color: \", \";\\n padding-left: 15px;\\n\"])), function (p) {\n return p.theme.editorColours.subscriptionTimeText;\n});\nvar ResultWrapper = styled_1.styled('div')(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n display: flex;\\n flex: 1;\\n height: \", \";\\n position: \", \";\\n\"], [\"\\n display: flex;\\n flex: 1;\\n height: \", \";\\n position: \", \";\\n\"])), function (props) {\n return props.isSubscription ? \"auto\" : '100%';\n}, function (props) {\n return props.isSubscription ? \"relative\" : 'static';\n});\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction ageOfDate(date) {\n var now = new Date();\n var diffMs = Math.abs(date.getTime() - now.getTime());\n var diffDays = Math.floor(diffMs / 86400000);\n var diffHrs = Math.floor(diffMs % 86400000 / 3600000);\n var diffMins = Math.round(diffMs % 86400000 % 3600000 / 60000);\n\n if (diffDays > 0) {\n return diffDays + \" days ago\";\n }\n\n if (diffHrs > 0) {\n return diffHrs + \" h ago\";\n }\n\n if (diffMins > 0) {\n return diffMins + \" min ago\";\n }\n\n var sec = Math.round(diffMs / 1000);\n return sec + \" sec\" + (sec > 1 ? 's' : '') + \" ago\";\n}\n\nexports.default = ageOfDate;","\"use strict\";\n/**\n * Copyright (c) Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar styled_1 = require(\"../../styled\");\n/**\n * ResultViewer\n *\n * Maintains an instance of CodeMirror for viewing a GraphQL response.\n *\n * Props:\n *\n * - value: The text of the editor.\n *\n */\n\n\nvar ResultViewer =\n/** @class */\nfunction (_super) {\n __extends(ResultViewer, _super);\n\n function ResultViewer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.setRef = function (ref) {\n _this.node = ref;\n };\n\n return _this;\n }\n\n ResultViewer.prototype.componentDidMount = function () {\n var CodeMirror = require('codemirror');\n\n require('codemirror/addon/fold/foldgutter');\n\n require('codemirror/addon/fold/brace-fold');\n\n require('codemirror/addon/dialog/dialog');\n\n require('codemirror/addon/search/search');\n\n require('codemirror/addon/search/searchcursor');\n\n require('codemirror/addon/search/jump-to-line');\n\n require('codemirror/keymap/sublime');\n\n require('codemirror-graphql/results/mode');\n\n var gutters = [];\n\n if (!this.props.hideGutters) {\n gutters.push('CodeMirror-foldgutter');\n }\n\n var foldGutter = {};\n\n if (!this.props.hideGutters) {\n foldGutter = {\n minFoldSize: 4\n };\n }\n\n var value = this.props.value || '';\n this.viewer = CodeMirror(this.node, {\n lineWrapping: true,\n value: value,\n readOnly: true,\n theme: 'graphiql',\n mode: 'graphql-results',\n keyMap: 'sublime',\n foldGutter: foldGutter,\n gutters: gutters,\n extraKeys: {\n // Persistent search box in Query Editor\n 'Cmd-F': 'findPersistent',\n 'Ctrl-F': 'findPersistent',\n // Editor improvements\n 'Ctrl-Left': 'goSubwordLeft',\n 'Ctrl-Right': 'goSubwordRight',\n 'Alt-Left': 'goGroupLeft',\n 'Alt-Right': 'goGroupRight'\n }\n });\n };\n\n ResultViewer.prototype.shouldComponentUpdate = function (nextProps) {\n return this.props.value !== nextProps.value;\n };\n\n ResultViewer.prototype.componentDidUpdate = function () {\n var value = this.props.value || '';\n this.viewer.setValue(value);\n };\n\n ResultViewer.prototype.componentWillUnmount = function () {\n this.viewer = null;\n };\n\n ResultViewer.prototype.render = function () {\n return React.createElement(Result, {\n ref: this.setRef,\n isSubscription: this.props.isSubscription\n });\n };\n /**\n * Public API for retrieving the CodeMirror instance from this\n * React component.\n */\n\n\n ResultViewer.prototype.getCodeMirror = function () {\n return this.viewer;\n };\n /**\n * Public API for retrieving the DOM client height for this component.\n */\n\n\n ResultViewer.prototype.getClientHeight = function () {\n return this.node && this.node.clientHeight;\n };\n\n return ResultViewer;\n}(React.Component);\n\nexports.ResultViewer = ResultViewer;\nvar Result = styled_1.styled('div')(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n position: relative;\\n display: flex;\\n flex: 1;\\n height: \", \";\\n .CodeMirror {\\n height: \", \";\\n position: \", \";\\n box-sizing: border-box;\\n background: none;\\n padding-left: 38px;\\n }\\n .CodeMirror-cursor {\\n display: none !important;\\n }\\n .CodeMirror-scroll {\\n overflow: auto !important;\\n max-width: 50vw;\\n margin-right: 10px;\\n }\\n .CodeMirror-sizer {\\n margin-bottom: 0 !important;\\n }\\n .CodeMirror-lines {\\n margin: 20px 0;\\n padding: 0;\\n }\\n .cm-string {\\n color: \", \" !important;\\n }\\n\"], [\"\\n position: relative;\\n display: flex;\\n flex: 1;\\n height: \", \";\\n .CodeMirror {\\n height: \", \";\\n position: \", \";\\n box-sizing: border-box;\\n background: none;\\n padding-left: 38px;\\n }\\n .CodeMirror-cursor {\\n display: none !important;\\n }\\n .CodeMirror-scroll {\\n overflow: auto !important;\\n max-width: 50vw;\\n margin-right: 10px;\\n }\\n .CodeMirror-sizer {\\n margin-bottom: 0 !important;\\n }\\n .CodeMirror-lines {\\n margin: 20px 0;\\n padding: 0;\\n }\\n .cm-string {\\n color: \", \" !important;\\n }\\n\"])), function (props) {\n return props.isSubscription ? 'auto' : '100%';\n}, function (props) {\n return props.isSubscription ? 'auto' : '100%';\n}, function (props) {\n return props.isSubscription ? 'relative' : 'absolute%';\n}, function (p) {\n return p.theme.editorColours.property;\n});\nvar templateObject_1;","'use strict';\n\nvar _codemirror = require('codemirror');\n\nvar _codemirror2 = _interopRequireDefault(_codemirror);\n\nvar _graphqlLanguageServiceParser = require('graphql-language-service-parser');\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n/**\n * This mode defines JSON, but provides a data-laden parser state to enable\n * better code intelligence.\n */\n\n/**\n * Copyright (c) 2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n\n_codemirror2.default.defineMode('graphql-results', function (config) {\n var parser = (0, _graphqlLanguageServiceParser.onlineParser)({\n eatWhitespace: function eatWhitespace(stream) {\n return stream.eatSpace();\n },\n lexRules: LexRules,\n parseRules: ParseRules,\n editorConfig: {\n tabSize: config.tabSize\n }\n });\n return {\n config: config,\n startState: parser.startState,\n token: parser.token,\n indent: indent,\n electricInput: /^\\s*[}\\]]/,\n fold: 'brace',\n closeBrackets: {\n pairs: '[]{}\"\"',\n explode: '[]{}'\n }\n };\n});\n\nfunction indent(state, textAfter) {\n var levels = state.levels; // If there is no stack of levels, use the current level.\n // Otherwise, use the top level, pre-emptively dedenting for close braces.\n\n var level = !levels || levels.length === 0 ? state.indentLevel : levels[levels.length - 1] - (this.electricInput.test(textAfter) ? 1 : 0);\n return level * this.config.indentUnit;\n}\n/**\n * The lexer rules. These are exactly as described by the spec.\n */\n\n\nvar LexRules = {\n // All Punctuation used in JSON.\n Punctuation: /^\\[|]|\\{|\\}|:|,/,\n // JSON Number.\n Number: /^-?(?:0|(?:[1-9][0-9]*))(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/,\n // JSON String.\n String: /^\"(?:[^\"\\\\]|\\\\(?:\"|\\/|\\\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*\"?/,\n // JSON literal keywords.\n Keyword: /^true|false|null/\n};\n/**\n * The parser rules for JSON.\n */\n\nvar ParseRules = {\n Document: [(0, _graphqlLanguageServiceParser.p)('{'), (0, _graphqlLanguageServiceParser.list)('Entry', (0, _graphqlLanguageServiceParser.p)(',')), (0, _graphqlLanguageServiceParser.p)('}')],\n Entry: [(0, _graphqlLanguageServiceParser.t)('String', 'def'), (0, _graphqlLanguageServiceParser.p)(':'), 'Value'],\n Value: function Value(token) {\n switch (token.kind) {\n case 'Number':\n return 'NumberValue';\n\n case 'String':\n return 'StringValue';\n\n case 'Punctuation':\n switch (token.value) {\n case '[':\n return 'ListValue';\n\n case '{':\n return 'ObjectValue';\n }\n\n return null;\n\n case 'Keyword':\n switch (token.value) {\n case 'true':\n case 'false':\n return 'BooleanValue';\n\n case 'null':\n return 'NullValue';\n }\n\n return null;\n }\n },\n NumberValue: [(0, _graphqlLanguageServiceParser.t)('Number', 'number')],\n StringValue: [(0, _graphqlLanguageServiceParser.t)('String', 'string')],\n BooleanValue: [(0, _graphqlLanguageServiceParser.t)('Keyword', 'builtin')],\n NullValue: [(0, _graphqlLanguageServiceParser.t)('Keyword', 'keyword')],\n ListValue: [(0, _graphqlLanguageServiceParser.p)('['), (0, _graphqlLanguageServiceParser.list)('Value', (0, _graphqlLanguageServiceParser.p)(',')), (0, _graphqlLanguageServiceParser.p)(']')],\n ObjectValue: [(0, _graphqlLanguageServiceParser.p)('{'), (0, _graphqlLanguageServiceParser.list)('ObjectField', (0, _graphqlLanguageServiceParser.p)(',')), (0, _graphqlLanguageServiceParser.p)('}')],\n ObjectField: [(0, _graphqlLanguageServiceParser.t)('String', 'property'), (0, _graphqlLanguageServiceParser.p)(':'), 'Value']\n};","\"use strict\";\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar TracingRow_1 = require(\"./TracingRow\");\n\nvar styled_1 = require(\"../../styled/styled\");\n\nvar reselect_1 = require(\"reselect\");\n\nvar selectors_1 = require(\"../../state/sessions/selectors\");\n\nvar react_redux_1 = require(\"react-redux\");\n\nvar TracingWrapper = styled_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n padding-top: 6px;\\n padding-left: 25px;\\n padding-right: 25px;\\n color: \", \";\\n overflow: auto;\\n position: relative;\\n height: 100%;\\n\"], [\"\\n padding-top: 6px;\\n padding-left: 25px;\\n padding-right: 25px;\\n color: \", \";\\n overflow: auto;\\n position: relative;\\n height: 100%;\\n\"])), function (p) {\n return p.theme.editorColours.text;\n});\nvar ReRun = styled_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n font-size: 14px;\\n\"], [\"\\n font-size: 14px;\\n\"])));\nvar NotSupported = styled_1.default.div(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n font-size: 14px;\\n color: rgba(241, 143, 1, 1);\\n\"], [\"\\n font-size: 14px;\\n color: rgba(241, 143, 1, 1);\\n\"])));\nvar TracingRows = styled_1.default.div(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n padding-left: 100px;\\n padding-bottom: 100px;\\n padding-top: 16px;\\n position: absolute;\\n overflow: auto;\\n top: 0;\\n left: 0;\\n width: calc(100% + 100px);\\n height: calc(100% + 116px);\\n\"], [\"\\n padding-left: 100px;\\n padding-bottom: 100px;\\n padding-top: 16px;\\n position: absolute;\\n overflow: auto;\\n top: 0;\\n left: 0;\\n width: calc(100% + 100px);\\n height: calc(100% + 116px);\\n\"])));\n\nvar ResponseTracing =\n/** @class */\nfunction (_super) {\n __extends(ResponseTracing, _super);\n\n function ResponseTracing() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ResponseTracing.prototype.render = function () {\n var _a = this.props,\n tracing = _a.tracing,\n tracingSupported = _a.tracingSupported,\n startTime = _a.startTime,\n endTime = _a.endTime;\n var requestMs = tracing && startTime ? Math.abs(new Date(tracing.startTime).getTime() - startTime.getTime()) : 0;\n var responseMs = tracing && endTime ? Math.abs(endTime.getTime() - new Date(tracing.endTime).getTime()) : 0;\n var requestDuration = 1000 * 1000 * requestMs;\n return React.createElement(TracingWrapper, null, tracing ? React.createElement(TracingRows, null, React.createElement(TracingRow_1.default, {\n path: ['Request'],\n startOffset: 0,\n duration: requestDuration\n }), tracing.execution.resolvers.map(function (res) {\n return React.createElement(TracingRow_1.default, {\n key: res.path.join('.'),\n path: res.path,\n startOffset: res.startOffset + requestDuration,\n duration: res.duration\n });\n }), React.createElement(TracingRow_1.default, {\n path: ['Response'],\n startOffset: tracing.duration + requestDuration,\n duration: 1000 * 1000 * responseMs\n })) : tracingSupported ? React.createElement(ReRun, null, this.props.queryRunning ? 'Running query ...' : 'Please re-run the query to show tracing results.') : React.createElement(NotSupported, null, \"This GraphQL server doesn\\u2019t support tracing. See the\", ' ', React.createElement(\"a\", {\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n href: \"https://github.com/apollographql/apollo-tracing\"\n }, \"Github page\"), ' ', \"for instructions.\"));\n };\n\n return ResponseTracing;\n}(React.PureComponent);\n\nvar mapStateToProps = reselect_1.createStructuredSelector({\n tracing: selectors_1.getTracing,\n startTime: selectors_1.getCurrentQueryStartTime,\n endTime: selectors_1.getCurrentQueryEndTime,\n tracingSupported: selectors_1.getTracingSupported,\n queryRunning: selectors_1.getQueryRunning\n});\nexports.default = react_redux_1.connect(mapStateToProps)(ResponseTracing);\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4;","\"use strict\";\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar styled_1 = require(\"../../styled/styled\");\n\nvar Row = styled_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n position: relative;\\n font-size: 12px;\\n display: table;\\n padding-right: 25px;\\n\\n color: \", \";\\n\"], [\"\\n position: relative;\\n font-size: 12px;\\n display: table;\\n padding-right: 25px;\\n\\n color: \", \";\\n\"])), function (p) {\n return p.theme.editorColours.text;\n});\nvar Bar = styled_1.default.span(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n display: inline-block;\\n position: relative;\\n margin: 0 10px;\\n height: 1.5px;\\n bottom: 4px;\\n\\n background: \", \";\\n\"], [\"\\n display: inline-block;\\n position: relative;\\n margin: 0 10px;\\n height: 1.5px;\\n bottom: 4px;\\n\\n background: \", \";\\n\"])), function (p) {\n return p.theme.editorColours.text;\n});\nvar Duration = styled_1.default.span(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n font-size: 10px;\\n color: \", \";\\n\"], [\"\\n font-size: 10px;\\n color: \", \";\\n\"])), function (p) {\n return p.theme.editorColours.textInactive;\n});\nvar NameWrapper = styled_1.default.span(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n position: absolute;\\n left: 0;\\n transform: translateX(-100%);\\n display: inline-flex;\\n align-items: center;\\n\\n text-align: right;\\n\"], [\"\\n position: absolute;\\n left: 0;\\n transform: translateX(-100%);\\n display: inline-flex;\\n align-items: center;\\n\\n text-align: right;\\n\"])));\nvar Name = styled_1.default.span(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n margin-left: 10px;\\n\"], [\"\\n margin-left: 10px;\\n\"])));\n\nvar TracingRow =\n/** @class */\nfunction (_super) {\n __extends(TracingRow, _super);\n\n function TracingRow() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.state = {\n collapsed: false\n };\n return _this;\n }\n\n TracingRow.prototype.render = function () {\n var _a = this.props,\n path = _a.path,\n startOffset = _a.startOffset,\n duration = _a.duration;\n var factor = 1000 * 1000;\n var offsetLeft = startOffset / factor;\n var barWidth = duration / factor;\n return React.createElement(Row, {\n style: {\n transform: \"translateX(\" + offsetLeft + \"px)\"\n }\n }, React.createElement(NameWrapper, null, React.createElement(Name, null, path.slice(-2).map(function (p, index) {\n return React.createElement(\"span\", {\n style: {\n opacity: index === path.slice(-2).length - 1 ? 1 : 0.6\n },\n key: p\n }, \"\" + (index > 0 ? '.' : '') + p);\n }))), React.createElement(Bar, {\n style: {\n width: Math.max(barWidth, 3)\n }\n }), React.createElement(Duration, null, this.printDuration(duration)));\n };\n\n TracingRow.prototype.printDuration = function (nanoSeconds) {\n var microSeconds = Math.round(nanoSeconds / 1000);\n\n if (microSeconds > 1000) {\n var ms = Math.round(microSeconds / 1000);\n return ms + \" ms\";\n }\n\n return microSeconds + \" \\xB5s\";\n };\n\n return TracingRow;\n}(React.Component);\n\nexports.default = TracingRow;\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;","\"use strict\";\n\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar react_redux_1 = require(\"react-redux\");\n\nvar styled_1 = require(\"../../styled\");\n\nvar selectors_1 = require(\"../../state/sessions/selectors\");\n\nvar QueryPlanViewer =\n/** @class */\nfunction (_super) {\n __extends(QueryPlanViewer, _super);\n\n function QueryPlanViewer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.setRef = function (ref) {\n _this.node = ref;\n };\n\n return _this;\n }\n\n QueryPlanViewer.prototype.componentDidMount = function () {\n var CodeMirror = require('codemirror');\n\n require('codemirror/addon/fold/foldgutter');\n\n require('codemirror/addon/fold/brace-fold');\n\n require('codemirror/addon/dialog/dialog');\n\n require('codemirror/addon/search/search');\n\n require('codemirror/addon/search/searchcursor');\n\n require('codemirror/addon/search/jump-to-line');\n\n require('codemirror/keymap/sublime');\n\n require('codemirror-graphql/mode');\n\n this.viewer = CodeMirror(this.node, {\n lineWrapping: true,\n value: this.props.value || '',\n readOnly: true,\n theme: 'graphiql',\n mode: 'graphql',\n keyMap: 'sublime',\n foldGutter: {\n minFoldSize: 4\n },\n gutters: ['CodeMirror-foldgutter'],\n extraKeys: {\n // Persistent search box in Query Editor\n 'Cmd-F': 'findPersistent',\n 'Ctrl-F': 'findPersistent',\n // Editor improvements\n 'Ctrl-Left': 'goSubwordLeft',\n 'Ctrl-Right': 'goSubwordRight',\n 'Alt-Left': 'goGroupLeft',\n 'Alt-Right': 'goGroupRight'\n }\n });\n };\n\n QueryPlanViewer.prototype.shouldComponentUpdate = function (nextProps) {\n return this.props.value !== nextProps.value;\n };\n\n QueryPlanViewer.prototype.componentDidUpdate = function () {\n var value = this.props.value || '';\n this.viewer.setValue(value);\n };\n\n QueryPlanViewer.prototype.componentWillUnmount = function () {\n this.viewer = null;\n };\n /**\n * Public API for retrieving the CodeMirror instance from this\n * React component.\n */\n\n\n QueryPlanViewer.prototype.getCodeMirror = function () {\n return this.viewer;\n };\n /**\n * Public API for retrieving the DOM client height for this component.\n */\n\n\n QueryPlanViewer.prototype.getClientHeight = function () {\n return this.node && this.node.clientHeight;\n };\n\n QueryPlanViewer.prototype.render = function () {\n return this.props.isQueryPlanSupported ? React.createElement(QueryPlanCodeMirror, {\n ref: this.setRef\n }) : React.createElement(NotSupported, null, \"This GraphQL server either doesn't support Apollo Federation, or the query plan extensions is disabled. See the\", ' ', React.createElement(\"a\", {\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n href: \"https://www.apollographql.com/docs/apollo-server/federation/introduction\"\n }, \"docs\"), ' ', \"for setting up query plan viewing with Apollo Federation.\");\n };\n\n return QueryPlanViewer;\n}(React.Component);\n\nexports.QueryPlanViewer = QueryPlanViewer;\nvar QueryPlanCodeMirror = styled_1.styled('div')(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n position: relative;\\n display: flex;\\n flex: 1;\\n height: 100%;\\n\\n .CodeMirror {\\n height: 100%;\\n position: absolute;\\n box-sizing: border-box;\\n background: none;\\n padding-left: 38px;\\n }\\n\\n .CodeMirror-cursor {\\n display: none !important;\\n }\\n\\n .CodeMirror-scroll {\\n overflow: auto !important;\\n max-width: 50vw;\\n margin-right: 10px;\\n }\\n\\n .CodeMirror-sizer {\\n margin-bottom: 0 !important;\\n }\\n\\n .CodeMirror-lines {\\n margin: 20px 0;\\n padding: 0;\\n }\\n\\n .cm-string {\\n color: \", \" !important;\\n }\\n\\n // This is a hack to cover a couple holes in our \\\"almost-graphql\\\" representation\\n // of the Query Plan result\\n .cm-invalidchar {\\n color: rgba(255, 255, 255, 0.4);\\n }\\n\"], [\"\\n position: relative;\\n display: flex;\\n flex: 1;\\n height: 100%;\\n\\n .CodeMirror {\\n height: 100%;\\n position: absolute;\\n box-sizing: border-box;\\n background: none;\\n padding-left: 38px;\\n }\\n\\n .CodeMirror-cursor {\\n display: none !important;\\n }\\n\\n .CodeMirror-scroll {\\n overflow: auto !important;\\n max-width: 50vw;\\n margin-right: 10px;\\n }\\n\\n .CodeMirror-sizer {\\n margin-bottom: 0 !important;\\n }\\n\\n .CodeMirror-lines {\\n margin: 20px 0;\\n padding: 0;\\n }\\n\\n .cm-string {\\n color: \", \" !important;\\n }\\n\\n // This is a hack to cover a couple holes in our \\\"almost-graphql\\\" representation\\n // of the Query Plan result\\n .cm-invalidchar {\\n color: rgba(255, 255, 255, 0.4);\\n }\\n\"])), function (p) {\n return p.theme.editorColours.property;\n});\nvar NotSupported = styled_1.styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n padding: 6px 25px 0;\\n font-size: 14px;\\n color: rgba(241, 143, 1, 1);\\n\"], [\"\\n padding: 6px 25px 0;\\n font-size: 14px;\\n color: rgba(241, 143, 1, 1);\\n\"])));\nexports.QueryPlan = react_redux_1.connect(function (state) {\n return {\n value: selectors_1.getQueryPlan(state),\n isQueryPlanSupported: selectors_1.getIsQueryPlanSupported(state)\n };\n})(QueryPlanViewer);\nvar templateObject_1, templateObject_2;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.fillLeafs = fillLeafs;\n\nvar _graphql = require('graphql');\n/**\n * Given a document string which may not be valid due to terminal fields not\n * representing leaf values (Spec Section: \"Leaf Field Selections\"), and a\n * function which provides reasonable default field names for a given type,\n * this function will attempt to produce a schema which is valid after filling\n * in selection sets for the invalid fields.\n *\n * Note that there is no guarantee that the result will be a valid query, this\n * utility represents a \"best effort\" which may be useful within IDE tools.\n */\n\n\nfunction fillLeafs(schema, docString, getDefaultFieldNames) {\n var insertions = [];\n\n if (!schema) {\n return {\n insertions: insertions,\n result: docString\n };\n }\n\n var ast = void 0;\n\n try {\n ast = (0, _graphql.parse)(docString);\n } catch (error) {\n return {\n insertions: insertions,\n result: docString\n };\n }\n\n var fieldNameFn = getDefaultFieldNames || defaultGetDefaultFieldNames;\n var typeInfo = new _graphql.TypeInfo(schema);\n (0, _graphql.visit)(ast, {\n leave: function leave(node) {\n typeInfo.leave(node);\n },\n enter: function enter(node) {\n typeInfo.enter(node);\n\n if (node.kind === 'Field' && !node.selectionSet) {\n var fieldType = typeInfo.getType();\n var selectionSet = buildSelectionSet(fieldType, fieldNameFn);\n\n if (selectionSet) {\n var indent = getIndentation(docString, node.loc.start);\n insertions.push({\n index: node.loc.end,\n string: ' ' + (0, _graphql.print)(selectionSet).replace(/\\n/g, '\\n' + indent)\n });\n }\n }\n }\n }); // Apply the insertions, but also return the insertions metadata.\n\n return {\n insertions: insertions,\n result: withInsertions(docString, insertions)\n };\n} // The default function to use for producing the default fields from a type.\n// This function first looks for some common patterns, and falls back to\n// including all leaf-type fields.\n\n/**\n * Copyright (c) Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\nfunction defaultGetDefaultFieldNames(type) {\n // If this type cannot access fields, then return an empty set.\n if (!type.getFields) {\n return [];\n }\n\n var fields = type.getFields(); // Is there an `id` field?\n\n if (fields['id']) {\n return ['id'];\n } // Is there an `edges` field?\n\n\n if (fields['edges']) {\n return ['edges'];\n } // Is there an `node` field?\n\n\n if (fields['node']) {\n return ['node'];\n } // Include all leaf-type fields.\n\n\n var leafFieldNames = [];\n Object.keys(fields).forEach(function (fieldName) {\n if ((0, _graphql.isLeafType)(fields[fieldName].type)) {\n leafFieldNames.push(fieldName);\n }\n });\n return leafFieldNames;\n} // Given a GraphQL type, and a function which produces field names, recursively\n// generate a SelectionSet which includes default fields.\n\n\nfunction buildSelectionSet(type, getDefaultFieldNames) {\n // Unwrap any non-null or list types.\n var namedType = (0, _graphql.getNamedType)(type); // Unknown types and leaf types do not have selection sets.\n\n if (!type || (0, _graphql.isLeafType)(type)) {\n return;\n } // Get an array of field names to use.\n\n\n var fieldNames = getDefaultFieldNames(namedType); // If there are no field names to use, return no selection set.\n\n if (!Array.isArray(fieldNames) || fieldNames.length === 0) {\n return;\n } // Build a selection set of each field, calling buildSelectionSet recursively.\n\n\n return {\n kind: 'SelectionSet',\n selections: fieldNames.map(function (fieldName) {\n var fieldDef = namedType.getFields()[fieldName];\n var fieldType = fieldDef ? fieldDef.type : null;\n return {\n kind: 'Field',\n name: {\n kind: 'Name',\n value: fieldName\n },\n selectionSet: buildSelectionSet(fieldType, getDefaultFieldNames)\n };\n })\n };\n} // Given an initial string, and a list of \"insertion\" { index, string } objects,\n// return a new string with these insertions applied.\n\n\nfunction withInsertions(initial, insertions) {\n if (insertions.length === 0) {\n return initial;\n }\n\n var edited = '';\n var prevIndex = 0;\n insertions.forEach(function (_ref) {\n var index = _ref.index,\n string = _ref.string;\n edited += initial.slice(prevIndex, index) + string;\n prevIndex = index;\n });\n edited += initial.slice(prevIndex);\n return edited;\n} // Given a string and an index, look backwards to find the string of whitespace\n// following the next previous line break.\n\n\nfunction getIndentation(str, index) {\n var indentStart = index;\n var indentEnd = index;\n\n while (indentStart) {\n var c = str.charCodeAt(indentStart - 1); // line break\n\n if (c === 10 || c === 13 || c === 0x2028 || c === 0x2029) {\n break;\n }\n\n indentStart--; // not white space\n\n if (c !== 9 && c !== 11 && c !== 12 && c !== 32 && c !== 160) {\n indentEnd = indentStart;\n }\n }\n\n return str.substring(indentStart, indentEnd);\n}","\"use strict\";\n\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar redux_1 = require(\"redux\");\n\nvar react_redux_1 = require(\"react-redux\");\n\nvar keycode = require(\"keycode\");\n\nvar elementPosition_1 = require(\"graphiql/dist/utility/elementPosition\");\n\nvar actions_1 = require(\"../../../state/docs/actions\");\n\nvar selectors_1 = require(\"../../../state/docs/selectors\");\n\nvar selectors_2 = require(\"../../../state/sessions/selectors\");\n\nvar reselect_1 = require(\"reselect\");\n\nvar styled_1 = require(\"../../../styled\");\n\nvar SideTab_1 = require(\"./SideTab\");\n\nvar SideTabs =\n/** @class */\nfunction (_super) {\n __extends(SideTabs, _super);\n\n function SideTabs(props) {\n var _this = _super.call(this, props) || this;\n\n _this.clientX = 0;\n _this.clientY = 0;\n\n _this.setRef = function (ref) {\n _this.ref = ref;\n };\n\n _this.setContentContainerRef = function (ref) {\n _this.refContentContainer = ref;\n };\n\n _this.handleTabClick = function (idx) {\n return function () {\n if (_this.props.docs.activeTabIdx === idx) {\n _this.props.setDocsVisible(_this.props.sessionId, false);\n\n return _this.props.setWidth();\n }\n\n if (_this.props.docs.activeTabIdx !== idx) {\n _this.props.setDocsVisible(_this.props.sessionId, false, _this.props.docs.activeTabIdx);\n\n _this.props.setDocsVisible(_this.props.sessionId, true, idx);\n\n return _this.props.setWidth();\n } else {\n _this.props.setDocsVisible(_this.props.sessionId, true, idx);\n\n return _this.props.setWidth();\n }\n };\n };\n\n _this.handleKeyDown = function (e) {\n // we don't want to interfere with inputs\n if (e.target instanceof HTMLInputElement || e.metaKey || e.shiftKey || e.altKey || e.ctrlKey) {\n return;\n }\n\n var keyPressed = keycode(e);\n\n switch (keyPressed) {\n case 'esc':\n _this.props.changeKeyMove(_this.props.sessionId, true);\n\n e.preventDefault();\n\n _this.props.setDocsVisible(_this.props.sessionId, false);\n\n break;\n }\n };\n\n _this.handleDocsResizeStart = function (downEvent) {\n downEvent.preventDefault();\n var hadWidth = _this.props.docs.docsWidth;\n var offset = downEvent.clientX - elementPosition_1.getLeft(downEvent.target);\n\n var onMouseMove = function onMouseMove(moveEvent) {\n if (moveEvent.buttons === 0) {\n return _onMouseUp();\n }\n\n var app = _this.ref;\n var cursorPos = moveEvent.clientX - elementPosition_1.getLeft(app) - offset;\n var newSize = app.clientWidth - cursorPos;\n var maxSize = window.innerWidth - 50;\n var docsSize = maxSize < newSize ? maxSize : newSize;\n\n if (docsSize < 100) {\n _this.props.setDocsVisible(_this.props.sessionId, false, _this.props.docs.activeTabIdx);\n } else {\n _this.props.setDocsVisible(_this.props.sessionId, true, _this.props.docs.activeTabIdx);\n\n _this.props.changeWidthDocs(_this.props.sessionId, docsSize);\n }\n };\n\n var _onMouseUp = function onMouseUp() {\n if (!_this.props.docs.docsOpen) {\n _this.props.changeWidthDocs(_this.props.sessionId, hadWidth);\n }\n\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', _onMouseUp);\n onMouseMove = null;\n _onMouseUp = null;\n };\n\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', _onMouseUp);\n };\n\n _this.handleMouseMove = function (e) {\n _this.clientX = e.clientX;\n _this.clientY = e.clientY;\n\n if (_this.props.docs.keyMove && _this.clientX !== e.clientX && _this.clientY !== e.clientY) {\n _this.props.changeKeyMove(_this.props.sessionId, false);\n }\n };\n\n window.d = _this;\n return _this;\n }\n\n SideTabs.prototype.componentDidUpdate = function (prevProps) {\n if (!prevProps.docs.activeTabIdx && this.props.docs.activeTabIdx) {\n this.props.setDocsVisible(this.props.sessionId, true, this.props.docs.activeTabIdx);\n }\n\n if (prevProps.activeTabIdx && !this.props.docs.activeTabIdx) {\n this.props.setDocsVisible(this.props.sessionId, false);\n }\n\n this.props.setWidth();\n\n if (this.props.docs.activeTabIdx !== prevProps.docs.activeTabIdx && this.refContentContainer) {\n this.refContentContainer.focus();\n }\n };\n\n SideTabs.prototype.componentDidMount = function () {\n if (!this.props.docs.activeTabIdx) {\n this.props.setDocsVisible(this.props.sessionId, false);\n }\n\n return this.props.setWidth();\n };\n\n SideTabs.prototype.render = function () {\n var _this = this;\n\n var _a = this.props.docs,\n docsOpen = _a.docsOpen,\n docsWidth = _a.docsWidth,\n activeTabIdx = _a.activeTabIdx;\n var docsStyle = {\n width: docsOpen ? docsWidth : 0\n };\n var activeTab = docsOpen && React.Children.toArray(this.props.children)[activeTabIdx];\n return React.createElement(Tabs, {\n open: docsOpen,\n style: docsStyle,\n ref: this.setRef\n }, React.createElement(TabsContainer, null, React.Children.toArray(this.props.children).map(function (child, index) {\n return React.cloneElement(child, __assign({}, child.props, {\n key: index,\n onClick: _this.handleTabClick(index),\n active: index === activeTabIdx\n }));\n })), React.createElement(TabContentResizer, {\n onMouseDown: this.handleDocsResizeStart\n }), React.createElement(TabsGradient, {\n index: activeTabIdx\n }), React.createElement(TabContentContainer, {\n onKeyDown: this.handleKeyDown,\n onMouseMove: this.handleMouseMove,\n tabIndex: activeTabIdx,\n color: activeTab ? activeTab.props.activeColor : undefined,\n ref: this.setContentContainerRef\n }, activeTab && React.cloneElement(activeTab.props.children, __assign({}, activeTab.props, {\n ref: this.props.setActiveContentRef,\n setWidth: this.props.setWidth\n }))));\n };\n\n return SideTabs;\n}(React.Component);\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch) {\n return redux_1.bindActionCreators({\n addStack: actions_1.addStack,\n toggleDocs: actions_1.toggleDocs,\n changeWidthDocs: actions_1.changeWidthDocs,\n changeKeyMove: actions_1.changeKeyMove,\n setDocsVisible: actions_1.setDocsVisible\n }, dispatch);\n};\n\nvar mapStateToProps = reselect_1.createStructuredSelector({\n docs: selectors_1.getSessionDocs,\n sessionId: selectors_2.getSelectedSessionIdFromRoot\n});\nvar ConnectedGraphDocs = react_redux_1.connect(mapStateToProps, mapDispatchToProps, null, {\n withRef: true\n})(SideTabs);\nConnectedGraphDocs.Tab = SideTab_1.default;\nexports.default = ConnectedGraphDocs;\nvar Tabs = styled_1.styled('div')(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n background: white;\\n outline: none;\\n box-shadow: 0 0 8px rgba(0, 0, 0, 0.15);\\n position: absolute;\\n right: 0px;\\n z-index: \", \";\\n height: 100%;\\n font-family: 'Open Sans', sans-serif;\\n -webkit-font-smoothing: antialiased;\\n .doc-type-description p {\\n padding: 16px;\\n font-size: 14px;\\n }\\n .field-name {\\n color: #1f61a0;\\n }\\n .type-name {\\n color: rgb(245, 160, 0);\\n }\\n .arg-name {\\n color: #1f61a9;\\n }\\n code {\\n font-family: 'Source Code Pro', monospace;\\n border-radius: 2px;\\n padding: 1px 2px;\\n background: rgba(0, 0, 0, 0.06);\\n }\\n\"], [\"\\n background: white;\\n outline: none;\\n box-shadow: 0 0 8px rgba(0, 0, 0, 0.15);\\n position: absolute;\\n right: 0px;\\n z-index: \", \";\\n height: 100%;\\n font-family: 'Open Sans', sans-serif;\\n -webkit-font-smoothing: antialiased;\\n .doc-type-description p {\\n padding: 16px;\\n font-size: 14px;\\n }\\n .field-name {\\n color: #1f61a0;\\n }\\n .type-name {\\n color: rgb(245, 160, 0);\\n }\\n .arg-name {\\n color: #1f61a9;\\n }\\n code {\\n font-family: 'Source Code Pro', monospace;\\n border-radius: 2px;\\n padding: 1px 2px;\\n background: rgba(0, 0, 0, 0.06);\\n }\\n\"])), function (p) {\n return p.open ? 2000 : 3;\n});\nvar TabContentContainer = styled_1.styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n background: white;\\n display: flex;\\n position: relative;\\n height: 100%;\\n letter-spacing: 0.3px;\\n box-shadow: -1px 1px 6px 0 rgba(0, 0, 0, 0.3);\\n outline: none;\\n &::before {\\n top: 0;\\n bottom: 0;\\n background: \", \";\\n position: absolute;\\n z-index: 3;\\n left: 0px;\\n content: '';\\n width: 6px;\\n }\\n\"], [\"\\n background: white;\\n display: flex;\\n position: relative;\\n height: 100%;\\n letter-spacing: 0.3px;\\n box-shadow: -1px 1px 6px 0 rgba(0, 0, 0, 0.3);\\n outline: none;\\n &::before {\\n top: 0;\\n bottom: 0;\\n background: \", \";\\n position: absolute;\\n z-index: 3;\\n left: 0px;\\n content: '';\\n width: 6px;\\n }\\n\"])), function (props) {\n return props.color ? props.theme.colours[props.color] : '#3D5866';\n});\nvar TabContentResizer = styled_1.styled.div(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n cursor: col-resize;\\n outline: none !important;\\n height: 100%;\\n left: -5px;\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n width: 10px;\\n z-index: 10;\\n\"], [\"\\n cursor: col-resize;\\n outline: none !important;\\n height: 100%;\\n left: -5px;\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n width: 10px;\\n z-index: 10;\\n\"])));\nvar TabsContainer = styled_1.styled.div(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n position: absolute;\\n outline: none !important;\\n z-index: 2;\\n height: 0;\\n top: 129px;\\n\"], [\"\\n position: absolute;\\n outline: none !important;\\n z-index: 2;\\n height: 0;\\n top: 129px;\\n\"])));\nvar TabsGradient = styled_1.styled.div(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n width: 20px;\\n z-index: 1;\\n pointer-events: none;\\n content: '';\\n background: \", \";\\n\"], [\"\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n width: 20px;\\n z-index: 1;\\n pointer-events: none;\\n content: '';\\n background: \", \";\\n\"])), function (p) {\n return p.index === 0 ? \"linear-gradient(\\n\\t\\tto right,\\n\\t\\trgba(255, 255, 255, 1) 30%,\\n\\t\\trgba(255, 255, 255, 0))\" : \"transparent\";\n});\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;","\"use strict\";\n\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar redux_1 = require(\"redux\");\n\nvar react_redux_1 = require(\"react-redux\");\n\nvar actions_1 = require(\"../../../state/docs/actions\");\n\nvar Spinner_1 = require(\"../../Spinner\");\n\nvar constants_1 = require(\"../../../constants\");\n\nvar selectors_1 = require(\"../../../state/sessions/selectors\");\n\nvar selectors_2 = require(\"../../../state/docs/selectors\");\n\nvar reselect_1 = require(\"reselect\");\n\nvar ErrorContainer_1 = require(\"../DocExplorer/ErrorContainer\");\n\nvar SDLStyles_1 = require(\"./SDLTypes/SDLStyles\");\n\nvar SDLHeader_1 = require(\"./SDLHeader\");\n\nvar SDLEditor_1 = require(\"./SDLEditor\");\n\nvar reducers_1 = require(\"../../../state/workspace/reducers\");\n\nvar SDLView =\n/** @class */\nfunction (_super) {\n __extends(SDLView, _super);\n\n function SDLView(props) {\n var _this = _super.call(this, props) || this;\n\n _this.setRef = function (ref) {\n _this.ref = ref;\n };\n\n window.d = _this;\n return _this;\n }\n\n SDLView.prototype.componentWillReceiveProps = function (nextProps) {\n // If user use default column size % columnWidth\n // Make the column follow the clicks\n if (!this.props.schema && nextProps.schema) {\n this.setWidth(nextProps);\n }\n };\n\n SDLView.prototype.setWidth = function (props) {\n if (props === void 0) {\n props = this.props;\n }\n\n this.props.setWidth(props);\n };\n\n SDLView.prototype.getWidth = function (props) {\n if (props === void 0) {\n props = this.props;\n }\n\n var rootWidth = props.docs.docsWidth || constants_1.columnWidth;\n return rootWidth;\n };\n\n SDLView.prototype.componentDidMount = function () {\n this.setWidth();\n };\n\n SDLView.prototype.render = function () {\n var _a = this.props,\n schema = _a.schema,\n settings = _a.settings,\n isPollingSchema = _a.isPollingSchema;\n var emptySchema;\n\n if (schema === undefined) {\n // Schema is undefined when it is being loaded via introspection.\n emptySchema = React.createElement(Spinner_1.default, null);\n } else if (schema === null) {\n // Schema is null when it explicitly does not exist, typically due to\n // an error during introspection.\n emptySchema = React.createElement(ErrorContainer_1.ErrorContainer, null, 'No Schema Available');\n } // let types\n // if (schema instanceof GraphQLSchema) {\n // \ttypes = sdlArray(schema)\n // }\n\n\n return React.createElement(SDLStyles_1.SchemaExplorerContainer, {\n ref: this.setRef\n }, emptySchema ? React.createElement(SDLStyles_1.SDLColumn, null, emptySchema) : React.createElement(SDLStyles_1.SDLColumn, {\n width: this.props.docs.docsWidth || constants_1.columnWidth - 1\n }, React.createElement(SDLHeader_1.default, {\n schema: schema\n }), React.createElement(SDLEditor_1.default, {\n schema: schema,\n settings: settings,\n isPollingSchema: isPollingSchema,\n width: this.props.docs.docsWidth || constants_1.columnWidth\n })));\n };\n\n return SDLView;\n}(React.Component);\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch) {\n return redux_1.bindActionCreators({\n toggleDocs: actions_1.toggleDocs,\n changeWidthDocs: actions_1.changeWidthDocs,\n setDocsVisible: actions_1.setDocsVisible\n }, dispatch);\n};\n\nvar mapStateToProps = reselect_1.createStructuredSelector({\n settings: reducers_1.getSettings,\n docs: selectors_2.getSessionDocs,\n sessionId: selectors_1.getSelectedSessionIdFromRoot,\n isPollingSchema: selectors_1.getIsPollingSchema\n});\nexports.default = react_redux_1.connect(mapStateToProps, mapDispatchToProps, null, {\n withRef: true\n})(SDLView);","\"use strict\";\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar styled_1 = require(\"../../../../styled\");\n\nvar constants_1 = require(\"../../../../constants\");\n\nexports.SchemaExplorerContainer = styled_1.styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n position: relative;\\n height: 100%;\\n width: 100%;\\n display: flex;\\n flex-direction: column;\\n flex-wrap: wrap;\\n align-items: stretch;\\n padding: 0px 8px 8px 8px;\\n background: \", \";\\n font-family: \", \";\\n font-size: \", \";\\n outline: none !important;\\n\"], [\"\\n position: relative;\\n height: 100%;\\n width: 100%;\\n display: flex;\\n flex-direction: column;\\n flex-wrap: wrap;\\n align-items: stretch;\\n padding: 0px 8px 8px 8px;\\n background: \", \";\\n font-family: \", \";\\n font-size: \", \";\\n outline: none !important;\\n\"])), function (p) {\n return p.theme.mode === 'dark' ? p.theme.editorColours.editorBackground : 'white';\n}, function (p) {\n return p.theme.settings['editor.fontFamily'];\n}, function (p) {\n return p.theme.settings['editor.fontSize'] + \"px\";\n});\n\nvar SDLColumn = function SDLColumn(_a) {\n var children = _a.children,\n _b = _a.width,\n width = _b === void 0 ? constants_1.columnWidth : _b;\n return React.createElement(Column, {\n style: {\n width: width\n }\n }, children);\n};\n\nexports.SDLColumn = SDLColumn;\nvar Column = styled_1.styled('div')(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n display: flex;\\n flex: 1 0 auto;\\n flex-flow: column;\\n padding-bottom: 20px;\\n border-right: 1px solid \", \";\\n overflow: hidden;\\n\"], [\"\\n display: flex;\\n flex: 1 0 auto;\\n flex-flow: column;\\n padding-bottom: 20px;\\n border-right: 1px solid \", \";\\n overflow: hidden;\\n\"])), function (p) {\n return p.theme.colours.black10;\n});\nvar templateObject_1, templateObject_2;","\"use strict\";\n\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar styled_1 = require(\"../../../styled\");\n\nvar TopBar_1 = require(\"../TopBar/TopBar\");\n\nvar createSDL_1 = require(\"../util/createSDL\");\n\nvar SDLHeader =\n/** @class */\nfunction (_super) {\n __extends(SDLHeader, _super);\n\n function SDLHeader(props) {\n var _this = _super.call(this, props) || this;\n\n _this.handleClick = function (e) {\n if (_this.node.contains(e.target)) {\n return;\n }\n\n return _this.setState({\n open: false\n });\n };\n\n _this.showOptions = function () {\n _this.setState({\n open: !_this.state.open\n });\n };\n\n _this.printSDL = function () {\n return createSDL_1.downloadSchema(_this.props.schema, 'sdl');\n };\n\n _this.printIntrospection = function () {\n return createSDL_1.downloadSchema(_this.props.schema, 'json');\n };\n\n _this.setRef = function (ref) {\n _this.node = ref;\n };\n\n _this.state = {\n open: false\n };\n return _this;\n }\n\n SDLHeader.prototype.componentWillMount = function () {\n document.addEventListener('mousedown', this.handleClick, false);\n };\n\n SDLHeader.prototype.componentWillUnmount = function () {\n document.removeEventListener('mousedown', this.handleClick, false);\n };\n\n SDLHeader.prototype.render = function () {\n var open = this.state.open;\n return React.createElement(SchemaHeader, {\n ref: this.setRef\n }, React.createElement(Title, null, \"Schema\"), React.createElement(Box, null, React.createElement(Download, {\n onClick: this.showOptions,\n open: open\n }, \"Download\"), open && React.createElement(React.Fragment, null, React.createElement(Option, {\n onClick: this.printIntrospection\n }, \"JSON\"), React.createElement(Option, {\n onClick: this.printSDL\n }, \"SDL\"))));\n };\n\n return SDLHeader;\n}(React.Component);\n\nexports.default = SDLHeader;\nvar SchemaHeader = styled_1.styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n height: 64px;\\n width: 100%;\\n margin-right: 108px;\\n align-items: center;\\n justify-content: flex-start;\\n outline: none;\\n user-select: none;\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n height: 64px;\\n width: 100%;\\n margin-right: 108px;\\n align-items: center;\\n justify-content: flex-start;\\n outline: none;\\n user-select: none;\\n\"])));\nvar Box = styled_1.styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n position: absolute;\\n top: 16px;\\n right: 2em;\\n width: 108px;\\n display: flex;\\n flex-wrap: wrap;\\n flex-direction: column;\\n\"], [\"\\n position: absolute;\\n top: 16px;\\n right: 2em;\\n width: 108px;\\n display: flex;\\n flex-wrap: wrap;\\n flex-direction: column;\\n\"])));\nvar Title = styled_1.styled.div(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n color: \", \";\\n cursor: default;\\n font-size: 14px;\\n font-weight: 600;\\n text-transform: uppercase !important;\\n font-family: 'Open Sans', sans-serif !important;\\n letter-spacing: 1px;\\n user-select: none !important;\\n padding: 16px;\\n padding-right: 5px;\\n\"], [\"\\n color: \", \";\\n cursor: default;\\n font-size: 14px;\\n font-weight: 600;\\n text-transform: uppercase !important;\\n font-family: 'Open Sans', sans-serif !important;\\n letter-spacing: 1px;\\n user-select: none !important;\\n padding: 16px;\\n padding-right: 5px;\\n\"])), function (p) {\n return styleHelper(p).title;\n});\nvar Download = styled_1.styled(TopBar_1.Button)(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n flex: 1;\\n color: \", \";\\n background: \", \";\\n height: 32px;\\n border-radius: 2px;\\n &:hover {\\n color: \", \";\\n background-color: \", \";\\n }\\n\"], [\"\\n flex: 1;\\n color: \", \";\\n background: \", \";\\n height: 32px;\\n border-radius: 2px;\\n &:hover {\\n color: \", \";\\n background-color: \", \";\\n }\\n\"])), function (p) {\n return styleHelper(p).download['text'];\n}, function (p) {\n return styleHelper(p).download['button'];\n}, function (p) {\n return styleHelper(p).buttonTextHover;\n}, function (p) {\n return styleHelper(p).buttonHover;\n});\nvar Option = styled_1.styled(Download)(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n text-align: left;\\n width: 100%;\\n margin-left: 0px;\\n border-radius: 0px;\\n z-index: 2000;\\n background: \", \";\\n\"], [\"\\n text-align: left;\\n width: 100%;\\n margin-left: 0px;\\n border-radius: 0px;\\n z-index: 2000;\\n background: \", \";\\n\"])), function (p) {\n return styleHelper(p).button;\n});\n\nvar styleHelper = function styleHelper(p) {\n if (p.theme.mode === 'dark') {\n return {\n title: 'white',\n subtitle: '#8B959C',\n download: {\n text: p.open ? '#8B959C' : 'white',\n button: p.theme.colours.darkBlue\n },\n buttonText: 'white',\n button: p.theme.colours.darkBlue,\n buttonHover: '#2B3C48',\n buttonTextHover: 'white'\n };\n }\n\n return {\n title: p.theme.colours.darkBlue,\n subtitle: 'rgba(61, 88, 102, 0.5)',\n download: {\n text: p.open ? 'rgba(61, 88, 102, 0.5)' : p.theme.colours.darkBlue,\n button: '#f6f6f6'\n },\n buttonText: p.theme.colours.darkBlue,\n button: '#f6f6f6',\n buttonHover: '#EDEDED',\n buttonTextHover: p.theme.colours.darkBlue\n };\n};\n\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;","\"use strict\";\n\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar graphql_1 = require(\"graphql\");\n\nvar EditorWrapper_1 = require(\"../EditorWrapper\");\n\nvar styled_1 = require(\"../../../styled\");\n\nvar createSDL_1 = require(\"../util/createSDL\");\n\nvar SDLEditor =\n/** @class */\nfunction (_super) {\n __extends(SDLEditor, _super);\n\n function SDLEditor(props) {\n var _this = _super.call(this, props) || this;\n\n _this.handleScroll = function (e) {\n if (e.doc.scrollTop > 0) {\n return _this.setState({\n overflowY: true\n });\n }\n\n return _this.setState({\n overflowY: false\n });\n };\n\n _this.setRef = function (ref) {\n _this.node = ref;\n };\n\n _this.state = {\n overflowY: false\n }; // Keep a cached version of the value, this cache will be updated when the\n // editor is updated, which can later be used to protect the editor from\n // unnecessary updates during the update lifecycle.\n\n _this.cachedValue = props.value || '';\n\n if (_this.props.getRef) {\n _this.props.getRef(_this);\n }\n\n return _this;\n }\n\n SDLEditor.prototype.componentDidMount = function () {\n // Lazily require to ensure requiring GraphiQL outside of a Browser context\n // does not produce an error.\n var CodeMirror = require('codemirror');\n\n require('codemirror/addon/fold/brace-fold');\n\n require('codemirror/addon/comment/comment');\n\n require('codemirror-graphql/mode');\n\n var gutters = [];\n gutters.push('CodeMirror-linenumbers');\n this.editor = CodeMirror(this.node, {\n autofocus: false,\n value: createSDL_1.getSDL(this.props.schema, this.props.settings['schema.disableComments']) || '',\n lineNumbers: false,\n showCursorWhenSelecting: false,\n tabSize: 1,\n mode: 'graphql',\n theme: 'graphiql',\n // lineWrapping: true,\n keyMap: 'sublime',\n readOnly: true,\n gutters: gutters\n });\n global.editor = this.editor;\n this.editor.on('scroll', this.handleScroll);\n this.editor.refresh();\n };\n\n SDLEditor.prototype.componentDidUpdate = function (prevProps) {\n var CodeMirror = require('codemirror');\n\n var currentSchemaStr = this.props.schema && graphql_1.printSchema(this.props.schema);\n var prevSchemaStr = prevProps.schema && graphql_1.printSchema(prevProps.schema);\n\n if (currentSchemaStr !== prevSchemaStr) {\n var initialScroll = this.editor.getScrollInfo();\n this.cachedValue = createSDL_1.getSDL(this.props.schema, this.props.settings['schema.disableComments']) || '';\n this.editor.setValue(createSDL_1.getSDL(this.props.schema, this.props.settings['schema.disableComments']));\n\n if (this.props.isPollingSchema) {\n this.editor.scrollTo(initialScroll.left, initialScroll.top);\n }\n\n CodeMirror.signal(this.editor, 'change', this.editor);\n }\n\n if (this.props.width !== prevProps.width) {\n this.editor.refresh();\n }\n\n if (this.props.settings['schema.disableComments'] !== prevProps.settings['schema.disableComments']) {\n this.editor.refresh();\n }\n };\n\n SDLEditor.prototype.componentWillReceiveProps = function (nextProps) {\n if (this.props.sessionId !== nextProps.sessionId) {\n this.editor.scrollTo(0, 0);\n }\n };\n\n SDLEditor.prototype.componentWillUnmount = function () {\n this.editor.off('scroll');\n this.editor = null;\n };\n\n SDLEditor.prototype.render = function () {\n var overflowY = this.state.overflowY;\n return React.createElement(EditorWrapper_1.default, null, overflowY && React.createElement(OverflowShadow, null), React.createElement(Editor, {\n ref: this.setRef\n }));\n };\n\n SDLEditor.prototype.getCodeMirror = function () {\n return this.editor;\n };\n\n SDLEditor.prototype.getClientHeight = function () {\n return this.node && this.node.clientHeight;\n };\n\n return SDLEditor;\n}(React.PureComponent);\n\nexports.default = SDLEditor;\nvar Editor = styled_1.styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n flex: 1;\\n height: auto;\\n overflow-x: hidden;\\n overflow-y: scroll;\\n .CodeMirror {\\n background: \", \";\\n padding-left: 20px;\\n }\\n\"], [\"\\n flex: 1;\\n height: auto;\\n overflow-x: hidden;\\n overflow-y: scroll;\\n .CodeMirror {\\n background: \", \";\\n padding-left: 20px;\\n }\\n\"])), function (p) {\n return p.theme.mode === 'dark' ? p.theme.editorColours.editorBackground : 'white';\n});\nvar OverflowShadow = styled_1.styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n position: fixed;\\n top: 0;\\n left: 0;\\n right: 0;\\n height: 1px;\\n box-shadow: 0px 1px 3px rgba(17, 17, 17, 0.1);\\n z-index: 1000;\\n\"], [\"\\n position: fixed;\\n top: 0;\\n left: 0;\\n right: 0;\\n height: 1px;\\n box-shadow: 0px 1px 3px rgba(17, 17, 17, 0.1);\\n z-index: 1000;\\n\"])));\nvar templateObject_1, templateObject_2;","\"use strict\";\n\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar redux_1 = require(\"redux\");\n\nvar react_redux_1 = require(\"react-redux\");\n\nvar keycode = require(\"keycode\");\n\nvar FieldDoc_1 = require(\"./FieldDoc\");\n\nvar ColumnDoc_1 = require(\"./ColumnDoc\");\n\nvar actions_1 = require(\"../../../state/docs/actions\");\n\nvar Spinner_1 = require(\"../../Spinner\");\n\nvar constants_1 = require(\"../../../constants\");\n\nvar RootColumn_1 = require(\"./RootColumn\");\n\nvar stack_1 = require(\"../util/stack\");\n\nvar selectors_1 = require(\"../../../state/docs/selectors\");\n\nvar selectors_2 = require(\"../../../state/sessions/selectors\");\n\nvar reselect_1 = require(\"reselect\");\n\nvar ErrorContainer_1 = require(\"./ErrorContainer\");\n\nvar styled_1 = require(\"../../../styled\");\n\nvar GraphDocs =\n/** @class */\nfunction (_super) {\n __extends(GraphDocs, _super); // private refDocExplorer: any;\n\n\n function GraphDocs(props) {\n var _this = _super.call(this, props) || this;\n\n _this.setRef = function (ref) {\n _this.ref = ref;\n };\n\n _this.showDocFromType = function (type) {\n _this.props.addStack(_this.props.sessionId, type, 0, 0);\n };\n\n _this.handleSearch = function (value) {\n _this.setState({\n searchValue: value\n });\n };\n\n _this.handleKeyDown = function (e) {\n // we don't want to interfere with inputs\n if (e.target instanceof HTMLInputElement || e.metaKey || e.shiftKey || e.altKey || e.ctrlKey) {\n return;\n }\n\n e.preventDefault();\n\n _this.props.changeKeyMove(_this.props.sessionId, true);\n\n var lastNavStack = _this.props.docs.navStack.length > 0 && _this.props.docs.navStack[_this.props.docs.navStack.length - 1];\n var beforeLastNavStack = _this.props.docs.navStack.length > 0 && _this.props.docs.navStack[_this.props.docs.navStack.length - 2];\n var keyPressed = keycode(e);\n\n switch (keyPressed) {\n case 'esc':\n _this.props.setDocsVisible(_this.props.sessionId, false);\n\n break;\n\n case 'left':\n if (beforeLastNavStack) {\n _this.props.addStack(_this.props.sessionId, beforeLastNavStack.field, beforeLastNavStack.x, beforeLastNavStack.y);\n }\n\n break;\n\n case 'right':\n if (lastNavStack) {\n var obj = stack_1.serialize(_this.props.schema, lastNavStack.field);\n var firstElement = stack_1.getElement(obj, 0);\n\n if (firstElement) {\n _this.props.addStack(_this.props.sessionId, firstElement, lastNavStack.x + 1, 0);\n }\n } else {\n var obj = stack_1.serializeRoot(_this.props.schema);\n var element = stack_1.getElementRoot(obj, 0);\n\n if (element) {\n _this.props.addStack(_this.props.sessionId, element, 0, 0);\n }\n }\n\n break;\n\n case 'up':\n case 'down':\n if (beforeLastNavStack) {\n var obj = stack_1.serialize(_this.props.schema, beforeLastNavStack.field);\n var element = stack_1.getElement(obj, keyPressed === 'up' ? lastNavStack.y - 1 : lastNavStack.y + 1);\n\n if (element) {\n _this.props.addStack(_this.props.sessionId, element, lastNavStack.x, keyPressed === 'up' ? lastNavStack.y - 1 : lastNavStack.y + 1);\n }\n } else {\n var obj = stack_1.serializeRoot(_this.props.schema);\n var y = lastNavStack ? lastNavStack.y : 0;\n var element = stack_1.getElementRoot(obj, keyPressed === 'up' ? y - 1 : y + 1);\n\n if (element) {\n _this.props.addStack(_this.props.sessionId, element, 0, keyPressed === 'up' ? y - 1 : y + 1);\n }\n }\n\n break;\n }\n };\n\n _this.state = {\n searchValue: '',\n widthMap: {}\n };\n window.d = _this;\n return _this;\n }\n\n GraphDocs.prototype.componentWillReceiveProps = function (nextProps) {\n // If user use default column size % columnWidth\n // Make the column follow the clicks\n if (this.props.docs.navStack.length !== nextProps.docs.navStack.length || this.props.docs.navStack.slice(-1)[0] !== nextProps.docs.navStack.slice(-1)[0] || !this.props.schema && nextProps.schema) {\n this.setWidth(nextProps);\n }\n };\n\n GraphDocs.prototype.setWidth = function (props) {\n if (props === void 0) {\n props = this.props;\n }\n\n this.props.setWidth(props);\n };\n\n GraphDocs.prototype.getWidth = function (props) {\n var _this = this;\n\n if (props === void 0) {\n props = this.props;\n }\n\n var rootWidth = this.state.widthMap.root || constants_1.columnWidth;\n var stackWidths = props.docs.navStack.map(function (stack) {\n return _this.state.widthMap[stack.field.path] || constants_1.columnWidth;\n });\n return [rootWidth].concat(stackWidths).reduce(function (acc, curr) {\n return acc + curr;\n }, 0);\n };\n\n GraphDocs.prototype.componentDidMount = function () {\n this.setWidth();\n };\n\n GraphDocs.prototype.render = function () {\n var _this = this;\n\n var navStack = this.props.docs.navStack;\n var schema = this.props.schema;\n var emptySchema;\n\n if (schema === undefined) {\n // Schema is undefined when it is being loaded via introspection.\n emptySchema = React.createElement(Spinner_1.default, null);\n } else if (schema === null) {\n // Schema is null when it explicitly does not exist, typically due to\n // an error during introspection.\n emptySchema = React.createElement(ErrorContainer_1.ErrorContainer, null, 'No Schema Available');\n }\n\n return React.createElement(DocsExplorerContainer, {\n onKeyDown: this.handleKeyDown,\n tabIndex: 0,\n ref: this.setRef\n }, emptySchema && React.createElement(ColumnDoc_1.default, null, emptySchema), !emptySchema && schema && React.createElement(RootColumn_1.default, {\n schema: schema,\n width: this.state.widthMap.root || constants_1.columnWidth - 1,\n searchValue: this.state.searchValue,\n handleSearch: this.handleSearch,\n sessionId: this.props.sessionId\n }), navStack.map(function (stack, index) {\n return React.createElement(ColumnDoc_1.default, {\n key: index,\n width: _this.state.widthMap[stack.field.path] || constants_1.columnWidth\n }, React.createElement(FieldDoc_1.default, {\n schema: schema,\n field: stack.field,\n level: index + 1,\n sessionId: _this.props.sessionId\n }));\n }));\n };\n\n return GraphDocs;\n}(React.Component);\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch) {\n return redux_1.bindActionCreators({\n addStack: actions_1.addStack,\n toggleDocs: actions_1.toggleDocs,\n changeWidthDocs: actions_1.changeWidthDocs,\n changeKeyMove: actions_1.changeKeyMove,\n setDocsVisible: actions_1.setDocsVisible\n }, dispatch);\n};\n\nvar mapStateToProps = reselect_1.createStructuredSelector({\n docs: selectors_1.getSessionDocs,\n sessionId: selectors_2.getSelectedSessionIdFromRoot\n});\nexports.default = react_redux_1.connect(mapStateToProps, mapDispatchToProps, null, {\n withRef: true\n})(GraphDocs);\nvar DocsExplorerContainer = styled_1.styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n display: flex;\\n position: relative;\\n height: 100%;\\n width: 100%;\\n overflow-x: auto;\\n overflow-y: hidden;\\n outline: none !important;\\n\"], [\"\\n display: flex;\\n position: relative;\\n height: 100%;\\n width: 100%;\\n overflow-x: auto;\\n overflow-y: hidden;\\n outline: none !important;\\n\"])));\nvar templateObject_1;","\"use strict\";\n\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar Argument_1 = require(\"./Argument\");\n\nvar graphql_1 = require(\"graphql\");\n\nvar MarkdownContent_1 = require(\"graphiql/dist/components/DocExplorer/MarkdownContent\");\n\nvar TypeLink_1 = require(\"./TypeLink\");\n\nvar DocTypeSchema_1 = require(\"./DocTypeSchema\");\n\nvar ScalarType_1 = require(\"./DocsTypes/ScalarType\");\n\nvar EnumTypeSchema_1 = require(\"./DocsTypes/EnumTypeSchema\");\n\nvar UnionTypeSchema_1 = require(\"./DocsTypes/UnionTypeSchema\");\n\nvar stack_1 = require(\"../util/stack\");\n\nvar DocsStyles_1 = require(\"./DocsStyles\");\n\nvar styled_1 = require(\"../../../styled\");\n\nvar FieldDoc =\n/** @class */\nfunction (_super) {\n __extends(FieldDoc, _super);\n\n function FieldDoc() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.state = {\n showDeprecated: false\n };\n\n _this.setRef = function (ref) {\n _this.ref = ref;\n };\n\n return _this;\n }\n\n FieldDoc.prototype.componentDidMount = function () {\n this.scrollToRight();\n };\n\n FieldDoc.prototype.shouldComponentUpdate = function (nextProps) {\n if (this.props.field !== nextProps.field) {\n this.scrollToRight();\n return true;\n }\n\n return false;\n };\n\n FieldDoc.prototype.scrollToRight = function () {\n var explorer = this.ref;\n var explorerDoc = explorer.parentNode && explorer.parentNode.parentNode; // TODO see browser compatibility scrollWidth && scrollLeft\n\n scrollToRight(explorerDoc, explorerDoc.scrollWidth, 50);\n };\n\n FieldDoc.prototype.render = function () {\n var _this = this;\n\n var _a = this.props,\n schema = _a.schema,\n field = _a.field,\n level = _a.level;\n var type = field.type || field;\n var obj = stack_1.serialize(schema, field);\n type = stack_1.getDeeperType(type);\n var argsOffset = obj.fields.length + obj.interfaces.length;\n var implementationsOffset = obj.fields.length + obj.interfaces.length + obj.args.length;\n var typeInstance;\n\n if (type instanceof graphql_1.GraphQLInterfaceType) {\n typeInstance = 'interface';\n } else if (type instanceof graphql_1.GraphQLUnionType) {\n typeInstance = 'union';\n } else if (type instanceof graphql_1.GraphQLEnumType) {\n typeInstance = 'enum';\n } else {\n typeInstance = 'type';\n }\n\n return React.createElement(\"div\", {\n ref: this.setRef\n }, React.createElement(DocsHeader, null, React.createElement(TypeLink_1.default, {\n type: field,\n x: level,\n y: -1,\n clickable: false,\n lastActive: false\n })), React.createElement(DocsDescription, {\n className: \"doc-type-description\",\n markdown: field.description || ''\n }), React.createElement(DocsStyles_1.CategoryTitle, null, typeInstance + \" details\"), type.description && type.description.length > 0 && React.createElement(DocsDescription, {\n markdown: type.description || ''\n }), type instanceof graphql_1.GraphQLScalarType && React.createElement(ScalarType_1.default, {\n type: type\n }), type instanceof graphql_1.GraphQLEnumType && React.createElement(EnumTypeSchema_1.default, {\n type: type\n }), type instanceof graphql_1.GraphQLUnionType && React.createElement(UnionTypeSchema_1.default, {\n type: type,\n schema: schema,\n level: level,\n sessionId: this.props.sessionId\n }), obj.fields && obj.fields.length > 0 && React.createElement(DocTypeSchema_1.default, {\n type: type,\n fields: obj.fields,\n interfaces: obj.interfaces,\n level: level,\n sessionId: this.props.sessionId\n }), obj.args && obj.args.length > 0 && React.createElement(\"div\", null, React.createElement(DocsStyles_1.CategoryTitle, null, \"arguments\"), obj.args.map(function (arg, index) {\n return React.createElement(\"div\", {\n key: arg.name\n }, React.createElement(\"div\", null, React.createElement(Argument_1.default, {\n arg: arg,\n x: level,\n y: index + argsOffset,\n sessionId: _this.props.sessionId\n })));\n })), obj.implementations && obj.implementations.length > 0 && React.createElement(\"div\", null, React.createElement(DocsStyles_1.CategoryTitle, null, \"implementations\"), obj.implementations.map(function (data, index) {\n return React.createElement(TypeLink_1.default, {\n key: data.name,\n type: data,\n x: level,\n y: index + implementationsOffset,\n collapsable: true,\n lastActive: false\n });\n })));\n };\n\n return FieldDoc;\n}(React.Component);\n\nexports.default = FieldDoc;\n\nvar scrollToRight = function scrollToRight(element, to, duration) {\n if (duration <= 0) {\n return;\n }\n\n var difference = to - element.scrollLeft;\n var perTick = difference / duration * 10;\n setTimeout(function () {\n element.scrollLeft = element.scrollLeft + perTick;\n\n if (element.scrollLeft === to) {\n return;\n }\n\n scrollToRight(element, to, duration - 10);\n }, 10);\n};\n\nvar DocsHeader = styled_1.styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n background: \", \";\\n padding-top: 20px;\\n padding-bottom: 10px;\\n\\n .doc-category-item {\\n font-size: 14px;\\n font-weight: 600;\\n word-wrap: break-word;\\n }\\n .doc-category-item .field-name {\\n color: #f25c54;\\n }\\n div {\\n background: transparent;\\n pointer-events: none;\\n }\\n\"], [\"\\n background: \", \";\\n padding-top: 20px;\\n padding-bottom: 10px;\\n\\n .doc-category-item {\\n font-size: 14px;\\n font-weight: 600;\\n word-wrap: break-word;\\n }\\n .doc-category-item .field-name {\\n color: #f25c54;\\n }\\n div {\\n background: transparent;\\n pointer-events: none;\\n }\\n\"])), function (p) {\n return p.theme.colours.black02;\n});\nvar DocsDescription = styled_1.styled(MarkdownContent_1.default)(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n font-size: 14px;\\n padding: 0 16px 20px 16px;\\n color: rgba(0, 0, 0, 0.5);\\n\"], [\"\\n font-size: 14px;\\n padding: 0 16px 20px 16px;\\n color: rgba(0, 0, 0, 0.5);\\n\"])));\nvar templateObject_1, templateObject_2;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar graphql_1 = require(\"graphql\");\n\nvar TypeLink_1 = require(\"./TypeLink\");\n\nfunction Argument(_a) {\n var arg = _a.arg,\n showDefaultValue = _a.showDefaultValue,\n x = _a.x,\n y = _a.y;\n var ast = graphql_1.astFromValue(arg.defaultValue, arg.type);\n return React.createElement(\"span\", null, React.createElement(TypeLink_1.default, {\n type: arg,\n x: x,\n y: y,\n lastActive: false,\n afterNode: arg.defaultValue !== undefined && showDefaultValue !== false && React.createElement(\"span\", null, ' = ', React.createElement(\"span\", {\n className: \"arg-default-value\"\n }, ast && graphql_1.print(ast)))\n }));\n}\n\nexports.default = Argument;","\"use strict\";\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar graphql_1 = require(\"graphql\");\n\nvar styled_1 = require(\"../../../styled\");\n\nfunction Argument(_a) {\n var arg = _a.arg,\n showDefaultValue = _a.showDefaultValue;\n var ast = graphql_1.astFromValue(arg.defaultValue, arg.type);\n return React.createElement(ArgumentLine, null, React.createElement(\"span\", {\n className: \"arg-name\"\n }, arg.name), ': ', React.createElement(\"span\", {\n className: \"type-name\"\n }, renderType(arg.type)), arg.defaultValue !== undefined && showDefaultValue !== false && React.createElement(\"span\", null, ' = ', React.createElement(\"span\", {\n className: \"arg-default-value\"\n }, ast && graphql_1.print(ast))));\n}\n\nexports.default = Argument;\n\nfunction renderType(type) {\n if (type instanceof graphql_1.GraphQLNonNull) {\n return React.createElement(\"span\", null, renderType(type.ofType), '!');\n }\n\n if (type instanceof graphql_1.GraphQLList) {\n return React.createElement(\"span\", null, '[', renderType(type.ofType), ']');\n }\n\n return React.createElement(\"span\", null, type.name);\n}\n\nvar ArgumentLine = styled_1.styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n margin-left: 16px;\\n\"], [\"\\n margin-left: 16px;\\n\"])));\nvar templateObject_1;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _markdownIt = require('markdown-it');\n\nvar _markdownIt2 = _interopRequireDefault(_markdownIt);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n/**\n * Copyright (c) Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\nvar md = new _markdownIt2.default();\n\nvar MarkdownContent = function (_React$Component) {\n _inherits(MarkdownContent, _React$Component);\n\n function MarkdownContent() {\n _classCallCheck(this, MarkdownContent);\n\n return _possibleConstructorReturn(this, (MarkdownContent.__proto__ || Object.getPrototypeOf(MarkdownContent)).apply(this, arguments));\n }\n\n _createClass(MarkdownContent, [{\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate(nextProps) {\n return this.props.markdown !== nextProps.markdown;\n }\n }, {\n key: 'render',\n value: function render() {\n var markdown = this.props.markdown;\n\n if (!markdown) {\n return _react2.default.createElement('div', null);\n }\n\n return _react2.default.createElement('div', {\n className: this.props.className,\n dangerouslySetInnerHTML: {\n __html: md.render(markdown)\n }\n });\n }\n }]);\n\n return MarkdownContent;\n}(_react2.default.Component);\n\nMarkdownContent.propTypes = {\n markdown: _propTypes2.default.string,\n className: _propTypes2.default.string\n};\nexports.default = MarkdownContent;","\"use strict\";\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar graphql_1 = require(\"graphql\");\n\nvar React = require(\"react\");\n\nvar TypeLink_1 = require(\"./TypeLink\");\n\nvar styled_1 = require(\"../../../styled\");\n\nexports.default = function (_a) {\n var type = _a.type,\n fields = _a.fields,\n interfaces = _a.interfaces,\n level = _a.level;\n var nonDeprecatedFields = fields.filter(function (data) {\n return !data.isDeprecated;\n });\n var deprecatedFields = fields.filter(function (data) {\n return data.isDeprecated;\n });\n var typeInstance = type instanceof graphql_1.GraphQLInterfaceType ? 'interface ' : 'type';\n return React.createElement(DocTypeSchema, null, React.createElement(DocTypeLine, null, React.createElement(\"span\", {\n className: \"field-name\"\n }, typeInstance), ' ', React.createElement(DocsTypeName, null, type.name), ' ', interfaces.length === 0 && React.createElement(Brace, null, \"{\")), interfaces.map(function (data, index) {\n return React.createElement(DocsTypeInferface, {\n key: data.name,\n type: data,\n x: level,\n y: index,\n collapsable: true,\n beforeNode: React.createElement(\"span\", {\n className: \"field-name\"\n }, \"implements\"),\n afterNode: index === interfaces.length - 1 ? React.createElement(Brace, null, '{') : null,\n lastActive: false\n });\n }), nonDeprecatedFields.map(function (data, index) {\n return React.createElement(TypeLink_1.default, {\n key: data.name,\n type: data,\n x: level,\n y: index + interfaces.length,\n collapsable: true,\n lastActive: false\n });\n }), deprecatedFields.length > 0 && React.createElement(\"br\", null), deprecatedFields.map(function (data, index) {\n return React.createElement(\"div\", {\n key: data.name\n }, React.createElement(DocsValueComment, null, \"# Deprecated: \", data.deprecationReason), React.createElement(TypeLink_1.default, {\n type: data,\n x: level,\n y: index + nonDeprecatedFields.length + interfaces.length,\n collapsable: true,\n lastActive: false\n }));\n }), React.createElement(DocTypeLine, null, React.createElement(Brace, null, '}')));\n};\n\nvar DocTypeSchema = styled_1.styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n font-size: 14px;\\n overflow: auto;\\n .doc-category-item {\\n padding-left: 32px;\\n }\\n\"], [\"\\n font-size: 14px;\\n overflow: auto;\\n .doc-category-item {\\n padding-left: 32px;\\n }\\n\"])));\nvar DocTypeLine = styled_1.styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n padding: 6px 16px;\\n white-space: nowrap;\\n\"], [\"\\n padding: 6px 16px;\\n white-space: nowrap;\\n\"])));\nvar DocsTypeName = styled_1.styled.span(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n color: #f25c54;\\n\"], [\"\\n color: #f25c54;\\n\"])));\nvar DocsTypeInferface = styled_1.styled(TypeLink_1.default)(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n padding-left: 16px;\\n .field-name {\\n color: rgb(245, 160, 0);\\n }\\n .type-name {\\n color: #f25c54;\\n }\\n\"], [\"\\n padding-left: 16px;\\n .field-name {\\n color: rgb(245, 160, 0);\\n }\\n .type-name {\\n color: #f25c54;\\n }\\n\"])));\nvar DocsValueComment = styled_1.styled.p(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n color: \", \";\\n padding-right: 16px;\\n padding-left: 32px;\\n\"], [\"\\n color: \", \";\\n padding-right: 16px;\\n padding-left: 32px;\\n\"])), function (p) {\n return p.theme.colours.black50;\n});\nvar Brace = styled_1.styled.span(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n font-weight: 600;\\n color: \", \";\\n\"], [\"\\n font-weight: 600;\\n color: \", \";\\n\"])), function (p) {\n return p.theme.colours.darkBlue50;\n});\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar DocType_1 = require(\"./DocType\");\n\nvar ScalarTypeSchema = function ScalarTypeSchema(_a) {\n var type = _a.type;\n return React.createElement(DocType_1.DocType, {\n className: \"doc-type-schema\"\n }, React.createElement(\"span\", {\n className: \"field-name\"\n }, \"scalar\"), ' ', React.createElement(\"span\", {\n className: \"type-name\"\n }, type.name));\n};\n\nexports.default = ScalarTypeSchema;","\"use strict\";\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar styled_1 = require(\"../../../../styled\");\n\nvar DocType_1 = require(\"./DocType\");\n\nvar EnumTypeSchema = function EnumTypeSchema(_a) {\n var type = _a.type,\n sdlType = _a.sdlType;\n var values = sdlType ? type._values : type.getValues();\n var deprecatedValues = values.filter(function (value) {\n return value.isDeprecated;\n });\n return React.createElement(DocType_1.DocType, {\n className: \"doc-type-schema\"\n }, React.createElement(\"span\", {\n className: \"field-name\"\n }, \"enum\"), ' ', React.createElement(\"span\", {\n className: \"type-name\"\n }, type.name), ' ', React.createElement(\"span\", {\n className: \"brace\"\n }, '{'), values.filter(function (value) {\n return !value.isDeprecated;\n }).map(function (value, index) {\n return React.createElement(Value, {\n key: value.name,\n first: index === 0,\n value: value\n });\n }), deprecatedValues.length > 0 && React.createElement(\"br\", null), deprecatedValues.map(function (value, index) {\n return React.createElement(Value, {\n first: index === 0,\n key: value.name,\n value: value,\n isDeprecated: true\n });\n }), React.createElement(\"span\", {\n className: \"brace\"\n }, '}'));\n};\n\nexports.default = EnumTypeSchema;\n\nvar Value = function Value(_a) {\n var value = _a.value,\n isDeprecated = _a.isDeprecated,\n first = _a.first;\n return React.createElement(DocsValue, {\n first: first\n }, React.createElement(\"div\", {\n className: \"field-name\"\n }, value.name), value.description && React.createElement(DocsValueComment, null, value.description), isDeprecated && React.createElement(DocsValueComment, null, \"Deprecated: \", value.deprecationReason));\n};\n\nvar DocsValue = styled_1.styled('div')(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n margin-top: \", \"px;\\n .field-name {\\n padding: 0 16px;\\n color: red;\\n }\\n\"], [\"\\n margin-top: \", \"px;\\n .field-name {\\n padding: 0 16px;\\n color: red;\\n }\\n\"])), function (p) {\n return p.first ? 0 : 6;\n});\nvar DocsValueComment = styled_1.styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n padding: 0 16px;\\n color: \", \";\\n\"], [\"\\n padding: 0 16px;\\n color: \", \";\\n\"])), function (p) {\n return p.theme.colours.black50;\n});\nvar templateObject_1, templateObject_2;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar TypeLink_1 = require(\"../TypeLink\");\n\nvar React = require(\"react\");\n\nvar DocType_1 = require(\"./DocType\");\n\nvar UnionTypeSchema = function UnionTypeSchema(_a) {\n var schema = _a.schema,\n type = _a.type,\n level = _a.level,\n sessionId = _a.sessionId;\n var types = schema.getPossibleTypes(type);\n return React.createElement(DocType_1.DocType, {\n className: \"doc-type-schema\"\n }, React.createElement(\"span\", {\n className: \"field-name\"\n }, \"union\"), ' ', React.createElement(\"span\", {\n className: \"type-name\"\n }, type.name), ' = ', types.map(function (value, index) {\n return React.createElement(TypeLink_1.default, {\n key: value.name,\n type: value,\n x: level,\n y: index + 1,\n collapsable: true,\n sessionId: sessionId,\n lastActive: false\n });\n }));\n};\n\nexports.default = UnionTypeSchema;","\"use strict\";\n\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar ColumnDoc_1 = require(\"./ColumnDoc\");\n\nvar SearchResults_1 = require(\"./SearchResults\");\n\nvar GraphDocsRoot_1 = require(\"./GraphDocsRoot\");\n\nvar SearchBox_1 = require(\"./SearchBox\");\n\nvar styled_1 = require(\"../../../styled\");\n\nvar RootColumn =\n/** @class */\nfunction (_super) {\n __extends(RootColumn, _super);\n\n function RootColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n RootColumn.prototype.render = function () {\n var _a = this.props,\n searchValue = _a.searchValue,\n schema = _a.schema,\n width = _a.width,\n sessionId = _a.sessionId,\n handleSearch = _a.handleSearch;\n return React.createElement(ColumnDoc_1.default, {\n width: width,\n overflow: false\n }, React.createElement(SearchBox_1.default, {\n onSearch: handleSearch\n }), React.createElement(Column, null, searchValue && React.createElement(SearchResults_1.default, {\n searchValue: searchValue,\n schema: schema,\n level: 0,\n sessionId: sessionId\n }), !searchValue && React.createElement(GraphDocsRoot_1.default, {\n schema: schema,\n sessionId: sessionId\n })));\n };\n\n return RootColumn;\n}(React.PureComponent);\n\nexports.default = RootColumn;\nvar Column = styled_1.styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n overflow: auto;\\n\"], [\"\\n overflow: auto;\\n\"])));\nvar templateObject_1;","\"use strict\";\n\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar styled_1 = require(\"../../../styled\");\n\nvar TypeLink_1 = require(\"./TypeLink\");\n\nvar SearchResults =\n/** @class */\nfunction (_super) {\n __extends(SearchResults, _super);\n\n function SearchResults() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n SearchResults.prototype.shouldComponentUpdate = function (nextProps) {\n return this.props.schema !== nextProps.schema || this.props.searchValue !== nextProps.searchValue;\n };\n\n SearchResults.prototype.render = function () {\n var level = this.props.level;\n var searchValue = this.props.searchValue;\n var withinType = this.props.withinType;\n var schema = this.props.schema;\n var matchedWithin = [];\n var matchedTypes = [];\n var matchedFields = [];\n var typeMap = schema.getTypeMap();\n var typeNames = Object.keys(typeMap); // Move the within type name to be the first searched.\n\n if (withinType) {\n typeNames = typeNames.filter(function (n) {\n return n !== withinType.name;\n });\n typeNames.unshift(withinType.name);\n }\n\n var count = 0;\n\n var _loop_1 = function _loop_1(typeName) {\n if (matchedWithin.length + matchedTypes.length + matchedFields.length >= 100) {\n return \"break\";\n }\n\n var type = typeMap[typeName];\n\n if (withinType !== type && isMatch(typeName, searchValue)) {\n matchedTypes.push(React.createElement(\"div\", {\n className: \"doc-category-item\",\n key: typeName\n }, React.createElement(TypeLink_1.default, {\n type: type,\n x: level,\n y: count++,\n lastActive: false\n })));\n }\n\n if (type.getFields) {\n var fields_1 = type.getFields();\n Object.keys(fields_1).forEach(function (fieldName) {\n var field = fields_1[fieldName];\n field.parent = type;\n var matchingArgs;\n\n if (!isMatch(fieldName, searchValue)) {\n if (field.args && field.args.length) {\n matchingArgs = field.args.filter(function (arg) {\n return isMatch(arg.name, searchValue);\n });\n\n if (matchingArgs.length === 0) {\n return;\n }\n } else {\n return;\n }\n }\n\n var match = React.createElement(\"div\", {\n className: \"doc-category-item\",\n key: typeName + '.' + fieldName\n }, React.createElement(TypeLink_1.default, {\n key: \"type\",\n type: field,\n x: level,\n y: count++,\n showParentName: true,\n lastActive: false\n }));\n\n if (withinType === type) {\n matchedWithin.push(match);\n } else {\n matchedFields.push(match);\n }\n });\n }\n };\n\n for (var _i = 0, typeNames_1 = typeNames; _i < typeNames_1.length; _i++) {\n var typeName = typeNames_1[_i];\n\n var state_1 = _loop_1(typeName);\n\n if (state_1 === \"break\") break;\n }\n\n if (matchedWithin.length + matchedTypes.length + matchedFields.length === 0) {\n return React.createElement(NoResult, null, \"No results found.\");\n }\n\n if (withinType && matchedTypes.length + matchedFields.length > 0) {\n return React.createElement(\"div\", null, matchedWithin, React.createElement(\"div\", {\n className: \"doc-category\"\n }, React.createElement(\"div\", {\n className: \"doc-category-title\"\n }, 'other results'), matchedTypes, matchedFields));\n }\n\n return React.createElement(\"div\", null, matchedWithin, matchedTypes, matchedFields);\n };\n\n return SearchResults;\n}(React.Component);\n\nexports.default = SearchResults;\n\nfunction isMatch(sourceText, searchValue) {\n try {\n var escaped = searchValue.replace(/[^_0-9A-Za-z]/g, function (ch) {\n return '\\\\' + ch;\n });\n return sourceText.search(new RegExp(escaped, 'i')) !== -1;\n } catch (e) {\n return sourceText.toLowerCase().indexOf(searchValue.toLowerCase()) !== -1;\n }\n}\n\nvar NoResult = styled_1.styled.span(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n display: block;\\n margin-top: 16px;\\n margin-left: 16px;\\n\"], [\"\\n display: block;\\n margin-top: 16px;\\n margin-left: 16px;\\n\"])));\nvar templateObject_1;","\"use strict\";\n\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar TypeLink_1 = require(\"./TypeLink\");\n\nvar stack_1 = require(\"../util/stack\");\n\nvar DocsStyles_1 = require(\"./DocsStyles\");\n\nvar styled_1 = require(\"../../../styled\");\n\nvar GraphDocsRoot =\n/** @class */\nfunction (_super) {\n __extends(GraphDocsRoot, _super);\n\n function GraphDocsRoot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n GraphDocsRoot.prototype.render = function () {\n var _a = this.props,\n schema = _a.schema,\n sessionId = _a.sessionId;\n var obj = stack_1.serializeRoot(schema);\n return React.createElement(DocsRoot, {\n className: \"doc-root\"\n }, React.createElement(ShowRootType, {\n name: \"Queries\",\n fields: obj.queries,\n offset: 0,\n sessionId: sessionId\n }), obj.mutations.length > 0 && React.createElement(ShowRootType, {\n name: \"Mutations\",\n fields: obj.mutations,\n offset: obj.queries.length,\n sessionId: sessionId\n }), obj.subscriptions.length > 0 && React.createElement(ShowRootType, {\n name: \"Subscriptions\",\n fields: obj.subscriptions,\n offset: obj.queries.length + obj.mutations.length,\n sessionId: sessionId\n }));\n };\n\n return GraphDocsRoot;\n}(React.PureComponent);\n\nexports.default = GraphDocsRoot;\n\nfunction ShowRootType(_a) {\n var name = _a.name,\n fields = _a.fields,\n offset = _a.offset;\n return React.createElement(\"div\", null, React.createElement(DocsStyles_1.CategoryTitle, null, name), fields.filter(function (field) {\n return !field.isDeprecated;\n }).map(function (field, index) {\n return React.createElement(TypeLink_1.default, {\n key: field.name,\n type: field,\n x: 0,\n y: offset + index,\n collapsable: true,\n lastActive: false\n });\n }));\n}\n\nvar DocsRoot = styled_1.styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n padding-left: 6px;\\n\\n .doc-category-item .field-name {\\n color: #f25c54;\\n }\\n\"], [\"\\n padding-left: 6px;\\n\\n .doc-category-item .field-name {\\n color: #f25c54;\\n }\\n\"])));\nvar templateObject_1;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = debounce;\n/**\n * Copyright (c) Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * Provided a duration and a function, returns a new function which is called\n * `duration` milliseconds after the last call.\n */\n\nfunction debounce(duration, fn) {\n var timeout = void 0;\n return function () {\n var _this = this,\n _arguments = arguments;\n\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n timeout = null;\n fn.apply(_this, _arguments);\n }, duration);\n };\n}","\"use strict\";\n\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar styled_1 = require(\"../../styled\");\n\nvar Icons_1 = require(\"../Icons\");\n\nvar Tab_1 = require(\"./Tab\");\n\nvar react_redux_1 = require(\"react-redux\");\n\nvar reselect_1 = require(\"reselect\");\n\nvar selectors_1 = require(\"../../state/sessions/selectors\");\n\nvar actions_1 = require(\"../../state/sessions/actions\");\n\nvar react_sortable_hoc_1 = require(\"react-sortable-hoc\");\n\nvar SortableTab = react_sortable_hoc_1.SortableElement(Tab_1.default);\n\nvar TabBar =\n/** @class */\nfunction (_super) {\n __extends(TabBar, _super);\n\n function TabBar() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.state = {\n sorting: false\n };\n\n _this.onSortStart = function (_a) {\n var index = _a.index;\n\n _this.setState({\n sorting: true\n });\n };\n\n _this.onSortEnd = function (_a) {\n var oldIndex = _a.oldIndex,\n newIndex = _a.newIndex;\n\n _this.props.reorderTabs(oldIndex, newIndex);\n\n _this.setState({\n sorting: false\n });\n };\n\n _this.getHelperDimensions = function (_a) {\n var node = _a.node;\n\n var _b = node.getBoundingClientRect(),\n width = _b.width,\n height = _b.height;\n\n return {\n width: width,\n height: height\n };\n };\n\n return _this;\n }\n\n TabBar.prototype.render = function () {\n var _a = this.props,\n sessions = _a.sessions,\n isApp = _a.isApp,\n selectedSessionId = _a.selectedSessionId,\n onNewSession = _a.onNewSession;\n var sorting = this.state.sorting;\n return React.createElement(SortableTabBar, {\n onSortStart: this.onSortStart,\n onSortEnd: this.onSortEnd,\n getHelperDimensions: this.getHelperDimensions,\n axis: \"x\",\n lockAxis: \"x\",\n lockToContainerEdges: true,\n distance: 10,\n transitionDuration: 200\n }, React.createElement(Tabs, {\n isApp: isApp\n }, sessions.map(function (session, ndx) {\n return React.createElement(SortableTab, {\n key: session.id,\n session: session,\n selectedSessionId: selectedSessionId,\n index: ndx\n });\n }), React.createElement(Plus, {\n onClick: onNewSession,\n sorting: sorting\n }, React.createElement(Icons_1.AddIcon, {\n width: 34,\n height: 34,\n strokeWidth: 4,\n title: \"Opens a New Tab\"\n }))));\n };\n\n return TabBar;\n}(React.PureComponent);\n\nvar mapStateToProps = reselect_1.createStructuredSelector({\n sessions: selectors_1.getSessionsArray,\n selectedSessionId: selectors_1.getSelectedSessionIdFromRoot\n});\nexports.default = react_redux_1.connect(mapStateToProps, {\n reorderTabs: actions_1.reorderTabs\n})(TabBar);\nvar StyledTabBar = styled_1.styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n color: white;\\n height: 57px;\\n background: \", \";\\n overflow: hidden;\\n -webkit-app-region: drag;\\n &:hover {\\n overflow-x: overlay;\\n }\\n\"], [\"\\n color: white;\\n height: 57px;\\n background: \", \";\\n overflow: hidden;\\n -webkit-app-region: drag;\\n &:hover {\\n overflow-x: overlay;\\n }\\n\"])), function (p) {\n return p.theme.editorColours.background;\n});\nvar SortableTabBar = react_sortable_hoc_1.SortableContainer(StyledTabBar);\nvar Tabs = styled_1.styled('div')(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n margin-top: 16px;\\n padding-left: \", \";\\n\"], [\"\\n display: flex;\\n align-items: center;\\n margin-top: 16px;\\n padding-left: \", \";\\n\"])), function (p) {\n return p.isApp ? '43px' : '0';\n});\nvar Plus = styled_1.styled('div')(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n -webkit-app-region: no-drag;\\n box-sizing: border-box;\\n display: flex;\\n visibility: \", \"\\n height: 43px;\\n width: 43px;\\n border-radius: 2px;\\n border-bottom: 2px solid \", \";\\n background: \", \";\\n justify-content: center;\\n align-items: center;\\n svg {\\n stroke: \", \";\\n }\\n &:hover {\\n background: \", \";\\n }\\n\"], [\"\\n -webkit-app-region: no-drag;\\n box-sizing: border-box;\\n display: flex;\\n visibility: \", \"\\n height: 43px;\\n width: 43px;\\n border-radius: 2px;\\n border-bottom: 2px solid \", \";\\n background: \", \";\\n justify-content: center;\\n align-items: center;\\n svg {\\n stroke: \", \";\\n }\\n &:hover {\\n background: \", \";\\n }\\n\"])), function (p) {\n return p.sorting ? 'hidden' : 'visible';\n}, function (p) {\n return p.theme.editorColours.navigationBar;\n}, function (p) {\n return p.theme.editorColours.tabInactive;\n}, function (p) {\n return p.theme.editorColours.icon;\n}, function (p) {\n return p.theme.editorColours.tab;\n});\nvar templateObject_1, templateObject_2, templateObject_3;","\"use strict\";\n\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar Icons_1 = require(\"../Icons\");\n\nvar react_redux_1 = require(\"react-redux\");\n\nvar actions_1 = require(\"../../state/sessions/actions\");\n\nvar styled_1 = require(\"../../styled\");\n\nvar react_input_autosize_1 = require(\"react-input-autosize\");\n\nvar Tab =\n/** @class */\nfunction (_super) {\n __extends(Tab, _super);\n\n function Tab(props) {\n var _this = _super.call(this, props) || this;\n\n _this.startEditName = function () {\n _this.setState({\n editingName: true\n });\n };\n\n _this.stopEditName = function () {\n _this.setState({\n editingName: false\n });\n };\n\n _this.handleKeyDown = function (e) {\n if (e.keyCode === 13) {\n _this.setState({\n editingName: false\n });\n }\n };\n\n _this.handleMouseOverCross = function () {\n _this.setState({\n overCross: true\n });\n };\n\n _this.handleMouseOutCross = function () {\n _this.setState({\n overCross: false\n });\n };\n\n _this.handleSelectSession = function () {\n _this.props.selectTab(_this.props.session.id);\n };\n\n _this.handleCloseSession = function (e) {\n e.stopPropagation();\n\n _this.props.closeTab(_this.props.session.id);\n };\n\n _this.handleEditName = function (e) {\n _this.props.editName(e.target.value);\n };\n\n _this.state = {\n overCross: false,\n editingName: false\n };\n return _this;\n }\n\n Tab.prototype.render = function () {\n var _a = this.props,\n session = _a.session,\n selectedSessionId = _a.selectedSessionId;\n var queryTypes = session.queryTypes;\n var active = session.id === selectedSessionId;\n var name = session.name || session.operationName || queryTypes.firstOperationName || 'New Tab';\n return React.createElement(TabItem, {\n active: active,\n onMouseDown: this.handleSelectSession\n }, React.createElement(Icons, {\n active: active\n }, session.subscriptionActive && React.createElement(RedDot, null), React.createElement(QueryTypes, null, queryTypes.query && React.createElement(Query, null, \"Q\"), (session.isSettingsTab || session.isConfigTab) && React.createElement(Query, null, React.createElement(Icons_1.SettingsIcon, {\n width: 12,\n height: 12,\n fill: \"white\"\n })), queryTypes.mutation && React.createElement(Mutation, null, \"M\"), queryTypes.subscription && React.createElement(Subscription, null, \"S\"))), this.state.editingName ? React.createElement(OperationNameInput, {\n value: session.name || '',\n onChange: this.handleEditName,\n onBlur: this.stopEditName,\n onKeyDown: this.handleKeyDown,\n autoFocus: true\n }) : React.createElement(OperationName, {\n active: active,\n onDoubleClick: this.startEditName\n }, name), React.createElement(Close, {\n className: \"close\",\n active: active,\n hasCircle: session.isFile && session.changed && !this.state.overCross,\n onClick: this.handleCloseSession,\n onMouseEnter: this.handleMouseOverCross,\n onMouseLeave: this.handleMouseOutCross\n }, session.isFile && session.changed && !this.state.overCross ? React.createElement(Circle, null, \"\\u2B24\") : React.createElement(Icons_1.CrossIcon, {\n width: 12,\n height: 11,\n strokeWidth: 7,\n title: \"Close Tab\"\n })));\n };\n\n return Tab;\n}(React.PureComponent);\n\nexports.default = react_redux_1.connect(null, {\n closeTab: actions_1.closeTab,\n selectTab: actions_1.selectTab,\n editName: actions_1.editName\n})(Tab);\nvar TabItem = styled_1.styled('div')(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n -webkit-app-region: no-drag;\\n flex: 0 0 auto;\\n display: flex;\\n align-items: center;\\n height: 43px;\\n padding: 10px;\\n padding-top: 9px;\\n margin-right: 10px;\\n font-size: 14px;\\n border-radius: 2px;\\n border-bottom: 2px solid \", \";\\n box-sizing: border-box;\\n cursor: pointer;\\n user-select: none;\\n background: \", \";\\n &:hover {\\n background: \", \";\\n .close {\\n opacity: 1;\\n }\\n }\\n\"], [\"\\n -webkit-app-region: no-drag;\\n flex: 0 0 auto;\\n display: flex;\\n align-items: center;\\n height: 43px;\\n padding: 10px;\\n padding-top: 9px;\\n margin-right: 10px;\\n font-size: 14px;\\n border-radius: 2px;\\n border-bottom: 2px solid \", \";\\n box-sizing: border-box;\\n cursor: pointer;\\n user-select: none;\\n background: \", \";\\n &:hover {\\n background: \", \";\\n .close {\\n opacity: 1;\\n }\\n }\\n\"])), function (p) {\n return p.theme.editorColours.navigationBar;\n}, function (p) {\n return p.active ? p.theme.editorColours.tab : p.theme.editorColours.tabInactive;\n}, function (p) {\n return p.theme.editorColours.tab;\n});\nvar OperationName = styled_1.styled('div')(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n opacity: \", \";\\n background: transparent;\\n color: \", \";\\n font-size: 14px;\\n margin-left: 2px;\\n display: inline;\\n letter-spacing: 0.53px;\\n\"], [\"\\n opacity: \", \";\\n background: transparent;\\n color: \", \";\\n font-size: 14px;\\n margin-left: 2px;\\n display: inline;\\n letter-spacing: 0.53px;\\n\"])), function (p) {\n return p.active ? 1 : 0.5;\n}, function (p) {\n return p.theme.editorColours.tabText;\n});\nvar OperationNameInput = styled_1.styled(react_input_autosize_1.default)(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n input {\\n background: transparent;\\n color: \", \";\\n font-size: 14px;\\n margin-left: 2px;\\n display: inline;\\n letter-spacing: 0.53px;\\n }\\n\"], [\"\\n input {\\n background: transparent;\\n color: \", \";\\n font-size: 14px;\\n margin-left: 2px;\\n display: inline;\\n letter-spacing: 0.53px;\\n }\\n\"])), function (p) {\n return p.theme.editorColours.tabText;\n});\nvar Icons = styled_1.styled('div')(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n opacity: \", \";\\n\"], [\"\\n display: flex;\\n align-items: center;\\n opacity: \", \";\\n\"])), function (p) {\n return p.active ? 1 : 0.5;\n});\nvar QueryTypes = styled_1.styled.div(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n display: flex;\\n color: white;\\n\"], [\"\\n display: flex;\\n color: white;\\n\"])));\nvar QueryType = styled_1.styled.div(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n height: 22px;\\n width: 22px;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n margin-right: 4px;\\n font-size: 12px;\\n font-weight: 700;\\n border-radius: 2px;\\n\"], [\"\\n height: 22px;\\n width: 22px;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n margin-right: 4px;\\n font-size: 12px;\\n font-weight: 700;\\n border-radius: 2px;\\n\"])));\nvar Query = styled_1.styled(QueryType)(templateObject_7 || (templateObject_7 = __makeTemplateObject([\"\\n background: \", \";\\n\"], [\"\\n background: \", \";\\n\"])), function (p) {\n return p.theme.colours.blue;\n});\nvar Mutation = styled_1.styled(QueryType)(templateObject_8 || (templateObject_8 = __makeTemplateObject([\"\\n background: \", \";\\n\"], [\"\\n background: \", \";\\n\"])), function (p) {\n return p.theme.colours.orange;\n});\nvar Subscription = styled_1.styled(QueryType)(templateObject_9 || (templateObject_9 = __makeTemplateObject([\"\\n background: \", \";\\n\"], [\"\\n background: \", \";\\n\"])), function (p) {\n return p.theme.colours.purple;\n});\nvar RedDot = styled_1.styled.div(templateObject_10 || (templateObject_10 = __makeTemplateObject([\"\\n width: 7px;\\n height: 7px;\\n background: rgba(242, 92, 84, 1);\\n border-radius: 100%;\\n margin-right: 10px;\\n\"], [\"\\n width: 7px;\\n height: 7px;\\n background: rgba(242, 92, 84, 1);\\n border-radius: 100%;\\n margin-right: 10px;\\n\"])));\nvar Circle = styled_1.styled.div(templateObject_11 || (templateObject_11 = __makeTemplateObject([\"\\n position: relative;\\n top: -2px;\\n font-size: 9px;\\n background: \", \";\\n\"], [\"\\n position: relative;\\n top: -2px;\\n font-size: 9px;\\n background: \", \";\\n\"])), function (p) {\n return p.theme.editorColours.circle;\n});\nvar Close = styled_1.styled('div')(templateObject_12 || (templateObject_12 = __makeTemplateObject([\"\\n position: relative;\\n display: flex;\\n margin-left: 10px;\\n top: 1px;\\n height: 13px;\\n width: 13px;\\n opacity: \", \";\\n svg {\\n stroke: \", \";\\n }\\n\"], [\"\\n position: relative;\\n display: flex;\\n margin-left: 10px;\\n top: 1px;\\n height: 13px;\\n width: 13px;\\n opacity: \", \";\\n svg {\\n stroke: \", \";\\n }\\n\"])), function (p) {\n return p.active || p.hasCircle ? 1 : 0;\n}, function (p) {\n return p.theme.editorColours.icon;\n});\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _objectWithoutProperties(obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar sizerStyle = {\n position: 'absolute',\n top: 0,\n left: 0,\n visibility: 'hidden',\n height: 0,\n overflow: 'scroll',\n whiteSpace: 'pre'\n};\nvar INPUT_PROPS_BLACKLIST = ['extraWidth', 'injectStyles', 'inputClassName', 'inputRef', 'inputStyle', 'minWidth', 'onAutosize', 'placeholderIsMinWidth'];\n\nvar cleanInputProps = function cleanInputProps(inputProps) {\n INPUT_PROPS_BLACKLIST.forEach(function (field) {\n return delete inputProps[field];\n });\n return inputProps;\n};\n\nvar copyStyles = function copyStyles(styles, node) {\n node.style.fontSize = styles.fontSize;\n node.style.fontFamily = styles.fontFamily;\n node.style.fontWeight = styles.fontWeight;\n node.style.fontStyle = styles.fontStyle;\n node.style.letterSpacing = styles.letterSpacing;\n node.style.textTransform = styles.textTransform;\n};\n\nvar isIE = typeof window !== 'undefined' && window.navigator ? /MSIE |Trident\\/|Edge\\//.test(window.navigator.userAgent) : false;\n\nvar generateId = function generateId() {\n // we only need an auto-generated ID for stylesheet injection, which is only\n // used for IE. so if the browser is not IE, this should return undefined.\n return isIE ? '_' + Math.random().toString(36).substr(2, 12) : undefined;\n};\n\nvar AutosizeInput = function (_Component) {\n _inherits(AutosizeInput, _Component);\n\n function AutosizeInput(props) {\n _classCallCheck(this, AutosizeInput);\n\n var _this = _possibleConstructorReturn(this, (AutosizeInput.__proto__ || Object.getPrototypeOf(AutosizeInput)).call(this, props));\n\n _this.inputRef = function (el) {\n _this.input = el;\n\n if (typeof _this.props.inputRef === 'function') {\n _this.props.inputRef(el);\n }\n };\n\n _this.placeHolderSizerRef = function (el) {\n _this.placeHolderSizer = el;\n };\n\n _this.sizerRef = function (el) {\n _this.sizer = el;\n };\n\n _this.state = {\n inputWidth: props.minWidth,\n inputId: props.id || generateId()\n };\n return _this;\n }\n\n _createClass(AutosizeInput, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.mounted = true;\n this.copyInputStyles();\n this.updateInputWidth();\n }\n }, {\n key: 'UNSAFE_componentWillReceiveProps',\n value: function UNSAFE_componentWillReceiveProps(nextProps) {\n var id = nextProps.id;\n\n if (id !== this.props.id) {\n this.setState({\n inputId: id || generateId()\n });\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n if (prevState.inputWidth !== this.state.inputWidth) {\n if (typeof this.props.onAutosize === 'function') {\n this.props.onAutosize(this.state.inputWidth);\n }\n }\n\n this.updateInputWidth();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.mounted = false;\n }\n }, {\n key: 'copyInputStyles',\n value: function copyInputStyles() {\n if (!this.mounted || !window.getComputedStyle) {\n return;\n }\n\n var inputStyles = this.input && window.getComputedStyle(this.input);\n\n if (!inputStyles) {\n return;\n }\n\n copyStyles(inputStyles, this.sizer);\n\n if (this.placeHolderSizer) {\n copyStyles(inputStyles, this.placeHolderSizer);\n }\n }\n }, {\n key: 'updateInputWidth',\n value: function updateInputWidth() {\n if (!this.mounted || !this.sizer || typeof this.sizer.scrollWidth === 'undefined') {\n return;\n }\n\n var newInputWidth = void 0;\n\n if (this.props.placeholder && (!this.props.value || this.props.value && this.props.placeholderIsMinWidth)) {\n newInputWidth = Math.max(this.sizer.scrollWidth, this.placeHolderSizer.scrollWidth) + 2;\n } else {\n newInputWidth = this.sizer.scrollWidth + 2;\n } // add extraWidth to the detected width. for number types, this defaults to 16 to allow for the stepper UI\n\n\n var extraWidth = this.props.type === 'number' && this.props.extraWidth === undefined ? 16 : parseInt(this.props.extraWidth) || 0;\n newInputWidth += extraWidth;\n\n if (newInputWidth < this.props.minWidth) {\n newInputWidth = this.props.minWidth;\n }\n\n if (newInputWidth !== this.state.inputWidth) {\n this.setState({\n inputWidth: newInputWidth\n });\n }\n }\n }, {\n key: 'getInput',\n value: function getInput() {\n return this.input;\n }\n }, {\n key: 'focus',\n value: function focus() {\n this.input.focus();\n }\n }, {\n key: 'blur',\n value: function blur() {\n this.input.blur();\n }\n }, {\n key: 'select',\n value: function select() {\n this.input.select();\n }\n }, {\n key: 'renderStyles',\n value: function renderStyles() {\n // this method injects styles to hide IE's clear indicator, which messes\n // with input size detection. the stylesheet is only injected when the\n // browser is IE, and can also be disabled by the `injectStyles` prop.\n var injectStyles = this.props.injectStyles;\n return isIE && injectStyles ? _react2.default.createElement('style', {\n dangerouslySetInnerHTML: {\n __html: 'input#' + this.state.inputId + '::-ms-clear {display: none;}'\n }\n }) : null;\n }\n }, {\n key: 'render',\n value: function render() {\n var sizerValue = [this.props.defaultValue, this.props.value, ''].reduce(function (previousValue, currentValue) {\n if (previousValue !== null && previousValue !== undefined) {\n return previousValue;\n }\n\n return currentValue;\n });\n\n var wrapperStyle = _extends({}, this.props.style);\n\n if (!wrapperStyle.display) wrapperStyle.display = 'inline-block';\n\n var inputStyle = _extends({\n boxSizing: 'content-box',\n width: this.state.inputWidth + 'px'\n }, this.props.inputStyle);\n\n var inputProps = _objectWithoutProperties(this.props, []);\n\n cleanInputProps(inputProps);\n inputProps.className = this.props.inputClassName;\n inputProps.id = this.state.inputId;\n inputProps.style = inputStyle;\n return _react2.default.createElement('div', {\n className: this.props.className,\n style: wrapperStyle\n }, this.renderStyles(), _react2.default.createElement('input', _extends({}, inputProps, {\n ref: this.inputRef\n })), _react2.default.createElement('div', {\n ref: this.sizerRef,\n style: sizerStyle\n }, sizerValue), this.props.placeholder ? _react2.default.createElement('div', {\n ref: this.placeHolderSizerRef,\n style: sizerStyle\n }, this.props.placeholder) : null);\n }\n }]);\n\n return AutosizeInput;\n}(_react.Component);\n\nAutosizeInput.propTypes = {\n className: _propTypes2.default.string,\n // className for the outer element\n defaultValue: _propTypes2.default.any,\n // default field value\n extraWidth: _propTypes2.default.oneOfType([// additional width for input element\n _propTypes2.default.number, _propTypes2.default.string]),\n id: _propTypes2.default.string,\n // id to use for the input, can be set for consistent snapshots\n injectStyles: _propTypes2.default.bool,\n // inject the custom stylesheet to hide clear UI, defaults to true\n inputClassName: _propTypes2.default.string,\n // className for the input element\n inputRef: _propTypes2.default.func,\n // ref callback for the input element\n inputStyle: _propTypes2.default.object,\n // css styles for the input element\n minWidth: _propTypes2.default.oneOfType([// minimum width for input element\n _propTypes2.default.number, _propTypes2.default.string]),\n onAutosize: _propTypes2.default.func,\n // onAutosize handler: function(newWidth) {}\n onChange: _propTypes2.default.func,\n // onChange handler: function(event) {}\n placeholder: _propTypes2.default.string,\n // placeholder text\n placeholderIsMinWidth: _propTypes2.default.bool,\n // don't collapse size to less than the placeholder\n style: _propTypes2.default.object,\n // css styles for the outer element\n value: _propTypes2.default.any // field value\n\n};\nAutosizeInput.defaultProps = {\n minWidth: 1,\n injectStyles: true\n};\nexports.default = AutosizeInput;","\"use strict\";\n\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar Modal = require(\"react-modal\");\n\nvar HistoryHeader_1 = require(\"./HistoryPopup/HistoryHeader\");\n\nvar HistoryItems_1 = require(\"./HistoryPopup/HistoryItems\");\n\nvar constants_1 = require(\"../constants\");\n\nvar QueryEditor_1 = require(\"./Playground/QueryEditor\");\n\nvar styled_1 = require(\"../styled\");\n\nvar react_redux_1 = require(\"react-redux\");\n\nvar reselect_1 = require(\"reselect\");\n\nvar selectors_1 = require(\"../state/history/selectors\");\n\nvar selectors_2 = require(\"../state/general/selectors\");\n\nvar actions_1 = require(\"../state/general/actions\");\n\nvar actions_2 = require(\"../state/sessions/actions\");\n\nvar actions_3 = require(\"../state/history/actions\");\n\nvar EditorWrapper_1 = require(\"./Playground/EditorWrapper\");\n\nvar Icons_1 = require(\"./Icons\");\n\nvar HistoryPopup =\n/** @class */\nfunction (_super) {\n __extends(HistoryPopup, _super);\n\n function HistoryPopup(props) {\n var _this = _super.call(this, props) || this;\n\n _this.handleClickUse = function () {\n var items = _this.props.items;\n var selectedItem = items.get(_this.state.selectedItemIndex);\n\n _this.props.duplicateSession(selectedItem);\n\n _this.props.closeHistory();\n };\n\n _this.handleItemSelect = function (index) {\n _this.setState({\n selectedItemIndex: index\n });\n };\n\n _this.handleSelectFilter = function (filter) {\n _this.setState({\n selectedFilter: filter\n });\n };\n\n _this.handleSearch = function (term) {\n _this.setState({\n searchTerm: term\n });\n };\n\n var selectedItemIndex = props.items.keySeq().first() || '';\n _this.state = {\n selectedFilter: 'HISTORY',\n selectedItemIndex: selectedItemIndex,\n searchTerm: ''\n };\n return _this;\n }\n\n HistoryPopup.prototype.render = function () {\n var _a = this.state,\n searchTerm = _a.searchTerm,\n selectedFilter = _a.selectedFilter;\n var items = this.props.items.filter(function (item) {\n return selectedFilter === 'STARRED' ? item.starred : true && (searchTerm && searchTerm.length > 0 ? item.query.toLowerCase().includes(searchTerm.toLowerCase()) : true);\n });\n var selectedItem = this.props.items.get(this.state.selectedItemIndex);\n selectedItem = selectedItem && selectedItem.toJS ? selectedItem.toJS() : undefined;\n return React.createElement(Modal, {\n isOpen: this.props.isOpen,\n onRequestClose: this.props.closeHistory,\n contentLabel: \"GraphiQL Session History\",\n style: constants_1.modalStyle\n }, React.createElement(Wrapper, null, React.createElement(Left, null, React.createElement(HistoryHeader_1.default, {\n onSelectFilter: this.handleSelectFilter,\n selectedFilter: this.state.selectedFilter,\n onSearch: this.handleSearch\n }), React.createElement(HistoryItems_1.default, {\n items: items,\n selectedItemIndex: this.state.selectedItemIndex,\n searchTerm: this.state.searchTerm,\n onItemSelect: this.handleItemSelect,\n onItemStarToggled: this.props.toggleHistoryItemStarring\n })), Boolean(selectedItem) ? React.createElement(Right, null, React.createElement(RightHeader, null, React.createElement(View, null), React.createElement(Use, {\n onClick: this.handleClickUse\n }, React.createElement(UseText, null, \"Use\"), React.createElement(Icons_1.ArrowRight, {\n color: \"white\",\n width: 13,\n height: 13\n }))), React.createElement(Big, null, React.createElement(GraphiqlWrapper, null, React.createElement(EditorWrapper_1.Container, null, React.createElement(QueryWrap, null, React.createElement(QueryEditor_1.QueryEditor, {\n value: selectedItem.query\n })))))) : React.createElement(Right, null, React.createElement(RightEmpty, null, React.createElement(RightEmptyText, null, \"No History yet\")))));\n };\n\n return HistoryPopup;\n}(React.Component);\n\nvar mapStateToProps = reselect_1.createStructuredSelector({\n items: selectors_1.getHistory,\n isOpen: selectors_2.getHistoryOpen\n});\nexports.default = react_redux_1.connect(mapStateToProps, {\n closeHistory: actions_1.closeHistory,\n openHistory: actions_1.openHistory,\n duplicateSession: actions_2.duplicateSession,\n toggleHistoryItemStarring: actions_3.toggleHistoryItemStarring\n})(HistoryPopup);\nvar Wrapper = styled_1.styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n display: flex;\\n min-height: 500px;\\n\"], [\"\\n display: flex;\\n min-height: 500px;\\n\"])));\nvar Left = styled_1.styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n flex: 1;\\n\\n background: white;\\n\"], [\"\\n flex: 1;\\n\\n background: white;\\n\"])));\nvar Right = styled_1.styled.div(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n flex: 0 0 464px;\\n z-index: 2;\\n\"], [\"\\n flex: 0 0 464px;\\n z-index: 2;\\n\"])));\nvar RightHeader = styled_1.styled.div(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n\\n padding-left: \", \";\\n padding-right: \", \";\\n padding-top: 20px;\\n padding-bottom: 20px;\\n\\n background: \", \";\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n\\n padding-left: \", \";\\n padding-right: \", \";\\n padding-top: 20px;\\n padding-bottom: 20px;\\n\\n background: \", \";\\n\"])), function (p) {\n return p.theme.sizes.medium25;\n}, function (p) {\n return p.theme.sizes.medium25;\n}, function (p) {\n return p.theme.editorColours.resultBackground;\n});\nvar RightEmpty = styled_1.styled.div(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n height: 100%;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n\\n background: \", \";\\n\"], [\"\\n height: 100%;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n\\n background: \", \";\\n\"])), function (p) {\n return p.theme.editorColours.resultBackground;\n});\nvar RightEmptyText = styled_1.styled.div(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n font-size: 16px;\\n color: \", \";\\n\"], [\"\\n font-size: 16px;\\n color: \", \";\\n\"])), function (p) {\n return p.theme.editorColours.text;\n});\nvar View = styled_1.styled.div(templateObject_7 || (templateObject_7 = __makeTemplateObject([\"\\n font-size: \", \";\\n font-weight: \", \";\\n text-transform: uppercase;\\n color: rgba(255, 255, 255, 0.4);\\n\"], [\"\\n font-size: \", \";\\n font-weight: \", \";\\n text-transform: uppercase;\\n color: rgba(255, 255, 255, 0.4);\\n\"])), function (p) {\n return p.theme.sizes.fontSmall;\n}, function (p) {\n return p.theme.sizes.fontSemiBold;\n});\nvar Use = styled_1.styled.div(templateObject_8 || (templateObject_8 = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n\\n padding-top: \", \";\\n padding-bottom: \", \";\\n padding-left: \", \";\\n padding-right: \", \";\\n\\n font-size: \", \";\\n font-weight: \", \";\\n\\n border-radius: \", \";\\n background: \", \";\\n cursor: pointer;\\n\"], [\"\\n display: flex;\\n align-items: center;\\n\\n padding-top: \", \";\\n padding-bottom: \", \";\\n padding-left: \", \";\\n padding-right: \", \";\\n\\n font-size: \", \";\\n font-weight: \", \";\\n\\n border-radius: \", \";\\n background: \", \";\\n cursor: pointer;\\n\"])), function (p) {\n return p.theme.sizes.small10;\n}, function (p) {\n return p.theme.sizes.small10;\n}, function (p) {\n return p.theme.sizes.small16;\n}, function (p) {\n return p.theme.sizes.small16;\n}, function (p) {\n return p.theme.sizes.fontSmall;\n}, function (p) {\n return p.theme.sizes.fontSemiBold;\n}, function (p) {\n return p.theme.sizes.smallRadius;\n}, function (p) {\n return p.theme.colours.green;\n});\nvar UseText = styled_1.styled.div(templateObject_9 || (templateObject_9 = __makeTemplateObject([\"\\n margin-right: \", \";\\n color: white;\\n\"], [\"\\n margin-right: \", \";\\n color: white;\\n\"])), function (p) {\n return p.theme.sizes.small6;\n});\nvar Big = styled_1.styled.div(templateObject_10 || (templateObject_10 = __makeTemplateObject([\"\\n height: calc(100% - 81px);\\n display: flex;\\n flex: 1 1 auto;\\n\"], [\"\\n height: calc(100% - 81px);\\n display: flex;\\n flex: 1 1 auto;\\n\"])));\nvar GraphiqlWrapper = styled_1.styled(Big)(templateObject_11 || (templateObject_11 = __makeTemplateObject([\"\\n width: 100%;\\n height: 100%;\\n position: relative;\\n display: flex;\\n flex: 1 1 auto;\\n\"], [\"\\n width: 100%;\\n height: 100%;\\n position: relative;\\n display: flex;\\n flex: 1 1 auto;\\n\"])));\nvar QueryWrap = styled_1.styled.div(templateObject_12 || (templateObject_12 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: column;\\n flex: 1;\\n\"], [\"\\n display: flex;\\n flex-direction: column;\\n flex: 1;\\n\"])));\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.bodyOpenClassName = exports.portalClassName = undefined;\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require(\"react-dom\");\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _ModalPortal = require(\"./ModalPortal\");\n\nvar _ModalPortal2 = _interopRequireDefault(_ModalPortal);\n\nvar _ariaAppHider = require(\"../helpers/ariaAppHider\");\n\nvar ariaAppHider = _interopRequireWildcard(_ariaAppHider);\n\nvar _safeHTMLElement = require(\"../helpers/safeHTMLElement\");\n\nvar _safeHTMLElement2 = _interopRequireDefault(_safeHTMLElement);\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n return newObj;\n }\n}\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar portalClassName = exports.portalClassName = \"ReactModalPortal\";\nvar bodyOpenClassName = exports.bodyOpenClassName = \"ReactModal__Body--open\";\nvar isReact16 = _reactDom2.default.createPortal !== undefined;\n\nvar getCreatePortal = function getCreatePortal() {\n return isReact16 ? _reactDom2.default.createPortal : _reactDom2.default.unstable_renderSubtreeIntoContainer;\n};\n\nfunction getParentElement(parentSelector) {\n return parentSelector();\n}\n\nvar Modal = function (_Component) {\n _inherits(Modal, _Component);\n\n function Modal() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Modal);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Modal.__proto__ || Object.getPrototypeOf(Modal)).call.apply(_ref, [this].concat(args))), _this), _this.removePortal = function () {\n !isReact16 && _reactDom2.default.unmountComponentAtNode(_this.node);\n var parent = getParentElement(_this.props.parentSelector);\n parent.removeChild(_this.node);\n }, _this.portalRef = function (ref) {\n _this.portal = ref;\n }, _this.renderPortal = function (props) {\n var createPortal = getCreatePortal();\n var portal = createPortal(_this, _react2.default.createElement(_ModalPortal2.default, _extends({\n defaultStyles: Modal.defaultStyles\n }, props)), _this.node);\n\n _this.portalRef(portal);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Modal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (!_safeHTMLElement.canUseDOM) return;\n\n if (!isReact16) {\n this.node = document.createElement(\"div\");\n }\n\n this.node.className = this.props.portalClassName;\n var parent = getParentElement(this.props.parentSelector);\n parent.appendChild(this.node);\n !isReact16 && this.renderPortal(this.props);\n }\n }, {\n key: \"getSnapshotBeforeUpdate\",\n value: function getSnapshotBeforeUpdate(prevProps) {\n var prevParent = getParentElement(prevProps.parentSelector);\n var nextParent = getParentElement(this.props.parentSelector);\n return {\n prevParent: prevParent,\n nextParent: nextParent\n };\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, _, snapshot) {\n if (!_safeHTMLElement.canUseDOM) return;\n var _props = this.props,\n isOpen = _props.isOpen,\n portalClassName = _props.portalClassName;\n\n if (prevProps.portalClassName !== portalClassName) {\n this.node.className = portalClassName;\n }\n\n var prevParent = snapshot.prevParent,\n nextParent = snapshot.nextParent;\n\n if (nextParent !== prevParent) {\n prevParent.removeChild(this.node);\n nextParent.appendChild(this.node);\n } // Stop unnecessary renders if modal is remaining closed\n\n\n if (!prevProps.isOpen && !isOpen) return;\n !isReact16 && this.renderPortal(this.props);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (!_safeHTMLElement.canUseDOM || !this.node || !this.portal) return;\n var state = this.portal.state;\n var now = Date.now();\n var closesAt = state.isOpen && this.props.closeTimeoutMS && (state.closesAt || now + this.props.closeTimeoutMS);\n\n if (closesAt) {\n if (!state.beforeClose) {\n this.portal.closeWithTimeout();\n }\n\n setTimeout(this.removePortal, closesAt - now);\n } else {\n this.removePortal();\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n if (!_safeHTMLElement.canUseDOM || !isReact16) {\n return null;\n }\n\n if (!this.node && isReact16) {\n this.node = document.createElement(\"div\");\n }\n\n var createPortal = getCreatePortal();\n return createPortal(_react2.default.createElement(_ModalPortal2.default, _extends({\n ref: this.portalRef,\n defaultStyles: Modal.defaultStyles\n }, this.props)), this.node);\n }\n }], [{\n key: \"setAppElement\",\n value: function setAppElement(element) {\n ariaAppHider.setElement(element);\n }\n /* eslint-disable react/no-unused-prop-types */\n\n /* eslint-enable react/no-unused-prop-types */\n\n }]);\n\n return Modal;\n}(_react.Component);\n\nModal.propTypes = {\n isOpen: _propTypes2.default.bool.isRequired,\n style: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n portalClassName: _propTypes2.default.string,\n bodyOpenClassName: _propTypes2.default.string,\n htmlOpenClassName: _propTypes2.default.string,\n className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.shape({\n base: _propTypes2.default.string.isRequired,\n afterOpen: _propTypes2.default.string.isRequired,\n beforeClose: _propTypes2.default.string.isRequired\n })]),\n overlayClassName: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.shape({\n base: _propTypes2.default.string.isRequired,\n afterOpen: _propTypes2.default.string.isRequired,\n beforeClose: _propTypes2.default.string.isRequired\n })]),\n appElement: _propTypes2.default.instanceOf(_safeHTMLElement2.default),\n onAfterOpen: _propTypes2.default.func,\n onRequestClose: _propTypes2.default.func,\n closeTimeoutMS: _propTypes2.default.number,\n ariaHideApp: _propTypes2.default.bool,\n shouldFocusAfterRender: _propTypes2.default.bool,\n shouldCloseOnOverlayClick: _propTypes2.default.bool,\n shouldReturnFocusAfterClose: _propTypes2.default.bool,\n parentSelector: _propTypes2.default.func,\n aria: _propTypes2.default.object,\n data: _propTypes2.default.object,\n role: _propTypes2.default.string,\n contentLabel: _propTypes2.default.string,\n shouldCloseOnEsc: _propTypes2.default.bool,\n overlayRef: _propTypes2.default.func,\n contentRef: _propTypes2.default.func\n};\nModal.defaultProps = {\n isOpen: false,\n portalClassName: portalClassName,\n bodyOpenClassName: bodyOpenClassName,\n role: \"dialog\",\n ariaHideApp: true,\n closeTimeoutMS: 0,\n shouldFocusAfterRender: true,\n shouldCloseOnEsc: true,\n shouldCloseOnOverlayClick: true,\n shouldReturnFocusAfterClose: true,\n parentSelector: function parentSelector() {\n return document.body;\n }\n};\nModal.defaultStyles = {\n overlay: {\n position: \"fixed\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: \"rgba(255, 255, 255, 0.75)\"\n },\n content: {\n position: \"absolute\",\n top: \"40px\",\n left: \"40px\",\n right: \"40px\",\n bottom: \"40px\",\n border: \"1px solid #ccc\",\n background: \"#fff\",\n overflow: \"auto\",\n WebkitOverflowScrolling: \"touch\",\n borderRadius: \"4px\",\n outline: \"none\",\n padding: \"20px\"\n }\n};\n(0, _reactLifecyclesCompat.polyfill)(Modal);\nexports.default = Modal;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _focusManager = require(\"../helpers/focusManager\");\n\nvar focusManager = _interopRequireWildcard(_focusManager);\n\nvar _scopeTab = require(\"../helpers/scopeTab\");\n\nvar _scopeTab2 = _interopRequireDefault(_scopeTab);\n\nvar _ariaAppHider = require(\"../helpers/ariaAppHider\");\n\nvar ariaAppHider = _interopRequireWildcard(_ariaAppHider);\n\nvar _classList = require(\"../helpers/classList\");\n\nvar classList = _interopRequireWildcard(_classList);\n\nvar _safeHTMLElement = require(\"../helpers/safeHTMLElement\");\n\nvar _safeHTMLElement2 = _interopRequireDefault(_safeHTMLElement);\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n return newObj;\n }\n}\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n} // so that our CSS is statically analyzable\n\n\nvar CLASS_NAMES = {\n overlay: \"ReactModal__Overlay\",\n content: \"ReactModal__Content\"\n};\nvar TAB_KEY = 9;\nvar ESC_KEY = 27;\nvar ariaHiddenInstances = 0;\n\nvar ModalPortal = function (_Component) {\n _inherits(ModalPortal, _Component);\n\n function ModalPortal(props) {\n _classCallCheck(this, ModalPortal);\n\n var _this = _possibleConstructorReturn(this, (ModalPortal.__proto__ || Object.getPrototypeOf(ModalPortal)).call(this, props));\n\n _this.setOverlayRef = function (overlay) {\n _this.overlay = overlay;\n _this.props.overlayRef && _this.props.overlayRef(overlay);\n };\n\n _this.setContentRef = function (content) {\n _this.content = content;\n _this.props.contentRef && _this.props.contentRef(content);\n };\n\n _this.afterClose = function () {\n var _this$props = _this.props,\n appElement = _this$props.appElement,\n ariaHideApp = _this$props.ariaHideApp,\n htmlOpenClassName = _this$props.htmlOpenClassName,\n bodyOpenClassName = _this$props.bodyOpenClassName; // Remove classes.\n\n bodyOpenClassName && classList.remove(document.body, bodyOpenClassName);\n htmlOpenClassName && classList.remove(document.getElementsByTagName(\"html\")[0], htmlOpenClassName); // Reset aria-hidden attribute if all modals have been removed\n\n if (ariaHideApp && ariaHiddenInstances > 0) {\n ariaHiddenInstances -= 1;\n\n if (ariaHiddenInstances === 0) {\n ariaAppHider.show(appElement);\n }\n }\n\n if (_this.props.shouldFocusAfterRender) {\n if (_this.props.shouldReturnFocusAfterClose) {\n focusManager.returnFocus();\n focusManager.teardownScopedFocus();\n } else {\n focusManager.popWithoutFocus();\n }\n }\n\n if (_this.props.onAfterClose) {\n _this.props.onAfterClose();\n }\n };\n\n _this.open = function () {\n _this.beforeOpen();\n\n if (_this.state.afterOpen && _this.state.beforeClose) {\n clearTimeout(_this.closeTimer);\n\n _this.setState({\n beforeClose: false\n });\n } else {\n if (_this.props.shouldFocusAfterRender) {\n focusManager.setupScopedFocus(_this.node);\n focusManager.markForFocusLater();\n }\n\n _this.setState({\n isOpen: true\n }, function () {\n _this.setState({\n afterOpen: true\n });\n\n if (_this.props.isOpen && _this.props.onAfterOpen) {\n _this.props.onAfterOpen({\n overlayEl: _this.overlay,\n contentEl: _this.content\n });\n }\n });\n }\n };\n\n _this.close = function () {\n if (_this.props.closeTimeoutMS > 0) {\n _this.closeWithTimeout();\n } else {\n _this.closeWithoutTimeout();\n }\n };\n\n _this.focusContent = function () {\n return _this.content && !_this.contentHasFocus() && _this.content.focus();\n };\n\n _this.closeWithTimeout = function () {\n var closesAt = Date.now() + _this.props.closeTimeoutMS;\n\n _this.setState({\n beforeClose: true,\n closesAt: closesAt\n }, function () {\n _this.closeTimer = setTimeout(_this.closeWithoutTimeout, _this.state.closesAt - Date.now());\n });\n };\n\n _this.closeWithoutTimeout = function () {\n _this.setState({\n beforeClose: false,\n isOpen: false,\n afterOpen: false,\n closesAt: null\n }, _this.afterClose);\n };\n\n _this.handleKeyDown = function (event) {\n if (event.keyCode === TAB_KEY) {\n (0, _scopeTab2.default)(_this.content, event);\n }\n\n if (_this.props.shouldCloseOnEsc && event.keyCode === ESC_KEY) {\n event.stopPropagation();\n\n _this.requestClose(event);\n }\n };\n\n _this.handleOverlayOnClick = function (event) {\n if (_this.shouldClose === null) {\n _this.shouldClose = true;\n }\n\n if (_this.shouldClose && _this.props.shouldCloseOnOverlayClick) {\n if (_this.ownerHandlesClose()) {\n _this.requestClose(event);\n } else {\n _this.focusContent();\n }\n }\n\n _this.shouldClose = null;\n };\n\n _this.handleContentOnMouseUp = function () {\n _this.shouldClose = false;\n };\n\n _this.handleOverlayOnMouseDown = function (event) {\n if (!_this.props.shouldCloseOnOverlayClick && event.target == _this.overlay) {\n event.preventDefault();\n }\n };\n\n _this.handleContentOnClick = function () {\n _this.shouldClose = false;\n };\n\n _this.handleContentOnMouseDown = function () {\n _this.shouldClose = false;\n };\n\n _this.requestClose = function (event) {\n return _this.ownerHandlesClose() && _this.props.onRequestClose(event);\n };\n\n _this.ownerHandlesClose = function () {\n return _this.props.onRequestClose;\n };\n\n _this.shouldBeClosed = function () {\n return !_this.state.isOpen && !_this.state.beforeClose;\n };\n\n _this.contentHasFocus = function () {\n return document.activeElement === _this.content || _this.content.contains(document.activeElement);\n };\n\n _this.buildClassName = function (which, additional) {\n var classNames = (typeof additional === \"undefined\" ? \"undefined\" : _typeof(additional)) === \"object\" ? additional : {\n base: CLASS_NAMES[which],\n afterOpen: CLASS_NAMES[which] + \"--after-open\",\n beforeClose: CLASS_NAMES[which] + \"--before-close\"\n };\n var className = classNames.base;\n\n if (_this.state.afterOpen) {\n className = className + \" \" + classNames.afterOpen;\n }\n\n if (_this.state.beforeClose) {\n className = className + \" \" + classNames.beforeClose;\n }\n\n return typeof additional === \"string\" && additional ? className + \" \" + additional : className;\n };\n\n _this.attributesFromObject = function (prefix, items) {\n return Object.keys(items).reduce(function (acc, name) {\n acc[prefix + \"-\" + name] = items[name];\n return acc;\n }, {});\n };\n\n _this.state = {\n afterOpen: false,\n beforeClose: false\n };\n _this.shouldClose = null;\n _this.moveFromContentToOverlay = null;\n return _this;\n }\n\n _createClass(ModalPortal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (this.props.isOpen) {\n this.open();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n if (process.env.NODE_ENV !== \"production\") {\n if (prevProps.bodyOpenClassName !== this.props.bodyOpenClassName) {\n // eslint-disable-next-line no-console\n console.warn('React-Modal: \"bodyOpenClassName\" prop has been modified. ' + \"This may cause unexpected behavior when multiple modals are open.\");\n }\n\n if (prevProps.htmlOpenClassName !== this.props.htmlOpenClassName) {\n // eslint-disable-next-line no-console\n console.warn('React-Modal: \"htmlOpenClassName\" prop has been modified. ' + \"This may cause unexpected behavior when multiple modals are open.\");\n }\n }\n\n if (this.props.isOpen && !prevProps.isOpen) {\n this.open();\n } else if (!this.props.isOpen && prevProps.isOpen) {\n this.close();\n } // Focus only needs to be set once when the modal is being opened\n\n\n if (this.props.shouldFocusAfterRender && this.state.isOpen && !prevState.isOpen) {\n this.focusContent();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.state.isOpen) {\n this.afterClose();\n }\n\n clearTimeout(this.closeTimer);\n }\n }, {\n key: \"beforeOpen\",\n value: function beforeOpen() {\n var _props = this.props,\n appElement = _props.appElement,\n ariaHideApp = _props.ariaHideApp,\n htmlOpenClassName = _props.htmlOpenClassName,\n bodyOpenClassName = _props.bodyOpenClassName; // Add classes.\n\n bodyOpenClassName && classList.add(document.body, bodyOpenClassName);\n htmlOpenClassName && classList.add(document.getElementsByTagName(\"html\")[0], htmlOpenClassName);\n\n if (ariaHideApp) {\n ariaHiddenInstances += 1;\n ariaAppHider.hide(appElement);\n }\n } // Don't steal focus from inner elements\n\n }, {\n key: \"render\",\n value: function render() {\n var _props2 = this.props,\n id = _props2.id,\n className = _props2.className,\n overlayClassName = _props2.overlayClassName,\n defaultStyles = _props2.defaultStyles;\n var contentStyles = className ? {} : defaultStyles.content;\n var overlayStyles = overlayClassName ? {} : defaultStyles.overlay;\n return this.shouldBeClosed() ? null : _react2.default.createElement(\"div\", {\n ref: this.setOverlayRef,\n className: this.buildClassName(\"overlay\", overlayClassName),\n style: _extends({}, overlayStyles, this.props.style.overlay),\n onClick: this.handleOverlayOnClick,\n onMouseDown: this.handleOverlayOnMouseDown\n }, _react2.default.createElement(\"div\", _extends({\n id: id,\n ref: this.setContentRef,\n style: _extends({}, contentStyles, this.props.style.content),\n className: this.buildClassName(\"content\", className),\n tabIndex: \"-1\",\n onKeyDown: this.handleKeyDown,\n onMouseDown: this.handleContentOnMouseDown,\n onMouseUp: this.handleContentOnMouseUp,\n onClick: this.handleContentOnClick,\n role: this.props.role,\n \"aria-label\": this.props.contentLabel\n }, this.attributesFromObject(\"aria\", this.props.aria || {}), this.attributesFromObject(\"data\", this.props.data || {}), {\n \"data-testid\": this.props.testId\n }), this.props.children));\n }\n }]);\n\n return ModalPortal;\n}(_react.Component);\n\nModalPortal.defaultProps = {\n style: {\n overlay: {},\n content: {}\n },\n defaultStyles: {}\n};\nModalPortal.propTypes = {\n isOpen: _propTypes2.default.bool.isRequired,\n defaultStyles: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n style: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n overlayClassName: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n bodyOpenClassName: _propTypes2.default.string,\n htmlOpenClassName: _propTypes2.default.string,\n ariaHideApp: _propTypes2.default.bool,\n appElement: _propTypes2.default.instanceOf(_safeHTMLElement2.default),\n onAfterOpen: _propTypes2.default.func,\n onAfterClose: _propTypes2.default.func,\n onRequestClose: _propTypes2.default.func,\n closeTimeoutMS: _propTypes2.default.number,\n shouldFocusAfterRender: _propTypes2.default.bool,\n shouldCloseOnOverlayClick: _propTypes2.default.bool,\n shouldReturnFocusAfterClose: _propTypes2.default.bool,\n role: _propTypes2.default.string,\n contentLabel: _propTypes2.default.string,\n aria: _propTypes2.default.object,\n data: _propTypes2.default.object,\n children: _propTypes2.default.node,\n shouldCloseOnEsc: _propTypes2.default.bool,\n overlayRef: _propTypes2.default.func,\n contentRef: _propTypes2.default.func,\n id: _propTypes2.default.string,\n testId: _propTypes2.default.string\n};\nexports.default = ModalPortal;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.handleBlur = handleBlur;\nexports.handleFocus = handleFocus;\nexports.markForFocusLater = markForFocusLater;\nexports.returnFocus = returnFocus;\nexports.popWithoutFocus = popWithoutFocus;\nexports.setupScopedFocus = setupScopedFocus;\nexports.teardownScopedFocus = teardownScopedFocus;\n\nvar _tabbable = require(\"../helpers/tabbable\");\n\nvar _tabbable2 = _interopRequireDefault(_tabbable);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nvar focusLaterElements = [];\nvar modalElement = null;\nvar needToFocus = false;\n\nfunction handleBlur() {\n needToFocus = true;\n}\n\nfunction handleFocus() {\n if (needToFocus) {\n needToFocus = false;\n\n if (!modalElement) {\n return;\n } // need to see how jQuery shims document.on('focusin') so we don't need the\n // setTimeout, firefox doesn't support focusin, if it did, we could focus\n // the element outside of a setTimeout. Side-effect of this implementation\n // is that the document.body gets focus, and then we focus our element right\n // after, seems fine.\n\n\n setTimeout(function () {\n if (modalElement.contains(document.activeElement)) {\n return;\n }\n\n var el = (0, _tabbable2.default)(modalElement)[0] || modalElement;\n el.focus();\n }, 0);\n }\n}\n\nfunction markForFocusLater() {\n focusLaterElements.push(document.activeElement);\n}\n/* eslint-disable no-console */\n\n\nfunction returnFocus() {\n var toFocus = null;\n\n try {\n if (focusLaterElements.length !== 0) {\n toFocus = focusLaterElements.pop();\n toFocus.focus();\n }\n\n return;\n } catch (e) {\n console.warn([\"You tried to return focus to\", toFocus, \"but it is not in the DOM anymore\"].join(\" \"));\n }\n}\n/* eslint-enable no-console */\n\n\nfunction popWithoutFocus() {\n focusLaterElements.length > 0 && focusLaterElements.pop();\n}\n\nfunction setupScopedFocus(element) {\n modalElement = element;\n\n if (window.addEventListener) {\n window.addEventListener(\"blur\", handleBlur, false);\n document.addEventListener(\"focus\", handleFocus, true);\n } else {\n window.attachEvent(\"onBlur\", handleBlur);\n document.attachEvent(\"onFocus\", handleFocus);\n }\n}\n\nfunction teardownScopedFocus() {\n modalElement = null;\n\n if (window.addEventListener) {\n window.removeEventListener(\"blur\", handleBlur);\n document.removeEventListener(\"focus\", handleFocus);\n } else {\n window.detachEvent(\"onBlur\", handleBlur);\n document.detachEvent(\"onFocus\", handleFocus);\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = scopeTab;\n\nvar _tabbable = require(\"./tabbable\");\n\nvar _tabbable2 = _interopRequireDefault(_tabbable);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction scopeTab(node, event) {\n var tabbable = (0, _tabbable2.default)(node);\n\n if (!tabbable.length) {\n // Do nothing, since there are no elements that can receive focus.\n event.preventDefault();\n return;\n }\n\n var shiftKey = event.shiftKey;\n var head = tabbable[0];\n var tail = tabbable[tabbable.length - 1]; // proceed with default browser behavior on tab.\n // Focus on last element on shift + tab.\n\n if (node === document.activeElement) {\n if (!shiftKey) return;\n target = tail;\n }\n\n var target;\n\n if (tail === document.activeElement && !shiftKey) {\n target = head;\n }\n\n if (head === document.activeElement && shiftKey) {\n target = tail;\n }\n\n if (target) {\n event.preventDefault();\n target.focus();\n return;\n } // Safari radio issue.\n //\n // Safari does not move the focus to the radio button,\n // so we need to force it to really walk through all elements.\n //\n // This is very error prone, since we are trying to guess\n // if it is a safari browser from the first occurence between\n // chrome or safari.\n //\n // The chrome user agent contains the first ocurrence\n // as the 'chrome/version' and later the 'safari/version'.\n\n\n var checkSafari = /(\\bChrome\\b|\\bSafari\\b)\\//.exec(navigator.userAgent);\n var isSafariDesktop = checkSafari != null && checkSafari[1] != \"Chrome\" && /\\biPod\\b|\\biPad\\b/g.exec(navigator.userAgent) == null; // If we are not in safari desktop, let the browser control\n // the focus\n\n if (!isSafariDesktop) return;\n var x = tabbable.indexOf(document.activeElement);\n\n if (x > -1) {\n x += shiftKey ? -1 : 1;\n } // If the tabbable element does not exist,\n // focus head/tail based on shiftKey\n\n\n if (typeof tabbable[x] === \"undefined\") {\n event.preventDefault();\n target = shiftKey ? tail : head;\n target.focus();\n return;\n }\n\n event.preventDefault();\n tabbable[x].focus();\n}\n\nmodule.exports = exports[\"default\"];","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function warning() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;","/*!\n Copyright (c) 2015 Jed Watson.\n Based on code that is Copyright 2013-2015, Facebook, Inc.\n All rights reserved.\n*/\n\n/* global define */\n(function () {\n 'use strict';\n\n var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n var ExecutionEnvironment = {\n canUseDOM: canUseDOM,\n canUseWorkers: typeof Worker !== 'undefined',\n canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent),\n canUseViewport: canUseDOM && !!window.screen\n };\n\n if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n define(function () {\n return ExecutionEnvironment;\n });\n } else if (typeof module !== 'undefined' && module.exports) {\n module.exports = ExecutionEnvironment;\n } else {\n window.ExecutionEnvironment = ExecutionEnvironment;\n }\n})();","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.dumpClassLists = dumpClassLists;\nvar htmlClassList = {};\nvar docBodyClassList = {};\n\nfunction dumpClassLists() {\n if (process.env.NODE_ENV !== \"production\") {\n var classes = document.getElementsByTagName(\"html\")[0].className;\n var buffer = \"Show tracked classes:\\n\\n\";\n buffer += \" (\" + classes + \"):\\n\";\n\n for (var x in htmlClassList) {\n buffer += \" \" + x + \" \" + htmlClassList[x] + \"\\n\";\n }\n\n classes = document.body.className; // eslint-disable-next-line max-len\n\n buffer += \"\\n\\ndoc.body (\" + classes + \"):\\n\";\n\n for (var _x in docBodyClassList) {\n buffer += \" \" + _x + \" \" + docBodyClassList[_x] + \"\\n\";\n }\n\n buffer += \"\\n\"; // eslint-disable-next-line no-console\n\n console.log(buffer);\n }\n}\n/**\n * Track the number of reference of a class.\n * @param {object} poll The poll to receive the reference.\n * @param {string} className The class name.\n * @return {string}\n */\n\n\nvar incrementReference = function incrementReference(poll, className) {\n if (!poll[className]) {\n poll[className] = 0;\n }\n\n poll[className] += 1;\n return className;\n};\n/**\n * Drop the reference of a class.\n * @param {object} poll The poll to receive the reference.\n * @param {string} className The class name.\n * @return {string}\n */\n\n\nvar decrementReference = function decrementReference(poll, className) {\n if (poll[className]) {\n poll[className] -= 1;\n }\n\n return className;\n};\n/**\n * Track a class and add to the given class list.\n * @param {Object} classListRef A class list of an element.\n * @param {Object} poll The poll to be used.\n * @param {Array} classes The list of classes to be tracked.\n */\n\n\nvar trackClass = function trackClass(classListRef, poll, classes) {\n classes.forEach(function (className) {\n incrementReference(poll, className);\n classListRef.add(className);\n });\n};\n/**\n * Untrack a class and remove from the given class list if the reference\n * reaches 0.\n * @param {Object} classListRef A class list of an element.\n * @param {Object} poll The poll to be used.\n * @param {Array} classes The list of classes to be untracked.\n */\n\n\nvar untrackClass = function untrackClass(classListRef, poll, classes) {\n classes.forEach(function (className) {\n decrementReference(poll, className);\n poll[className] === 0 && classListRef.remove(className);\n });\n};\n/**\n * Public inferface to add classes to the document.body.\n * @param {string} bodyClass The class string to be added.\n * It may contain more then one class\n * with ' ' as separator.\n */\n\n\nvar add = exports.add = function add(element, classString) {\n return trackClass(element.classList, element.nodeName.toLowerCase() == \"html\" ? htmlClassList : docBodyClassList, classString.split(\" \"));\n};\n/**\n * Public inferface to remove classes from the document.body.\n * @param {string} bodyClass The class string to be added.\n * It may contain more then one class\n * with ' ' as separator.\n */\n\n\nvar remove = exports.remove = function remove(element, classString) {\n return untrackClass(element.classList, element.nodeName.toLowerCase() == \"html\" ? htmlClassList : docBodyClassList, classString.split(\" \"));\n};","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n } // Binding \"this\" is important for shallow renderer support.\n\n\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(prevProps, prevState);\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n} // React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\n\n\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (typeof Component.getDerivedStateFromProps !== 'function' && typeof prototype.getSnapshotBeforeUpdate !== 'function') {\n return Component;\n } // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n\n\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n\n if (foundWillMountName !== null || foundWillReceivePropsName !== null || foundWillUpdateName !== null) {\n var componentName = Component.displayName || Component.name;\n var newApiName = typeof Component.getDerivedStateFromProps === 'function' ? 'getDerivedStateFromProps()' : 'getSnapshotBeforeUpdate()';\n throw Error('Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' + componentName + ' uses ' + newApiName + ' but also contains the following legacy lifecycles:' + (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') + (foundWillReceivePropsName !== null ? '\\n ' + foundWillReceivePropsName : '') + (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') + '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' + 'https://fb.me/react-async-component-lifecycle-hooks');\n } // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n\n\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n } // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n\n\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error('Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype');\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(prevProps, prevState, maybeSnapshot) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag ? this.__reactInternalSnapshot : maybeSnapshot;\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };","\"use strict\";\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar HistoryChooser_1 = require(\"./HistoryChooser\");\n\nvar styled_1 = require(\"../../styled\");\n\nvar SearchBox_1 = require(\"../Playground/DocExplorer/SearchBox\");\n\nexports.default = function (props) {\n return React.createElement(HistoryHeader, null, React.createElement(HistoryChooser_1.default, {\n onSelectFilter: props.onSelectFilter,\n selectedFilter: props.selectedFilter\n }), React.createElement(SearchBox_1.default, {\n placeholder: \"Search the history...\",\n onSearch: props.onSearch,\n clean: true\n }));\n};\n\nvar HistoryHeader = styled_1.styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n padding: 16px;\\n background: \", \";\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n padding: 16px;\\n background: \", \";\\n\"])), function (p) {\n return p.theme.colours.black02;\n});\nvar templateObject_1;","\"use strict\";\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar styled_1 = require(\"../../styled\");\n\nvar Icons_1 = require(\"../Icons\");\n/* tslint:disable */\n\n\nvar HistoryChooser = function HistoryChooser(_a) {\n var selectedFilter = _a.selectedFilter,\n onSelectFilter = _a.onSelectFilter,\n theme = _a.theme;\n return React.createElement(Chooser, null, React.createElement(Filter, {\n active: selectedFilter === 'HISTORY',\n onClick: function onClick() {\n return onSelectFilter('HISTORY');\n }\n }, React.createElement(Icons_1.History, {\n color: selectedFilter === 'HISTORY' ? theme.colours.white : theme.colours.black30,\n strokeWidth: 3,\n width: 25,\n height: 25\n }), React.createElement(FilterText, null, \"History\")), React.createElement(Filter, {\n active: selectedFilter === 'STARRED',\n onClick: function onClick() {\n return onSelectFilter('STARRED');\n }\n }, React.createElement(Icons_1.Star, {\n color: selectedFilter === 'STARRED' ? theme.colours.white : theme.colours.black30,\n width: 16,\n height: 16\n }), React.createElement(FilterText, null, \"Starred\")));\n};\n\nexports.default = styled_1.withTheme(HistoryChooser);\nvar Chooser = styled_1.styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n\"], [\"\\n display: flex;\\n align-items: center;\\n\"])));\nvar Filter = styled_1.styled('div')(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n box-sizing: content-box;\\n height: 24px;\\n z-index: \", \";\\n display: flex;\\n align-items: center;\\n margin: 0 -2px;\\n padding: \", \";\\n background: \", \";\\n\\n color: \", \";\\n font-size: 14px;\\n font-weight: 600;\\n text-transform: uppercase;\\n border-radius: 2px;\\n cursor: pointer;\\n\"], [\"\\n box-sizing: content-box;\\n height: 24px;\\n z-index: \", \";\\n display: flex;\\n align-items: center;\\n margin: 0 -2px;\\n padding: \", \";\\n background: \", \";\\n\\n color: \", \";\\n font-size: 14px;\\n font-weight: 600;\\n text-transform: uppercase;\\n border-radius: 2px;\\n cursor: pointer;\\n\"])), function (p) {\n return p.active ? 2 : 0;\n}, function (p) {\n return p.active ? '7px 9px 8px 9px' : '5px 13px 6px 13px';\n}, function (p) {\n return p.active ? p.theme.colours.green : p.theme.colours.black07;\n}, function (p) {\n return p.active ? p.theme.colours.white : p.theme.colours.black30;\n});\nvar FilterText = styled_1.styled.p(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n margin-left: 6px;\\n\"], [\"\\n margin-left: 6px;\\n\"])));\nvar templateObject_1, templateObject_2, templateObject_3;","\"use strict\";\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar Icons_1 = require(\"../Icons\");\n\nvar styled_1 = require(\"../../styled\");\n/* tslint:disable */\n\n\nexports.default = styled_1.withTheme(function (_a) {\n var items = _a.items,\n onItemSelect = _a.onItemSelect,\n selectedItemIndex = _a.selectedItemIndex,\n onItemStarToggled = _a.onItemStarToggled,\n theme = _a.theme;\n return React.createElement(HistoryItems, null, items.map(function (item, index) {\n return React.createElement(HistoryItem, {\n key: item.id,\n active: selectedItemIndex === index,\n onClick: function onClick() {\n return onItemSelect(index);\n }\n }, React.createElement(OperationSide, null, React.createElement(Icons_1.Star, {\n onClick: function onClick() {\n return onItemStarToggled(item.id);\n },\n stroke: !item.starred ? 'rgb(221,171,0)' : undefined,\n fill: item.starred ? 'rgb(221,171,0)' : undefined,\n strokeWidth: 0.5,\n width: 25,\n height: 25\n }), React.createElement(Operation, null, React.createElement(OperationText, null, item.operationName || item.queryTypes.firstOperationName || 'New Session'), item.queryTypes.query && React.createElement(QueryIcon, null, \"Q\"), item.queryTypes.mutation && React.createElement(MutationIcon, null, \"M\"), item.queryTypes.subscription && React.createElement(SubscriptionIcon, null, \"S\"))), React.createElement(OperationSide, null, item.date && React.createElement(Time, null, typeof item.date.getMonth === 'function' && item.date.getMonth() + 1, \"/\", item.date.getDate(), \"/\", item.date.getFullYear().toString().slice(2, 4))));\n }).toArray().map(function (x) {\n return x[1];\n }));\n});\nvar HistoryItems = styled_1.styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n overflow-y: scroll;\\n max-height: calc(100vh - 121px);\\n\"], [\"\\n overflow-y: scroll;\\n max-height: calc(100vh - 121px);\\n\"])));\nvar HistoryItem = styled_1.styled('div')(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n padding: 25px 20px;\\n cursor: pointer;\\n border-bottom: 1px solid;\\n border-color: \", \";\\n background: \", \";\\n\"], [\"\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n padding: 25px 20px;\\n cursor: pointer;\\n border-bottom: 1px solid;\\n border-color: \", \";\\n background: \", \";\\n\"])), function (p) {\n return p.theme.colours.black10;\n}, function (p) {\n return p.active ? p.theme.colours.black04 : p.theme.colours.white;\n});\nvar Operation = styled_1.styled.div(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n margin-left: 20px;\\n\"], [\"\\n display: flex;\\n align-items: center;\\n margin-left: 20px;\\n\"])));\nvar OperationSide = styled_1.styled.div(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n\"], [\"\\n display: flex;\\n align-items: center;\\n\"])));\nvar OperationText = styled_1.styled.p(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n font-weight: 300;\\n font-size: 20px;\\n margin-right: 16px;\\n\"], [\"\\n font-weight: 300;\\n font-size: 20px;\\n margin-right: 16px;\\n\"])));\nvar OperationIcon = styled_1.styled.div(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n height: 21px;\\n width: 21px;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n margin-right: 4px;\\n border-radius: 2px;\\n font-weight: 700;\\n font-size: 12px;\\n color: \", \";\\n\"], [\"\\n height: 21px;\\n width: 21px;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n margin-right: 4px;\\n border-radius: 2px;\\n font-weight: 700;\\n font-size: 12px;\\n color: \", \";\\n\"])), function (p) {\n return p.theme.colours.white;\n});\nvar QueryIcon = styled_1.styled(OperationIcon)(templateObject_7 || (templateObject_7 = __makeTemplateObject([\"\\n background: \", \";\\n\"], [\"\\n background: \", \";\\n\"])), function (p) {\n return p.theme.colours.blue;\n});\nvar MutationIcon = styled_1.styled(OperationIcon)(templateObject_8 || (templateObject_8 = __makeTemplateObject([\"\\n background: \", \";\\n\"], [\"\\n background: \", \";\\n\"])), function (p) {\n return p.theme.colours.orange;\n});\nvar SubscriptionIcon = styled_1.styled(OperationIcon)(templateObject_9 || (templateObject_9 = __makeTemplateObject([\"\\n background: \", \";\\n\"], [\"\\n background: \", \";\\n\"])), function (p) {\n return p.theme.colours.purple;\n});\nvar Time = styled_1.styled.time(templateObject_10 || (templateObject_10 = __makeTemplateObject([\"\\n color: \", \";\\n font-size: 14px;\\n margin-left: 16px;\\n\"], [\"\\n color: \", \";\\n font-size: 14px;\\n margin-left: 16px;\\n\"])), function (p) {\n return p.theme.colours.black40;\n});\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10;","\"use strict\";\n\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar Icons_1 = require(\"./Icons\");\n\nvar styled_1 = require(\"../styled\");\n\nvar actions_1 = require(\"../state/sessions/actions\");\n\nvar react_redux_1 = require(\"react-redux\");\n\nvar Settings =\n/** @class */\nfunction (_super) {\n __extends(Settings, _super);\n\n function Settings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Settings.prototype.render = function () {\n return React.createElement(Wrapper, null, React.createElement(IconWrapper, null, React.createElement(Icons_1.SettingsIcon, {\n width: 23,\n height: 23,\n onClick: this.props.onClick,\n title: \"Settings\"\n })));\n };\n\n return Settings;\n}(React.Component);\n\nexports.default = react_redux_1.connect(null, {\n onClick: actions_1.openSettingsTab\n})(Settings);\nvar Wrapper = styled_1.styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n position: absolute;\\n z-index: 1005;\\n right: 20px;\\n top: 17px;\\n\"], [\"\\n position: absolute;\\n z-index: 1005;\\n right: 20px;\\n top: 17px;\\n\"])));\nvar IconWrapper = styled_1.styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n position: relative;\\n cursor: pointer;\\n\\n svg {\\n fill: \", \";\\n transition: 0.1s linear fill;\\n }\\n\\n &:hover {\\n svg {\\n fill: \", \";\\n }\\n }\\n\"], [\"\\n position: relative;\\n cursor: pointer;\\n\\n svg {\\n fill: \", \";\\n transition: 0.1s linear fill;\\n }\\n\\n &:hover {\\n svg {\\n fill: \", \";\\n }\\n }\\n\"])), function (p) {\n return p.theme.editorColours.icon;\n}, function (p) {\n return p.theme.editorColours.iconHover;\n});\nvar templateObject_1, templateObject_2;","\"use strict\";\n\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar styled_1 = require(\"../styled\");\n\nvar TopBar_1 = require(\"./Playground/TopBar/TopBar\");\n\nvar ConfigEditor_1 = require(\"./Playground/ConfigEditor\");\n\nvar react_redux_1 = require(\"react-redux\");\n\nvar reselect_1 = require(\"reselect\");\n\nvar selectors_1 = require(\"../state/general/selectors\");\n\nvar actions_1 = require(\"../state/general/actions\");\n\nvar actions_2 = require(\"../state/sessions/actions\");\n\nvar reducers_1 = require(\"../state/workspace/reducers\");\n\nvar EditorWrapper_1 = require(\"./Playground/EditorWrapper\"); // TODO: Trigger onSave on CMD+S or CTRL+S\n\n\nvar SettingsEditor =\n/** @class */\nfunction (_super) {\n __extends(SettingsEditor, _super);\n\n function SettingsEditor() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.handleKeydown = function (e) {\n if (e.key === 's' && e.metaKey) {\n e.preventDefault();\n\n _this.props.onSave();\n }\n };\n\n return _this;\n }\n\n SettingsEditor.prototype.componentDidMount = function () {\n window.addEventListener('keydown', this.handleKeydown, true);\n };\n\n SettingsEditor.prototype.render = function () {\n var isConfig = this.props.isConfig;\n return React.createElement(EditorWrapper_1.Container, null, React.createElement(Wrapper, null, React.createElement(EditorWrapper_1.default, null, React.createElement(ConfigEditor_1.ConfigEditor, {\n value: this.props.value,\n onEdit: this.props.onChange,\n onRunQuery: this.props.onSave,\n isYaml: this.props.isYaml,\n readOnly: this.props.readOnly\n }), React.createElement(PlaygroundVersion, null, window.version)), !this.props.readOnly && React.createElement(ButtonWrapper, null, React.createElement(TopBar_1.Button, {\n onClick: this.props.onSave\n }, \"Save \", isConfig ? \"Config\" : \"Settings\"))));\n };\n\n return SettingsEditor;\n}(React.Component);\n\nexports.SettingsEditor = SettingsEditor;\nvar playgroundSettingsSelector = reselect_1.createStructuredSelector({\n value: reducers_1.getSettingsString\n}); // tslint:disable\n\nvar SettingsEditorHOC =\n/** @class */\nfunction (_super) {\n __extends(SettingsEditorHOC, _super);\n\n function SettingsEditorHOC(props) {\n var _this = _super.call(this, props) || this;\n\n _this.handleChange = function (value) {\n _this.setState({\n value: value\n });\n\n _this.props.editSettings();\n };\n\n _this.handleSave = function () {\n _this.props.onSave(_this.state.value);\n\n _this.props.saveSettings();\n };\n\n _this.state = {\n value: props.value\n };\n return _this;\n }\n\n SettingsEditorHOC.prototype.componentWillReceiveProps = function (nextProps) {\n if (nextProps.value !== this.props.value) {\n this.setState({\n value: nextProps.value\n });\n }\n };\n\n SettingsEditorHOC.prototype.render = function () {\n return React.createElement(SettingsEditor, {\n value: this.state.value,\n onChange: this.handleChange,\n onSave: this.handleSave\n });\n };\n\n return SettingsEditorHOC;\n}(React.Component);\n\nexports.PlaygroundSettingsEditor = react_redux_1.connect(playgroundSettingsSelector, {\n onSave: actions_1.setSettingsString,\n editSettings: actions_2.editSettings,\n saveSettings: actions_2.saveSettings\n})(SettingsEditorHOC);\nvar configSelector = reselect_1.createStructuredSelector({\n value: selectors_1.getConfigString\n});\nexports.GraphQLConfigEditor = react_redux_1.connect(configSelector, {\n onChange: actions_1.setConfigString\n})(SettingsEditor);\nvar Wrapper = styled_1.styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n background: \", \";\\n position: relative;\\n display: flex;\\n flex-flow: column;\\n flex: 1 1 0;\\n\\n .CodeMirror {\\n background: \", \";\\n .CodeMirror-code {\\n color: rgba(255, 255, 255, 0.7);\\n }\\n .cm-atom {\\n color: rgba(42, 126, 210, 1);\\n }\\n }\\n\"], [\"\\n background: \", \";\\n position: relative;\\n display: flex;\\n flex-flow: column;\\n flex: 1 1 0;\\n\\n .CodeMirror {\\n background: \", \";\\n .CodeMirror-code {\\n color: rgba(255, 255, 255, 0.7);\\n }\\n .cm-atom {\\n color: rgba(42, 126, 210, 1);\\n }\\n }\\n\"])), function (p) {\n return p.theme.editorColours.resultBackground;\n}, function (p) {\n return p.theme.editorColours.resultBackground;\n});\nvar ButtonWrapper = styled_1.styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n position: absolute;\\n top: 16px;\\n right: 16px;\\n z-index: 2;\\n\"], [\"\\n position: absolute;\\n top: 16px;\\n right: 16px;\\n z-index: 2;\\n\"])));\nvar PlaygroundVersion = styled_1.styled.span(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n position: absolute;\\n right: 20px;\\n bottom: 17px;\\n color: \", \";\\n font-weight: 700;\\n margin-right: 14px;\\n\"], [\"\\n position: absolute;\\n right: 20px;\\n bottom: 17px;\\n color: \", \";\\n font-weight: 700;\\n margin-right: 14px;\\n\"])), function (p) {\n return p.theme.editorColours.textInactive;\n});\nvar templateObject_1, templateObject_2, templateObject_3;","\"use strict\";\n\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar EditorWrapper_1 = require(\"./EditorWrapper\");\n\nvar styled_1 = require(\"../../styled\");\n/**\n * The editor to edit json and yaml\n */\n\n\nvar ConfigEditor =\n/** @class */\nfunction (_super) {\n __extends(ConfigEditor, _super);\n\n function ConfigEditor(props) {\n var _this = _super.call(this, props) || this;\n\n _this.setNode = function (node) {\n _this.node = node;\n };\n\n _this.onKeyUp = function (cm, event) {\n var code = event.keyCode;\n\n if (code >= 65 && code <= 90 || // letters\n !event.shiftKey && code >= 48 && code <= 57 || // numbers\n event.shiftKey && code === 189 || // underscore\n event.shiftKey && code === 222 // \"\n ) {\n _this.editor.execCommand('autocomplete');\n }\n };\n\n _this.onEdit = function () {\n if (!_this.ignoreChangeEvent) {\n _this.cachedValue = _this.editor.getValue();\n\n if (_this.props.onEdit) {\n _this.props.onEdit(_this.cachedValue);\n }\n }\n }; // Keep a cached version of the value, this cache will be updated when the\n // editor is updated, which can later be used to protect the editor from\n // unnecessary updates during the update lifecycle.\n\n\n _this.cachedValue = props.value || '';\n return _this;\n }\n\n ConfigEditor.prototype.componentDidMount = function () {\n var _this = this; // Lazily require to ensure requiring GraphiQL outside of a Browser context\n // does not produce an error.\n\n\n var CodeMirror = require('codemirror');\n\n require('codemirror/addon/hint/show-hint');\n\n require('codemirror/addon/edit/matchbrackets');\n\n require('codemirror/addon/edit/closebrackets');\n\n require('codemirror/addon/fold/brace-fold');\n\n require('codemirror/addon/fold/foldgutter');\n\n require('codemirror/addon/lint/lint');\n\n require('codemirror/addon/search/searchcursor');\n\n require('codemirror/addon/search/jump-to-line');\n\n require('codemirror/addon/dialog/dialog');\n\n require('codemirror/keymap/sublime');\n\n require('codemirror/mode/yaml/yaml');\n\n require('codemirror-graphql/variables/hint');\n\n require('codemirror-graphql/variables/lint');\n\n require('codemirror-graphql/variables/mode');\n\n this.editor = CodeMirror(this.node, {\n value: this.props.value || '',\n lineNumbers: true,\n tabSize: 2,\n mode: this.props.isYaml ? 'yaml' : 'graphql-variables',\n theme: this.props.editorTheme || 'graphiql',\n keyMap: 'sublime',\n autoCloseBrackets: true,\n matchBrackets: true,\n showCursorWhenSelecting: true,\n readOnly: this.props.readOnly ? 'nocursor' : false,\n foldGutter: {\n minFoldSize: 4\n },\n gutters: ['CodeMirror-linenumbers', 'CodeMirror-foldgutter'],\n extraKeys: {\n 'Cmd-Space': function CmdSpace() {\n return _this.editor.showHint({\n completeSingle: false\n });\n },\n 'Ctrl-Space': function CtrlSpace() {\n return _this.editor.showHint({\n completeSingle: false\n });\n },\n 'Alt-Space': function AltSpace() {\n return _this.editor.showHint({\n completeSingle: false\n });\n },\n 'Shift-Space': function ShiftSpace() {\n return _this.editor.showHint({\n completeSingle: false\n });\n },\n 'Cmd-Enter': function CmdEnter() {\n if (_this.props.onRunQuery) {\n _this.props.onRunQuery();\n }\n },\n 'Ctrl-Enter': function CtrlEnter() {\n if (_this.props.onRunQuery) {\n _this.props.onRunQuery();\n }\n },\n 'Shift-Ctrl-P': function ShiftCtrlP() {\n if (_this.props.onPrettifyQuery) {\n _this.props.onPrettifyQuery();\n }\n },\n // Persistent search box in Query Editor\n 'Cmd-F': 'findPersistent',\n 'Ctrl-F': 'findPersistent',\n // Editor improvements\n 'Ctrl-Left': 'goSubwordLeft',\n 'Ctrl-Right': 'goSubwordRight',\n 'Alt-Left': 'goGroupLeft',\n 'Alt-Right': 'goGroupRight'\n }\n });\n this.editor.on('change', this.onEdit);\n this.editor.on('keyup', this.onKeyUp);\n };\n\n ConfigEditor.prototype.componentDidUpdate = function (prevProps) {\n // Ensure the changes caused by this update are not interpretted as\n // user-input changes which could otherwise result in an infinite\n // event loop.\n this.ignoreChangeEvent = true;\n\n if (this.props.value !== prevProps.value && this.props.value !== this.cachedValue) {\n this.cachedValue = this.props.value;\n this.editor.setValue(this.props.value);\n }\n\n this.ignoreChangeEvent = false;\n };\n\n ConfigEditor.prototype.componentWillUnmount = function () {\n this.editor.off('change', this.onEdit);\n this.editor.off('keyup', this.onKeyUp);\n this.editor = null;\n };\n\n ConfigEditor.prototype.render = function () {\n return React.createElement(EditorWrapper_1.default, null, React.createElement(Editor, {\n ref: this.setNode\n }));\n };\n /**\n * Public API for retrieving the CodeMirror instance from this\n * React component.\n */\n\n\n ConfigEditor.prototype.getCodeMirror = function () {\n return this.editor;\n };\n /**\n * Public API for retrieving the DOM client height for this component.\n */\n\n\n ConfigEditor.prototype.getClientHeight = function () {\n return this.node && this.node.clientHeight;\n };\n\n return ConfigEditor;\n}(React.Component);\n\nexports.ConfigEditor = ConfigEditor;\nvar Editor = styled_1.styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n flex: 1;\\n height: 100%;\\n position: relative;\\n .CodeMirror-linenumbers {\\n background: \", \";\\n }\\n\"], [\"\\n flex: 1;\\n height: 100%;\\n position: relative;\\n .CodeMirror-linenumbers {\\n background: \", \";\\n }\\n\"])), function (p) {\n return p.theme.editorColours.resultBackground;\n});\nvar templateObject_1;","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n(function (mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);else // Plain browser env\n mod(CodeMirror);\n})(function (CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineMode(\"yaml\", function () {\n var cons = ['true', 'false', 'on', 'off', 'yes', 'no'];\n var keywordRegex = new RegExp(\"\\\\b((\" + cons.join(\")|(\") + \"))$\", 'i');\n return {\n token: function token(stream, state) {\n var ch = stream.peek();\n var esc = state.escaped;\n state.escaped = false;\n /* comments */\n\n if (ch == \"#\" && (stream.pos == 0 || /\\s/.test(stream.string.charAt(stream.pos - 1)))) {\n stream.skipToEnd();\n return \"comment\";\n }\n\n if (stream.match(/^('([^']|\\\\.)*'?|\"([^\"]|\\\\.)*\"?)/)) return \"string\";\n\n if (state.literal && stream.indentation() > state.keyCol) {\n stream.skipToEnd();\n return \"string\";\n } else if (state.literal) {\n state.literal = false;\n }\n\n if (stream.sol()) {\n state.keyCol = 0;\n state.pair = false;\n state.pairStart = false;\n /* document start */\n\n if (stream.match(/---/)) {\n return \"def\";\n }\n /* document end */\n\n\n if (stream.match(/\\.\\.\\./)) {\n return \"def\";\n }\n /* array list item */\n\n\n if (stream.match(/\\s*-\\s+/)) {\n return 'meta';\n }\n }\n /* inline pairs/lists */\n\n\n if (stream.match(/^(\\{|\\}|\\[|\\])/)) {\n if (ch == '{') state.inlinePairs++;else if (ch == '}') state.inlinePairs--;else if (ch == '[') state.inlineList++;else state.inlineList--;\n return 'meta';\n }\n /* list seperator */\n\n\n if (state.inlineList > 0 && !esc && ch == ',') {\n stream.next();\n return 'meta';\n }\n /* pairs seperator */\n\n\n if (state.inlinePairs > 0 && !esc && ch == ',') {\n state.keyCol = 0;\n state.pair = false;\n state.pairStart = false;\n stream.next();\n return 'meta';\n }\n /* start of value of a pair */\n\n\n if (state.pairStart) {\n /* block literals */\n if (stream.match(/^\\s*(\\||\\>)\\s*/)) {\n state.literal = true;\n return 'meta';\n }\n\n ;\n /* references */\n\n if (stream.match(/^\\s*(\\&|\\*)[a-z0-9\\._-]+\\b/i)) {\n return 'variable-2';\n }\n /* numbers */\n\n\n if (state.inlinePairs == 0 && stream.match(/^\\s*-?[0-9\\.\\,]+\\s?$/)) {\n return 'number';\n }\n\n if (state.inlinePairs > 0 && stream.match(/^\\s*-?[0-9\\.\\,]+\\s?(?=(,|}))/)) {\n return 'number';\n }\n /* keywords */\n\n\n if (stream.match(keywordRegex)) {\n return 'keyword';\n }\n }\n /* pairs (associative arrays) -> key */\n\n\n if (!state.pair && stream.match(/^\\s*(?:[,\\[\\]{}&*!|>'\"%@`][^\\s'\":]|[^,\\[\\]{}#&*!|>'\"%@`])[^#]*?(?=\\s*:($|\\s))/)) {\n state.pair = true;\n state.keyCol = stream.indentation();\n return \"atom\";\n }\n\n if (state.pair && stream.match(/^:\\s*/)) {\n state.pairStart = true;\n return 'meta';\n }\n /* nothing found, continue */\n\n\n state.pairStart = false;\n state.escaped = ch == '\\\\';\n stream.next();\n return null;\n },\n startState: function startState() {\n return {\n pair: false,\n pairStart: false,\n keyCol: 0,\n inlinePairs: 0,\n inlineList: 0,\n literal: false,\n escaped: false\n };\n },\n lineComment: \"#\",\n fold: \"indent\"\n };\n });\n CodeMirror.defineMIME(\"text/x-yaml\", \"yaml\");\n CodeMirror.defineMIME(\"text/yaml\", \"yaml\");\n});","\"use strict\";\n\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __makeTemplateObject = undefined && undefined.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar React = require(\"react\");\n\nvar styled_1 = require(\"../styled\");\n\nvar QueryEditor_1 = require(\"./Playground/QueryEditor\");\n\nvar reselect_1 = require(\"reselect\");\n\nvar selectors_1 = require(\"../state/sessions/selectors\");\n\nvar actions_1 = require(\"../state/sessions/actions\");\n\nvar EditorWrapper_1 = require(\"./Playground/EditorWrapper\");\n\nvar react_redux_1 = require(\"react-redux\");\n\nvar FileEditor =\n/** @class */\nfunction (_super) {\n __extends(FileEditor, _super);\n\n function FileEditor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n FileEditor.prototype.render = function () {\n return React.createElement(EditorWrapper_1.Container, null, React.createElement(Wrapper, null, React.createElement(EditorWrapper_1.default, null, React.createElement(QueryWrap, null, React.createElement(QueryEditor_1.QueryEditor, {\n value: this.props.value,\n onChange: this.props.onChange\n })))));\n };\n\n return FileEditor;\n}(React.Component);\n\nvar mapStateToProps = reselect_1.createStructuredSelector({\n value: selectors_1.getFile\n});\nexports.default = react_redux_1.connect(mapStateToProps, {\n onChange: actions_1.editFile\n})(FileEditor);\nvar Wrapper = styled_1.styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n background: \", \";\\n position: relative;\\n .variable-editor {\\n height: 100% !important;\\n }\\n .CodeMirror {\\n background: none !important;\\n .CodeMirror-code {\\n color: rgba(255, 255, 255, 0.7);\\n }\\n .cm-atom {\\n color: rgba(42, 126, 210, 1);\\n }\\n }\\n\"], [\"\\n background: \", \";\\n position: relative;\\n .variable-editor {\\n height: 100% !important;\\n }\\n .CodeMirror {\\n background: none !important;\\n .CodeMirror-code {\\n color: rgba(255, 255, 255, 0.7);\\n }\\n .cm-atom {\\n color: rgba(42, 126, 210, 1);\\n }\\n }\\n\"])), function (p) {\n return p.theme.editorColours.resultBackground;\n});\nvar QueryWrap = styled_1.styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: column;\\n flex: 1;\\n\"], [\"\\n display: flex;\\n flex-direction: column;\\n flex: 1;\\n\"])));\nvar templateObject_1, templateObject_2;","\"use strict\";\n\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : new P(function (resolve) {\n resolve(result.value);\n }).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar __generator = undefined && undefined.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar lodash_1 = require(\"lodash\");\n\nvar fibonacci = lodash_1.memoize(function (num) {\n if (num <= 1) {\n return 1;\n }\n\n return fibonacci(num - 1) + fibonacci(num - 2);\n});\n\nvar Backoff =\n/** @class */\nfunction () {\n function Backoff(cb) {\n var _this = this;\n\n this.count = 1;\n this.running = true;\n this.maxRetries = 20;\n\n this.stop = function () {\n _this.running = false;\n clearTimeout(_this.timeout);\n };\n\n this.cb = cb;\n }\n\n Backoff.prototype.start = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _fn;\n\n var _this = this;\n\n return __generator(this, function (_a) {\n _fn = function fn() {\n return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , this.cb()];\n\n case 1:\n _a.sent();\n\n this.count++; // The first 5 attempts are fast, then fibonacci starts with n = 3\n\n if (this.running && this.count < this.maxRetries) {\n this.timeout = setTimeout(_fn, (this.count < 3 ? 5 : fibonacci(this.count - 5)) * 1000);\n }\n\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n _fn();\n\n return [2\n /*return*/\n ];\n });\n });\n };\n\n return Backoff;\n}();\n\nexports.Backoff = Backoff;","exports.__esModule = true;\nexports.Helmet = undefined;\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactSideEffect = require(\"react-side-effect\");\n\nvar _reactSideEffect2 = _interopRequireDefault(_reactSideEffect);\n\nvar _reactFastCompare = require(\"react-fast-compare\");\n\nvar _reactFastCompare2 = _interopRequireDefault(_reactFastCompare);\n\nvar _HelmetUtils = require(\"./HelmetUtils.js\");\n\nvar _HelmetConstants = require(\"./HelmetConstants.js\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _objectWithoutProperties(obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar Helmet = function Helmet(Component) {\n var _class, _temp;\n\n return _temp = _class = function (_React$Component) {\n _inherits(HelmetWrapper, _React$Component);\n\n function HelmetWrapper() {\n _classCallCheck(this, HelmetWrapper);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !(0, _reactFastCompare2.default)(this.props, nextProps);\n };\n\n HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n\n switch (child.type) {\n case _HelmetConstants.TAG_NAMES.SCRIPT:\n case _HelmetConstants.TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren\n };\n\n case _HelmetConstants.TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren\n };\n }\n\n throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n };\n\n HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n var _extends2;\n\n var child = _ref.child,\n arrayTypeChildren = _ref.arrayTypeChildren,\n newChildProps = _ref.newChildProps,\n nestedChildren = _ref.nestedChildren;\n return _extends({}, arrayTypeChildren, (_extends2 = {}, _extends2[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _extends2));\n };\n\n HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n var _extends3, _extends4;\n\n var child = _ref2.child,\n newProps = _ref2.newProps,\n newChildProps = _ref2.newChildProps,\n nestedChildren = _ref2.nestedChildren;\n\n switch (child.type) {\n case _HelmetConstants.TAG_NAMES.TITLE:\n return _extends({}, newProps, (_extends3 = {}, _extends3[child.type] = nestedChildren, _extends3.titleAttributes = _extends({}, newChildProps), _extends3));\n\n case _HelmetConstants.TAG_NAMES.BODY:\n return _extends({}, newProps, {\n bodyAttributes: _extends({}, newChildProps)\n });\n\n case _HelmetConstants.TAG_NAMES.HTML:\n return _extends({}, newProps, {\n htmlAttributes: _extends({}, newChildProps)\n });\n }\n\n return _extends({}, newProps, (_extends4 = {}, _extends4[child.type] = _extends({}, newChildProps), _extends4));\n };\n\n HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n var newFlattenedProps = _extends({}, newProps);\n\n Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n var _extends5;\n\n newFlattenedProps = _extends({}, newFlattenedProps, (_extends5 = {}, _extends5[arrayChildName] = arrayTypeChildren[arrayChildName], _extends5));\n });\n return newFlattenedProps;\n };\n\n HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!_HelmetConstants.VALID_TAG_NAMES.some(function (name) {\n return child.type === name;\n })) {\n if (typeof child.type === \"function\") {\n return (0, _HelmetUtils.warn)(\"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.\");\n }\n\n return (0, _HelmetUtils.warn)(\"Only elements types \" + _HelmetConstants.VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n }\n\n if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n return typeof nestedChild !== \"string\";\n }))) {\n throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``} ) Refer to our API for more information.\");\n }\n }\n\n return true;\n };\n\n HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n var _this2 = this;\n\n var arrayTypeChildren = {};\n\n _react2.default.Children.forEach(children, function (child) {\n if (!child || !child.props) {\n return;\n }\n\n var _child$props = child.props,\n nestedChildren = _child$props.children,\n childProps = _objectWithoutProperties(_child$props, [\"children\"]);\n\n var newChildProps = (0, _HelmetUtils.convertReactPropstoHtmlAttributes)(childProps);\n\n _this2.warnOnInvalidChildren(child, nestedChildren);\n\n switch (child.type) {\n case _HelmetConstants.TAG_NAMES.LINK:\n case _HelmetConstants.TAG_NAMES.META:\n case _HelmetConstants.TAG_NAMES.NOSCRIPT:\n case _HelmetConstants.TAG_NAMES.SCRIPT:\n case _HelmetConstants.TAG_NAMES.STYLE:\n arrayTypeChildren = _this2.flattenArrayTypeChildren({\n child: child,\n arrayTypeChildren: arrayTypeChildren,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n\n default:\n newProps = _this2.mapObjectTypeChildren({\n child: child,\n newProps: newProps,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n }\n });\n\n newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n return newProps;\n };\n\n HelmetWrapper.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n props = _objectWithoutProperties(_props, [\"children\"]);\n\n var newProps = _extends({}, props);\n\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n\n return _react2.default.createElement(Component, newProps);\n };\n\n _createClass(HelmetWrapper, null, [{\n key: \"canUseDOM\",\n // Component.peek comes from react-side-effect:\n // For testing, you may use a static peek() method available on the returned component.\n // It lets you get the current state without resetting the mounted instance stack.\n // Don’t use it for anything other than testing.\n\n /**\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Object} bodyAttributes: {\"className\": \"root\"}\n * @param {String} defaultTitle: \"Default Title\"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} noscript: [{\"innerHTML\": \" console.log(newState)\"\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n * @param {String} title: \"Title\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {String} titleTemplate: \"MySite.com - %s\"\n */\n set: function set(canUseDOM) {\n Component.canUseDOM = canUseDOM;\n }\n }]);\n\n return HelmetWrapper;\n }(_react2.default.Component), _class.propTypes = {\n base: _propTypes2.default.object,\n bodyAttributes: _propTypes2.default.object,\n children: _propTypes2.default.oneOfType([_propTypes2.default.arrayOf(_propTypes2.default.node), _propTypes2.default.node]),\n defaultTitle: _propTypes2.default.string,\n defer: _propTypes2.default.bool,\n encodeSpecialCharacters: _propTypes2.default.bool,\n htmlAttributes: _propTypes2.default.object,\n link: _propTypes2.default.arrayOf(_propTypes2.default.object),\n meta: _propTypes2.default.arrayOf(_propTypes2.default.object),\n noscript: _propTypes2.default.arrayOf(_propTypes2.default.object),\n onChangeClientState: _propTypes2.default.func,\n script: _propTypes2.default.arrayOf(_propTypes2.default.object),\n style: _propTypes2.default.arrayOf(_propTypes2.default.object),\n title: _propTypes2.default.string,\n titleAttributes: _propTypes2.default.object,\n titleTemplate: _propTypes2.default.string\n }, _class.defaultProps = {\n defer: true,\n encodeSpecialCharacters: true\n }, _class.peek = Component.peek, _class.rewind = function () {\n var mappedState = Component.rewind();\n\n if (!mappedState) {\n // provide fallback if mappedState is undefined\n mappedState = (0, _HelmetUtils.mapStateOnServer)({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: \"\",\n titleAttributes: {}\n });\n }\n\n return mappedState;\n }, _temp;\n};\n\nvar NullComponent = function NullComponent() {\n return null;\n};\n\nvar HelmetSideEffects = (0, _reactSideEffect2.default)(_HelmetUtils.reducePropsToState, _HelmetUtils.handleClientStateChange, _HelmetUtils.mapStateOnServer)(NullComponent);\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\nexports.Helmet = HelmetExport;\nexports.default = HelmetExport;","'use strict';\n\nfunction _interopDefault(ex) {\n return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex;\n}\n\nvar React = require('react');\n\nvar React__default = _interopDefault(React);\n\nvar shallowEqual = _interopDefault(require('shallowequal'));\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n\n if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n }\n\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n\n return function wrap(WrappedComponent) {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n\n var mountedInstances = [];\n var state;\n\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n\n if (SideEffect.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n state = mapStateOnServer(state);\n }\n }\n\n var SideEffect =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(SideEffect, _Component);\n\n function SideEffect() {\n return _Component.apply(this, arguments) || this;\n } // Try to use displayName of wrapped component\n // Expose canUseDOM so tests can monkeypatch it\n\n\n SideEffect.peek = function peek() {\n return state;\n };\n\n SideEffect.rewind = function rewind() {\n if (SideEffect.canUseDOM) {\n throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n }\n\n var recordedState = state;\n state = undefined;\n mountedInstances = [];\n return recordedState;\n };\n\n var _proto = SideEffect.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !shallowEqual(nextProps, this.props);\n };\n\n _proto.componentWillMount = function componentWillMount() {\n mountedInstances.push(this);\n emitChange();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n\n _proto.render = function render() {\n return React__default.createElement(WrappedComponent, this.props);\n };\n\n return SideEffect;\n }(React.Component);\n\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n\n return SideEffect;\n };\n}\n\nmodule.exports = withSideEffect;","//\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB); // Test for A's keys different from B.\n\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || ret === void 0 && valueA !== valueB) {\n return false;\n }\n }\n\n return true;\n};","'use strict';\n\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\nvar hasElementType = typeof Element !== 'undefined';\n\nfunction equal(a, b) {\n // fast-deep-equal index.js 2.0.1\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n var arrA = isArray(a),\n arrB = isArray(b),\n i,\n length,\n key;\n\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length) return false;\n\n for (i = length; i-- !== 0;) {\n if (!equal(a[i], b[i])) return false;\n }\n\n return true;\n }\n\n if (arrA != arrB) return false;\n var dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA != dateB) return false;\n if (dateA && dateB) return a.getTime() == b.getTime();\n var regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA != regexpB) return false;\n if (regexpA && regexpB) return a.toString() == b.toString();\n var keys = keyList(a);\n length = keys.length;\n if (length !== keyList(b).length) return false;\n\n for (i = length; i-- !== 0;) {\n if (!hasProp.call(b, keys[i])) return false;\n } // end fast-deep-equal\n // start react-fast-compare\n // custom handling for DOM elements\n\n\n if (hasElementType && a instanceof Element && b instanceof Element) return a === b; // custom handling for React\n\n for (i = length; i-- !== 0;) {\n key = keys[i];\n\n if (key === '_owner' && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner.\n // _owner contains circular references\n // and is not needed when comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of a react element\n continue;\n } else {\n // all other properties should be traversed as usual\n if (!equal(a[key], b[key])) return false;\n }\n } // end react-fast-compare\n // fast-deep-equal index.js 2.0.1\n\n\n return true;\n }\n\n return a !== a && b !== b;\n} // end fast-deep-equal\n\n\nmodule.exports = function exportedEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (error.message && error.message.match(/stack|recursion/i) || error.number === -2146828260) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('Warning: react-fast-compare does not handle circular references.', error.name, error.message);\n return false;\n } // some other error. we should definitely know about these\n\n\n throw error;\n }\n};","exports.__esModule = true;\nexports.warn = exports.requestAnimationFrame = exports.reducePropsToState = exports.mapStateOnServer = exports.handleClientStateChange = exports.convertReactPropstoHtmlAttributes = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _objectAssign = require(\"object-assign\");\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\nvar _HelmetConstants = require(\"./HelmetConstants.js\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (encode === false) {\n return String(str);\n }\n\n return String(str).replace(/&/g, \"&\").replace(//g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n};\n\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n var innermostTitle = getInnermostProperty(propsList, _HelmetConstants.TAG_NAMES.TITLE);\n var innermostTemplate = getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.TITLE_TEMPLATE);\n\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, function () {\n return innermostTitle;\n });\n }\n\n var innermostDefaultTitle = getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.DEFAULT_TITLE);\n return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n return getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\n\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n return propsList.filter(function (props) {\n return typeof props[tagType] !== \"undefined\";\n }).map(function (props) {\n return props[tagType];\n }).reduce(function (tagAttrs, current) {\n return _extends({}, tagAttrs, current);\n }, {});\n};\n\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n return propsList.filter(function (props) {\n return typeof props[_HelmetConstants.TAG_NAMES.BASE] !== \"undefined\";\n }).map(function (props) {\n return props[_HelmetConstants.TAG_NAMES.BASE];\n }).reverse().reduce(function (innermostBaseTag, tag) {\n if (!innermostBaseTag.length) {\n var keys = Object.keys(tag);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n\n return innermostBaseTag;\n }, []);\n};\n\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n var approvedSeenTags = {};\n return propsList.filter(function (props) {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n\n if (typeof props[tagName] !== \"undefined\") {\n warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n }\n\n return false;\n }).map(function (props) {\n return props[tagName];\n }).reverse().reduce(function (approvedTags, instanceTags) {\n var instanceSeenTags = {};\n instanceTags.filter(function (tag) {\n var primaryAttributeKey = void 0;\n var keys = Object.keys(tag);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase(); // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === _HelmetConstants.TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === _HelmetConstants.TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n } // Special case for innerHTML which doesn't work lowercased\n\n\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || attributeKey === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT || attributeKey === _HelmetConstants.TAG_PROPERTIES.ITEM_PROP)) {\n primaryAttributeKey = attributeKey;\n }\n }\n\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n\n var value = tag[primaryAttributeKey].toLowerCase();\n\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n\n return false;\n }).reverse().forEach(function (tag) {\n return approvedTags.push(tag);\n }); // Update seen tags with tags from this instance\n\n var keys = Object.keys(instanceSeenTags);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var tagUnion = (0, _objectAssign2.default)({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n approvedSeenTags[attributeKey] = tagUnion;\n }\n\n return approvedTags;\n }, []).reverse();\n};\n\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n for (var i = propsList.length - 1; i >= 0; i--) {\n var props = propsList[i];\n\n if (props.hasOwnProperty(property)) {\n return props[property];\n }\n }\n\n return null;\n};\n\nvar reducePropsToState = function reducePropsToState(propsList) {\n return {\n baseTag: getBaseTagFromPropsList([_HelmetConstants.TAG_PROPERTIES.HREF], propsList),\n bodyAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.LINK, [_HelmetConstants.TAG_PROPERTIES.REL, _HelmetConstants.TAG_PROPERTIES.HREF], propsList),\n metaTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.META, [_HelmetConstants.TAG_PROPERTIES.NAME, _HelmetConstants.TAG_PROPERTIES.CHARSET, _HelmetConstants.TAG_PROPERTIES.HTTPEQUIV, _HelmetConstants.TAG_PROPERTIES.PROPERTY, _HelmetConstants.TAG_PROPERTIES.ITEM_PROP], propsList),\n noscriptTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.NOSCRIPT, [_HelmetConstants.TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.SCRIPT, [_HelmetConstants.TAG_PROPERTIES.SRC, _HelmetConstants.TAG_PROPERTIES.INNER_HTML], propsList),\n styleTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.STYLE, [_HelmetConstants.TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.TITLE, propsList)\n };\n};\n\nvar rafPolyfill = function () {\n var clock = Date.now();\n return function (callback) {\n var currentTime = Date.now();\n\n if (currentTime - clock > 16) {\n clock = currentTime;\n callback(currentTime);\n } else {\n setTimeout(function () {\n rafPolyfill(callback);\n }, 0);\n }\n };\n}();\n\nvar cafPolyfill = function cafPolyfill(id) {\n return clearTimeout(id);\n};\n\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\n\nvar warn = function warn(msg) {\n return console && typeof console.warn === \"function\" && console.warn(msg);\n};\n\nvar _helmetCallback = null;\n\nvar handleClientStateChange = function handleClientStateChange(newState) {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(function () {\n commitTagChanges(newState, function () {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\n\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n var baseTag = newState.baseTag,\n bodyAttributes = newState.bodyAttributes,\n htmlAttributes = newState.htmlAttributes,\n linkTags = newState.linkTags,\n metaTags = newState.metaTags,\n noscriptTags = newState.noscriptTags,\n onChangeClientState = newState.onChangeClientState,\n scriptTags = newState.scriptTags,\n styleTags = newState.styleTags,\n title = newState.title,\n titleAttributes = newState.titleAttributes;\n updateAttributes(_HelmetConstants.TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(_HelmetConstants.TAG_NAMES.HTML, htmlAttributes);\n updateTitle(title, titleAttributes);\n var tagUpdates = {\n baseTag: updateTags(_HelmetConstants.TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(_HelmetConstants.TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(_HelmetConstants.TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(_HelmetConstants.TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(_HelmetConstants.TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(_HelmetConstants.TAG_NAMES.STYLE, styleTags)\n };\n var addedTags = {};\n var removedTags = {};\n Object.keys(tagUpdates).forEach(function (tagType) {\n var _tagUpdates$tagType = tagUpdates[tagType],\n newTags = _tagUpdates$tagType.newTags,\n oldTags = _tagUpdates$tagType.oldTags;\n\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n cb && cb();\n onChangeClientState(newState, addedTags, removedTags);\n};\n\nvar flattenArray = function flattenArray(possibleArray) {\n return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\n\nvar updateTitle = function updateTitle(title, attributes) {\n if (typeof title !== \"undefined\" && document.title !== title) {\n document.title = flattenArray(title);\n }\n\n updateAttributes(_HelmetConstants.TAG_NAMES.TITLE, attributes);\n};\n\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n var elementTag = document.getElementsByTagName(tagName)[0];\n\n if (!elementTag) {\n return;\n }\n\n var helmetAttributeString = elementTag.getAttribute(_HelmetConstants.HELMET_ATTRIBUTE);\n var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n var attributesToRemove = [].concat(helmetAttributes);\n var attributeKeys = Object.keys(attributes);\n\n for (var i = 0; i < attributeKeys.length; i++) {\n var attribute = attributeKeys[i];\n var value = attributes[attribute] || \"\";\n\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n\n var indexToSave = attributesToRemove.indexOf(attribute);\n\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n\n for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n elementTag.removeAttribute(attributesToRemove[_i]);\n }\n\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(_HelmetConstants.HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(_HelmetConstants.HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n elementTag.setAttribute(_HelmetConstants.HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n }\n};\n\nvar updateTags = function updateTags(type, tags) {\n var headElement = document.head || document.querySelector(_HelmetConstants.TAG_NAMES.HEAD);\n var tagNodes = headElement.querySelectorAll(type + \"[\" + _HelmetConstants.HELMET_ATTRIBUTE + \"]\");\n var oldTags = Array.prototype.slice.call(tagNodes);\n var newTags = [];\n var indexToDelete = void 0;\n\n if (tags && tags.length) {\n tags.forEach(function (tag) {\n var newElement = document.createElement(type);\n\n for (var attribute in tag) {\n if (tag.hasOwnProperty(attribute)) {\n if (attribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n\n newElement.setAttribute(_HelmetConstants.HELMET_ATTRIBUTE, \"true\"); // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n\n if (oldTags.some(function (existingTag, index) {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n\n oldTags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n newTags.forEach(function (tag) {\n return headElement.appendChild(tag);\n });\n return {\n oldTags: oldTags,\n newTags: newTags\n };\n};\n\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n return Object.keys(attributes).reduce(function (str, key) {\n var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n return str ? str + \" \" + attr : attr;\n }, \"\");\n};\n\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n var attributeString = generateElementAttributesAsString(attributes);\n var flattenedTitle = flattenArray(title);\n return attributeString ? \"<\" + type + \" \" + _HelmetConstants.HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\" : \"<\" + type + \" \" + _HelmetConstants.HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\";\n};\n\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n return tags.reduce(function (str, tag) {\n var attributeHtml = Object.keys(tag).filter(function (attribute) {\n return !(attribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || attribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT);\n }).reduce(function (string, attribute) {\n var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n return string ? string + \" \" + attr : attr;\n }, \"\");\n var tagContent = tag.innerHTML || tag.cssText || \"\";\n var isSelfClosing = _HelmetConstants.SELF_CLOSING_TAGS.indexOf(type) === -1;\n return str + \"<\" + type + \" \" + _HelmetConstants.HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"\");\n }, \"\");\n};\n\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Object.keys(attributes).reduce(function (obj, key) {\n obj[_HelmetConstants.REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n};\n\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Object.keys(props).reduce(function (obj, key) {\n obj[_HelmetConstants.HTML_TAG_MAP[key] || key] = props[key];\n return obj;\n }, initAttributes);\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n var _initProps; // assigning into an array to define toString function on it\n\n\n var initProps = (_initProps = {\n key: title\n }, _initProps[_HelmetConstants.HELMET_ATTRIBUTE] = true, _initProps);\n var props = convertElementAttributestoReactProps(attributes, initProps);\n return [_react2.default.createElement(_HelmetConstants.TAG_NAMES.TITLE, props, title)];\n};\n\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n return tags.map(function (tag, i) {\n var _mappedTag;\n\n var mappedTag = (_mappedTag = {\n key: i\n }, _mappedTag[_HelmetConstants.HELMET_ATTRIBUTE] = true, _mappedTag);\n Object.keys(tag).forEach(function (attribute) {\n var mappedAttribute = _HelmetConstants.REACT_TAG_MAP[attribute] || attribute;\n\n if (mappedAttribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || mappedAttribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT) {\n var content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = {\n __html: content\n };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n return _react2.default.createElement(type, mappedTag);\n });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n switch (type) {\n case _HelmetConstants.TAG_NAMES.TITLE:\n return {\n toComponent: function toComponent() {\n return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n },\n toString: function toString() {\n return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n }\n };\n\n case _HelmetConstants.ATTRIBUTE_NAMES.BODY:\n case _HelmetConstants.ATTRIBUTE_NAMES.HTML:\n return {\n toComponent: function toComponent() {\n return convertElementAttributestoReactProps(tags);\n },\n toString: function toString() {\n return generateElementAttributesAsString(tags);\n }\n };\n\n default:\n return {\n toComponent: function toComponent() {\n return generateTagsAsReactComponent(type, tags);\n },\n toString: function toString() {\n return generateTagsAsString(type, tags, encode);\n }\n };\n }\n};\n\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n var baseTag = _ref.baseTag,\n bodyAttributes = _ref.bodyAttributes,\n encode = _ref.encode,\n htmlAttributes = _ref.htmlAttributes,\n linkTags = _ref.linkTags,\n metaTags = _ref.metaTags,\n noscriptTags = _ref.noscriptTags,\n scriptTags = _ref.scriptTags,\n styleTags = _ref.styleTags,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? \"\" : _ref$title,\n titleAttributes = _ref.titleAttributes;\n return {\n base: getMethodsForTag(_HelmetConstants.TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(_HelmetConstants.ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(_HelmetConstants.ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(_HelmetConstants.TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(_HelmetConstants.TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(_HelmetConstants.TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(_HelmetConstants.TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(_HelmetConstants.TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(_HelmetConstants.TAG_NAMES.TITLE, {\n title: title,\n titleAttributes: titleAttributes\n }, encode)\n };\n};\n\nexports.convertReactPropstoHtmlAttributes = convertReactPropstoHtmlAttributes;\nexports.handleClientStateChange = handleClientStateChange;\nexports.mapStateOnServer = mapStateOnServer;\nexports.reducePropsToState = reducePropsToState;\nexports.requestAnimationFrame = requestAnimationFrame;\nexports.warn = warn;","'use strict';\n\nvar yaml = require('./lib/js-yaml.js');\n\nmodule.exports = yaml;","'use strict';\n\nvar loader = require('./js-yaml/loader');\n\nvar dumper = require('./js-yaml/dumper');\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception'); // Deprecated schema names from JS-YAML 2.0.x\n\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full'); // Deprecated functions from JS-YAML 1.x.x\n\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');","'use strict';\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\n\nvar YAMLException = require('./exception');\n\nvar Mark = require('./mark');\n\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\nfunction _class(obj) {\n return Object.prototype.toString.call(obj);\n}\n\nfunction is_EOL(c) {\n return c === 0x0A\n /* LF */\n || c === 0x0D\n /* CR */\n ;\n}\n\nfunction is_WHITE_SPACE(c) {\n return c === 0x09\n /* Tab */\n || c === 0x20\n /* Space */\n ;\n}\n\nfunction is_WS_OR_EOL(c) {\n return c === 0x09\n /* Tab */\n || c === 0x20\n /* Space */\n || c === 0x0A\n /* LF */\n || c === 0x0D\n /* CR */\n ;\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C\n /* , */\n || c === 0x5B\n /* [ */\n || c === 0x5D\n /* ] */\n || c === 0x7B\n /* { */\n || c === 0x7D\n /* } */\n ;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if (0x30\n /* 0 */\n <= c && c <= 0x39\n /* 9 */\n ) {\n return c - 0x30;\n }\n /*eslint-disable no-bitwise*/\n\n\n lc = c | 0x20;\n\n if (0x61\n /* a */\n <= lc && lc <= 0x66\n /* f */\n ) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78\n /* x */\n ) {\n return 2;\n }\n\n if (c === 0x75\n /* u */\n ) {\n return 4;\n }\n\n if (c === 0x55\n /* U */\n ) {\n return 8;\n }\n\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if (0x30\n /* 0 */\n <= c && c <= 0x39\n /* 9 */\n ) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n /* eslint-disable indent */\n return c === 0x30\n /* 0 */\n ? '\\x00' : c === 0x61\n /* a */\n ? '\\x07' : c === 0x62\n /* b */\n ? '\\x08' : c === 0x74\n /* t */\n ? '\\x09' : c === 0x09\n /* Tab */\n ? '\\x09' : c === 0x6E\n /* n */\n ? '\\x0A' : c === 0x76\n /* v */\n ? '\\x0B' : c === 0x66\n /* f */\n ? '\\x0C' : c === 0x72\n /* r */\n ? '\\x0D' : c === 0x65\n /* e */\n ? '\\x1B' : c === 0x20\n /* Space */\n ? ' ' : c === 0x22\n /* \" */\n ? '\\x22' : c === 0x2F\n /* / */\n ? '/' : c === 0x5C\n /* \\ */\n ? '\\x5C' : c === 0x4E\n /* N */\n ? '\\x85' : c === 0x5F\n /* _ */\n ? '\\xA0' : c === 0x4C\n /* L */\n ? \"\\u2028\" : c === 0x50\n /* P */\n ? \"\\u2029\" : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n } // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n\n\n return String.fromCharCode((c - 0x010000 >> 10) + 0xD800, (c - 0x010000 & 0x03FF) + 0xDC00);\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\n\nvar simpleEscapeMap = new Array(256);\n\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\nfunction State(input, options) {\n this.input = input;\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n this.documents = [];\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n}\n\nfunction generateError(state, message) {\n return new YAMLException(message, new Mark(state.filename, state.input, state.position, state.line, state.position - state.lineStart));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\nvar directiveHandlers = {\n YAML: function handleYamlDirective(state, name, args) {\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = minor < 2;\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n TAG: function handleTagDirective(state, name, args) {\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length; _position < _length; _position += 1) {\n _character = _result.charCodeAt(_position);\n\n if (!(_character === 0x09 || 0x20 <= _character && _character <= 0x10FFFF)) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startPos) {\n var index, quantity; // The output is a plain object here, so keys can only be strings.\n // We need to convert keyNode to a string, but doing so can hang the process\n // (deeply nested arrays that explode exponentially using aliases).\n\n if (Array.isArray(keyNode)) {\n keyNode = Array.prototype.slice.call(keyNode);\n\n for (index = 0, quantity = keyNode.length; index < quantity; index += 1) {\n if (Array.isArray(keyNode[index])) {\n throwError(state, 'nested arrays are not supported inside keys');\n }\n\n if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') {\n keyNode[index] = '[object Object]';\n }\n }\n } // Avoid code execution in load() via toString property\n // (still use its own toString for arrays, timestamps,\n // and whatever user schema extensions happen to have @@toStringTag)\n\n\n if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') {\n keyNode = '[object Object]';\n }\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json && !_hasOwnProperty.call(overridableKeys, keyNode) && _hasOwnProperty.call(_result, keyNode)) {\n state.line = startLine || state.line;\n state.position = startPos || state.position;\n throwError(state, 'duplicated mapping key');\n }\n\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A\n /* LF */\n ) {\n state.position++;\n } else if (ch === 0x0D\n /* CR */\n ) {\n state.position++;\n\n if (state.input.charCodeAt(state.position) === 0x0A\n /* LF */\n ) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23\n /* # */\n ) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A\n /* LF */\n && ch !== 0x0D\n /* CR */\n && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20\n /* Space */\n ) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n ch = state.input.charCodeAt(_position); // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n\n if ((ch === 0x2D\n /* - */\n || ch === 0x2E\n /* . */\n ) && ch === state.input.charCodeAt(_position + 1) && ch === state.input.charCodeAt(_position + 2)) {\n _position += 3;\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) || is_FLOW_INDICATOR(ch) || ch === 0x23\n /* # */\n || ch === 0x26\n /* & */\n || ch === 0x2A\n /* * */\n || ch === 0x21\n /* ! */\n || ch === 0x7C\n /* | */\n || ch === 0x3E\n /* > */\n || ch === 0x27\n /* ' */\n || ch === 0x22\n /* \" */\n || ch === 0x25\n /* % */\n || ch === 0x40\n /* @ */\n || ch === 0x60\n /* ` */\n ) {\n return false;\n }\n\n if (ch === 0x3F\n /* ? */\n || ch === 0x2D\n /* - */\n ) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A\n /* : */\n ) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n } else if (ch === 0x23\n /* # */\n ) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n } else if (state.position === state.lineStart && testDocumentSeparator(state) || withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch, captureStart, captureEnd;\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27\n /* ' */\n ) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27\n /* ' */\n ) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27\n /* ' */\n ) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart, captureEnd, hexLength, hexResult, tmp, ch;\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22\n /* \" */\n ) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22\n /* \" */\n ) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n } else if (ch === 0x5C\n /* \\ */\n ) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent); // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n state.position++;\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B\n /* [ */\n ) {\n terminator = 0x5D;\n /* ] */\n\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B\n /* { */\n ) {\n terminator = 0x7D;\n /* } */\n\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F\n /* ? */\n ) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A\n /* : */\n ) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C\n /* , */\n ) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C\n /* | */\n ) {\n folding = false;\n } else if (ch === 0x3E\n /* > */\n ) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B\n /* + */\n || ch === 0x2D\n /* - */\n ) {\n if (CHOMPING_CLIP === chomping) {\n chomping = ch === 0x2B\n /* + */\n ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23\n /* # */\n ) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (!is_EOL(ch) && ch !== 0);\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) && ch === 0x20\n /* Space */\n ) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n } // End of the scalar.\n\n\n if (state.lineIndent < textIndent) {\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) {\n // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n } // Break this `while` cycle and go to the funciton's epilogue.\n\n\n break;\n } // Folded style: use fancy rules to handle line breaks.\n\n\n if (folding) {\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true; // except for the first content line (cf. Example 8.1)\n\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines); // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1); // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) {\n // i.e. only if we have already read some scalar content.\n state.result += ' ';\n } // Several line breaks - perceive as different lines.\n\n } else {\n state.result += common.repeat('\\n', emptyLines);\n } // Literal style: just add exact number of line breaks between content lines.\n\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n if (ch !== 0x2D\n /* - */\n ) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n\n _result.push(state.result);\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && ch !== 0) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _pos,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n _pos = state.position; //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n\n if ((ch === 0x3F\n /* ? */\n || ch === 0x3A\n /* : */\n ) && is_WS_OR_EOL(following)) {\n if (ch === 0x3F\n /* ? */\n ) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line');\n }\n\n state.position += 1;\n ch = following; //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A\n /* : */\n ) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n } else {\n break; // Reading is done. Go to the epilogue.\n } //\n // Common reading code for both explicit and implicit notations.\n //\n\n\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _pos);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && ch !== 0) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n } //\n // Epilogue.\n //\n // Special case: last mapping's node contains only the key in explicit notation.\n\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n } // Expose the resulting mapping.\n\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n if (ch !== 0x21\n /* ! */\n ) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C\n /* < */\n ) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n } else if (ch === 0x21\n /* ! */\n ) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0 && ch !== 0x3E\n /* > */\n );\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n if (ch === 0x21\n /* ! */\n ) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position, ch;\n\n ch = state.input.charCodeAt(state.position);\n if (ch !== 0x26\n /* & */\n ) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias, ch;\n\n ch = state.input.charCodeAt(state.position);\n if (ch !== 0x2A\n /* * */\n ) return false;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1,\n // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections && (readBlockSequence(state, blockIndent) || readBlockMapping(state, blockIndent, flowIndent)) || readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if (allowBlockScalars && readBlockScalar(state, flowIndent) || readSingleQuotedScalar(state, flowIndent) || readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n type = state.implicitTypes[typeIndex]; // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only assigned to plain scalars. So, it isn't\n // needed to check for 'kind' conformity.\n\n if (type.resolve(state.result)) {\n // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) {\n // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25\n /* % */\n ) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23\n /* # */\n ) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0 && !is_EOL(ch));\n\n break;\n }\n\n if (is_EOL(ch)) break;\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 && state.input.charCodeAt(state.position) === 0x2D\n /* - */\n && state.input.charCodeAt(state.position + 1) === 0x2D\n /* - */\n && state.input.charCodeAt(state.position + 2) === 0x2D\n /* - */\n ) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks && PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n if (state.input.charCodeAt(state.position) === 0x2E\n /* . */\n ) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n\n return;\n }\n\n if (state.position < state.length - 1) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A\n /* LF */\n && input.charCodeAt(input.length - 1) !== 0x0D\n /* CR */\n ) {\n input += '\\n';\n } // Strip BOM\n\n\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options); // Use 0 as string terminator. That significantly simplifies bounds check.\n\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20\n /* Space */\n ) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < state.length - 1) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options),\n index,\n length;\n\n if (typeof iterator !== 'function') {\n return documents;\n }\n\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\nfunction safeLoadAll(input, output, options) {\n if (typeof output === 'function') {\n loadAll(input, output, common.extend({\n schema: DEFAULT_SAFE_SCHEMA\n }, options));\n } else {\n return loadAll(input, common.extend({\n schema: DEFAULT_SAFE_SCHEMA\n }, options));\n }\n}\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({\n schema: DEFAULT_SAFE_SCHEMA\n }, options));\n}\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;","'use strict';\n\nvar common = require('./common');\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n if (!this.buffer) return null;\n indent = indent || 4;\n maxLength = maxLength || 75;\n head = '';\n start = this.position;\n\n while (start > 0 && \"\\0\\r\\n\\x85\\u2028\\u2029\".indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n\n if (this.position - start > maxLength / 2 - 1) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && \"\\0\\r\\n\\x85\\u2028\\u2029\".indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n\n if (end - this.position > maxLength / 2 - 1) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' + common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\nMark.prototype.toString = function toString(compact) {\n var snippet,\n where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\nmodule.exports = Mark;","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function construct(data) {\n return data !== null ? data : '';\n }\n});","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function construct(data) {\n return data !== null ? data : [];\n }\n});","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function construct(data) {\n return data !== null ? data : {};\n }\n});","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n var max = data.length;\n return max === 1 && data === '~' || max === 4 && (data === 'null' || data === 'Null' || data === 'NULL');\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function canonical() {\n return '~';\n },\n lowercase: function lowercase() {\n return 'null';\n },\n uppercase: function uppercase() {\n return 'NULL';\n },\n camelcase: function camelcase() {\n return 'Null';\n }\n },\n defaultStyle: 'lowercase'\n});","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n var max = data.length;\n return max === 4 && (data === 'true' || data === 'True' || data === 'TRUE') || max === 5 && (data === 'false' || data === 'False' || data === 'FALSE');\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' || data === 'True' || data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function lowercase(object) {\n return object ? 'true' : 'false';\n },\n uppercase: function uppercase(object) {\n return object ? 'TRUE' : 'FALSE';\n },\n camelcase: function camelcase(object) {\n return object ? 'True' : 'False';\n }\n },\n defaultStyle: 'lowercase'\n});","'use strict';\n\nvar common = require('../common');\n\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return 0x30\n /* 0 */\n <= c && c <= 0x39\n /* 9 */\n || 0x41\n /* A */\n <= c && c <= 0x46\n /* F */\n || 0x61\n /* a */\n <= c && c <= 0x66\n /* f */\n ;\n}\n\nfunction isOctCode(c) {\n return 0x30\n /* 0 */\n <= c && c <= 0x37\n /* 7 */\n ;\n}\n\nfunction isDecCode(c) {\n return 0x30\n /* 0 */\n <= c && c <= 0x39\n /* 9 */\n ;\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n if (!max) return false;\n ch = data[index]; // sign\n\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index]; // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n\n return hasDigits && ch !== '_';\n }\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n\n return hasDigits && ch !== '_';\n } // base 8\n\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n\n return hasDigits && ch !== '_';\n } // base 10 (except 0) or base 60\n // value should not start with `_`;\n\n\n if (ch === '_') return false;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n\n hasDigits = true;\n } // Should have digits and should not end with `_`\n\n\n if (!hasDigits || ch === '_') return false; // if !base60 - done;\n\n if (ch !== ':') return true; // base60 almost not used, no needs to optimize\n\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data,\n sign = 1,\n ch,\n base,\n digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n value = 0;\n base = 1;\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n return sign * value;\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return Object.prototype.toString.call(object) === '[object Number]' && object % 1 === 0 && !common.isNegativeZero(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function binary(obj) {\n return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1);\n },\n octal: function octal(obj) {\n return obj >= 0 ? '0' + obj.toString(8) : '-0' + obj.toString(8).slice(1);\n },\n decimal: function decimal(obj) {\n return obj.toString(10);\n },\n\n /* eslint-disable max-len */\n hexadecimal: function hexadecimal(obj) {\n return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1);\n }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [2, 'bin'],\n octal: [8, 'oct'],\n decimal: [10, 'dec'],\n hexadecimal: [16, 'hex']\n }\n});","'use strict';\n\nvar common = require('../common');\n\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp( // 2.5e4, 2.5 and integers\n'^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' + // .2e4, .2\n// special case, seems not from spec\n'|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' + // 20:59\n'|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' + // .inf\n'|[-+]?\\\\.(?:inf|Inf|INF)' + // .nan\n'|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data) || // Quick hack to not allow integers end with `_`\n // Probably should update regexp & check speed\n data[data.length - 1] === '_') {\n return false;\n }\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return sign === 1 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n } else if (value === '.nan') {\n return NaN;\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n value = 0.0;\n base = 1;\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n return sign * value;\n }\n\n return sign * parseFloat(value, 10);\n}\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase':\n return '.nan';\n\n case 'uppercase':\n return '.NAN';\n\n case 'camelcase':\n return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase':\n return '.inf';\n\n case 'uppercase':\n return '.INF';\n\n case 'camelcase':\n return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase':\n return '-.inf';\n\n case 'uppercase':\n return '-.INF';\n\n case 'camelcase':\n return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10); // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return Object.prototype.toString.call(object) === '[object Number]' && (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp('^([0-9][0-9][0-9][0-9])' + // [1] year\n'-([0-9][0-9])' + // [2] month\n'-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp('^([0-9][0-9][0-9][0-9])' + // [1] year\n'-([0-9][0-9]?)' + // [2] month\n'-([0-9][0-9]?)' + // [3] day\n'(?:[Tt]|[ \\\\t]+)' + // ...\n'([0-9][0-9]?)' + // [4] hour\n':([0-9][0-9])' + // [5] minute\n':([0-9][0-9])' + // [6] second\n'(?:\\\\.([0-9]*))?' + // [7] fraction\n'(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n'(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match,\n year,\n month,\n day,\n hour,\n minute,\n second,\n fraction = 0,\n delta = null,\n tz_hour,\n tz_minute,\n date;\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n if (match === null) throw new Error('Date resolve error'); // match: [1] year [2] month [3] day\n\n year = +match[1];\n month = +match[2] - 1; // JS month starts with 0\n\n day = +match[3];\n\n if (!match[4]) {\n // no hour\n return new Date(Date.UTC(year, month, day));\n } // match: [4] hour [5] minute [6] second [7] fraction\n\n\n hour = +match[4];\n minute = +match[5];\n second = +match[6];\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n\n while (fraction.length < 3) {\n // milli-seconds\n fraction += '0';\n }\n\n fraction = +fraction;\n } // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n\n if (match[9]) {\n tz_hour = +match[10];\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n if (delta) date.setTime(date.getTime() - delta);\n return date;\n}\n\nfunction representYamlTimestamp(object\n/*, style*/\n) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});","'use strict';\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type'); // [ 64, 65, 66 ] -> [ padding, CR, LF ]\n\n\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n var code,\n idx,\n bitlen = 0,\n max = data.length,\n map = BASE64_MAP; // Convert one by one.\n\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx)); // Skip CR/LF\n\n if (code > 64) continue; // Fail on illegal characters\n\n if (code < 0) return false;\n bitlen += 6;\n } // If there are any bits left, source was corrupted\n\n\n return bitlen % 8 === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx,\n tailbits,\n input = data.replace(/[\\r\\n=]/g, ''),\n // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = []; // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if (idx % 4 === 0 && idx) {\n result.push(bits >> 16 & 0xFF);\n result.push(bits >> 8 & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = bits << 6 | map.indexOf(input.charAt(idx));\n } // Dump tail\n\n\n tailbits = max % 4 * 6;\n\n if (tailbits === 0) {\n result.push(bits >> 16 & 0xFF);\n result.push(bits >> 8 & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push(bits >> 10 & 0xFF);\n result.push(bits >> 2 & 0xFF);\n } else if (tailbits === 12) {\n result.push(bits >> 4 & 0xFF);\n } // Wrap into Buffer for NodeJS and leave Array for browser\n\n\n if (NodeBuffer) {\n // Support node 6.+ Buffer API when available\n return NodeBuffer.from ? NodeBuffer.from(result) : new NodeBuffer(result);\n }\n\n return result;\n}\n\nfunction representYamlBinary(object\n/*, style*/\n) {\n var result = '',\n bits = 0,\n idx,\n tail,\n max = object.length,\n map = BASE64_MAP; // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if (idx % 3 === 0 && idx) {\n result += map[bits >> 18 & 0x3F];\n result += map[bits >> 12 & 0x3F];\n result += map[bits >> 6 & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n } // Dump tail\n\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[bits >> 18 & 0x3F];\n result += map[bits >> 12 & 0x3F];\n result += map[bits >> 6 & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[bits >> 10 & 0x3F];\n result += map[bits >> 4 & 0x3F];\n result += map[bits << 2 & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[bits >> 2 & 0x3F];\n result += map[bits << 4 & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n/* eslint-disable no-proto */\n'use strict';\n\nvar base64 = require('base64-js');\n\nvar ieee754 = require('ieee754');\n\nvar isArray = require('isarray');\n\nexports.Buffer = Buffer;\nexports.SlowBuffer = SlowBuffer;\nexports.INSPECT_MAX_BYTES = 50;\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\n\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined ? global.TYPED_ARRAY_SUPPORT : typedArraySupport();\n/*\n * Export kMaxLength after typed array support is determined.\n */\n\nexports.kMaxLength = kMaxLength();\n\nfunction typedArraySupport() {\n try {\n var arr = new Uint8Array(1);\n arr.__proto__ = {\n __proto__: Uint8Array.prototype,\n foo: function foo() {\n return 42;\n }\n };\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0; // ie10 has broken `subarray`\n } catch (e) {\n return false;\n }\n}\n\nfunction kMaxLength() {\n return Buffer.TYPED_ARRAY_SUPPORT ? 0x7fffffff : 0x3fffffff;\n}\n\nfunction createBuffer(that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length');\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length);\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length);\n }\n\n that.length = length;\n }\n\n return that;\n}\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\n\nfunction Buffer(arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length);\n } // Common case.\n\n\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error('If encoding is specified then the first argument must be a string');\n }\n\n return allocUnsafe(this, arg);\n }\n\n return from(this, arg, encodingOrOffset, length);\n}\n\nBuffer.poolSize = 8192; // not used by this implementation\n// TODO: Legacy, not needed anymore. Remove in next major version.\n\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype;\n return arr;\n};\n\nfunction from(that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number');\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length);\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset);\n }\n\n return fromObject(that, value);\n}\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\n\n\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length);\n};\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype;\n Buffer.__proto__ = Uint8Array;\n\n if (typeof Symbol !== 'undefined' && Symbol.species && Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n });\n }\n}\n\nfunction assertSize(size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number');\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative');\n }\n}\n\nfunction alloc(that, size, fill, encoding) {\n assertSize(size);\n\n if (size <= 0) {\n return createBuffer(that, size);\n }\n\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string' ? createBuffer(that, size).fill(fill, encoding) : createBuffer(that, size).fill(fill);\n }\n\n return createBuffer(that, size);\n}\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\n\n\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding);\n};\n\nfunction allocUnsafe(that, size) {\n assertSize(size);\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0;\n }\n }\n\n return that;\n}\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\n\n\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size);\n};\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\n\n\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size);\n};\n\nfunction fromString(that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8';\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding');\n }\n\n var length = byteLength(string, encoding) | 0;\n that = createBuffer(that, length);\n var actual = that.write(string, encoding);\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual);\n }\n\n return that;\n}\n\nfunction fromArrayLike(that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0;\n that = createBuffer(that, length);\n\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255;\n }\n\n return that;\n}\n\nfunction fromArrayBuffer(that, array, byteOffset, length) {\n array.byteLength; // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds');\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds');\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array);\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset);\n } else {\n array = new Uint8Array(array, byteOffset, length);\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array;\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array);\n }\n\n return that;\n}\n\nfunction fromObject(that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0;\n that = createBuffer(that, len);\n\n if (that.length === 0) {\n return that;\n }\n\n obj.copy(that, 0, 0, len);\n return that;\n }\n\n if (obj) {\n if (typeof ArrayBuffer !== 'undefined' && obj.buffer instanceof ArrayBuffer || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0);\n }\n\n return fromArrayLike(that, obj);\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data);\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.');\n}\n\nfunction checked(length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + kMaxLength().toString(16) + ' bytes');\n }\n\n return length | 0;\n}\n\nfunction SlowBuffer(length) {\n if (+length != length) {\n // eslint-disable-line eqeqeq\n length = 0;\n }\n\n return Buffer.alloc(+length);\n}\n\nBuffer.isBuffer = function isBuffer(b) {\n return !!(b != null && b._isBuffer);\n};\n\nBuffer.compare = function compare(a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers');\n }\n\n if (a === b) return 0;\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n};\n\nBuffer.isEncoding = function isEncoding(encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true;\n\n default:\n return false;\n }\n};\n\nBuffer.concat = function concat(list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0);\n }\n\n var i;\n\n if (length === undefined) {\n length = 0;\n\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n\n var buffer = Buffer.allocUnsafe(length);\n var pos = 0;\n\n for (i = 0; i < list.length; ++i) {\n var buf = list[i];\n\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n\n buf.copy(buffer, pos);\n pos += buf.length;\n }\n\n return buffer;\n};\n\nfunction byteLength(string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length;\n }\n\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength;\n }\n\n if (typeof string !== 'string') {\n string = '' + string;\n }\n\n var len = string.length;\n if (len === 0) return 0; // Use a for loop to avoid recursion\n\n var loweredCase = false;\n\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len;\n\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length;\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2;\n\n case 'hex':\n return len >>> 1;\n\n case 'base64':\n return base64ToBytes(string).length;\n\n default:\n if (loweredCase) return utf8ToBytes(string).length; // assume utf8\n\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n}\n\nBuffer.byteLength = byteLength;\n\nfunction slowToString(encoding, start, end) {\n var loweredCase = false; // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n\n if (start === undefined || start < 0) {\n start = 0;\n } // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n\n\n if (start > this.length) {\n return '';\n }\n\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n\n if (end <= 0) {\n return '';\n } // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n\n\n end >>>= 0;\n start >>>= 0;\n\n if (end <= start) {\n return '';\n }\n\n if (!encoding) encoding = 'utf8';\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end);\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end);\n\n case 'ascii':\n return asciiSlice(this, start, end);\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end);\n\n case 'base64':\n return base64Slice(this, start, end);\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end);\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n encoding = (encoding + '').toLowerCase();\n loweredCase = true;\n }\n }\n} // The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\n\n\nBuffer.prototype._isBuffer = true;\n\nfunction swap(b, n, m) {\n var i = b[n];\n b[n] = b[m];\n b[m] = i;\n}\n\nBuffer.prototype.swap16 = function swap16() {\n var len = this.length;\n\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits');\n }\n\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n\n return this;\n};\n\nBuffer.prototype.swap32 = function swap32() {\n var len = this.length;\n\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits');\n }\n\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n\n return this;\n};\n\nBuffer.prototype.swap64 = function swap64() {\n var len = this.length;\n\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits');\n }\n\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n\n return this;\n};\n\nBuffer.prototype.toString = function toString() {\n var length = this.length | 0;\n if (length === 0) return '';\n if (arguments.length === 0) return utf8Slice(this, 0, length);\n return slowToString.apply(this, arguments);\n};\n\nBuffer.prototype.equals = function equals(b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer');\n if (this === b) return true;\n return Buffer.compare(this, b) === 0;\n};\n\nBuffer.prototype.inspect = function inspect() {\n var str = '';\n var max = exports.INSPECT_MAX_BYTES;\n\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');\n if (this.length > max) str += ' ... ';\n }\n\n return '';\n};\n\nBuffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer');\n }\n\n if (start === undefined) {\n start = 0;\n }\n\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n\n if (thisStart === undefined) {\n thisStart = 0;\n }\n\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index');\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0;\n }\n\n if (thisStart >= thisEnd) {\n return -1;\n }\n\n if (start >= end) {\n return 1;\n }\n\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n if (this === target) return 0;\n var x = thisEnd - thisStart;\n var y = end - start;\n var len = Math.min(x, y);\n var thisCopy = this.slice(thisStart, thisEnd);\n var targetCopy = target.slice(start, end);\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break;\n }\n }\n\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n}; // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\n\n\nfunction bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1; // Normalize byteOffset\n\n if (typeof byteOffset === 'string') {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff;\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000;\n }\n\n byteOffset = +byteOffset; // Coerce to Number.\n\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : buffer.length - 1;\n } // Normalize byteOffset: negative offsets start from the end of the buffer\n\n\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n\n if (byteOffset >= buffer.length) {\n if (dir) return -1;else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;else return -1;\n } // Normalize val\n\n\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding);\n } // Finally, search either indexOf (if dir is true) or lastIndexOf\n\n\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1;\n }\n\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir);\n } else if (typeof val === 'number') {\n val = val & 0xFF; // Search for a byte value [0-255]\n\n if (Buffer.TYPED_ARRAY_SUPPORT && typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);\n }\n }\n\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n }\n\n throw new TypeError('val must be string, number or Buffer');\n}\n\nfunction arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n var indexSize = 1;\n var arrLength = arr.length;\n var valLength = val.length;\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\n\n if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1;\n }\n\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n\n function read(buf, i) {\n if (indexSize === 1) {\n return buf[i];\n } else {\n return buf.readUInt16BE(i * indexSize);\n }\n }\n\n var i;\n\n if (dir) {\n var foundIndex = -1;\n\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n\n for (i = byteOffset; i >= 0; i--) {\n var found = true;\n\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break;\n }\n }\n\n if (found) return i;\n }\n }\n\n return -1;\n}\n\nBuffer.prototype.includes = function includes(val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1;\n};\n\nBuffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n};\n\nBuffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n};\n\nfunction hexWrite(buf, string, offset, length) {\n offset = Number(offset) || 0;\n var remaining = buf.length - offset;\n\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n\n if (length > remaining) {\n length = remaining;\n }\n } // must be an even number of digits\n\n\n var strLen = string.length;\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string');\n\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16);\n if (isNaN(parsed)) return i;\n buf[offset + i] = parsed;\n }\n\n return i;\n}\n\nfunction utf8Write(buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n}\n\nfunction asciiWrite(buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length);\n}\n\nfunction latin1Write(buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length);\n}\n\nfunction base64Write(buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length);\n}\n\nfunction ucs2Write(buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n}\n\nBuffer.prototype.write = function write(string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8';\n length = this.length;\n offset = 0; // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset;\n length = this.length;\n offset = 0; // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0;\n\n if (isFinite(length)) {\n length = length | 0;\n if (encoding === undefined) encoding = 'utf8';\n } else {\n encoding = length;\n length = undefined;\n } // legacy write(string, encoding, offset, length) - remove in v0.13\n\n } else {\n throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported');\n }\n\n var remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n\n if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds');\n }\n\n if (!encoding) encoding = 'utf8';\n var loweredCase = false;\n\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length);\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length);\n\n case 'ascii':\n return asciiWrite(this, string, offset, length);\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length);\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length);\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length);\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n};\n\nBuffer.prototype.toJSON = function toJSON() {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n };\n};\n\nfunction base64Slice(buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf);\n } else {\n return base64.fromByteArray(buf.slice(start, end));\n }\n}\n\nfunction utf8Slice(buf, start, end) {\n end = Math.min(buf.length, end);\n var res = [];\n var i = start;\n\n while (i < end) {\n var firstByte = buf[i];\n var codePoint = null;\n var bytesPerSequence = firstByte > 0xEF ? 4 : firstByte > 0xDF ? 3 : firstByte > 0xBF ? 2 : 1;\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint;\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte;\n }\n\n break;\n\n case 2:\n secondByte = buf[i + 1];\n\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | secondByte & 0x3F;\n\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint;\n }\n }\n\n break;\n\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | thirdByte & 0x3F;\n\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint;\n }\n }\n\n break;\n\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | fourthByte & 0x3F;\n\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint;\n }\n }\n\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD;\n bytesPerSequence = 1;\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000;\n res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n codePoint = 0xDC00 | codePoint & 0x3FF;\n }\n\n res.push(codePoint);\n i += bytesPerSequence;\n }\n\n return decodeCodePointsArray(res);\n} // Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\n\n\nvar MAX_ARGUMENTS_LENGTH = 0x1000;\n\nfunction decodeCodePointsArray(codePoints) {\n var len = codePoints.length;\n\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints); // avoid extra slice()\n } // Decode in chunks to avoid \"call stack size exceeded\".\n\n\n var res = '';\n var i = 0;\n\n while (i < len) {\n res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n }\n\n return res;\n}\n\nfunction asciiSlice(buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F);\n }\n\n return ret;\n}\n\nfunction latin1Slice(buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n\n return ret;\n}\n\nfunction hexSlice(buf, start, end) {\n var len = buf.length;\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n var out = '';\n\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i]);\n }\n\n return out;\n}\n\nfunction utf16leSlice(buf, start, end) {\n var bytes = buf.slice(start, end);\n var res = '';\n\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n\n return res;\n}\n\nBuffer.prototype.slice = function slice(start, end) {\n var len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n\n if (end < start) end = start;\n var newBuf;\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end);\n newBuf.__proto__ = Buffer.prototype;\n } else {\n var sliceLen = end - start;\n newBuf = new Buffer(sliceLen, undefined);\n\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start];\n }\n }\n\n return newBuf;\n};\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\n\n\nfunction checkOffset(offset, ext, length) {\n if (offset % 1 !== 0 || offset < 0) throw new RangeError('offset is not uint');\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length');\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var val = this[offset];\n var mul = 1;\n var i = 0;\n\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n return val;\n};\n\nBuffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n\n var val = this[offset + --byteLength];\n var mul = 1;\n\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul;\n }\n\n return val;\n};\n\nBuffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset];\n};\n\nBuffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | this[offset + 1] << 8;\n};\n\nBuffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] << 8 | this[offset + 1];\n};\n\nBuffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 0x1000000;\n};\n\nBuffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] * 0x1000000 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n};\n\nBuffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var val = this[offset];\n var mul = 1;\n var i = 0;\n\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n mul *= 0x80;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n};\n\nBuffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var i = byteLength;\n var mul = 1;\n var val = this[offset + --i];\n\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul;\n }\n\n mul *= 0x80;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n};\n\nBuffer.prototype.readInt8 = function readInt8(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 0x80)) return this[offset];\n return (0xff - this[offset] + 1) * -1;\n};\n\nBuffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset] | this[offset + 1] << 8;\n return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\n\nBuffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset + 1] | this[offset] << 8;\n return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\n\nBuffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n};\n\nBuffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n};\n\nBuffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, true, 23, 4);\n};\n\nBuffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, false, 23, 4);\n};\n\nBuffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, true, 52, 8);\n};\n\nBuffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, false, 52, 8);\n};\n\nfunction checkInt(buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance');\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds');\n if (offset + ext > buf.length) throw new RangeError('Index out of range');\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var mul = 1;\n var i = 0;\n this[offset] = value & 0xFF;\n\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = value / mul & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n this[offset + i] = value & 0xFF;\n\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = value / mul & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n this[offset] = value & 0xff;\n return offset + 1;\n};\n\nfunction objectWriteUInt16(buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1;\n\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & 0xff << 8 * (littleEndian ? i : 1 - i)) >>> (littleEndian ? i : 1 - i) * 8;\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 8;\n this[offset + 1] = value & 0xff;\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n\n return offset + 2;\n};\n\nfunction objectWriteUInt32(buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1;\n\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = value >>> (littleEndian ? i : 3 - i) * 8 & 0xff;\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = value >>> 24;\n this[offset + 2] = value >>> 16;\n this[offset + 1] = value >>> 8;\n this[offset] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = 0;\n var mul = 1;\n var sub = 0;\n this[offset] = value & 0xFF;\n\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n\n this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n var sub = 0;\n this[offset + i] = value & 0xFF;\n\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n\n this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n if (value < 0) value = 0xff + value + 1;\n this[offset] = value & 0xff;\n return offset + 1;\n};\n\nBuffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 8;\n this[offset + 1] = value & 0xff;\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n this[offset + 2] = value >>> 16;\n this[offset + 3] = value >>> 24;\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (value < 0) value = 0xffffffff + value + 1;\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n\n return offset + 4;\n};\n\nfunction checkIEEE754(buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range');\n if (offset < 0) throw new RangeError('Index out of range');\n}\n\nfunction writeFloat(buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38);\n }\n\n ieee754.write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4;\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert);\n};\n\nBuffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert);\n};\n\nfunction writeDouble(buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308);\n }\n\n ieee754.write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8;\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert);\n};\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert);\n}; // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n\n\nBuffer.prototype.copy = function copy(target, targetStart, start, end) {\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start; // Copy 0 bytes; we're done\n\n if (end === start) return 0;\n if (target.length === 0 || this.length === 0) return 0; // Fatal error conditions\n\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds');\n }\n\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds');\n if (end < 0) throw new RangeError('sourceEnd out of bounds'); // Are we oob?\n\n if (end > this.length) end = this.length;\n\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n\n var len = end - start;\n var i;\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start];\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start];\n }\n } else {\n Uint8Array.prototype.set.call(target, this.subarray(start, start + len), targetStart);\n }\n\n return len;\n}; // Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\n\n\nBuffer.prototype.fill = function fill(val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === 'string') {\n encoding = end;\n end = this.length;\n }\n\n if (val.length === 1) {\n var code = val.charCodeAt(0);\n\n if (code < 256) {\n val = code;\n }\n }\n\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string');\n }\n\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding);\n }\n } else if (typeof val === 'number') {\n val = val & 255;\n } // Invalid ranges are not set to a default, so can range check early.\n\n\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index');\n }\n\n if (end <= start) {\n return this;\n }\n\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n if (!val) val = 0;\n var i;\n\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n var bytes = Buffer.isBuffer(val) ? val : utf8ToBytes(new Buffer(val, encoding).toString());\n var len = bytes.length;\n\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n\n return this;\n}; // HELPER FUNCTIONS\n// ================\n\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g;\n\nfunction base64clean(str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, ''); // Node converts strings with length < 2 to ''\n\n if (str.length < 2) return ''; // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n\n while (str.length % 4 !== 0) {\n str = str + '=';\n }\n\n return str;\n}\n\nfunction stringtrim(str) {\n if (str.trim) return str.trim();\n return str.replace(/^\\s+|\\s+$/g, '');\n}\n\nfunction toHex(n) {\n if (n < 16) return '0' + n.toString(16);\n return n.toString(16);\n}\n\nfunction utf8ToBytes(string, units) {\n units = units || Infinity;\n var codePoint;\n var length = string.length;\n var leadSurrogate = null;\n var bytes = [];\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i); // is surrogate component\n\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue;\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue;\n } // valid lead\n\n\n leadSurrogate = codePoint;\n continue;\n } // 2 leads in a row\n\n\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n leadSurrogate = codePoint;\n continue;\n } // valid surrogate pair\n\n\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n }\n\n leadSurrogate = null; // encode utf8\n\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break;\n bytes.push(codePoint);\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break;\n bytes.push(codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80);\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break;\n bytes.push(codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break;\n bytes.push(codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n } else {\n throw new Error('Invalid code point');\n }\n }\n\n return bytes;\n}\n\nfunction asciiToBytes(str) {\n var byteArray = [];\n\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF);\n }\n\n return byteArray;\n}\n\nfunction utf16leToBytes(str, units) {\n var c, hi, lo;\n var byteArray = [];\n\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break;\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n\n return byteArray;\n}\n\nfunction base64ToBytes(str) {\n return base64.toByteArray(base64clean(str));\n}\n\nfunction blitBuffer(src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if (i + offset >= dst.length || i >= src.length) break;\n dst[i + offset] = src[i];\n }\n\n return i;\n}\n\nfunction isnan(val) {\n return val !== val; // eslint-disable-line no-self-compare\n}","'use strict';\n\nexports.byteLength = byteLength;\nexports.toByteArray = toByteArray;\nexports.fromByteArray = fromByteArray;\nvar lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n} // Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\n\n\nrevLookup['-'.charCodeAt(0)] = 62;\nrevLookup['_'.charCodeAt(0)] = 63;\n\nfunction getLens(b64) {\n var len = b64.length;\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4');\n } // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n\n\n var validLen = b64.indexOf('=');\n if (validLen === -1) validLen = len;\n var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4;\n return [validLen, placeHoldersLen];\n} // base64 is 4/3 + up to two characters of the original data\n\n\nfunction byteLength(b64) {\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n}\n\nfunction _byteLength(b64, validLen, placeHoldersLen) {\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n}\n\nfunction toByteArray(b64) {\n var tmp;\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n var curByte = 0; // if there are placeholders, only get up to the last complete 4 chars\n\n var len = placeHoldersLen > 0 ? validLen - 4 : validLen;\n var i;\n\n for (i = 0; i < len; i += 4) {\n tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];\n arr[curByte++] = tmp >> 16 & 0xFF;\n arr[curByte++] = tmp >> 8 & 0xFF;\n arr[curByte++] = tmp & 0xFF;\n }\n\n if (placeHoldersLen === 2) {\n tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;\n arr[curByte++] = tmp & 0xFF;\n }\n\n if (placeHoldersLen === 1) {\n tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;\n arr[curByte++] = tmp >> 8 & 0xFF;\n arr[curByte++] = tmp & 0xFF;\n }\n\n return arr;\n}\n\nfunction tripletToBase64(num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F];\n}\n\nfunction encodeChunk(uint8, start, end) {\n var tmp;\n var output = [];\n\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16 & 0xFF0000) + (uint8[i + 1] << 8 & 0xFF00) + (uint8[i + 2] & 0xFF);\n output.push(tripletToBase64(tmp));\n }\n\n return output.join('');\n}\n\nfunction fromByteArray(uint8) {\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n // go through the array every three bytes, we'll deal with trailing stuff later\n\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));\n } // pad the end with zeros, but make sure to not forget the extra bytes\n\n\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 0x3F] + '==');\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 0x3F] + lookup[tmp << 2 & 0x3F] + '=');\n }\n\n return parts.join('');\n}","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? nBytes - 1 : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n i += d;\n e = s & (1 << -nBits) - 1;\n s >>= -nBits;\n nBits += eLen;\n\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : (s ? -1 : 1) * Infinity;\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n};\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;\n var i = isLE ? 0 : nBytes - 1;\n var d = isLE ? 1 : -1;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n value = Math.abs(value);\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = e << mLen | m;\n eLen += mLen;\n\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128;\n};","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n var objectKeys = [],\n index,\n length,\n pair,\n pairKey,\n pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;else return false;\n }\n }\n\n if (!pairHasKey) return false;\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n var index,\n length,\n pair,\n keys,\n result,\n object = data;\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n if (_toString.call(pair) !== '[object Object]') return false;\n keys = Object.keys(pair);\n if (keys.length !== 1) return false;\n result[index] = [keys[0], pair[keys[0]]];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n var index,\n length,\n pair,\n keys,\n result,\n object = data;\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n keys = Object.keys(pair);\n result[index] = [keys[0], pair[keys[0]]];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n var key,\n object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = ''; // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n if (modifiers.length > 3) return false; // if expression starts with /, is should be properly terminated\n\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = ''; // `/foo/gim` - tail can be maximum 4 chars\n\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object\n/*, style*/\n) {\n var result = '/' + object.source + '/';\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});","'use strict';\n\nvar esprima; // Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\n\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /*global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, {\n range: true\n });\n\n if (ast.type !== 'Program' || ast.body.length !== 1 || ast.body[0].type !== 'ExpressionStatement' || ast.body[0].expression.type !== 'ArrowFunctionExpression' && ast.body[0].expression.type !== 'FunctionExpression') {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n var source = '(' + data + ')',\n ast = esprima.parse(source, {\n range: true\n }),\n params = [],\n body;\n\n if (ast.type !== 'Program' || ast.body.length !== 1 || ast.body[0].type !== 'ExpressionStatement' || ast.body[0].expression.type !== 'ArrowFunctionExpression' && ast.body[0].expression.type !== 'FunctionExpression') {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n body = ast.body[0].expression.body.range; // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n\n if (ast.body[0].expression.body.type === 'BlockStatement') {\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n } // ES6 arrow functions can omit the BlockStatement. In that case, just return\n // the body.\n\n /*eslint-disable no-new-func*/\n\n\n return new Function(params, 'return ' + source.slice(body[0], body[1]));\n}\n\nfunction representJavascriptFunction(object\n/*, style*/\n) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});","(function webpackUniversalModuleDefinition(root, factory) {\n /* istanbul ignore next */\n if (typeof exports === 'object' && typeof module === 'object') module.exports = factory();else if (typeof define === 'function' && define.amd) define([], factory);\n /* istanbul ignore next */\n else if (typeof exports === 'object') exports[\"esprima\"] = factory();else root[\"esprima\"] = factory();\n})(this, function () {\n return (\n /******/\n function (modules) {\n // webpackBootstrap\n\n /******/\n // The module cache\n\n /******/\n var installedModules = {};\n /******/\n // The require function\n\n /******/\n\n function __webpack_require__(moduleId) {\n /******/\n // Check if module is in cache\n\n /* istanbul ignore if */\n\n /******/\n if (installedModules[moduleId])\n /******/\n return installedModules[moduleId].exports;\n /******/\n // Create a new module (and put it into the cache)\n\n /******/\n\n var module = installedModules[moduleId] = {\n /******/\n exports: {},\n\n /******/\n id: moduleId,\n\n /******/\n loaded: false\n /******/\n\n };\n /******/\n // Execute the module function\n\n /******/\n\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n /******/\n // Flag the module as loaded\n\n /******/\n\n module.loaded = true;\n /******/\n // Return the exports of the module\n\n /******/\n\n return module.exports;\n /******/\n }\n /******/\n // expose the modules object (__webpack_modules__)\n\n /******/\n\n\n __webpack_require__.m = modules;\n /******/\n // expose the module cache\n\n /******/\n\n __webpack_require__.c = installedModules;\n /******/\n // __webpack_public_path__\n\n /******/\n\n __webpack_require__.p = \"\";\n /******/\n // Load entry module and return exports\n\n /******/\n\n return __webpack_require__(0);\n /******/\n }(\n /************************************************************************/\n\n /******/\n [\n /* 0 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n /*\n Copyright JS Foundation and other contributors, https://js.foundation/\n \t Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n \t * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n \t THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY\n DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var comment_handler_1 = __webpack_require__(1);\n\n var jsx_parser_1 = __webpack_require__(3);\n\n var parser_1 = __webpack_require__(8);\n\n var tokenizer_1 = __webpack_require__(15);\n\n function parse(code, options, delegate) {\n var commentHandler = null;\n\n var proxyDelegate = function proxyDelegate(node, metadata) {\n if (delegate) {\n delegate(node, metadata);\n }\n\n if (commentHandler) {\n commentHandler.visit(node, metadata);\n }\n };\n\n var parserDelegate = typeof delegate === 'function' ? proxyDelegate : null;\n var collectComment = false;\n\n if (options) {\n collectComment = typeof options.comment === 'boolean' && options.comment;\n var attachComment = typeof options.attachComment === 'boolean' && options.attachComment;\n\n if (collectComment || attachComment) {\n commentHandler = new comment_handler_1.CommentHandler();\n commentHandler.attach = attachComment;\n options.comment = true;\n parserDelegate = proxyDelegate;\n }\n }\n\n var isModule = false;\n\n if (options && typeof options.sourceType === 'string') {\n isModule = options.sourceType === 'module';\n }\n\n var parser;\n\n if (options && typeof options.jsx === 'boolean' && options.jsx) {\n parser = new jsx_parser_1.JSXParser(code, options, parserDelegate);\n } else {\n parser = new parser_1.Parser(code, options, parserDelegate);\n }\n\n var program = isModule ? parser.parseModule() : parser.parseScript();\n var ast = program;\n\n if (collectComment && commentHandler) {\n ast.comments = commentHandler.comments;\n }\n\n if (parser.config.tokens) {\n ast.tokens = parser.tokens;\n }\n\n if (parser.config.tolerant) {\n ast.errors = parser.errorHandler.errors;\n }\n\n return ast;\n }\n\n exports.parse = parse;\n\n function parseModule(code, options, delegate) {\n var parsingOptions = options || {};\n parsingOptions.sourceType = 'module';\n return parse(code, parsingOptions, delegate);\n }\n\n exports.parseModule = parseModule;\n\n function parseScript(code, options, delegate) {\n var parsingOptions = options || {};\n parsingOptions.sourceType = 'script';\n return parse(code, parsingOptions, delegate);\n }\n\n exports.parseScript = parseScript;\n\n function tokenize(code, options, delegate) {\n var tokenizer = new tokenizer_1.Tokenizer(code, options);\n var tokens;\n tokens = [];\n\n try {\n while (true) {\n var token = tokenizer.getNextToken();\n\n if (!token) {\n break;\n }\n\n if (delegate) {\n token = delegate(token);\n }\n\n tokens.push(token);\n }\n } catch (e) {\n tokenizer.errorHandler.tolerate(e);\n }\n\n if (tokenizer.errorHandler.tolerant) {\n tokens.errors = tokenizer.errors();\n }\n\n return tokens;\n }\n\n exports.tokenize = tokenize;\n\n var syntax_1 = __webpack_require__(2);\n\n exports.Syntax = syntax_1.Syntax; // Sync with *.json manifests.\n\n exports.version = '4.0.1';\n /***/\n },\n /* 1 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var syntax_1 = __webpack_require__(2);\n\n var CommentHandler = function () {\n function CommentHandler() {\n this.attach = false;\n this.comments = [];\n this.stack = [];\n this.leading = [];\n this.trailing = [];\n }\n\n CommentHandler.prototype.insertInnerComments = function (node, metadata) {\n // innnerComments for properties empty block\n // `function a() {/** comments **\\/}`\n if (node.type === syntax_1.Syntax.BlockStatement && node.body.length === 0) {\n var innerComments = [];\n\n for (var i = this.leading.length - 1; i >= 0; --i) {\n var entry = this.leading[i];\n\n if (metadata.end.offset >= entry.start) {\n innerComments.unshift(entry.comment);\n this.leading.splice(i, 1);\n this.trailing.splice(i, 1);\n }\n }\n\n if (innerComments.length) {\n node.innerComments = innerComments;\n }\n }\n };\n\n CommentHandler.prototype.findTrailingComments = function (metadata) {\n var trailingComments = [];\n\n if (this.trailing.length > 0) {\n for (var i = this.trailing.length - 1; i >= 0; --i) {\n var entry_1 = this.trailing[i];\n\n if (entry_1.start >= metadata.end.offset) {\n trailingComments.unshift(entry_1.comment);\n }\n }\n\n this.trailing.length = 0;\n return trailingComments;\n }\n\n var entry = this.stack[this.stack.length - 1];\n\n if (entry && entry.node.trailingComments) {\n var firstComment = entry.node.trailingComments[0];\n\n if (firstComment && firstComment.range[0] >= metadata.end.offset) {\n trailingComments = entry.node.trailingComments;\n delete entry.node.trailingComments;\n }\n }\n\n return trailingComments;\n };\n\n CommentHandler.prototype.findLeadingComments = function (metadata) {\n var leadingComments = [];\n var target;\n\n while (this.stack.length > 0) {\n var entry = this.stack[this.stack.length - 1];\n\n if (entry && entry.start >= metadata.start.offset) {\n target = entry.node;\n this.stack.pop();\n } else {\n break;\n }\n }\n\n if (target) {\n var count = target.leadingComments ? target.leadingComments.length : 0;\n\n for (var i = count - 1; i >= 0; --i) {\n var comment = target.leadingComments[i];\n\n if (comment.range[1] <= metadata.start.offset) {\n leadingComments.unshift(comment);\n target.leadingComments.splice(i, 1);\n }\n }\n\n if (target.leadingComments && target.leadingComments.length === 0) {\n delete target.leadingComments;\n }\n\n return leadingComments;\n }\n\n for (var i = this.leading.length - 1; i >= 0; --i) {\n var entry = this.leading[i];\n\n if (entry.start <= metadata.start.offset) {\n leadingComments.unshift(entry.comment);\n this.leading.splice(i, 1);\n }\n }\n\n return leadingComments;\n };\n\n CommentHandler.prototype.visitNode = function (node, metadata) {\n if (node.type === syntax_1.Syntax.Program && node.body.length > 0) {\n return;\n }\n\n this.insertInnerComments(node, metadata);\n var trailingComments = this.findTrailingComments(metadata);\n var leadingComments = this.findLeadingComments(metadata);\n\n if (leadingComments.length > 0) {\n node.leadingComments = leadingComments;\n }\n\n if (trailingComments.length > 0) {\n node.trailingComments = trailingComments;\n }\n\n this.stack.push({\n node: node,\n start: metadata.start.offset\n });\n };\n\n CommentHandler.prototype.visitComment = function (node, metadata) {\n var type = node.type[0] === 'L' ? 'Line' : 'Block';\n var comment = {\n type: type,\n value: node.value\n };\n\n if (node.range) {\n comment.range = node.range;\n }\n\n if (node.loc) {\n comment.loc = node.loc;\n }\n\n this.comments.push(comment);\n\n if (this.attach) {\n var entry = {\n comment: {\n type: type,\n value: node.value,\n range: [metadata.start.offset, metadata.end.offset]\n },\n start: metadata.start.offset\n };\n\n if (node.loc) {\n entry.comment.loc = node.loc;\n }\n\n node.type = type;\n this.leading.push(entry);\n this.trailing.push(entry);\n }\n };\n\n CommentHandler.prototype.visit = function (node, metadata) {\n if (node.type === 'LineComment') {\n this.visitComment(node, metadata);\n } else if (node.type === 'BlockComment') {\n this.visitComment(node, metadata);\n } else if (this.attach) {\n this.visitNode(node, metadata);\n }\n };\n\n return CommentHandler;\n }();\n\n exports.CommentHandler = CommentHandler;\n /***/\n },\n /* 2 */\n\n /***/\n function (module, exports) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Syntax = {\n AssignmentExpression: 'AssignmentExpression',\n AssignmentPattern: 'AssignmentPattern',\n ArrayExpression: 'ArrayExpression',\n ArrayPattern: 'ArrayPattern',\n ArrowFunctionExpression: 'ArrowFunctionExpression',\n AwaitExpression: 'AwaitExpression',\n BlockStatement: 'BlockStatement',\n BinaryExpression: 'BinaryExpression',\n BreakStatement: 'BreakStatement',\n CallExpression: 'CallExpression',\n CatchClause: 'CatchClause',\n ClassBody: 'ClassBody',\n ClassDeclaration: 'ClassDeclaration',\n ClassExpression: 'ClassExpression',\n ConditionalExpression: 'ConditionalExpression',\n ContinueStatement: 'ContinueStatement',\n DoWhileStatement: 'DoWhileStatement',\n DebuggerStatement: 'DebuggerStatement',\n EmptyStatement: 'EmptyStatement',\n ExportAllDeclaration: 'ExportAllDeclaration',\n ExportDefaultDeclaration: 'ExportDefaultDeclaration',\n ExportNamedDeclaration: 'ExportNamedDeclaration',\n ExportSpecifier: 'ExportSpecifier',\n ExpressionStatement: 'ExpressionStatement',\n ForStatement: 'ForStatement',\n ForOfStatement: 'ForOfStatement',\n ForInStatement: 'ForInStatement',\n FunctionDeclaration: 'FunctionDeclaration',\n FunctionExpression: 'FunctionExpression',\n Identifier: 'Identifier',\n IfStatement: 'IfStatement',\n ImportDeclaration: 'ImportDeclaration',\n ImportDefaultSpecifier: 'ImportDefaultSpecifier',\n ImportNamespaceSpecifier: 'ImportNamespaceSpecifier',\n ImportSpecifier: 'ImportSpecifier',\n Literal: 'Literal',\n LabeledStatement: 'LabeledStatement',\n LogicalExpression: 'LogicalExpression',\n MemberExpression: 'MemberExpression',\n MetaProperty: 'MetaProperty',\n MethodDefinition: 'MethodDefinition',\n NewExpression: 'NewExpression',\n ObjectExpression: 'ObjectExpression',\n ObjectPattern: 'ObjectPattern',\n Program: 'Program',\n Property: 'Property',\n RestElement: 'RestElement',\n ReturnStatement: 'ReturnStatement',\n SequenceExpression: 'SequenceExpression',\n SpreadElement: 'SpreadElement',\n Super: 'Super',\n SwitchCase: 'SwitchCase',\n SwitchStatement: 'SwitchStatement',\n TaggedTemplateExpression: 'TaggedTemplateExpression',\n TemplateElement: 'TemplateElement',\n TemplateLiteral: 'TemplateLiteral',\n ThisExpression: 'ThisExpression',\n ThrowStatement: 'ThrowStatement',\n TryStatement: 'TryStatement',\n UnaryExpression: 'UnaryExpression',\n UpdateExpression: 'UpdateExpression',\n VariableDeclaration: 'VariableDeclaration',\n VariableDeclarator: 'VariableDeclarator',\n WhileStatement: 'WhileStatement',\n WithStatement: 'WithStatement',\n YieldExpression: 'YieldExpression'\n };\n /***/\n },\n /* 3 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n /* istanbul ignore next */\n\n var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var character_1 = __webpack_require__(4);\n\n var JSXNode = __webpack_require__(5);\n\n var jsx_syntax_1 = __webpack_require__(6);\n\n var Node = __webpack_require__(7);\n\n var parser_1 = __webpack_require__(8);\n\n var token_1 = __webpack_require__(13);\n\n var xhtml_entities_1 = __webpack_require__(14);\n\n token_1.TokenName[100\n /* Identifier */\n ] = 'JSXIdentifier';\n token_1.TokenName[101\n /* Text */\n ] = 'JSXText'; // Fully qualified element name, e.g. returns \"svg:path\"\n\n function getQualifiedElementName(elementName) {\n var qualifiedName;\n\n switch (elementName.type) {\n case jsx_syntax_1.JSXSyntax.JSXIdentifier:\n var id = elementName;\n qualifiedName = id.name;\n break;\n\n case jsx_syntax_1.JSXSyntax.JSXNamespacedName:\n var ns = elementName;\n qualifiedName = getQualifiedElementName(ns.namespace) + ':' + getQualifiedElementName(ns.name);\n break;\n\n case jsx_syntax_1.JSXSyntax.JSXMemberExpression:\n var expr = elementName;\n qualifiedName = getQualifiedElementName(expr.object) + '.' + getQualifiedElementName(expr.property);\n break;\n\n /* istanbul ignore next */\n\n default:\n break;\n }\n\n return qualifiedName;\n }\n\n var JSXParser = function (_super) {\n __extends(JSXParser, _super);\n\n function JSXParser(code, options, delegate) {\n return _super.call(this, code, options, delegate) || this;\n }\n\n JSXParser.prototype.parsePrimaryExpression = function () {\n return this.match('<') ? this.parseJSXRoot() : _super.prototype.parsePrimaryExpression.call(this);\n };\n\n JSXParser.prototype.startJSX = function () {\n // Unwind the scanner before the lookahead token.\n this.scanner.index = this.startMarker.index;\n this.scanner.lineNumber = this.startMarker.line;\n this.scanner.lineStart = this.startMarker.index - this.startMarker.column;\n };\n\n JSXParser.prototype.finishJSX = function () {\n // Prime the next lookahead.\n this.nextToken();\n };\n\n JSXParser.prototype.reenterJSX = function () {\n this.startJSX();\n this.expectJSX('}'); // Pop the closing '}' added from the lookahead.\n\n if (this.config.tokens) {\n this.tokens.pop();\n }\n };\n\n JSXParser.prototype.createJSXNode = function () {\n this.collectComments();\n return {\n index: this.scanner.index,\n line: this.scanner.lineNumber,\n column: this.scanner.index - this.scanner.lineStart\n };\n };\n\n JSXParser.prototype.createJSXChildNode = function () {\n return {\n index: this.scanner.index,\n line: this.scanner.lineNumber,\n column: this.scanner.index - this.scanner.lineStart\n };\n };\n\n JSXParser.prototype.scanXHTMLEntity = function (quote) {\n var result = '&';\n var valid = true;\n var terminated = false;\n var numeric = false;\n var hex = false;\n\n while (!this.scanner.eof() && valid && !terminated) {\n var ch = this.scanner.source[this.scanner.index];\n\n if (ch === quote) {\n break;\n }\n\n terminated = ch === ';';\n result += ch;\n ++this.scanner.index;\n\n if (!terminated) {\n switch (result.length) {\n case 2:\n // e.g. '{'\n numeric = ch === '#';\n break;\n\n case 3:\n if (numeric) {\n // e.g. 'A'\n hex = ch === 'x';\n valid = hex || character_1.Character.isDecimalDigit(ch.charCodeAt(0));\n numeric = numeric && !hex;\n }\n\n break;\n\n default:\n valid = valid && !(numeric && !character_1.Character.isDecimalDigit(ch.charCodeAt(0)));\n valid = valid && !(hex && !character_1.Character.isHexDigit(ch.charCodeAt(0)));\n break;\n }\n }\n }\n\n if (valid && terminated && result.length > 2) {\n // e.g. 'A' becomes just '#x41'\n var str = result.substr(1, result.length - 2);\n\n if (numeric && str.length > 1) {\n result = String.fromCharCode(parseInt(str.substr(1), 10));\n } else if (hex && str.length > 2) {\n result = String.fromCharCode(parseInt('0' + str.substr(1), 16));\n } else if (!numeric && !hex && xhtml_entities_1.XHTMLEntities[str]) {\n result = xhtml_entities_1.XHTMLEntities[str];\n }\n }\n\n return result;\n }; // Scan the next JSX token. This replaces Scanner#lex when in JSX mode.\n\n\n JSXParser.prototype.lexJSX = function () {\n var cp = this.scanner.source.charCodeAt(this.scanner.index); // < > / : = { }\n\n if (cp === 60 || cp === 62 || cp === 47 || cp === 58 || cp === 61 || cp === 123 || cp === 125) {\n var value = this.scanner.source[this.scanner.index++];\n return {\n type: 7\n /* Punctuator */\n ,\n value: value,\n lineNumber: this.scanner.lineNumber,\n lineStart: this.scanner.lineStart,\n start: this.scanner.index - 1,\n end: this.scanner.index\n };\n } // \" '\n\n\n if (cp === 34 || cp === 39) {\n var start = this.scanner.index;\n var quote = this.scanner.source[this.scanner.index++];\n var str = '';\n\n while (!this.scanner.eof()) {\n var ch = this.scanner.source[this.scanner.index++];\n\n if (ch === quote) {\n break;\n } else if (ch === '&') {\n str += this.scanXHTMLEntity(quote);\n } else {\n str += ch;\n }\n }\n\n return {\n type: 8\n /* StringLiteral */\n ,\n value: str,\n lineNumber: this.scanner.lineNumber,\n lineStart: this.scanner.lineStart,\n start: start,\n end: this.scanner.index\n };\n } // ... or .\n\n\n if (cp === 46) {\n var n1 = this.scanner.source.charCodeAt(this.scanner.index + 1);\n var n2 = this.scanner.source.charCodeAt(this.scanner.index + 2);\n var value = n1 === 46 && n2 === 46 ? '...' : '.';\n var start = this.scanner.index;\n this.scanner.index += value.length;\n return {\n type: 7\n /* Punctuator */\n ,\n value: value,\n lineNumber: this.scanner.lineNumber,\n lineStart: this.scanner.lineStart,\n start: start,\n end: this.scanner.index\n };\n } // `\n\n\n if (cp === 96) {\n // Only placeholder, since it will be rescanned as a real assignment expression.\n return {\n type: 10\n /* Template */\n ,\n value: '',\n lineNumber: this.scanner.lineNumber,\n lineStart: this.scanner.lineStart,\n start: this.scanner.index,\n end: this.scanner.index\n };\n } // Identifer can not contain backslash (char code 92).\n\n\n if (character_1.Character.isIdentifierStart(cp) && cp !== 92) {\n var start = this.scanner.index;\n ++this.scanner.index;\n\n while (!this.scanner.eof()) {\n var ch = this.scanner.source.charCodeAt(this.scanner.index);\n\n if (character_1.Character.isIdentifierPart(ch) && ch !== 92) {\n ++this.scanner.index;\n } else if (ch === 45) {\n // Hyphen (char code 45) can be part of an identifier.\n ++this.scanner.index;\n } else {\n break;\n }\n }\n\n var id = this.scanner.source.slice(start, this.scanner.index);\n return {\n type: 100\n /* Identifier */\n ,\n value: id,\n lineNumber: this.scanner.lineNumber,\n lineStart: this.scanner.lineStart,\n start: start,\n end: this.scanner.index\n };\n }\n\n return this.scanner.lex();\n };\n\n JSXParser.prototype.nextJSXToken = function () {\n this.collectComments();\n this.startMarker.index = this.scanner.index;\n this.startMarker.line = this.scanner.lineNumber;\n this.startMarker.column = this.scanner.index - this.scanner.lineStart;\n var token = this.lexJSX();\n this.lastMarker.index = this.scanner.index;\n this.lastMarker.line = this.scanner.lineNumber;\n this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\n if (this.config.tokens) {\n this.tokens.push(this.convertToken(token));\n }\n\n return token;\n };\n\n JSXParser.prototype.nextJSXText = function () {\n this.startMarker.index = this.scanner.index;\n this.startMarker.line = this.scanner.lineNumber;\n this.startMarker.column = this.scanner.index - this.scanner.lineStart;\n var start = this.scanner.index;\n var text = '';\n\n while (!this.scanner.eof()) {\n var ch = this.scanner.source[this.scanner.index];\n\n if (ch === '{' || ch === '<') {\n break;\n }\n\n ++this.scanner.index;\n text += ch;\n\n if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n ++this.scanner.lineNumber;\n\n if (ch === '\\r' && this.scanner.source[this.scanner.index] === '\\n') {\n ++this.scanner.index;\n }\n\n this.scanner.lineStart = this.scanner.index;\n }\n }\n\n this.lastMarker.index = this.scanner.index;\n this.lastMarker.line = this.scanner.lineNumber;\n this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n var token = {\n type: 101\n /* Text */\n ,\n value: text,\n lineNumber: this.scanner.lineNumber,\n lineStart: this.scanner.lineStart,\n start: start,\n end: this.scanner.index\n };\n\n if (text.length > 0 && this.config.tokens) {\n this.tokens.push(this.convertToken(token));\n }\n\n return token;\n };\n\n JSXParser.prototype.peekJSXToken = function () {\n var state = this.scanner.saveState();\n this.scanner.scanComments();\n var next = this.lexJSX();\n this.scanner.restoreState(state);\n return next;\n }; // Expect the next JSX token to match the specified punctuator.\n // If not, an exception will be thrown.\n\n\n JSXParser.prototype.expectJSX = function (value) {\n var token = this.nextJSXToken();\n\n if (token.type !== 7\n /* Punctuator */\n || token.value !== value) {\n this.throwUnexpectedToken(token);\n }\n }; // Return true if the next JSX token matches the specified punctuator.\n\n\n JSXParser.prototype.matchJSX = function (value) {\n var next = this.peekJSXToken();\n return next.type === 7\n /* Punctuator */\n && next.value === value;\n };\n\n JSXParser.prototype.parseJSXIdentifier = function () {\n var node = this.createJSXNode();\n var token = this.nextJSXToken();\n\n if (token.type !== 100\n /* Identifier */\n ) {\n this.throwUnexpectedToken(token);\n }\n\n return this.finalize(node, new JSXNode.JSXIdentifier(token.value));\n };\n\n JSXParser.prototype.parseJSXElementName = function () {\n var node = this.createJSXNode();\n var elementName = this.parseJSXIdentifier();\n\n if (this.matchJSX(':')) {\n var namespace = elementName;\n this.expectJSX(':');\n var name_1 = this.parseJSXIdentifier();\n elementName = this.finalize(node, new JSXNode.JSXNamespacedName(namespace, name_1));\n } else if (this.matchJSX('.')) {\n while (this.matchJSX('.')) {\n var object = elementName;\n this.expectJSX('.');\n var property = this.parseJSXIdentifier();\n elementName = this.finalize(node, new JSXNode.JSXMemberExpression(object, property));\n }\n }\n\n return elementName;\n };\n\n JSXParser.prototype.parseJSXAttributeName = function () {\n var node = this.createJSXNode();\n var attributeName;\n var identifier = this.parseJSXIdentifier();\n\n if (this.matchJSX(':')) {\n var namespace = identifier;\n this.expectJSX(':');\n var name_2 = this.parseJSXIdentifier();\n attributeName = this.finalize(node, new JSXNode.JSXNamespacedName(namespace, name_2));\n } else {\n attributeName = identifier;\n }\n\n return attributeName;\n };\n\n JSXParser.prototype.parseJSXStringLiteralAttribute = function () {\n var node = this.createJSXNode();\n var token = this.nextJSXToken();\n\n if (token.type !== 8\n /* StringLiteral */\n ) {\n this.throwUnexpectedToken(token);\n }\n\n var raw = this.getTokenRaw(token);\n return this.finalize(node, new Node.Literal(token.value, raw));\n };\n\n JSXParser.prototype.parseJSXExpressionAttribute = function () {\n var node = this.createJSXNode();\n this.expectJSX('{');\n this.finishJSX();\n\n if (this.match('}')) {\n this.tolerateError('JSX attributes must only be assigned a non-empty expression');\n }\n\n var expression = this.parseAssignmentExpression();\n this.reenterJSX();\n return this.finalize(node, new JSXNode.JSXExpressionContainer(expression));\n };\n\n JSXParser.prototype.parseJSXAttributeValue = function () {\n return this.matchJSX('{') ? this.parseJSXExpressionAttribute() : this.matchJSX('<') ? this.parseJSXElement() : this.parseJSXStringLiteralAttribute();\n };\n\n JSXParser.prototype.parseJSXNameValueAttribute = function () {\n var node = this.createJSXNode();\n var name = this.parseJSXAttributeName();\n var value = null;\n\n if (this.matchJSX('=')) {\n this.expectJSX('=');\n value = this.parseJSXAttributeValue();\n }\n\n return this.finalize(node, new JSXNode.JSXAttribute(name, value));\n };\n\n JSXParser.prototype.parseJSXSpreadAttribute = function () {\n var node = this.createJSXNode();\n this.expectJSX('{');\n this.expectJSX('...');\n this.finishJSX();\n var argument = this.parseAssignmentExpression();\n this.reenterJSX();\n return this.finalize(node, new JSXNode.JSXSpreadAttribute(argument));\n };\n\n JSXParser.prototype.parseJSXAttributes = function () {\n var attributes = [];\n\n while (!this.matchJSX('/') && !this.matchJSX('>')) {\n var attribute = this.matchJSX('{') ? this.parseJSXSpreadAttribute() : this.parseJSXNameValueAttribute();\n attributes.push(attribute);\n }\n\n return attributes;\n };\n\n JSXParser.prototype.parseJSXOpeningElement = function () {\n var node = this.createJSXNode();\n this.expectJSX('<');\n var name = this.parseJSXElementName();\n var attributes = this.parseJSXAttributes();\n var selfClosing = this.matchJSX('/');\n\n if (selfClosing) {\n this.expectJSX('/');\n }\n\n this.expectJSX('>');\n return this.finalize(node, new JSXNode.JSXOpeningElement(name, selfClosing, attributes));\n };\n\n JSXParser.prototype.parseJSXBoundaryElement = function () {\n var node = this.createJSXNode();\n this.expectJSX('<');\n\n if (this.matchJSX('/')) {\n this.expectJSX('/');\n var name_3 = this.parseJSXElementName();\n this.expectJSX('>');\n return this.finalize(node, new JSXNode.JSXClosingElement(name_3));\n }\n\n var name = this.parseJSXElementName();\n var attributes = this.parseJSXAttributes();\n var selfClosing = this.matchJSX('/');\n\n if (selfClosing) {\n this.expectJSX('/');\n }\n\n this.expectJSX('>');\n return this.finalize(node, new JSXNode.JSXOpeningElement(name, selfClosing, attributes));\n };\n\n JSXParser.prototype.parseJSXEmptyExpression = function () {\n var node = this.createJSXChildNode();\n this.collectComments();\n this.lastMarker.index = this.scanner.index;\n this.lastMarker.line = this.scanner.lineNumber;\n this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n return this.finalize(node, new JSXNode.JSXEmptyExpression());\n };\n\n JSXParser.prototype.parseJSXExpressionContainer = function () {\n var node = this.createJSXNode();\n this.expectJSX('{');\n var expression;\n\n if (this.matchJSX('}')) {\n expression = this.parseJSXEmptyExpression();\n this.expectJSX('}');\n } else {\n this.finishJSX();\n expression = this.parseAssignmentExpression();\n this.reenterJSX();\n }\n\n return this.finalize(node, new JSXNode.JSXExpressionContainer(expression));\n };\n\n JSXParser.prototype.parseJSXChildren = function () {\n var children = [];\n\n while (!this.scanner.eof()) {\n var node = this.createJSXChildNode();\n var token = this.nextJSXText();\n\n if (token.start < token.end) {\n var raw = this.getTokenRaw(token);\n var child = this.finalize(node, new JSXNode.JSXText(token.value, raw));\n children.push(child);\n }\n\n if (this.scanner.source[this.scanner.index] === '{') {\n var container = this.parseJSXExpressionContainer();\n children.push(container);\n } else {\n break;\n }\n }\n\n return children;\n };\n\n JSXParser.prototype.parseComplexJSXElement = function (el) {\n var stack = [];\n\n while (!this.scanner.eof()) {\n el.children = el.children.concat(this.parseJSXChildren());\n var node = this.createJSXChildNode();\n var element = this.parseJSXBoundaryElement();\n\n if (element.type === jsx_syntax_1.JSXSyntax.JSXOpeningElement) {\n var opening = element;\n\n if (opening.selfClosing) {\n var child = this.finalize(node, new JSXNode.JSXElement(opening, [], null));\n el.children.push(child);\n } else {\n stack.push(el);\n el = {\n node: node,\n opening: opening,\n closing: null,\n children: []\n };\n }\n }\n\n if (element.type === jsx_syntax_1.JSXSyntax.JSXClosingElement) {\n el.closing = element;\n var open_1 = getQualifiedElementName(el.opening.name);\n var close_1 = getQualifiedElementName(el.closing.name);\n\n if (open_1 !== close_1) {\n this.tolerateError('Expected corresponding JSX closing tag for %0', open_1);\n }\n\n if (stack.length > 0) {\n var child = this.finalize(el.node, new JSXNode.JSXElement(el.opening, el.children, el.closing));\n el = stack[stack.length - 1];\n el.children.push(child);\n stack.pop();\n } else {\n break;\n }\n }\n }\n\n return el;\n };\n\n JSXParser.prototype.parseJSXElement = function () {\n var node = this.createJSXNode();\n var opening = this.parseJSXOpeningElement();\n var children = [];\n var closing = null;\n\n if (!opening.selfClosing) {\n var el = this.parseComplexJSXElement({\n node: node,\n opening: opening,\n closing: closing,\n children: children\n });\n children = el.children;\n closing = el.closing;\n }\n\n return this.finalize(node, new JSXNode.JSXElement(opening, children, closing));\n };\n\n JSXParser.prototype.parseJSXRoot = function () {\n // Pop the opening '<' added from the lookahead.\n if (this.config.tokens) {\n this.tokens.pop();\n }\n\n this.startJSX();\n var element = this.parseJSXElement();\n this.finishJSX();\n return element;\n };\n\n JSXParser.prototype.isStartOfExpression = function () {\n return _super.prototype.isStartOfExpression.call(this) || this.match('<');\n };\n\n return JSXParser;\n }(parser_1.Parser);\n\n exports.JSXParser = JSXParser;\n /***/\n },\n /* 4 */\n\n /***/\n function (module, exports) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n }); // See also tools/generate-unicode-regex.js.\n\n var Regex = {\n // Unicode v8.0.0 NonAsciiIdentifierStart:\n NonAsciiIdentifierStart: /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309B-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDEC0-\\uDEF8]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1]|\\uD87E[\\uDC00-\\uDE1D]/,\n // Unicode v8.0.0 NonAsciiIdentifierPart:\n NonAsciiIdentifierPart: /[\\xAA\\xB5\\xB7\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B4\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1369-\\u1371\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDCA-\\uDDCC\\uDDD0-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9\\uDF00-\\uDF19\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDEC0-\\uDEF8]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF]/\n };\n exports.Character = {\n /* tslint:disable:no-bitwise */\n fromCodePoint: function fromCodePoint(cp) {\n return cp < 0x10000 ? String.fromCharCode(cp) : String.fromCharCode(0xD800 + (cp - 0x10000 >> 10)) + String.fromCharCode(0xDC00 + (cp - 0x10000 & 1023));\n },\n // https://tc39.github.io/ecma262/#sec-white-space\n isWhiteSpace: function isWhiteSpace(cp) {\n return cp === 0x20 || cp === 0x09 || cp === 0x0B || cp === 0x0C || cp === 0xA0 || cp >= 0x1680 && [0x1680, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(cp) >= 0;\n },\n // https://tc39.github.io/ecma262/#sec-line-terminators\n isLineTerminator: function isLineTerminator(cp) {\n return cp === 0x0A || cp === 0x0D || cp === 0x2028 || cp === 0x2029;\n },\n // https://tc39.github.io/ecma262/#sec-names-and-keywords\n isIdentifierStart: function isIdentifierStart(cp) {\n return cp === 0x24 || cp === 0x5F || cp >= 0x41 && cp <= 0x5A || cp >= 0x61 && cp <= 0x7A || cp === 0x5C || cp >= 0x80 && Regex.NonAsciiIdentifierStart.test(exports.Character.fromCodePoint(cp));\n },\n isIdentifierPart: function isIdentifierPart(cp) {\n return cp === 0x24 || cp === 0x5F || cp >= 0x41 && cp <= 0x5A || cp >= 0x61 && cp <= 0x7A || cp >= 0x30 && cp <= 0x39 || cp === 0x5C || cp >= 0x80 && Regex.NonAsciiIdentifierPart.test(exports.Character.fromCodePoint(cp));\n },\n // https://tc39.github.io/ecma262/#sec-literals-numeric-literals\n isDecimalDigit: function isDecimalDigit(cp) {\n return cp >= 0x30 && cp <= 0x39; // 0..9\n },\n isHexDigit: function isHexDigit(cp) {\n return cp >= 0x30 && cp <= 0x39 || cp >= 0x41 && cp <= 0x46 || cp >= 0x61 && cp <= 0x66; // a..f\n },\n isOctalDigit: function isOctalDigit(cp) {\n return cp >= 0x30 && cp <= 0x37; // 0..7\n }\n };\n /***/\n },\n /* 5 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var jsx_syntax_1 = __webpack_require__(6);\n /* tslint:disable:max-classes-per-file */\n\n\n var JSXClosingElement = function () {\n function JSXClosingElement(name) {\n this.type = jsx_syntax_1.JSXSyntax.JSXClosingElement;\n this.name = name;\n }\n\n return JSXClosingElement;\n }();\n\n exports.JSXClosingElement = JSXClosingElement;\n\n var JSXElement = function () {\n function JSXElement(openingElement, children, closingElement) {\n this.type = jsx_syntax_1.JSXSyntax.JSXElement;\n this.openingElement = openingElement;\n this.children = children;\n this.closingElement = closingElement;\n }\n\n return JSXElement;\n }();\n\n exports.JSXElement = JSXElement;\n\n var JSXEmptyExpression = function () {\n function JSXEmptyExpression() {\n this.type = jsx_syntax_1.JSXSyntax.JSXEmptyExpression;\n }\n\n return JSXEmptyExpression;\n }();\n\n exports.JSXEmptyExpression = JSXEmptyExpression;\n\n var JSXExpressionContainer = function () {\n function JSXExpressionContainer(expression) {\n this.type = jsx_syntax_1.JSXSyntax.JSXExpressionContainer;\n this.expression = expression;\n }\n\n return JSXExpressionContainer;\n }();\n\n exports.JSXExpressionContainer = JSXExpressionContainer;\n\n var JSXIdentifier = function () {\n function JSXIdentifier(name) {\n this.type = jsx_syntax_1.JSXSyntax.JSXIdentifier;\n this.name = name;\n }\n\n return JSXIdentifier;\n }();\n\n exports.JSXIdentifier = JSXIdentifier;\n\n var JSXMemberExpression = function () {\n function JSXMemberExpression(object, property) {\n this.type = jsx_syntax_1.JSXSyntax.JSXMemberExpression;\n this.object = object;\n this.property = property;\n }\n\n return JSXMemberExpression;\n }();\n\n exports.JSXMemberExpression = JSXMemberExpression;\n\n var JSXAttribute = function () {\n function JSXAttribute(name, value) {\n this.type = jsx_syntax_1.JSXSyntax.JSXAttribute;\n this.name = name;\n this.value = value;\n }\n\n return JSXAttribute;\n }();\n\n exports.JSXAttribute = JSXAttribute;\n\n var JSXNamespacedName = function () {\n function JSXNamespacedName(namespace, name) {\n this.type = jsx_syntax_1.JSXSyntax.JSXNamespacedName;\n this.namespace = namespace;\n this.name = name;\n }\n\n return JSXNamespacedName;\n }();\n\n exports.JSXNamespacedName = JSXNamespacedName;\n\n var JSXOpeningElement = function () {\n function JSXOpeningElement(name, selfClosing, attributes) {\n this.type = jsx_syntax_1.JSXSyntax.JSXOpeningElement;\n this.name = name;\n this.selfClosing = selfClosing;\n this.attributes = attributes;\n }\n\n return JSXOpeningElement;\n }();\n\n exports.JSXOpeningElement = JSXOpeningElement;\n\n var JSXSpreadAttribute = function () {\n function JSXSpreadAttribute(argument) {\n this.type = jsx_syntax_1.JSXSyntax.JSXSpreadAttribute;\n this.argument = argument;\n }\n\n return JSXSpreadAttribute;\n }();\n\n exports.JSXSpreadAttribute = JSXSpreadAttribute;\n\n var JSXText = function () {\n function JSXText(value, raw) {\n this.type = jsx_syntax_1.JSXSyntax.JSXText;\n this.value = value;\n this.raw = raw;\n }\n\n return JSXText;\n }();\n\n exports.JSXText = JSXText;\n /***/\n },\n /* 6 */\n\n /***/\n function (module, exports) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.JSXSyntax = {\n JSXAttribute: 'JSXAttribute',\n JSXClosingElement: 'JSXClosingElement',\n JSXElement: 'JSXElement',\n JSXEmptyExpression: 'JSXEmptyExpression',\n JSXExpressionContainer: 'JSXExpressionContainer',\n JSXIdentifier: 'JSXIdentifier',\n JSXMemberExpression: 'JSXMemberExpression',\n JSXNamespacedName: 'JSXNamespacedName',\n JSXOpeningElement: 'JSXOpeningElement',\n JSXSpreadAttribute: 'JSXSpreadAttribute',\n JSXText: 'JSXText'\n };\n /***/\n },\n /* 7 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var syntax_1 = __webpack_require__(2);\n /* tslint:disable:max-classes-per-file */\n\n\n var ArrayExpression = function () {\n function ArrayExpression(elements) {\n this.type = syntax_1.Syntax.ArrayExpression;\n this.elements = elements;\n }\n\n return ArrayExpression;\n }();\n\n exports.ArrayExpression = ArrayExpression;\n\n var ArrayPattern = function () {\n function ArrayPattern(elements) {\n this.type = syntax_1.Syntax.ArrayPattern;\n this.elements = elements;\n }\n\n return ArrayPattern;\n }();\n\n exports.ArrayPattern = ArrayPattern;\n\n var ArrowFunctionExpression = function () {\n function ArrowFunctionExpression(params, body, expression) {\n this.type = syntax_1.Syntax.ArrowFunctionExpression;\n this.id = null;\n this.params = params;\n this.body = body;\n this.generator = false;\n this.expression = expression;\n this.async = false;\n }\n\n return ArrowFunctionExpression;\n }();\n\n exports.ArrowFunctionExpression = ArrowFunctionExpression;\n\n var AssignmentExpression = function () {\n function AssignmentExpression(operator, left, right) {\n this.type = syntax_1.Syntax.AssignmentExpression;\n this.operator = operator;\n this.left = left;\n this.right = right;\n }\n\n return AssignmentExpression;\n }();\n\n exports.AssignmentExpression = AssignmentExpression;\n\n var AssignmentPattern = function () {\n function AssignmentPattern(left, right) {\n this.type = syntax_1.Syntax.AssignmentPattern;\n this.left = left;\n this.right = right;\n }\n\n return AssignmentPattern;\n }();\n\n exports.AssignmentPattern = AssignmentPattern;\n\n var AsyncArrowFunctionExpression = function () {\n function AsyncArrowFunctionExpression(params, body, expression) {\n this.type = syntax_1.Syntax.ArrowFunctionExpression;\n this.id = null;\n this.params = params;\n this.body = body;\n this.generator = false;\n this.expression = expression;\n this.async = true;\n }\n\n return AsyncArrowFunctionExpression;\n }();\n\n exports.AsyncArrowFunctionExpression = AsyncArrowFunctionExpression;\n\n var AsyncFunctionDeclaration = function () {\n function AsyncFunctionDeclaration(id, params, body) {\n this.type = syntax_1.Syntax.FunctionDeclaration;\n this.id = id;\n this.params = params;\n this.body = body;\n this.generator = false;\n this.expression = false;\n this.async = true;\n }\n\n return AsyncFunctionDeclaration;\n }();\n\n exports.AsyncFunctionDeclaration = AsyncFunctionDeclaration;\n\n var AsyncFunctionExpression = function () {\n function AsyncFunctionExpression(id, params, body) {\n this.type = syntax_1.Syntax.FunctionExpression;\n this.id = id;\n this.params = params;\n this.body = body;\n this.generator = false;\n this.expression = false;\n this.async = true;\n }\n\n return AsyncFunctionExpression;\n }();\n\n exports.AsyncFunctionExpression = AsyncFunctionExpression;\n\n var AwaitExpression = function () {\n function AwaitExpression(argument) {\n this.type = syntax_1.Syntax.AwaitExpression;\n this.argument = argument;\n }\n\n return AwaitExpression;\n }();\n\n exports.AwaitExpression = AwaitExpression;\n\n var BinaryExpression = function () {\n function BinaryExpression(operator, left, right) {\n var logical = operator === '||' || operator === '&&';\n this.type = logical ? syntax_1.Syntax.LogicalExpression : syntax_1.Syntax.BinaryExpression;\n this.operator = operator;\n this.left = left;\n this.right = right;\n }\n\n return BinaryExpression;\n }();\n\n exports.BinaryExpression = BinaryExpression;\n\n var BlockStatement = function () {\n function BlockStatement(body) {\n this.type = syntax_1.Syntax.BlockStatement;\n this.body = body;\n }\n\n return BlockStatement;\n }();\n\n exports.BlockStatement = BlockStatement;\n\n var BreakStatement = function () {\n function BreakStatement(label) {\n this.type = syntax_1.Syntax.BreakStatement;\n this.label = label;\n }\n\n return BreakStatement;\n }();\n\n exports.BreakStatement = BreakStatement;\n\n var CallExpression = function () {\n function CallExpression(callee, args) {\n this.type = syntax_1.Syntax.CallExpression;\n this.callee = callee;\n this.arguments = args;\n }\n\n return CallExpression;\n }();\n\n exports.CallExpression = CallExpression;\n\n var CatchClause = function () {\n function CatchClause(param, body) {\n this.type = syntax_1.Syntax.CatchClause;\n this.param = param;\n this.body = body;\n }\n\n return CatchClause;\n }();\n\n exports.CatchClause = CatchClause;\n\n var ClassBody = function () {\n function ClassBody(body) {\n this.type = syntax_1.Syntax.ClassBody;\n this.body = body;\n }\n\n return ClassBody;\n }();\n\n exports.ClassBody = ClassBody;\n\n var ClassDeclaration = function () {\n function ClassDeclaration(id, superClass, body) {\n this.type = syntax_1.Syntax.ClassDeclaration;\n this.id = id;\n this.superClass = superClass;\n this.body = body;\n }\n\n return ClassDeclaration;\n }();\n\n exports.ClassDeclaration = ClassDeclaration;\n\n var ClassExpression = function () {\n function ClassExpression(id, superClass, body) {\n this.type = syntax_1.Syntax.ClassExpression;\n this.id = id;\n this.superClass = superClass;\n this.body = body;\n }\n\n return ClassExpression;\n }();\n\n exports.ClassExpression = ClassExpression;\n\n var ComputedMemberExpression = function () {\n function ComputedMemberExpression(object, property) {\n this.type = syntax_1.Syntax.MemberExpression;\n this.computed = true;\n this.object = object;\n this.property = property;\n }\n\n return ComputedMemberExpression;\n }();\n\n exports.ComputedMemberExpression = ComputedMemberExpression;\n\n var ConditionalExpression = function () {\n function ConditionalExpression(test, consequent, alternate) {\n this.type = syntax_1.Syntax.ConditionalExpression;\n this.test = test;\n this.consequent = consequent;\n this.alternate = alternate;\n }\n\n return ConditionalExpression;\n }();\n\n exports.ConditionalExpression = ConditionalExpression;\n\n var ContinueStatement = function () {\n function ContinueStatement(label) {\n this.type = syntax_1.Syntax.ContinueStatement;\n this.label = label;\n }\n\n return ContinueStatement;\n }();\n\n exports.ContinueStatement = ContinueStatement;\n\n var DebuggerStatement = function () {\n function DebuggerStatement() {\n this.type = syntax_1.Syntax.DebuggerStatement;\n }\n\n return DebuggerStatement;\n }();\n\n exports.DebuggerStatement = DebuggerStatement;\n\n var Directive = function () {\n function Directive(expression, directive) {\n this.type = syntax_1.Syntax.ExpressionStatement;\n this.expression = expression;\n this.directive = directive;\n }\n\n return Directive;\n }();\n\n exports.Directive = Directive;\n\n var DoWhileStatement = function () {\n function DoWhileStatement(body, test) {\n this.type = syntax_1.Syntax.DoWhileStatement;\n this.body = body;\n this.test = test;\n }\n\n return DoWhileStatement;\n }();\n\n exports.DoWhileStatement = DoWhileStatement;\n\n var EmptyStatement = function () {\n function EmptyStatement() {\n this.type = syntax_1.Syntax.EmptyStatement;\n }\n\n return EmptyStatement;\n }();\n\n exports.EmptyStatement = EmptyStatement;\n\n var ExportAllDeclaration = function () {\n function ExportAllDeclaration(source) {\n this.type = syntax_1.Syntax.ExportAllDeclaration;\n this.source = source;\n }\n\n return ExportAllDeclaration;\n }();\n\n exports.ExportAllDeclaration = ExportAllDeclaration;\n\n var ExportDefaultDeclaration = function () {\n function ExportDefaultDeclaration(declaration) {\n this.type = syntax_1.Syntax.ExportDefaultDeclaration;\n this.declaration = declaration;\n }\n\n return ExportDefaultDeclaration;\n }();\n\n exports.ExportDefaultDeclaration = ExportDefaultDeclaration;\n\n var ExportNamedDeclaration = function () {\n function ExportNamedDeclaration(declaration, specifiers, source) {\n this.type = syntax_1.Syntax.ExportNamedDeclaration;\n this.declaration = declaration;\n this.specifiers = specifiers;\n this.source = source;\n }\n\n return ExportNamedDeclaration;\n }();\n\n exports.ExportNamedDeclaration = ExportNamedDeclaration;\n\n var ExportSpecifier = function () {\n function ExportSpecifier(local, exported) {\n this.type = syntax_1.Syntax.ExportSpecifier;\n this.exported = exported;\n this.local = local;\n }\n\n return ExportSpecifier;\n }();\n\n exports.ExportSpecifier = ExportSpecifier;\n\n var ExpressionStatement = function () {\n function ExpressionStatement(expression) {\n this.type = syntax_1.Syntax.ExpressionStatement;\n this.expression = expression;\n }\n\n return ExpressionStatement;\n }();\n\n exports.ExpressionStatement = ExpressionStatement;\n\n var ForInStatement = function () {\n function ForInStatement(left, right, body) {\n this.type = syntax_1.Syntax.ForInStatement;\n this.left = left;\n this.right = right;\n this.body = body;\n this.each = false;\n }\n\n return ForInStatement;\n }();\n\n exports.ForInStatement = ForInStatement;\n\n var ForOfStatement = function () {\n function ForOfStatement(left, right, body) {\n this.type = syntax_1.Syntax.ForOfStatement;\n this.left = left;\n this.right = right;\n this.body = body;\n }\n\n return ForOfStatement;\n }();\n\n exports.ForOfStatement = ForOfStatement;\n\n var ForStatement = function () {\n function ForStatement(init, test, update, body) {\n this.type = syntax_1.Syntax.ForStatement;\n this.init = init;\n this.test = test;\n this.update = update;\n this.body = body;\n }\n\n return ForStatement;\n }();\n\n exports.ForStatement = ForStatement;\n\n var FunctionDeclaration = function () {\n function FunctionDeclaration(id, params, body, generator) {\n this.type = syntax_1.Syntax.FunctionDeclaration;\n this.id = id;\n this.params = params;\n this.body = body;\n this.generator = generator;\n this.expression = false;\n this.async = false;\n }\n\n return FunctionDeclaration;\n }();\n\n exports.FunctionDeclaration = FunctionDeclaration;\n\n var FunctionExpression = function () {\n function FunctionExpression(id, params, body, generator) {\n this.type = syntax_1.Syntax.FunctionExpression;\n this.id = id;\n this.params = params;\n this.body = body;\n this.generator = generator;\n this.expression = false;\n this.async = false;\n }\n\n return FunctionExpression;\n }();\n\n exports.FunctionExpression = FunctionExpression;\n\n var Identifier = function () {\n function Identifier(name) {\n this.type = syntax_1.Syntax.Identifier;\n this.name = name;\n }\n\n return Identifier;\n }();\n\n exports.Identifier = Identifier;\n\n var IfStatement = function () {\n function IfStatement(test, consequent, alternate) {\n this.type = syntax_1.Syntax.IfStatement;\n this.test = test;\n this.consequent = consequent;\n this.alternate = alternate;\n }\n\n return IfStatement;\n }();\n\n exports.IfStatement = IfStatement;\n\n var ImportDeclaration = function () {\n function ImportDeclaration(specifiers, source) {\n this.type = syntax_1.Syntax.ImportDeclaration;\n this.specifiers = specifiers;\n this.source = source;\n }\n\n return ImportDeclaration;\n }();\n\n exports.ImportDeclaration = ImportDeclaration;\n\n var ImportDefaultSpecifier = function () {\n function ImportDefaultSpecifier(local) {\n this.type = syntax_1.Syntax.ImportDefaultSpecifier;\n this.local = local;\n }\n\n return ImportDefaultSpecifier;\n }();\n\n exports.ImportDefaultSpecifier = ImportDefaultSpecifier;\n\n var ImportNamespaceSpecifier = function () {\n function ImportNamespaceSpecifier(local) {\n this.type = syntax_1.Syntax.ImportNamespaceSpecifier;\n this.local = local;\n }\n\n return ImportNamespaceSpecifier;\n }();\n\n exports.ImportNamespaceSpecifier = ImportNamespaceSpecifier;\n\n var ImportSpecifier = function () {\n function ImportSpecifier(local, imported) {\n this.type = syntax_1.Syntax.ImportSpecifier;\n this.local = local;\n this.imported = imported;\n }\n\n return ImportSpecifier;\n }();\n\n exports.ImportSpecifier = ImportSpecifier;\n\n var LabeledStatement = function () {\n function LabeledStatement(label, body) {\n this.type = syntax_1.Syntax.LabeledStatement;\n this.label = label;\n this.body = body;\n }\n\n return LabeledStatement;\n }();\n\n exports.LabeledStatement = LabeledStatement;\n\n var Literal = function () {\n function Literal(value, raw) {\n this.type = syntax_1.Syntax.Literal;\n this.value = value;\n this.raw = raw;\n }\n\n return Literal;\n }();\n\n exports.Literal = Literal;\n\n var MetaProperty = function () {\n function MetaProperty(meta, property) {\n this.type = syntax_1.Syntax.MetaProperty;\n this.meta = meta;\n this.property = property;\n }\n\n return MetaProperty;\n }();\n\n exports.MetaProperty = MetaProperty;\n\n var MethodDefinition = function () {\n function MethodDefinition(key, computed, value, kind, isStatic) {\n this.type = syntax_1.Syntax.MethodDefinition;\n this.key = key;\n this.computed = computed;\n this.value = value;\n this.kind = kind;\n this.static = isStatic;\n }\n\n return MethodDefinition;\n }();\n\n exports.MethodDefinition = MethodDefinition;\n\n var Module = function () {\n function Module(body) {\n this.type = syntax_1.Syntax.Program;\n this.body = body;\n this.sourceType = 'module';\n }\n\n return Module;\n }();\n\n exports.Module = Module;\n\n var NewExpression = function () {\n function NewExpression(callee, args) {\n this.type = syntax_1.Syntax.NewExpression;\n this.callee = callee;\n this.arguments = args;\n }\n\n return NewExpression;\n }();\n\n exports.NewExpression = NewExpression;\n\n var ObjectExpression = function () {\n function ObjectExpression(properties) {\n this.type = syntax_1.Syntax.ObjectExpression;\n this.properties = properties;\n }\n\n return ObjectExpression;\n }();\n\n exports.ObjectExpression = ObjectExpression;\n\n var ObjectPattern = function () {\n function ObjectPattern(properties) {\n this.type = syntax_1.Syntax.ObjectPattern;\n this.properties = properties;\n }\n\n return ObjectPattern;\n }();\n\n exports.ObjectPattern = ObjectPattern;\n\n var Property = function () {\n function Property(kind, key, computed, value, method, shorthand) {\n this.type = syntax_1.Syntax.Property;\n this.key = key;\n this.computed = computed;\n this.value = value;\n this.kind = kind;\n this.method = method;\n this.shorthand = shorthand;\n }\n\n return Property;\n }();\n\n exports.Property = Property;\n\n var RegexLiteral = function () {\n function RegexLiteral(value, raw, pattern, flags) {\n this.type = syntax_1.Syntax.Literal;\n this.value = value;\n this.raw = raw;\n this.regex = {\n pattern: pattern,\n flags: flags\n };\n }\n\n return RegexLiteral;\n }();\n\n exports.RegexLiteral = RegexLiteral;\n\n var RestElement = function () {\n function RestElement(argument) {\n this.type = syntax_1.Syntax.RestElement;\n this.argument = argument;\n }\n\n return RestElement;\n }();\n\n exports.RestElement = RestElement;\n\n var ReturnStatement = function () {\n function ReturnStatement(argument) {\n this.type = syntax_1.Syntax.ReturnStatement;\n this.argument = argument;\n }\n\n return ReturnStatement;\n }();\n\n exports.ReturnStatement = ReturnStatement;\n\n var Script = function () {\n function Script(body) {\n this.type = syntax_1.Syntax.Program;\n this.body = body;\n this.sourceType = 'script';\n }\n\n return Script;\n }();\n\n exports.Script = Script;\n\n var SequenceExpression = function () {\n function SequenceExpression(expressions) {\n this.type = syntax_1.Syntax.SequenceExpression;\n this.expressions = expressions;\n }\n\n return SequenceExpression;\n }();\n\n exports.SequenceExpression = SequenceExpression;\n\n var SpreadElement = function () {\n function SpreadElement(argument) {\n this.type = syntax_1.Syntax.SpreadElement;\n this.argument = argument;\n }\n\n return SpreadElement;\n }();\n\n exports.SpreadElement = SpreadElement;\n\n var StaticMemberExpression = function () {\n function StaticMemberExpression(object, property) {\n this.type = syntax_1.Syntax.MemberExpression;\n this.computed = false;\n this.object = object;\n this.property = property;\n }\n\n return StaticMemberExpression;\n }();\n\n exports.StaticMemberExpression = StaticMemberExpression;\n\n var Super = function () {\n function Super() {\n this.type = syntax_1.Syntax.Super;\n }\n\n return Super;\n }();\n\n exports.Super = Super;\n\n var SwitchCase = function () {\n function SwitchCase(test, consequent) {\n this.type = syntax_1.Syntax.SwitchCase;\n this.test = test;\n this.consequent = consequent;\n }\n\n return SwitchCase;\n }();\n\n exports.SwitchCase = SwitchCase;\n\n var SwitchStatement = function () {\n function SwitchStatement(discriminant, cases) {\n this.type = syntax_1.Syntax.SwitchStatement;\n this.discriminant = discriminant;\n this.cases = cases;\n }\n\n return SwitchStatement;\n }();\n\n exports.SwitchStatement = SwitchStatement;\n\n var TaggedTemplateExpression = function () {\n function TaggedTemplateExpression(tag, quasi) {\n this.type = syntax_1.Syntax.TaggedTemplateExpression;\n this.tag = tag;\n this.quasi = quasi;\n }\n\n return TaggedTemplateExpression;\n }();\n\n exports.TaggedTemplateExpression = TaggedTemplateExpression;\n\n var TemplateElement = function () {\n function TemplateElement(value, tail) {\n this.type = syntax_1.Syntax.TemplateElement;\n this.value = value;\n this.tail = tail;\n }\n\n return TemplateElement;\n }();\n\n exports.TemplateElement = TemplateElement;\n\n var TemplateLiteral = function () {\n function TemplateLiteral(quasis, expressions) {\n this.type = syntax_1.Syntax.TemplateLiteral;\n this.quasis = quasis;\n this.expressions = expressions;\n }\n\n return TemplateLiteral;\n }();\n\n exports.TemplateLiteral = TemplateLiteral;\n\n var ThisExpression = function () {\n function ThisExpression() {\n this.type = syntax_1.Syntax.ThisExpression;\n }\n\n return ThisExpression;\n }();\n\n exports.ThisExpression = ThisExpression;\n\n var ThrowStatement = function () {\n function ThrowStatement(argument) {\n this.type = syntax_1.Syntax.ThrowStatement;\n this.argument = argument;\n }\n\n return ThrowStatement;\n }();\n\n exports.ThrowStatement = ThrowStatement;\n\n var TryStatement = function () {\n function TryStatement(block, handler, finalizer) {\n this.type = syntax_1.Syntax.TryStatement;\n this.block = block;\n this.handler = handler;\n this.finalizer = finalizer;\n }\n\n return TryStatement;\n }();\n\n exports.TryStatement = TryStatement;\n\n var UnaryExpression = function () {\n function UnaryExpression(operator, argument) {\n this.type = syntax_1.Syntax.UnaryExpression;\n this.operator = operator;\n this.argument = argument;\n this.prefix = true;\n }\n\n return UnaryExpression;\n }();\n\n exports.UnaryExpression = UnaryExpression;\n\n var UpdateExpression = function () {\n function UpdateExpression(operator, argument, prefix) {\n this.type = syntax_1.Syntax.UpdateExpression;\n this.operator = operator;\n this.argument = argument;\n this.prefix = prefix;\n }\n\n return UpdateExpression;\n }();\n\n exports.UpdateExpression = UpdateExpression;\n\n var VariableDeclaration = function () {\n function VariableDeclaration(declarations, kind) {\n this.type = syntax_1.Syntax.VariableDeclaration;\n this.declarations = declarations;\n this.kind = kind;\n }\n\n return VariableDeclaration;\n }();\n\n exports.VariableDeclaration = VariableDeclaration;\n\n var VariableDeclarator = function () {\n function VariableDeclarator(id, init) {\n this.type = syntax_1.Syntax.VariableDeclarator;\n this.id = id;\n this.init = init;\n }\n\n return VariableDeclarator;\n }();\n\n exports.VariableDeclarator = VariableDeclarator;\n\n var WhileStatement = function () {\n function WhileStatement(test, body) {\n this.type = syntax_1.Syntax.WhileStatement;\n this.test = test;\n this.body = body;\n }\n\n return WhileStatement;\n }();\n\n exports.WhileStatement = WhileStatement;\n\n var WithStatement = function () {\n function WithStatement(object, body) {\n this.type = syntax_1.Syntax.WithStatement;\n this.object = object;\n this.body = body;\n }\n\n return WithStatement;\n }();\n\n exports.WithStatement = WithStatement;\n\n var YieldExpression = function () {\n function YieldExpression(argument, delegate) {\n this.type = syntax_1.Syntax.YieldExpression;\n this.argument = argument;\n this.delegate = delegate;\n }\n\n return YieldExpression;\n }();\n\n exports.YieldExpression = YieldExpression;\n /***/\n },\n /* 8 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var assert_1 = __webpack_require__(9);\n\n var error_handler_1 = __webpack_require__(10);\n\n var messages_1 = __webpack_require__(11);\n\n var Node = __webpack_require__(7);\n\n var scanner_1 = __webpack_require__(12);\n\n var syntax_1 = __webpack_require__(2);\n\n var token_1 = __webpack_require__(13);\n\n var ArrowParameterPlaceHolder = 'ArrowParameterPlaceHolder';\n\n var Parser = function () {\n function Parser(code, options, delegate) {\n if (options === void 0) {\n options = {};\n }\n\n this.config = {\n range: typeof options.range === 'boolean' && options.range,\n loc: typeof options.loc === 'boolean' && options.loc,\n source: null,\n tokens: typeof options.tokens === 'boolean' && options.tokens,\n comment: typeof options.comment === 'boolean' && options.comment,\n tolerant: typeof options.tolerant === 'boolean' && options.tolerant\n };\n\n if (this.config.loc && options.source && options.source !== null) {\n this.config.source = String(options.source);\n }\n\n this.delegate = delegate;\n this.errorHandler = new error_handler_1.ErrorHandler();\n this.errorHandler.tolerant = this.config.tolerant;\n this.scanner = new scanner_1.Scanner(code, this.errorHandler);\n this.scanner.trackComment = this.config.comment;\n this.operatorPrecedence = {\n ')': 0,\n ';': 0,\n ',': 0,\n '=': 0,\n ']': 0,\n '||': 1,\n '&&': 2,\n '|': 3,\n '^': 4,\n '&': 5,\n '==': 6,\n '!=': 6,\n '===': 6,\n '!==': 6,\n '<': 7,\n '>': 7,\n '<=': 7,\n '>=': 7,\n '<<': 8,\n '>>': 8,\n '>>>': 8,\n '+': 9,\n '-': 9,\n '*': 11,\n '/': 11,\n '%': 11\n };\n this.lookahead = {\n type: 2\n /* EOF */\n ,\n value: '',\n lineNumber: this.scanner.lineNumber,\n lineStart: 0,\n start: 0,\n end: 0\n };\n this.hasLineTerminator = false;\n this.context = {\n isModule: false,\n await: false,\n allowIn: true,\n allowStrictDirective: true,\n allowYield: true,\n firstCoverInitializedNameError: null,\n isAssignmentTarget: false,\n isBindingElement: false,\n inFunctionBody: false,\n inIteration: false,\n inSwitch: false,\n labelSet: {},\n strict: false\n };\n this.tokens = [];\n this.startMarker = {\n index: 0,\n line: this.scanner.lineNumber,\n column: 0\n };\n this.lastMarker = {\n index: 0,\n line: this.scanner.lineNumber,\n column: 0\n };\n this.nextToken();\n this.lastMarker = {\n index: this.scanner.index,\n line: this.scanner.lineNumber,\n column: this.scanner.index - this.scanner.lineStart\n };\n }\n\n Parser.prototype.throwError = function (messageFormat) {\n var values = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n values[_i - 1] = arguments[_i];\n }\n\n var args = Array.prototype.slice.call(arguments, 1);\n var msg = messageFormat.replace(/%(\\d)/g, function (whole, idx) {\n assert_1.assert(idx < args.length, 'Message reference must be in range');\n return args[idx];\n });\n var index = this.lastMarker.index;\n var line = this.lastMarker.line;\n var column = this.lastMarker.column + 1;\n throw this.errorHandler.createError(index, line, column, msg);\n };\n\n Parser.prototype.tolerateError = function (messageFormat) {\n var values = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n values[_i - 1] = arguments[_i];\n }\n\n var args = Array.prototype.slice.call(arguments, 1);\n var msg = messageFormat.replace(/%(\\d)/g, function (whole, idx) {\n assert_1.assert(idx < args.length, 'Message reference must be in range');\n return args[idx];\n });\n var index = this.lastMarker.index;\n var line = this.scanner.lineNumber;\n var column = this.lastMarker.column + 1;\n this.errorHandler.tolerateError(index, line, column, msg);\n }; // Throw an exception because of the token.\n\n\n Parser.prototype.unexpectedTokenError = function (token, message) {\n var msg = message || messages_1.Messages.UnexpectedToken;\n var value;\n\n if (token) {\n if (!message) {\n msg = token.type === 2\n /* EOF */\n ? messages_1.Messages.UnexpectedEOS : token.type === 3\n /* Identifier */\n ? messages_1.Messages.UnexpectedIdentifier : token.type === 6\n /* NumericLiteral */\n ? messages_1.Messages.UnexpectedNumber : token.type === 8\n /* StringLiteral */\n ? messages_1.Messages.UnexpectedString : token.type === 10\n /* Template */\n ? messages_1.Messages.UnexpectedTemplate : messages_1.Messages.UnexpectedToken;\n\n if (token.type === 4\n /* Keyword */\n ) {\n if (this.scanner.isFutureReservedWord(token.value)) {\n msg = messages_1.Messages.UnexpectedReserved;\n } else if (this.context.strict && this.scanner.isStrictModeReservedWord(token.value)) {\n msg = messages_1.Messages.StrictReservedWord;\n }\n }\n }\n\n value = token.value;\n } else {\n value = 'ILLEGAL';\n }\n\n msg = msg.replace('%0', value);\n\n if (token && typeof token.lineNumber === 'number') {\n var index = token.start;\n var line = token.lineNumber;\n var lastMarkerLineStart = this.lastMarker.index - this.lastMarker.column;\n var column = token.start - lastMarkerLineStart + 1;\n return this.errorHandler.createError(index, line, column, msg);\n } else {\n var index = this.lastMarker.index;\n var line = this.lastMarker.line;\n var column = this.lastMarker.column + 1;\n return this.errorHandler.createError(index, line, column, msg);\n }\n };\n\n Parser.prototype.throwUnexpectedToken = function (token, message) {\n throw this.unexpectedTokenError(token, message);\n };\n\n Parser.prototype.tolerateUnexpectedToken = function (token, message) {\n this.errorHandler.tolerate(this.unexpectedTokenError(token, message));\n };\n\n Parser.prototype.collectComments = function () {\n if (!this.config.comment) {\n this.scanner.scanComments();\n } else {\n var comments = this.scanner.scanComments();\n\n if (comments.length > 0 && this.delegate) {\n for (var i = 0; i < comments.length; ++i) {\n var e = comments[i];\n var node = void 0;\n node = {\n type: e.multiLine ? 'BlockComment' : 'LineComment',\n value: this.scanner.source.slice(e.slice[0], e.slice[1])\n };\n\n if (this.config.range) {\n node.range = e.range;\n }\n\n if (this.config.loc) {\n node.loc = e.loc;\n }\n\n var metadata = {\n start: {\n line: e.loc.start.line,\n column: e.loc.start.column,\n offset: e.range[0]\n },\n end: {\n line: e.loc.end.line,\n column: e.loc.end.column,\n offset: e.range[1]\n }\n };\n this.delegate(node, metadata);\n }\n }\n }\n }; // From internal representation to an external structure\n\n\n Parser.prototype.getTokenRaw = function (token) {\n return this.scanner.source.slice(token.start, token.end);\n };\n\n Parser.prototype.convertToken = function (token) {\n var t = {\n type: token_1.TokenName[token.type],\n value: this.getTokenRaw(token)\n };\n\n if (this.config.range) {\n t.range = [token.start, token.end];\n }\n\n if (this.config.loc) {\n t.loc = {\n start: {\n line: this.startMarker.line,\n column: this.startMarker.column\n },\n end: {\n line: this.scanner.lineNumber,\n column: this.scanner.index - this.scanner.lineStart\n }\n };\n }\n\n if (token.type === 9\n /* RegularExpression */\n ) {\n var pattern = token.pattern;\n var flags = token.flags;\n t.regex = {\n pattern: pattern,\n flags: flags\n };\n }\n\n return t;\n };\n\n Parser.prototype.nextToken = function () {\n var token = this.lookahead;\n this.lastMarker.index = this.scanner.index;\n this.lastMarker.line = this.scanner.lineNumber;\n this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n this.collectComments();\n\n if (this.scanner.index !== this.startMarker.index) {\n this.startMarker.index = this.scanner.index;\n this.startMarker.line = this.scanner.lineNumber;\n this.startMarker.column = this.scanner.index - this.scanner.lineStart;\n }\n\n var next = this.scanner.lex();\n this.hasLineTerminator = token.lineNumber !== next.lineNumber;\n\n if (next && this.context.strict && next.type === 3\n /* Identifier */\n ) {\n if (this.scanner.isStrictModeReservedWord(next.value)) {\n next.type = 4\n /* Keyword */\n ;\n }\n }\n\n this.lookahead = next;\n\n if (this.config.tokens && next.type !== 2\n /* EOF */\n ) {\n this.tokens.push(this.convertToken(next));\n }\n\n return token;\n };\n\n Parser.prototype.nextRegexToken = function () {\n this.collectComments();\n var token = this.scanner.scanRegExp();\n\n if (this.config.tokens) {\n // Pop the previous token, '/' or '/='\n // This is added from the lookahead token.\n this.tokens.pop();\n this.tokens.push(this.convertToken(token));\n } // Prime the next lookahead.\n\n\n this.lookahead = token;\n this.nextToken();\n return token;\n };\n\n Parser.prototype.createNode = function () {\n return {\n index: this.startMarker.index,\n line: this.startMarker.line,\n column: this.startMarker.column\n };\n };\n\n Parser.prototype.startNode = function (token, lastLineStart) {\n if (lastLineStart === void 0) {\n lastLineStart = 0;\n }\n\n var column = token.start - token.lineStart;\n var line = token.lineNumber;\n\n if (column < 0) {\n column += lastLineStart;\n line--;\n }\n\n return {\n index: token.start,\n line: line,\n column: column\n };\n };\n\n Parser.prototype.finalize = function (marker, node) {\n if (this.config.range) {\n node.range = [marker.index, this.lastMarker.index];\n }\n\n if (this.config.loc) {\n node.loc = {\n start: {\n line: marker.line,\n column: marker.column\n },\n end: {\n line: this.lastMarker.line,\n column: this.lastMarker.column\n }\n };\n\n if (this.config.source) {\n node.loc.source = this.config.source;\n }\n }\n\n if (this.delegate) {\n var metadata = {\n start: {\n line: marker.line,\n column: marker.column,\n offset: marker.index\n },\n end: {\n line: this.lastMarker.line,\n column: this.lastMarker.column,\n offset: this.lastMarker.index\n }\n };\n this.delegate(node, metadata);\n }\n\n return node;\n }; // Expect the next token to match the specified punctuator.\n // If not, an exception will be thrown.\n\n\n Parser.prototype.expect = function (value) {\n var token = this.nextToken();\n\n if (token.type !== 7\n /* Punctuator */\n || token.value !== value) {\n this.throwUnexpectedToken(token);\n }\n }; // Quietly expect a comma when in tolerant mode, otherwise delegates to expect().\n\n\n Parser.prototype.expectCommaSeparator = function () {\n if (this.config.tolerant) {\n var token = this.lookahead;\n\n if (token.type === 7\n /* Punctuator */\n && token.value === ',') {\n this.nextToken();\n } else if (token.type === 7\n /* Punctuator */\n && token.value === ';') {\n this.nextToken();\n this.tolerateUnexpectedToken(token);\n } else {\n this.tolerateUnexpectedToken(token, messages_1.Messages.UnexpectedToken);\n }\n } else {\n this.expect(',');\n }\n }; // Expect the next token to match the specified keyword.\n // If not, an exception will be thrown.\n\n\n Parser.prototype.expectKeyword = function (keyword) {\n var token = this.nextToken();\n\n if (token.type !== 4\n /* Keyword */\n || token.value !== keyword) {\n this.throwUnexpectedToken(token);\n }\n }; // Return true if the next token matches the specified punctuator.\n\n\n Parser.prototype.match = function (value) {\n return this.lookahead.type === 7\n /* Punctuator */\n && this.lookahead.value === value;\n }; // Return true if the next token matches the specified keyword\n\n\n Parser.prototype.matchKeyword = function (keyword) {\n return this.lookahead.type === 4\n /* Keyword */\n && this.lookahead.value === keyword;\n }; // Return true if the next token matches the specified contextual keyword\n // (where an identifier is sometimes a keyword depending on the context)\n\n\n Parser.prototype.matchContextualKeyword = function (keyword) {\n return this.lookahead.type === 3\n /* Identifier */\n && this.lookahead.value === keyword;\n }; // Return true if the next token is an assignment operator\n\n\n Parser.prototype.matchAssign = function () {\n if (this.lookahead.type !== 7\n /* Punctuator */\n ) {\n return false;\n }\n\n var op = this.lookahead.value;\n return op === '=' || op === '*=' || op === '**=' || op === '/=' || op === '%=' || op === '+=' || op === '-=' || op === '<<=' || op === '>>=' || op === '>>>=' || op === '&=' || op === '^=' || op === '|=';\n }; // Cover grammar support.\n //\n // When an assignment expression position starts with an left parenthesis, the determination of the type\n // of the syntax is to be deferred arbitrarily long until the end of the parentheses pair (plus a lookahead)\n // or the first comma. This situation also defers the determination of all the expressions nested in the pair.\n //\n // There are three productions that can be parsed in a parentheses pair that needs to be determined\n // after the outermost pair is closed. They are:\n //\n // 1. AssignmentExpression\n // 2. BindingElements\n // 3. AssignmentTargets\n //\n // In order to avoid exponential backtracking, we use two flags to denote if the production can be\n // binding element or assignment target.\n //\n // The three productions have the relationship:\n //\n // BindingElements ⊆ AssignmentTargets ⊆ AssignmentExpression\n //\n // with a single exception that CoverInitializedName when used directly in an Expression, generates\n // an early error. Therefore, we need the third state, firstCoverInitializedNameError, to track the\n // first usage of CoverInitializedName and report it when we reached the end of the parentheses pair.\n //\n // isolateCoverGrammar function runs the given parser function with a new cover grammar context, and it does not\n // effect the current flags. This means the production the parser parses is only used as an expression. Therefore\n // the CoverInitializedName check is conducted.\n //\n // inheritCoverGrammar function runs the given parse function with a new cover grammar context, and it propagates\n // the flags outside of the parser. This means the production the parser parses is used as a part of a potential\n // pattern. The CoverInitializedName check is deferred.\n\n\n Parser.prototype.isolateCoverGrammar = function (parseFunction) {\n var previousIsBindingElement = this.context.isBindingElement;\n var previousIsAssignmentTarget = this.context.isAssignmentTarget;\n var previousFirstCoverInitializedNameError = this.context.firstCoverInitializedNameError;\n this.context.isBindingElement = true;\n this.context.isAssignmentTarget = true;\n this.context.firstCoverInitializedNameError = null;\n var result = parseFunction.call(this);\n\n if (this.context.firstCoverInitializedNameError !== null) {\n this.throwUnexpectedToken(this.context.firstCoverInitializedNameError);\n }\n\n this.context.isBindingElement = previousIsBindingElement;\n this.context.isAssignmentTarget = previousIsAssignmentTarget;\n this.context.firstCoverInitializedNameError = previousFirstCoverInitializedNameError;\n return result;\n };\n\n Parser.prototype.inheritCoverGrammar = function (parseFunction) {\n var previousIsBindingElement = this.context.isBindingElement;\n var previousIsAssignmentTarget = this.context.isAssignmentTarget;\n var previousFirstCoverInitializedNameError = this.context.firstCoverInitializedNameError;\n this.context.isBindingElement = true;\n this.context.isAssignmentTarget = true;\n this.context.firstCoverInitializedNameError = null;\n var result = parseFunction.call(this);\n this.context.isBindingElement = this.context.isBindingElement && previousIsBindingElement;\n this.context.isAssignmentTarget = this.context.isAssignmentTarget && previousIsAssignmentTarget;\n this.context.firstCoverInitializedNameError = previousFirstCoverInitializedNameError || this.context.firstCoverInitializedNameError;\n return result;\n };\n\n Parser.prototype.consumeSemicolon = function () {\n if (this.match(';')) {\n this.nextToken();\n } else if (!this.hasLineTerminator) {\n if (this.lookahead.type !== 2\n /* EOF */\n && !this.match('}')) {\n this.throwUnexpectedToken(this.lookahead);\n }\n\n this.lastMarker.index = this.startMarker.index;\n this.lastMarker.line = this.startMarker.line;\n this.lastMarker.column = this.startMarker.column;\n }\n }; // https://tc39.github.io/ecma262/#sec-primary-expression\n\n\n Parser.prototype.parsePrimaryExpression = function () {\n var node = this.createNode();\n var expr;\n var token, raw;\n\n switch (this.lookahead.type) {\n case 3\n /* Identifier */\n :\n if ((this.context.isModule || this.context.await) && this.lookahead.value === 'await') {\n this.tolerateUnexpectedToken(this.lookahead);\n }\n\n expr = this.matchAsyncFunction() ? this.parseFunctionExpression() : this.finalize(node, new Node.Identifier(this.nextToken().value));\n break;\n\n case 6\n /* NumericLiteral */\n :\n case 8\n /* StringLiteral */\n :\n if (this.context.strict && this.lookahead.octal) {\n this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.StrictOctalLiteral);\n }\n\n this.context.isAssignmentTarget = false;\n this.context.isBindingElement = false;\n token = this.nextToken();\n raw = this.getTokenRaw(token);\n expr = this.finalize(node, new Node.Literal(token.value, raw));\n break;\n\n case 1\n /* BooleanLiteral */\n :\n this.context.isAssignmentTarget = false;\n this.context.isBindingElement = false;\n token = this.nextToken();\n raw = this.getTokenRaw(token);\n expr = this.finalize(node, new Node.Literal(token.value === 'true', raw));\n break;\n\n case 5\n /* NullLiteral */\n :\n this.context.isAssignmentTarget = false;\n this.context.isBindingElement = false;\n token = this.nextToken();\n raw = this.getTokenRaw(token);\n expr = this.finalize(node, new Node.Literal(null, raw));\n break;\n\n case 10\n /* Template */\n :\n expr = this.parseTemplateLiteral();\n break;\n\n case 7\n /* Punctuator */\n :\n switch (this.lookahead.value) {\n case '(':\n this.context.isBindingElement = false;\n expr = this.inheritCoverGrammar(this.parseGroupExpression);\n break;\n\n case '[':\n expr = this.inheritCoverGrammar(this.parseArrayInitializer);\n break;\n\n case '{':\n expr = this.inheritCoverGrammar(this.parseObjectInitializer);\n break;\n\n case '/':\n case '/=':\n this.context.isAssignmentTarget = false;\n this.context.isBindingElement = false;\n this.scanner.index = this.startMarker.index;\n token = this.nextRegexToken();\n raw = this.getTokenRaw(token);\n expr = this.finalize(node, new Node.RegexLiteral(token.regex, raw, token.pattern, token.flags));\n break;\n\n default:\n expr = this.throwUnexpectedToken(this.nextToken());\n }\n\n break;\n\n case 4\n /* Keyword */\n :\n if (!this.context.strict && this.context.allowYield && this.matchKeyword('yield')) {\n expr = this.parseIdentifierName();\n } else if (!this.context.strict && this.matchKeyword('let')) {\n expr = this.finalize(node, new Node.Identifier(this.nextToken().value));\n } else {\n this.context.isAssignmentTarget = false;\n this.context.isBindingElement = false;\n\n if (this.matchKeyword('function')) {\n expr = this.parseFunctionExpression();\n } else if (this.matchKeyword('this')) {\n this.nextToken();\n expr = this.finalize(node, new Node.ThisExpression());\n } else if (this.matchKeyword('class')) {\n expr = this.parseClassExpression();\n } else {\n expr = this.throwUnexpectedToken(this.nextToken());\n }\n }\n\n break;\n\n default:\n expr = this.throwUnexpectedToken(this.nextToken());\n }\n\n return expr;\n }; // https://tc39.github.io/ecma262/#sec-array-initializer\n\n\n Parser.prototype.parseSpreadElement = function () {\n var node = this.createNode();\n this.expect('...');\n var arg = this.inheritCoverGrammar(this.parseAssignmentExpression);\n return this.finalize(node, new Node.SpreadElement(arg));\n };\n\n Parser.prototype.parseArrayInitializer = function () {\n var node = this.createNode();\n var elements = [];\n this.expect('[');\n\n while (!this.match(']')) {\n if (this.match(',')) {\n this.nextToken();\n elements.push(null);\n } else if (this.match('...')) {\n var element = this.parseSpreadElement();\n\n if (!this.match(']')) {\n this.context.isAssignmentTarget = false;\n this.context.isBindingElement = false;\n this.expect(',');\n }\n\n elements.push(element);\n } else {\n elements.push(this.inheritCoverGrammar(this.parseAssignmentExpression));\n\n if (!this.match(']')) {\n this.expect(',');\n }\n }\n }\n\n this.expect(']');\n return this.finalize(node, new Node.ArrayExpression(elements));\n }; // https://tc39.github.io/ecma262/#sec-object-initializer\n\n\n Parser.prototype.parsePropertyMethod = function (params) {\n this.context.isAssignmentTarget = false;\n this.context.isBindingElement = false;\n var previousStrict = this.context.strict;\n var previousAllowStrictDirective = this.context.allowStrictDirective;\n this.context.allowStrictDirective = params.simple;\n var body = this.isolateCoverGrammar(this.parseFunctionSourceElements);\n\n if (this.context.strict && params.firstRestricted) {\n this.tolerateUnexpectedToken(params.firstRestricted, params.message);\n }\n\n if (this.context.strict && params.stricted) {\n this.tolerateUnexpectedToken(params.stricted, params.message);\n }\n\n this.context.strict = previousStrict;\n this.context.allowStrictDirective = previousAllowStrictDirective;\n return body;\n };\n\n Parser.prototype.parsePropertyMethodFunction = function () {\n var isGenerator = false;\n var node = this.createNode();\n var previousAllowYield = this.context.allowYield;\n this.context.allowYield = true;\n var params = this.parseFormalParameters();\n var method = this.parsePropertyMethod(params);\n this.context.allowYield = previousAllowYield;\n return this.finalize(node, new Node.FunctionExpression(null, params.params, method, isGenerator));\n };\n\n Parser.prototype.parsePropertyMethodAsyncFunction = function () {\n var node = this.createNode();\n var previousAllowYield = this.context.allowYield;\n var previousAwait = this.context.await;\n this.context.allowYield = false;\n this.context.await = true;\n var params = this.parseFormalParameters();\n var method = this.parsePropertyMethod(params);\n this.context.allowYield = previousAllowYield;\n this.context.await = previousAwait;\n return this.finalize(node, new Node.AsyncFunctionExpression(null, params.params, method));\n };\n\n Parser.prototype.parseObjectPropertyKey = function () {\n var node = this.createNode();\n var token = this.nextToken();\n var key;\n\n switch (token.type) {\n case 8\n /* StringLiteral */\n :\n case 6\n /* NumericLiteral */\n :\n if (this.context.strict && token.octal) {\n this.tolerateUnexpectedToken(token, messages_1.Messages.StrictOctalLiteral);\n }\n\n var raw = this.getTokenRaw(token);\n key = this.finalize(node, new Node.Literal(token.value, raw));\n break;\n\n case 3\n /* Identifier */\n :\n case 1\n /* BooleanLiteral */\n :\n case 5\n /* NullLiteral */\n :\n case 4\n /* Keyword */\n :\n key = this.finalize(node, new Node.Identifier(token.value));\n break;\n\n case 7\n /* Punctuator */\n :\n if (token.value === '[') {\n key = this.isolateCoverGrammar(this.parseAssignmentExpression);\n this.expect(']');\n } else {\n key = this.throwUnexpectedToken(token);\n }\n\n break;\n\n default:\n key = this.throwUnexpectedToken(token);\n }\n\n return key;\n };\n\n Parser.prototype.isPropertyKey = function (key, value) {\n return key.type === syntax_1.Syntax.Identifier && key.name === value || key.type === syntax_1.Syntax.Literal && key.value === value;\n };\n\n Parser.prototype.parseObjectProperty = function (hasProto) {\n var node = this.createNode();\n var token = this.lookahead;\n var kind;\n var key = null;\n var value = null;\n var computed = false;\n var method = false;\n var shorthand = false;\n var isAsync = false;\n\n if (token.type === 3\n /* Identifier */\n ) {\n var id = token.value;\n this.nextToken();\n computed = this.match('[');\n isAsync = !this.hasLineTerminator && id === 'async' && !this.match(':') && !this.match('(') && !this.match('*') && !this.match(',');\n key = isAsync ? this.parseObjectPropertyKey() : this.finalize(node, new Node.Identifier(id));\n } else if (this.match('*')) {\n this.nextToken();\n } else {\n computed = this.match('[');\n key = this.parseObjectPropertyKey();\n }\n\n var lookaheadPropertyKey = this.qualifiedPropertyName(this.lookahead);\n\n if (token.type === 3\n /* Identifier */\n && !isAsync && token.value === 'get' && lookaheadPropertyKey) {\n kind = 'get';\n computed = this.match('[');\n key = this.parseObjectPropertyKey();\n this.context.allowYield = false;\n value = this.parseGetterMethod();\n } else if (token.type === 3\n /* Identifier */\n && !isAsync && token.value === 'set' && lookaheadPropertyKey) {\n kind = 'set';\n computed = this.match('[');\n key = this.parseObjectPropertyKey();\n value = this.parseSetterMethod();\n } else if (token.type === 7\n /* Punctuator */\n && token.value === '*' && lookaheadPropertyKey) {\n kind = 'init';\n computed = this.match('[');\n key = this.parseObjectPropertyKey();\n value = this.parseGeneratorMethod();\n method = true;\n } else {\n if (!key) {\n this.throwUnexpectedToken(this.lookahead);\n }\n\n kind = 'init';\n\n if (this.match(':') && !isAsync) {\n if (!computed && this.isPropertyKey(key, '__proto__')) {\n if (hasProto.value) {\n this.tolerateError(messages_1.Messages.DuplicateProtoProperty);\n }\n\n hasProto.value = true;\n }\n\n this.nextToken();\n value = this.inheritCoverGrammar(this.parseAssignmentExpression);\n } else if (this.match('(')) {\n value = isAsync ? this.parsePropertyMethodAsyncFunction() : this.parsePropertyMethodFunction();\n method = true;\n } else if (token.type === 3\n /* Identifier */\n ) {\n var id = this.finalize(node, new Node.Identifier(token.value));\n\n if (this.match('=')) {\n this.context.firstCoverInitializedNameError = this.lookahead;\n this.nextToken();\n shorthand = true;\n var init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n value = this.finalize(node, new Node.AssignmentPattern(id, init));\n } else {\n shorthand = true;\n value = id;\n }\n } else {\n this.throwUnexpectedToken(this.nextToken());\n }\n }\n\n return this.finalize(node, new Node.Property(kind, key, computed, value, method, shorthand));\n };\n\n Parser.prototype.parseObjectInitializer = function () {\n var node = this.createNode();\n this.expect('{');\n var properties = [];\n var hasProto = {\n value: false\n };\n\n while (!this.match('}')) {\n properties.push(this.parseObjectProperty(hasProto));\n\n if (!this.match('}')) {\n this.expectCommaSeparator();\n }\n }\n\n this.expect('}');\n return this.finalize(node, new Node.ObjectExpression(properties));\n }; // https://tc39.github.io/ecma262/#sec-template-literals\n\n\n Parser.prototype.parseTemplateHead = function () {\n assert_1.assert(this.lookahead.head, 'Template literal must start with a template head');\n var node = this.createNode();\n var token = this.nextToken();\n var raw = token.value;\n var cooked = token.cooked;\n return this.finalize(node, new Node.TemplateElement({\n raw: raw,\n cooked: cooked\n }, token.tail));\n };\n\n Parser.prototype.parseTemplateElement = function () {\n if (this.lookahead.type !== 10\n /* Template */\n ) {\n this.throwUnexpectedToken();\n }\n\n var node = this.createNode();\n var token = this.nextToken();\n var raw = token.value;\n var cooked = token.cooked;\n return this.finalize(node, new Node.TemplateElement({\n raw: raw,\n cooked: cooked\n }, token.tail));\n };\n\n Parser.prototype.parseTemplateLiteral = function () {\n var node = this.createNode();\n var expressions = [];\n var quasis = [];\n var quasi = this.parseTemplateHead();\n quasis.push(quasi);\n\n while (!quasi.tail) {\n expressions.push(this.parseExpression());\n quasi = this.parseTemplateElement();\n quasis.push(quasi);\n }\n\n return this.finalize(node, new Node.TemplateLiteral(quasis, expressions));\n }; // https://tc39.github.io/ecma262/#sec-grouping-operator\n\n\n Parser.prototype.reinterpretExpressionAsPattern = function (expr) {\n switch (expr.type) {\n case syntax_1.Syntax.Identifier:\n case syntax_1.Syntax.MemberExpression:\n case syntax_1.Syntax.RestElement:\n case syntax_1.Syntax.AssignmentPattern:\n break;\n\n case syntax_1.Syntax.SpreadElement:\n expr.type = syntax_1.Syntax.RestElement;\n this.reinterpretExpressionAsPattern(expr.argument);\n break;\n\n case syntax_1.Syntax.ArrayExpression:\n expr.type = syntax_1.Syntax.ArrayPattern;\n\n for (var i = 0; i < expr.elements.length; i++) {\n if (expr.elements[i] !== null) {\n this.reinterpretExpressionAsPattern(expr.elements[i]);\n }\n }\n\n break;\n\n case syntax_1.Syntax.ObjectExpression:\n expr.type = syntax_1.Syntax.ObjectPattern;\n\n for (var i = 0; i < expr.properties.length; i++) {\n this.reinterpretExpressionAsPattern(expr.properties[i].value);\n }\n\n break;\n\n case syntax_1.Syntax.AssignmentExpression:\n expr.type = syntax_1.Syntax.AssignmentPattern;\n delete expr.operator;\n this.reinterpretExpressionAsPattern(expr.left);\n break;\n\n default:\n // Allow other node type for tolerant parsing.\n break;\n }\n };\n\n Parser.prototype.parseGroupExpression = function () {\n var expr;\n this.expect('(');\n\n if (this.match(')')) {\n this.nextToken();\n\n if (!this.match('=>')) {\n this.expect('=>');\n }\n\n expr = {\n type: ArrowParameterPlaceHolder,\n params: [],\n async: false\n };\n } else {\n var startToken = this.lookahead;\n var params = [];\n\n if (this.match('...')) {\n expr = this.parseRestElement(params);\n this.expect(')');\n\n if (!this.match('=>')) {\n this.expect('=>');\n }\n\n expr = {\n type: ArrowParameterPlaceHolder,\n params: [expr],\n async: false\n };\n } else {\n var arrow = false;\n this.context.isBindingElement = true;\n expr = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\n if (this.match(',')) {\n var expressions = [];\n this.context.isAssignmentTarget = false;\n expressions.push(expr);\n\n while (this.lookahead.type !== 2\n /* EOF */\n ) {\n if (!this.match(',')) {\n break;\n }\n\n this.nextToken();\n\n if (this.match(')')) {\n this.nextToken();\n\n for (var i = 0; i < expressions.length; i++) {\n this.reinterpretExpressionAsPattern(expressions[i]);\n }\n\n arrow = true;\n expr = {\n type: ArrowParameterPlaceHolder,\n params: expressions,\n async: false\n };\n } else if (this.match('...')) {\n if (!this.context.isBindingElement) {\n this.throwUnexpectedToken(this.lookahead);\n }\n\n expressions.push(this.parseRestElement(params));\n this.expect(')');\n\n if (!this.match('=>')) {\n this.expect('=>');\n }\n\n this.context.isBindingElement = false;\n\n for (var i = 0; i < expressions.length; i++) {\n this.reinterpretExpressionAsPattern(expressions[i]);\n }\n\n arrow = true;\n expr = {\n type: ArrowParameterPlaceHolder,\n params: expressions,\n async: false\n };\n } else {\n expressions.push(this.inheritCoverGrammar(this.parseAssignmentExpression));\n }\n\n if (arrow) {\n break;\n }\n }\n\n if (!arrow) {\n expr = this.finalize(this.startNode(startToken), new Node.SequenceExpression(expressions));\n }\n }\n\n if (!arrow) {\n this.expect(')');\n\n if (this.match('=>')) {\n if (expr.type === syntax_1.Syntax.Identifier && expr.name === 'yield') {\n arrow = true;\n expr = {\n type: ArrowParameterPlaceHolder,\n params: [expr],\n async: false\n };\n }\n\n if (!arrow) {\n if (!this.context.isBindingElement) {\n this.throwUnexpectedToken(this.lookahead);\n }\n\n if (expr.type === syntax_1.Syntax.SequenceExpression) {\n for (var i = 0; i < expr.expressions.length; i++) {\n this.reinterpretExpressionAsPattern(expr.expressions[i]);\n }\n } else {\n this.reinterpretExpressionAsPattern(expr);\n }\n\n var parameters = expr.type === syntax_1.Syntax.SequenceExpression ? expr.expressions : [expr];\n expr = {\n type: ArrowParameterPlaceHolder,\n params: parameters,\n async: false\n };\n }\n }\n\n this.context.isBindingElement = false;\n }\n }\n }\n\n return expr;\n }; // https://tc39.github.io/ecma262/#sec-left-hand-side-expressions\n\n\n Parser.prototype.parseArguments = function () {\n this.expect('(');\n var args = [];\n\n if (!this.match(')')) {\n while (true) {\n var expr = this.match('...') ? this.parseSpreadElement() : this.isolateCoverGrammar(this.parseAssignmentExpression);\n args.push(expr);\n\n if (this.match(')')) {\n break;\n }\n\n this.expectCommaSeparator();\n\n if (this.match(')')) {\n break;\n }\n }\n }\n\n this.expect(')');\n return args;\n };\n\n Parser.prototype.isIdentifierName = function (token) {\n return token.type === 3\n /* Identifier */\n || token.type === 4\n /* Keyword */\n || token.type === 1\n /* BooleanLiteral */\n || token.type === 5\n /* NullLiteral */\n ;\n };\n\n Parser.prototype.parseIdentifierName = function () {\n var node = this.createNode();\n var token = this.nextToken();\n\n if (!this.isIdentifierName(token)) {\n this.throwUnexpectedToken(token);\n }\n\n return this.finalize(node, new Node.Identifier(token.value));\n };\n\n Parser.prototype.parseNewExpression = function () {\n var node = this.createNode();\n var id = this.parseIdentifierName();\n assert_1.assert(id.name === 'new', 'New expression must start with `new`');\n var expr;\n\n if (this.match('.')) {\n this.nextToken();\n\n if (this.lookahead.type === 3\n /* Identifier */\n && this.context.inFunctionBody && this.lookahead.value === 'target') {\n var property = this.parseIdentifierName();\n expr = new Node.MetaProperty(id, property);\n } else {\n this.throwUnexpectedToken(this.lookahead);\n }\n } else {\n var callee = this.isolateCoverGrammar(this.parseLeftHandSideExpression);\n var args = this.match('(') ? this.parseArguments() : [];\n expr = new Node.NewExpression(callee, args);\n this.context.isAssignmentTarget = false;\n this.context.isBindingElement = false;\n }\n\n return this.finalize(node, expr);\n };\n\n Parser.prototype.parseAsyncArgument = function () {\n var arg = this.parseAssignmentExpression();\n this.context.firstCoverInitializedNameError = null;\n return arg;\n };\n\n Parser.prototype.parseAsyncArguments = function () {\n this.expect('(');\n var args = [];\n\n if (!this.match(')')) {\n while (true) {\n var expr = this.match('...') ? this.parseSpreadElement() : this.isolateCoverGrammar(this.parseAsyncArgument);\n args.push(expr);\n\n if (this.match(')')) {\n break;\n }\n\n this.expectCommaSeparator();\n\n if (this.match(')')) {\n break;\n }\n }\n }\n\n this.expect(')');\n return args;\n };\n\n Parser.prototype.parseLeftHandSideExpressionAllowCall = function () {\n var startToken = this.lookahead;\n var maybeAsync = this.matchContextualKeyword('async');\n var previousAllowIn = this.context.allowIn;\n this.context.allowIn = true;\n var expr;\n\n if (this.matchKeyword('super') && this.context.inFunctionBody) {\n expr = this.createNode();\n this.nextToken();\n expr = this.finalize(expr, new Node.Super());\n\n if (!this.match('(') && !this.match('.') && !this.match('[')) {\n this.throwUnexpectedToken(this.lookahead);\n }\n } else {\n expr = this.inheritCoverGrammar(this.matchKeyword('new') ? this.parseNewExpression : this.parsePrimaryExpression);\n }\n\n while (true) {\n if (this.match('.')) {\n this.context.isBindingElement = false;\n this.context.isAssignmentTarget = true;\n this.expect('.');\n var property = this.parseIdentifierName();\n expr = this.finalize(this.startNode(startToken), new Node.StaticMemberExpression(expr, property));\n } else if (this.match('(')) {\n var asyncArrow = maybeAsync && startToken.lineNumber === this.lookahead.lineNumber;\n this.context.isBindingElement = false;\n this.context.isAssignmentTarget = false;\n var args = asyncArrow ? this.parseAsyncArguments() : this.parseArguments();\n expr = this.finalize(this.startNode(startToken), new Node.CallExpression(expr, args));\n\n if (asyncArrow && this.match('=>')) {\n for (var i = 0; i < args.length; ++i) {\n this.reinterpretExpressionAsPattern(args[i]);\n }\n\n expr = {\n type: ArrowParameterPlaceHolder,\n params: args,\n async: true\n };\n }\n } else if (this.match('[')) {\n this.context.isBindingElement = false;\n this.context.isAssignmentTarget = true;\n this.expect('[');\n var property = this.isolateCoverGrammar(this.parseExpression);\n this.expect(']');\n expr = this.finalize(this.startNode(startToken), new Node.ComputedMemberExpression(expr, property));\n } else if (this.lookahead.type === 10\n /* Template */\n && this.lookahead.head) {\n var quasi = this.parseTemplateLiteral();\n expr = this.finalize(this.startNode(startToken), new Node.TaggedTemplateExpression(expr, quasi));\n } else {\n break;\n }\n }\n\n this.context.allowIn = previousAllowIn;\n return expr;\n };\n\n Parser.prototype.parseSuper = function () {\n var node = this.createNode();\n this.expectKeyword('super');\n\n if (!this.match('[') && !this.match('.')) {\n this.throwUnexpectedToken(this.lookahead);\n }\n\n return this.finalize(node, new Node.Super());\n };\n\n Parser.prototype.parseLeftHandSideExpression = function () {\n assert_1.assert(this.context.allowIn, 'callee of new expression always allow in keyword.');\n var node = this.startNode(this.lookahead);\n var expr = this.matchKeyword('super') && this.context.inFunctionBody ? this.parseSuper() : this.inheritCoverGrammar(this.matchKeyword('new') ? this.parseNewExpression : this.parsePrimaryExpression);\n\n while (true) {\n if (this.match('[')) {\n this.context.isBindingElement = false;\n this.context.isAssignmentTarget = true;\n this.expect('[');\n var property = this.isolateCoverGrammar(this.parseExpression);\n this.expect(']');\n expr = this.finalize(node, new Node.ComputedMemberExpression(expr, property));\n } else if (this.match('.')) {\n this.context.isBindingElement = false;\n this.context.isAssignmentTarget = true;\n this.expect('.');\n var property = this.parseIdentifierName();\n expr = this.finalize(node, new Node.StaticMemberExpression(expr, property));\n } else if (this.lookahead.type === 10\n /* Template */\n && this.lookahead.head) {\n var quasi = this.parseTemplateLiteral();\n expr = this.finalize(node, new Node.TaggedTemplateExpression(expr, quasi));\n } else {\n break;\n }\n }\n\n return expr;\n }; // https://tc39.github.io/ecma262/#sec-update-expressions\n\n\n Parser.prototype.parseUpdateExpression = function () {\n var expr;\n var startToken = this.lookahead;\n\n if (this.match('++') || this.match('--')) {\n var node = this.startNode(startToken);\n var token = this.nextToken();\n expr = this.inheritCoverGrammar(this.parseUnaryExpression);\n\n if (this.context.strict && expr.type === syntax_1.Syntax.Identifier && this.scanner.isRestrictedWord(expr.name)) {\n this.tolerateError(messages_1.Messages.StrictLHSPrefix);\n }\n\n if (!this.context.isAssignmentTarget) {\n this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);\n }\n\n var prefix = true;\n expr = this.finalize(node, new Node.UpdateExpression(token.value, expr, prefix));\n this.context.isAssignmentTarget = false;\n this.context.isBindingElement = false;\n } else {\n expr = this.inheritCoverGrammar(this.parseLeftHandSideExpressionAllowCall);\n\n if (!this.hasLineTerminator && this.lookahead.type === 7\n /* Punctuator */\n ) {\n if (this.match('++') || this.match('--')) {\n if (this.context.strict && expr.type === syntax_1.Syntax.Identifier && this.scanner.isRestrictedWord(expr.name)) {\n this.tolerateError(messages_1.Messages.StrictLHSPostfix);\n }\n\n if (!this.context.isAssignmentTarget) {\n this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);\n }\n\n this.context.isAssignmentTarget = false;\n this.context.isBindingElement = false;\n var operator = this.nextToken().value;\n var prefix = false;\n expr = this.finalize(this.startNode(startToken), new Node.UpdateExpression(operator, expr, prefix));\n }\n }\n }\n\n return expr;\n }; // https://tc39.github.io/ecma262/#sec-unary-operators\n\n\n Parser.prototype.parseAwaitExpression = function () {\n var node = this.createNode();\n this.nextToken();\n var argument = this.parseUnaryExpression();\n return this.finalize(node, new Node.AwaitExpression(argument));\n };\n\n Parser.prototype.parseUnaryExpression = function () {\n var expr;\n\n if (this.match('+') || this.match('-') || this.match('~') || this.match('!') || this.matchKeyword('delete') || this.matchKeyword('void') || this.matchKeyword('typeof')) {\n var node = this.startNode(this.lookahead);\n var token = this.nextToken();\n expr = this.inheritCoverGrammar(this.parseUnaryExpression);\n expr = this.finalize(node, new Node.UnaryExpression(token.value, expr));\n\n if (this.context.strict && expr.operator === 'delete' && expr.argument.type === syntax_1.Syntax.Identifier) {\n this.tolerateError(messages_1.Messages.StrictDelete);\n }\n\n this.context.isAssignmentTarget = false;\n this.context.isBindingElement = false;\n } else if (this.context.await && this.matchContextualKeyword('await')) {\n expr = this.parseAwaitExpression();\n } else {\n expr = this.parseUpdateExpression();\n }\n\n return expr;\n };\n\n Parser.prototype.parseExponentiationExpression = function () {\n var startToken = this.lookahead;\n var expr = this.inheritCoverGrammar(this.parseUnaryExpression);\n\n if (expr.type !== syntax_1.Syntax.UnaryExpression && this.match('**')) {\n this.nextToken();\n this.context.isAssignmentTarget = false;\n this.context.isBindingElement = false;\n var left = expr;\n var right = this.isolateCoverGrammar(this.parseExponentiationExpression);\n expr = this.finalize(this.startNode(startToken), new Node.BinaryExpression('**', left, right));\n }\n\n return expr;\n }; // https://tc39.github.io/ecma262/#sec-exp-operator\n // https://tc39.github.io/ecma262/#sec-multiplicative-operators\n // https://tc39.github.io/ecma262/#sec-additive-operators\n // https://tc39.github.io/ecma262/#sec-bitwise-shift-operators\n // https://tc39.github.io/ecma262/#sec-relational-operators\n // https://tc39.github.io/ecma262/#sec-equality-operators\n // https://tc39.github.io/ecma262/#sec-binary-bitwise-operators\n // https://tc39.github.io/ecma262/#sec-binary-logical-operators\n\n\n Parser.prototype.binaryPrecedence = function (token) {\n var op = token.value;\n var precedence;\n\n if (token.type === 7\n /* Punctuator */\n ) {\n precedence = this.operatorPrecedence[op] || 0;\n } else if (token.type === 4\n /* Keyword */\n ) {\n precedence = op === 'instanceof' || this.context.allowIn && op === 'in' ? 7 : 0;\n } else {\n precedence = 0;\n }\n\n return precedence;\n };\n\n Parser.prototype.parseBinaryExpression = function () {\n var startToken = this.lookahead;\n var expr = this.inheritCoverGrammar(this.parseExponentiationExpression);\n var token = this.lookahead;\n var prec = this.binaryPrecedence(token);\n\n if (prec > 0) {\n this.nextToken();\n this.context.isAssignmentTarget = false;\n this.context.isBindingElement = false;\n var markers = [startToken, this.lookahead];\n var left = expr;\n var right = this.isolateCoverGrammar(this.parseExponentiationExpression);\n var stack = [left, token.value, right];\n var precedences = [prec];\n\n while (true) {\n prec = this.binaryPrecedence(this.lookahead);\n\n if (prec <= 0) {\n break;\n } // Reduce: make a binary expression from the three topmost entries.\n\n\n while (stack.length > 2 && prec <= precedences[precedences.length - 1]) {\n right = stack.pop();\n var operator = stack.pop();\n precedences.pop();\n left = stack.pop();\n markers.pop();\n var node = this.startNode(markers[markers.length - 1]);\n stack.push(this.finalize(node, new Node.BinaryExpression(operator, left, right)));\n } // Shift.\n\n\n stack.push(this.nextToken().value);\n precedences.push(prec);\n markers.push(this.lookahead);\n stack.push(this.isolateCoverGrammar(this.parseExponentiationExpression));\n } // Final reduce to clean-up the stack.\n\n\n var i = stack.length - 1;\n expr = stack[i];\n var lastMarker = markers.pop();\n\n while (i > 1) {\n var marker = markers.pop();\n var lastLineStart = lastMarker && lastMarker.lineStart;\n var node = this.startNode(marker, lastLineStart);\n var operator = stack[i - 1];\n expr = this.finalize(node, new Node.BinaryExpression(operator, stack[i - 2], expr));\n i -= 2;\n lastMarker = marker;\n }\n }\n\n return expr;\n }; // https://tc39.github.io/ecma262/#sec-conditional-operator\n\n\n Parser.prototype.parseConditionalExpression = function () {\n var startToken = this.lookahead;\n var expr = this.inheritCoverGrammar(this.parseBinaryExpression);\n\n if (this.match('?')) {\n this.nextToken();\n var previousAllowIn = this.context.allowIn;\n this.context.allowIn = true;\n var consequent = this.isolateCoverGrammar(this.parseAssignmentExpression);\n this.context.allowIn = previousAllowIn;\n this.expect(':');\n var alternate = this.isolateCoverGrammar(this.parseAssignmentExpression);\n expr = this.finalize(this.startNode(startToken), new Node.ConditionalExpression(expr, consequent, alternate));\n this.context.isAssignmentTarget = false;\n this.context.isBindingElement = false;\n }\n\n return expr;\n }; // https://tc39.github.io/ecma262/#sec-assignment-operators\n\n\n Parser.prototype.checkPatternParam = function (options, param) {\n switch (param.type) {\n case syntax_1.Syntax.Identifier:\n this.validateParam(options, param, param.name);\n break;\n\n case syntax_1.Syntax.RestElement:\n this.checkPatternParam(options, param.argument);\n break;\n\n case syntax_1.Syntax.AssignmentPattern:\n this.checkPatternParam(options, param.left);\n break;\n\n case syntax_1.Syntax.ArrayPattern:\n for (var i = 0; i < param.elements.length; i++) {\n if (param.elements[i] !== null) {\n this.checkPatternParam(options, param.elements[i]);\n }\n }\n\n break;\n\n case syntax_1.Syntax.ObjectPattern:\n for (var i = 0; i < param.properties.length; i++) {\n this.checkPatternParam(options, param.properties[i].value);\n }\n\n break;\n\n default:\n break;\n }\n\n options.simple = options.simple && param instanceof Node.Identifier;\n };\n\n Parser.prototype.reinterpretAsCoverFormalsList = function (expr) {\n var params = [expr];\n var options;\n var asyncArrow = false;\n\n switch (expr.type) {\n case syntax_1.Syntax.Identifier:\n break;\n\n case ArrowParameterPlaceHolder:\n params = expr.params;\n asyncArrow = expr.async;\n break;\n\n default:\n return null;\n }\n\n options = {\n simple: true,\n paramSet: {}\n };\n\n for (var i = 0; i < params.length; ++i) {\n var param = params[i];\n\n if (param.type === syntax_1.Syntax.AssignmentPattern) {\n if (param.right.type === syntax_1.Syntax.YieldExpression) {\n if (param.right.argument) {\n this.throwUnexpectedToken(this.lookahead);\n }\n\n param.right.type = syntax_1.Syntax.Identifier;\n param.right.name = 'yield';\n delete param.right.argument;\n delete param.right.delegate;\n }\n } else if (asyncArrow && param.type === syntax_1.Syntax.Identifier && param.name === 'await') {\n this.throwUnexpectedToken(this.lookahead);\n }\n\n this.checkPatternParam(options, param);\n params[i] = param;\n }\n\n if (this.context.strict || !this.context.allowYield) {\n for (var i = 0; i < params.length; ++i) {\n var param = params[i];\n\n if (param.type === syntax_1.Syntax.YieldExpression) {\n this.throwUnexpectedToken(this.lookahead);\n }\n }\n }\n\n if (options.message === messages_1.Messages.StrictParamDupe) {\n var token = this.context.strict ? options.stricted : options.firstRestricted;\n this.throwUnexpectedToken(token, options.message);\n }\n\n return {\n simple: options.simple,\n params: params,\n stricted: options.stricted,\n firstRestricted: options.firstRestricted,\n message: options.message\n };\n };\n\n Parser.prototype.parseAssignmentExpression = function () {\n var expr;\n\n if (!this.context.allowYield && this.matchKeyword('yield')) {\n expr = this.parseYieldExpression();\n } else {\n var startToken = this.lookahead;\n var token = startToken;\n expr = this.parseConditionalExpression();\n\n if (token.type === 3\n /* Identifier */\n && token.lineNumber === this.lookahead.lineNumber && token.value === 'async') {\n if (this.lookahead.type === 3\n /* Identifier */\n || this.matchKeyword('yield')) {\n var arg = this.parsePrimaryExpression();\n this.reinterpretExpressionAsPattern(arg);\n expr = {\n type: ArrowParameterPlaceHolder,\n params: [arg],\n async: true\n };\n }\n }\n\n if (expr.type === ArrowParameterPlaceHolder || this.match('=>')) {\n // https://tc39.github.io/ecma262/#sec-arrow-function-definitions\n this.context.isAssignmentTarget = false;\n this.context.isBindingElement = false;\n var isAsync = expr.async;\n var list = this.reinterpretAsCoverFormalsList(expr);\n\n if (list) {\n if (this.hasLineTerminator) {\n this.tolerateUnexpectedToken(this.lookahead);\n }\n\n this.context.firstCoverInitializedNameError = null;\n var previousStrict = this.context.strict;\n var previousAllowStrictDirective = this.context.allowStrictDirective;\n this.context.allowStrictDirective = list.simple;\n var previousAllowYield = this.context.allowYield;\n var previousAwait = this.context.await;\n this.context.allowYield = true;\n this.context.await = isAsync;\n var node = this.startNode(startToken);\n this.expect('=>');\n var body = void 0;\n\n if (this.match('{')) {\n var previousAllowIn = this.context.allowIn;\n this.context.allowIn = true;\n body = this.parseFunctionSourceElements();\n this.context.allowIn = previousAllowIn;\n } else {\n body = this.isolateCoverGrammar(this.parseAssignmentExpression);\n }\n\n var expression = body.type !== syntax_1.Syntax.BlockStatement;\n\n if (this.context.strict && list.firstRestricted) {\n this.throwUnexpectedToken(list.firstRestricted, list.message);\n }\n\n if (this.context.strict && list.stricted) {\n this.tolerateUnexpectedToken(list.stricted, list.message);\n }\n\n expr = isAsync ? this.finalize(node, new Node.AsyncArrowFunctionExpression(list.params, body, expression)) : this.finalize(node, new Node.ArrowFunctionExpression(list.params, body, expression));\n this.context.strict = previousStrict;\n this.context.allowStrictDirective = previousAllowStrictDirective;\n this.context.allowYield = previousAllowYield;\n this.context.await = previousAwait;\n }\n } else {\n if (this.matchAssign()) {\n if (!this.context.isAssignmentTarget) {\n this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);\n }\n\n if (this.context.strict && expr.type === syntax_1.Syntax.Identifier) {\n var id = expr;\n\n if (this.scanner.isRestrictedWord(id.name)) {\n this.tolerateUnexpectedToken(token, messages_1.Messages.StrictLHSAssignment);\n }\n\n if (this.scanner.isStrictModeReservedWord(id.name)) {\n this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);\n }\n }\n\n if (!this.match('=')) {\n this.context.isAssignmentTarget = false;\n this.context.isBindingElement = false;\n } else {\n this.reinterpretExpressionAsPattern(expr);\n }\n\n token = this.nextToken();\n var operator = token.value;\n var right = this.isolateCoverGrammar(this.parseAssignmentExpression);\n expr = this.finalize(this.startNode(startToken), new Node.AssignmentExpression(operator, expr, right));\n this.context.firstCoverInitializedNameError = null;\n }\n }\n }\n\n return expr;\n }; // https://tc39.github.io/ecma262/#sec-comma-operator\n\n\n Parser.prototype.parseExpression = function () {\n var startToken = this.lookahead;\n var expr = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\n if (this.match(',')) {\n var expressions = [];\n expressions.push(expr);\n\n while (this.lookahead.type !== 2\n /* EOF */\n ) {\n if (!this.match(',')) {\n break;\n }\n\n this.nextToken();\n expressions.push(this.isolateCoverGrammar(this.parseAssignmentExpression));\n }\n\n expr = this.finalize(this.startNode(startToken), new Node.SequenceExpression(expressions));\n }\n\n return expr;\n }; // https://tc39.github.io/ecma262/#sec-block\n\n\n Parser.prototype.parseStatementListItem = function () {\n var statement;\n this.context.isAssignmentTarget = true;\n this.context.isBindingElement = true;\n\n if (this.lookahead.type === 4\n /* Keyword */\n ) {\n switch (this.lookahead.value) {\n case 'export':\n if (!this.context.isModule) {\n this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.IllegalExportDeclaration);\n }\n\n statement = this.parseExportDeclaration();\n break;\n\n case 'import':\n if (!this.context.isModule) {\n this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.IllegalImportDeclaration);\n }\n\n statement = this.parseImportDeclaration();\n break;\n\n case 'const':\n statement = this.parseLexicalDeclaration({\n inFor: false\n });\n break;\n\n case 'function':\n statement = this.parseFunctionDeclaration();\n break;\n\n case 'class':\n statement = this.parseClassDeclaration();\n break;\n\n case 'let':\n statement = this.isLexicalDeclaration() ? this.parseLexicalDeclaration({\n inFor: false\n }) : this.parseStatement();\n break;\n\n default:\n statement = this.parseStatement();\n break;\n }\n } else {\n statement = this.parseStatement();\n }\n\n return statement;\n };\n\n Parser.prototype.parseBlock = function () {\n var node = this.createNode();\n this.expect('{');\n var block = [];\n\n while (true) {\n if (this.match('}')) {\n break;\n }\n\n block.push(this.parseStatementListItem());\n }\n\n this.expect('}');\n return this.finalize(node, new Node.BlockStatement(block));\n }; // https://tc39.github.io/ecma262/#sec-let-and-const-declarations\n\n\n Parser.prototype.parseLexicalBinding = function (kind, options) {\n var node = this.createNode();\n var params = [];\n var id = this.parsePattern(params, kind);\n\n if (this.context.strict && id.type === syntax_1.Syntax.Identifier) {\n if (this.scanner.isRestrictedWord(id.name)) {\n this.tolerateError(messages_1.Messages.StrictVarName);\n }\n }\n\n var init = null;\n\n if (kind === 'const') {\n if (!this.matchKeyword('in') && !this.matchContextualKeyword('of')) {\n if (this.match('=')) {\n this.nextToken();\n init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n } else {\n this.throwError(messages_1.Messages.DeclarationMissingInitializer, 'const');\n }\n }\n } else if (!options.inFor && id.type !== syntax_1.Syntax.Identifier || this.match('=')) {\n this.expect('=');\n init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n }\n\n return this.finalize(node, new Node.VariableDeclarator(id, init));\n };\n\n Parser.prototype.parseBindingList = function (kind, options) {\n var list = [this.parseLexicalBinding(kind, options)];\n\n while (this.match(',')) {\n this.nextToken();\n list.push(this.parseLexicalBinding(kind, options));\n }\n\n return list;\n };\n\n Parser.prototype.isLexicalDeclaration = function () {\n var state = this.scanner.saveState();\n this.scanner.scanComments();\n var next = this.scanner.lex();\n this.scanner.restoreState(state);\n return next.type === 3\n /* Identifier */\n || next.type === 7\n /* Punctuator */\n && next.value === '[' || next.type === 7\n /* Punctuator */\n && next.value === '{' || next.type === 4\n /* Keyword */\n && next.value === 'let' || next.type === 4\n /* Keyword */\n && next.value === 'yield';\n };\n\n Parser.prototype.parseLexicalDeclaration = function (options) {\n var node = this.createNode();\n var kind = this.nextToken().value;\n assert_1.assert(kind === 'let' || kind === 'const', 'Lexical declaration must be either let or const');\n var declarations = this.parseBindingList(kind, options);\n this.consumeSemicolon();\n return this.finalize(node, new Node.VariableDeclaration(declarations, kind));\n }; // https://tc39.github.io/ecma262/#sec-destructuring-binding-patterns\n\n\n Parser.prototype.parseBindingRestElement = function (params, kind) {\n var node = this.createNode();\n this.expect('...');\n var arg = this.parsePattern(params, kind);\n return this.finalize(node, new Node.RestElement(arg));\n };\n\n Parser.prototype.parseArrayPattern = function (params, kind) {\n var node = this.createNode();\n this.expect('[');\n var elements = [];\n\n while (!this.match(']')) {\n if (this.match(',')) {\n this.nextToken();\n elements.push(null);\n } else {\n if (this.match('...')) {\n elements.push(this.parseBindingRestElement(params, kind));\n break;\n } else {\n elements.push(this.parsePatternWithDefault(params, kind));\n }\n\n if (!this.match(']')) {\n this.expect(',');\n }\n }\n }\n\n this.expect(']');\n return this.finalize(node, new Node.ArrayPattern(elements));\n };\n\n Parser.prototype.parsePropertyPattern = function (params, kind) {\n var node = this.createNode();\n var computed = false;\n var shorthand = false;\n var method = false;\n var key;\n var value;\n\n if (this.lookahead.type === 3\n /* Identifier */\n ) {\n var keyToken = this.lookahead;\n key = this.parseVariableIdentifier();\n var init = this.finalize(node, new Node.Identifier(keyToken.value));\n\n if (this.match('=')) {\n params.push(keyToken);\n shorthand = true;\n this.nextToken();\n var expr = this.parseAssignmentExpression();\n value = this.finalize(this.startNode(keyToken), new Node.AssignmentPattern(init, expr));\n } else if (!this.match(':')) {\n params.push(keyToken);\n shorthand = true;\n value = init;\n } else {\n this.expect(':');\n value = this.parsePatternWithDefault(params, kind);\n }\n } else {\n computed = this.match('[');\n key = this.parseObjectPropertyKey();\n this.expect(':');\n value = this.parsePatternWithDefault(params, kind);\n }\n\n return this.finalize(node, new Node.Property('init', key, computed, value, method, shorthand));\n };\n\n Parser.prototype.parseObjectPattern = function (params, kind) {\n var node = this.createNode();\n var properties = [];\n this.expect('{');\n\n while (!this.match('}')) {\n properties.push(this.parsePropertyPattern(params, kind));\n\n if (!this.match('}')) {\n this.expect(',');\n }\n }\n\n this.expect('}');\n return this.finalize(node, new Node.ObjectPattern(properties));\n };\n\n Parser.prototype.parsePattern = function (params, kind) {\n var pattern;\n\n if (this.match('[')) {\n pattern = this.parseArrayPattern(params, kind);\n } else if (this.match('{')) {\n pattern = this.parseObjectPattern(params, kind);\n } else {\n if (this.matchKeyword('let') && (kind === 'const' || kind === 'let')) {\n this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.LetInLexicalBinding);\n }\n\n params.push(this.lookahead);\n pattern = this.parseVariableIdentifier(kind);\n }\n\n return pattern;\n };\n\n Parser.prototype.parsePatternWithDefault = function (params, kind) {\n var startToken = this.lookahead;\n var pattern = this.parsePattern(params, kind);\n\n if (this.match('=')) {\n this.nextToken();\n var previousAllowYield = this.context.allowYield;\n this.context.allowYield = true;\n var right = this.isolateCoverGrammar(this.parseAssignmentExpression);\n this.context.allowYield = previousAllowYield;\n pattern = this.finalize(this.startNode(startToken), new Node.AssignmentPattern(pattern, right));\n }\n\n return pattern;\n }; // https://tc39.github.io/ecma262/#sec-variable-statement\n\n\n Parser.prototype.parseVariableIdentifier = function (kind) {\n var node = this.createNode();\n var token = this.nextToken();\n\n if (token.type === 4\n /* Keyword */\n && token.value === 'yield') {\n if (this.context.strict) {\n this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);\n } else if (!this.context.allowYield) {\n this.throwUnexpectedToken(token);\n }\n } else if (token.type !== 3\n /* Identifier */\n ) {\n if (this.context.strict && token.type === 4\n /* Keyword */\n && this.scanner.isStrictModeReservedWord(token.value)) {\n this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);\n } else {\n if (this.context.strict || token.value !== 'let' || kind !== 'var') {\n this.throwUnexpectedToken(token);\n }\n }\n } else if ((this.context.isModule || this.context.await) && token.type === 3\n /* Identifier */\n && token.value === 'await') {\n this.tolerateUnexpectedToken(token);\n }\n\n return this.finalize(node, new Node.Identifier(token.value));\n };\n\n Parser.prototype.parseVariableDeclaration = function (options) {\n var node = this.createNode();\n var params = [];\n var id = this.parsePattern(params, 'var');\n\n if (this.context.strict && id.type === syntax_1.Syntax.Identifier) {\n if (this.scanner.isRestrictedWord(id.name)) {\n this.tolerateError(messages_1.Messages.StrictVarName);\n }\n }\n\n var init = null;\n\n if (this.match('=')) {\n this.nextToken();\n init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n } else if (id.type !== syntax_1.Syntax.Identifier && !options.inFor) {\n this.expect('=');\n }\n\n return this.finalize(node, new Node.VariableDeclarator(id, init));\n };\n\n Parser.prototype.parseVariableDeclarationList = function (options) {\n var opt = {\n inFor: options.inFor\n };\n var list = [];\n list.push(this.parseVariableDeclaration(opt));\n\n while (this.match(',')) {\n this.nextToken();\n list.push(this.parseVariableDeclaration(opt));\n }\n\n return list;\n };\n\n Parser.prototype.parseVariableStatement = function () {\n var node = this.createNode();\n this.expectKeyword('var');\n var declarations = this.parseVariableDeclarationList({\n inFor: false\n });\n this.consumeSemicolon();\n return this.finalize(node, new Node.VariableDeclaration(declarations, 'var'));\n }; // https://tc39.github.io/ecma262/#sec-empty-statement\n\n\n Parser.prototype.parseEmptyStatement = function () {\n var node = this.createNode();\n this.expect(';');\n return this.finalize(node, new Node.EmptyStatement());\n }; // https://tc39.github.io/ecma262/#sec-expression-statement\n\n\n Parser.prototype.parseExpressionStatement = function () {\n var node = this.createNode();\n var expr = this.parseExpression();\n this.consumeSemicolon();\n return this.finalize(node, new Node.ExpressionStatement(expr));\n }; // https://tc39.github.io/ecma262/#sec-if-statement\n\n\n Parser.prototype.parseIfClause = function () {\n if (this.context.strict && this.matchKeyword('function')) {\n this.tolerateError(messages_1.Messages.StrictFunction);\n }\n\n return this.parseStatement();\n };\n\n Parser.prototype.parseIfStatement = function () {\n var node = this.createNode();\n var consequent;\n var alternate = null;\n this.expectKeyword('if');\n this.expect('(');\n var test = this.parseExpression();\n\n if (!this.match(')') && this.config.tolerant) {\n this.tolerateUnexpectedToken(this.nextToken());\n consequent = this.finalize(this.createNode(), new Node.EmptyStatement());\n } else {\n this.expect(')');\n consequent = this.parseIfClause();\n\n if (this.matchKeyword('else')) {\n this.nextToken();\n alternate = this.parseIfClause();\n }\n }\n\n return this.finalize(node, new Node.IfStatement(test, consequent, alternate));\n }; // https://tc39.github.io/ecma262/#sec-do-while-statement\n\n\n Parser.prototype.parseDoWhileStatement = function () {\n var node = this.createNode();\n this.expectKeyword('do');\n var previousInIteration = this.context.inIteration;\n this.context.inIteration = true;\n var body = this.parseStatement();\n this.context.inIteration = previousInIteration;\n this.expectKeyword('while');\n this.expect('(');\n var test = this.parseExpression();\n\n if (!this.match(')') && this.config.tolerant) {\n this.tolerateUnexpectedToken(this.nextToken());\n } else {\n this.expect(')');\n\n if (this.match(';')) {\n this.nextToken();\n }\n }\n\n return this.finalize(node, new Node.DoWhileStatement(body, test));\n }; // https://tc39.github.io/ecma262/#sec-while-statement\n\n\n Parser.prototype.parseWhileStatement = function () {\n var node = this.createNode();\n var body;\n this.expectKeyword('while');\n this.expect('(');\n var test = this.parseExpression();\n\n if (!this.match(')') && this.config.tolerant) {\n this.tolerateUnexpectedToken(this.nextToken());\n body = this.finalize(this.createNode(), new Node.EmptyStatement());\n } else {\n this.expect(')');\n var previousInIteration = this.context.inIteration;\n this.context.inIteration = true;\n body = this.parseStatement();\n this.context.inIteration = previousInIteration;\n }\n\n return this.finalize(node, new Node.WhileStatement(test, body));\n }; // https://tc39.github.io/ecma262/#sec-for-statement\n // https://tc39.github.io/ecma262/#sec-for-in-and-for-of-statements\n\n\n Parser.prototype.parseForStatement = function () {\n var init = null;\n var test = null;\n var update = null;\n var forIn = true;\n var left, right;\n var node = this.createNode();\n this.expectKeyword('for');\n this.expect('(');\n\n if (this.match(';')) {\n this.nextToken();\n } else {\n if (this.matchKeyword('var')) {\n init = this.createNode();\n this.nextToken();\n var previousAllowIn = this.context.allowIn;\n this.context.allowIn = false;\n var declarations = this.parseVariableDeclarationList({\n inFor: true\n });\n this.context.allowIn = previousAllowIn;\n\n if (declarations.length === 1 && this.matchKeyword('in')) {\n var decl = declarations[0];\n\n if (decl.init && (decl.id.type === syntax_1.Syntax.ArrayPattern || decl.id.type === syntax_1.Syntax.ObjectPattern || this.context.strict)) {\n this.tolerateError(messages_1.Messages.ForInOfLoopInitializer, 'for-in');\n }\n\n init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));\n this.nextToken();\n left = init;\n right = this.parseExpression();\n init = null;\n } else if (declarations.length === 1 && declarations[0].init === null && this.matchContextualKeyword('of')) {\n init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));\n this.nextToken();\n left = init;\n right = this.parseAssignmentExpression();\n init = null;\n forIn = false;\n } else {\n init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));\n this.expect(';');\n }\n } else if (this.matchKeyword('const') || this.matchKeyword('let')) {\n init = this.createNode();\n var kind = this.nextToken().value;\n\n if (!this.context.strict && this.lookahead.value === 'in') {\n init = this.finalize(init, new Node.Identifier(kind));\n this.nextToken();\n left = init;\n right = this.parseExpression();\n init = null;\n } else {\n var previousAllowIn = this.context.allowIn;\n this.context.allowIn = false;\n var declarations = this.parseBindingList(kind, {\n inFor: true\n });\n this.context.allowIn = previousAllowIn;\n\n if (declarations.length === 1 && declarations[0].init === null && this.matchKeyword('in')) {\n init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));\n this.nextToken();\n left = init;\n right = this.parseExpression();\n init = null;\n } else if (declarations.length === 1 && declarations[0].init === null && this.matchContextualKeyword('of')) {\n init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));\n this.nextToken();\n left = init;\n right = this.parseAssignmentExpression();\n init = null;\n forIn = false;\n } else {\n this.consumeSemicolon();\n init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));\n }\n }\n } else {\n var initStartToken = this.lookahead;\n var previousAllowIn = this.context.allowIn;\n this.context.allowIn = false;\n init = this.inheritCoverGrammar(this.parseAssignmentExpression);\n this.context.allowIn = previousAllowIn;\n\n if (this.matchKeyword('in')) {\n if (!this.context.isAssignmentTarget || init.type === syntax_1.Syntax.AssignmentExpression) {\n this.tolerateError(messages_1.Messages.InvalidLHSInForIn);\n }\n\n this.nextToken();\n this.reinterpretExpressionAsPattern(init);\n left = init;\n right = this.parseExpression();\n init = null;\n } else if (this.matchContextualKeyword('of')) {\n if (!this.context.isAssignmentTarget || init.type === syntax_1.Syntax.AssignmentExpression) {\n this.tolerateError(messages_1.Messages.InvalidLHSInForLoop);\n }\n\n this.nextToken();\n this.reinterpretExpressionAsPattern(init);\n left = init;\n right = this.parseAssignmentExpression();\n init = null;\n forIn = false;\n } else {\n if (this.match(',')) {\n var initSeq = [init];\n\n while (this.match(',')) {\n this.nextToken();\n initSeq.push(this.isolateCoverGrammar(this.parseAssignmentExpression));\n }\n\n init = this.finalize(this.startNode(initStartToken), new Node.SequenceExpression(initSeq));\n }\n\n this.expect(';');\n }\n }\n }\n\n if (typeof left === 'undefined') {\n if (!this.match(';')) {\n test = this.parseExpression();\n }\n\n this.expect(';');\n\n if (!this.match(')')) {\n update = this.parseExpression();\n }\n }\n\n var body;\n\n if (!this.match(')') && this.config.tolerant) {\n this.tolerateUnexpectedToken(this.nextToken());\n body = this.finalize(this.createNode(), new Node.EmptyStatement());\n } else {\n this.expect(')');\n var previousInIteration = this.context.inIteration;\n this.context.inIteration = true;\n body = this.isolateCoverGrammar(this.parseStatement);\n this.context.inIteration = previousInIteration;\n }\n\n return typeof left === 'undefined' ? this.finalize(node, new Node.ForStatement(init, test, update, body)) : forIn ? this.finalize(node, new Node.ForInStatement(left, right, body)) : this.finalize(node, new Node.ForOfStatement(left, right, body));\n }; // https://tc39.github.io/ecma262/#sec-continue-statement\n\n\n Parser.prototype.parseContinueStatement = function () {\n var node = this.createNode();\n this.expectKeyword('continue');\n var label = null;\n\n if (this.lookahead.type === 3\n /* Identifier */\n && !this.hasLineTerminator) {\n var id = this.parseVariableIdentifier();\n label = id;\n var key = '$' + id.name;\n\n if (!Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {\n this.throwError(messages_1.Messages.UnknownLabel, id.name);\n }\n }\n\n this.consumeSemicolon();\n\n if (label === null && !this.context.inIteration) {\n this.throwError(messages_1.Messages.IllegalContinue);\n }\n\n return this.finalize(node, new Node.ContinueStatement(label));\n }; // https://tc39.github.io/ecma262/#sec-break-statement\n\n\n Parser.prototype.parseBreakStatement = function () {\n var node = this.createNode();\n this.expectKeyword('break');\n var label = null;\n\n if (this.lookahead.type === 3\n /* Identifier */\n && !this.hasLineTerminator) {\n var id = this.parseVariableIdentifier();\n var key = '$' + id.name;\n\n if (!Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {\n this.throwError(messages_1.Messages.UnknownLabel, id.name);\n }\n\n label = id;\n }\n\n this.consumeSemicolon();\n\n if (label === null && !this.context.inIteration && !this.context.inSwitch) {\n this.throwError(messages_1.Messages.IllegalBreak);\n }\n\n return this.finalize(node, new Node.BreakStatement(label));\n }; // https://tc39.github.io/ecma262/#sec-return-statement\n\n\n Parser.prototype.parseReturnStatement = function () {\n if (!this.context.inFunctionBody) {\n this.tolerateError(messages_1.Messages.IllegalReturn);\n }\n\n var node = this.createNode();\n this.expectKeyword('return');\n var hasArgument = !this.match(';') && !this.match('}') && !this.hasLineTerminator && this.lookahead.type !== 2\n /* EOF */\n || this.lookahead.type === 8\n /* StringLiteral */\n || this.lookahead.type === 10\n /* Template */\n ;\n var argument = hasArgument ? this.parseExpression() : null;\n this.consumeSemicolon();\n return this.finalize(node, new Node.ReturnStatement(argument));\n }; // https://tc39.github.io/ecma262/#sec-with-statement\n\n\n Parser.prototype.parseWithStatement = function () {\n if (this.context.strict) {\n this.tolerateError(messages_1.Messages.StrictModeWith);\n }\n\n var node = this.createNode();\n var body;\n this.expectKeyword('with');\n this.expect('(');\n var object = this.parseExpression();\n\n if (!this.match(')') && this.config.tolerant) {\n this.tolerateUnexpectedToken(this.nextToken());\n body = this.finalize(this.createNode(), new Node.EmptyStatement());\n } else {\n this.expect(')');\n body = this.parseStatement();\n }\n\n return this.finalize(node, new Node.WithStatement(object, body));\n }; // https://tc39.github.io/ecma262/#sec-switch-statement\n\n\n Parser.prototype.parseSwitchCase = function () {\n var node = this.createNode();\n var test;\n\n if (this.matchKeyword('default')) {\n this.nextToken();\n test = null;\n } else {\n this.expectKeyword('case');\n test = this.parseExpression();\n }\n\n this.expect(':');\n var consequent = [];\n\n while (true) {\n if (this.match('}') || this.matchKeyword('default') || this.matchKeyword('case')) {\n break;\n }\n\n consequent.push(this.parseStatementListItem());\n }\n\n return this.finalize(node, new Node.SwitchCase(test, consequent));\n };\n\n Parser.prototype.parseSwitchStatement = function () {\n var node = this.createNode();\n this.expectKeyword('switch');\n this.expect('(');\n var discriminant = this.parseExpression();\n this.expect(')');\n var previousInSwitch = this.context.inSwitch;\n this.context.inSwitch = true;\n var cases = [];\n var defaultFound = false;\n this.expect('{');\n\n while (true) {\n if (this.match('}')) {\n break;\n }\n\n var clause = this.parseSwitchCase();\n\n if (clause.test === null) {\n if (defaultFound) {\n this.throwError(messages_1.Messages.MultipleDefaultsInSwitch);\n }\n\n defaultFound = true;\n }\n\n cases.push(clause);\n }\n\n this.expect('}');\n this.context.inSwitch = previousInSwitch;\n return this.finalize(node, new Node.SwitchStatement(discriminant, cases));\n }; // https://tc39.github.io/ecma262/#sec-labelled-statements\n\n\n Parser.prototype.parseLabelledStatement = function () {\n var node = this.createNode();\n var expr = this.parseExpression();\n var statement;\n\n if (expr.type === syntax_1.Syntax.Identifier && this.match(':')) {\n this.nextToken();\n var id = expr;\n var key = '$' + id.name;\n\n if (Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {\n this.throwError(messages_1.Messages.Redeclaration, 'Label', id.name);\n }\n\n this.context.labelSet[key] = true;\n var body = void 0;\n\n if (this.matchKeyword('class')) {\n this.tolerateUnexpectedToken(this.lookahead);\n body = this.parseClassDeclaration();\n } else if (this.matchKeyword('function')) {\n var token = this.lookahead;\n var declaration = this.parseFunctionDeclaration();\n\n if (this.context.strict) {\n this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunction);\n } else if (declaration.generator) {\n this.tolerateUnexpectedToken(token, messages_1.Messages.GeneratorInLegacyContext);\n }\n\n body = declaration;\n } else {\n body = this.parseStatement();\n }\n\n delete this.context.labelSet[key];\n statement = new Node.LabeledStatement(id, body);\n } else {\n this.consumeSemicolon();\n statement = new Node.ExpressionStatement(expr);\n }\n\n return this.finalize(node, statement);\n }; // https://tc39.github.io/ecma262/#sec-throw-statement\n\n\n Parser.prototype.parseThrowStatement = function () {\n var node = this.createNode();\n this.expectKeyword('throw');\n\n if (this.hasLineTerminator) {\n this.throwError(messages_1.Messages.NewlineAfterThrow);\n }\n\n var argument = this.parseExpression();\n this.consumeSemicolon();\n return this.finalize(node, new Node.ThrowStatement(argument));\n }; // https://tc39.github.io/ecma262/#sec-try-statement\n\n\n Parser.prototype.parseCatchClause = function () {\n var node = this.createNode();\n this.expectKeyword('catch');\n this.expect('(');\n\n if (this.match(')')) {\n this.throwUnexpectedToken(this.lookahead);\n }\n\n var params = [];\n var param = this.parsePattern(params);\n var paramMap = {};\n\n for (var i = 0; i < params.length; i++) {\n var key = '$' + params[i].value;\n\n if (Object.prototype.hasOwnProperty.call(paramMap, key)) {\n this.tolerateError(messages_1.Messages.DuplicateBinding, params[i].value);\n }\n\n paramMap[key] = true;\n }\n\n if (this.context.strict && param.type === syntax_1.Syntax.Identifier) {\n if (this.scanner.isRestrictedWord(param.name)) {\n this.tolerateError(messages_1.Messages.StrictCatchVariable);\n }\n }\n\n this.expect(')');\n var body = this.parseBlock();\n return this.finalize(node, new Node.CatchClause(param, body));\n };\n\n Parser.prototype.parseFinallyClause = function () {\n this.expectKeyword('finally');\n return this.parseBlock();\n };\n\n Parser.prototype.parseTryStatement = function () {\n var node = this.createNode();\n this.expectKeyword('try');\n var block = this.parseBlock();\n var handler = this.matchKeyword('catch') ? this.parseCatchClause() : null;\n var finalizer = this.matchKeyword('finally') ? this.parseFinallyClause() : null;\n\n if (!handler && !finalizer) {\n this.throwError(messages_1.Messages.NoCatchOrFinally);\n }\n\n return this.finalize(node, new Node.TryStatement(block, handler, finalizer));\n }; // https://tc39.github.io/ecma262/#sec-debugger-statement\n\n\n Parser.prototype.parseDebuggerStatement = function () {\n var node = this.createNode();\n this.expectKeyword('debugger');\n this.consumeSemicolon();\n return this.finalize(node, new Node.DebuggerStatement());\n }; // https://tc39.github.io/ecma262/#sec-ecmascript-language-statements-and-declarations\n\n\n Parser.prototype.parseStatement = function () {\n var statement;\n\n switch (this.lookahead.type) {\n case 1\n /* BooleanLiteral */\n :\n case 5\n /* NullLiteral */\n :\n case 6\n /* NumericLiteral */\n :\n case 8\n /* StringLiteral */\n :\n case 10\n /* Template */\n :\n case 9\n /* RegularExpression */\n :\n statement = this.parseExpressionStatement();\n break;\n\n case 7\n /* Punctuator */\n :\n var value = this.lookahead.value;\n\n if (value === '{') {\n statement = this.parseBlock();\n } else if (value === '(') {\n statement = this.parseExpressionStatement();\n } else if (value === ';') {\n statement = this.parseEmptyStatement();\n } else {\n statement = this.parseExpressionStatement();\n }\n\n break;\n\n case 3\n /* Identifier */\n :\n statement = this.matchAsyncFunction() ? this.parseFunctionDeclaration() : this.parseLabelledStatement();\n break;\n\n case 4\n /* Keyword */\n :\n switch (this.lookahead.value) {\n case 'break':\n statement = this.parseBreakStatement();\n break;\n\n case 'continue':\n statement = this.parseContinueStatement();\n break;\n\n case 'debugger':\n statement = this.parseDebuggerStatement();\n break;\n\n case 'do':\n statement = this.parseDoWhileStatement();\n break;\n\n case 'for':\n statement = this.parseForStatement();\n break;\n\n case 'function':\n statement = this.parseFunctionDeclaration();\n break;\n\n case 'if':\n statement = this.parseIfStatement();\n break;\n\n case 'return':\n statement = this.parseReturnStatement();\n break;\n\n case 'switch':\n statement = this.parseSwitchStatement();\n break;\n\n case 'throw':\n statement = this.parseThrowStatement();\n break;\n\n case 'try':\n statement = this.parseTryStatement();\n break;\n\n case 'var':\n statement = this.parseVariableStatement();\n break;\n\n case 'while':\n statement = this.parseWhileStatement();\n break;\n\n case 'with':\n statement = this.parseWithStatement();\n break;\n\n default:\n statement = this.parseExpressionStatement();\n break;\n }\n\n break;\n\n default:\n statement = this.throwUnexpectedToken(this.lookahead);\n }\n\n return statement;\n }; // https://tc39.github.io/ecma262/#sec-function-definitions\n\n\n Parser.prototype.parseFunctionSourceElements = function () {\n var node = this.createNode();\n this.expect('{');\n var body = this.parseDirectivePrologues();\n var previousLabelSet = this.context.labelSet;\n var previousInIteration = this.context.inIteration;\n var previousInSwitch = this.context.inSwitch;\n var previousInFunctionBody = this.context.inFunctionBody;\n this.context.labelSet = {};\n this.context.inIteration = false;\n this.context.inSwitch = false;\n this.context.inFunctionBody = true;\n\n while (this.lookahead.type !== 2\n /* EOF */\n ) {\n if (this.match('}')) {\n break;\n }\n\n body.push(this.parseStatementListItem());\n }\n\n this.expect('}');\n this.context.labelSet = previousLabelSet;\n this.context.inIteration = previousInIteration;\n this.context.inSwitch = previousInSwitch;\n this.context.inFunctionBody = previousInFunctionBody;\n return this.finalize(node, new Node.BlockStatement(body));\n };\n\n Parser.prototype.validateParam = function (options, param, name) {\n var key = '$' + name;\n\n if (this.context.strict) {\n if (this.scanner.isRestrictedWord(name)) {\n options.stricted = param;\n options.message = messages_1.Messages.StrictParamName;\n }\n\n if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) {\n options.stricted = param;\n options.message = messages_1.Messages.StrictParamDupe;\n }\n } else if (!options.firstRestricted) {\n if (this.scanner.isRestrictedWord(name)) {\n options.firstRestricted = param;\n options.message = messages_1.Messages.StrictParamName;\n } else if (this.scanner.isStrictModeReservedWord(name)) {\n options.firstRestricted = param;\n options.message = messages_1.Messages.StrictReservedWord;\n } else if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) {\n options.stricted = param;\n options.message = messages_1.Messages.StrictParamDupe;\n }\n }\n /* istanbul ignore next */\n\n\n if (typeof Object.defineProperty === 'function') {\n Object.defineProperty(options.paramSet, key, {\n value: true,\n enumerable: true,\n writable: true,\n configurable: true\n });\n } else {\n options.paramSet[key] = true;\n }\n };\n\n Parser.prototype.parseRestElement = function (params) {\n var node = this.createNode();\n this.expect('...');\n var arg = this.parsePattern(params);\n\n if (this.match('=')) {\n this.throwError(messages_1.Messages.DefaultRestParameter);\n }\n\n if (!this.match(')')) {\n this.throwError(messages_1.Messages.ParameterAfterRestParameter);\n }\n\n return this.finalize(node, new Node.RestElement(arg));\n };\n\n Parser.prototype.parseFormalParameter = function (options) {\n var params = [];\n var param = this.match('...') ? this.parseRestElement(params) : this.parsePatternWithDefault(params);\n\n for (var i = 0; i < params.length; i++) {\n this.validateParam(options, params[i], params[i].value);\n }\n\n options.simple = options.simple && param instanceof Node.Identifier;\n options.params.push(param);\n };\n\n Parser.prototype.parseFormalParameters = function (firstRestricted) {\n var options;\n options = {\n simple: true,\n params: [],\n firstRestricted: firstRestricted\n };\n this.expect('(');\n\n if (!this.match(')')) {\n options.paramSet = {};\n\n while (this.lookahead.type !== 2\n /* EOF */\n ) {\n this.parseFormalParameter(options);\n\n if (this.match(')')) {\n break;\n }\n\n this.expect(',');\n\n if (this.match(')')) {\n break;\n }\n }\n }\n\n this.expect(')');\n return {\n simple: options.simple,\n params: options.params,\n stricted: options.stricted,\n firstRestricted: options.firstRestricted,\n message: options.message\n };\n };\n\n Parser.prototype.matchAsyncFunction = function () {\n var match = this.matchContextualKeyword('async');\n\n if (match) {\n var state = this.scanner.saveState();\n this.scanner.scanComments();\n var next = this.scanner.lex();\n this.scanner.restoreState(state);\n match = state.lineNumber === next.lineNumber && next.type === 4\n /* Keyword */\n && next.value === 'function';\n }\n\n return match;\n };\n\n Parser.prototype.parseFunctionDeclaration = function (identifierIsOptional) {\n var node = this.createNode();\n var isAsync = this.matchContextualKeyword('async');\n\n if (isAsync) {\n this.nextToken();\n }\n\n this.expectKeyword('function');\n var isGenerator = isAsync ? false : this.match('*');\n\n if (isGenerator) {\n this.nextToken();\n }\n\n var message;\n var id = null;\n var firstRestricted = null;\n\n if (!identifierIsOptional || !this.match('(')) {\n var token = this.lookahead;\n id = this.parseVariableIdentifier();\n\n if (this.context.strict) {\n if (this.scanner.isRestrictedWord(token.value)) {\n this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunctionName);\n }\n } else {\n if (this.scanner.isRestrictedWord(token.value)) {\n firstRestricted = token;\n message = messages_1.Messages.StrictFunctionName;\n } else if (this.scanner.isStrictModeReservedWord(token.value)) {\n firstRestricted = token;\n message = messages_1.Messages.StrictReservedWord;\n }\n }\n }\n\n var previousAllowAwait = this.context.await;\n var previousAllowYield = this.context.allowYield;\n this.context.await = isAsync;\n this.context.allowYield = !isGenerator;\n var formalParameters = this.parseFormalParameters(firstRestricted);\n var params = formalParameters.params;\n var stricted = formalParameters.stricted;\n firstRestricted = formalParameters.firstRestricted;\n\n if (formalParameters.message) {\n message = formalParameters.message;\n }\n\n var previousStrict = this.context.strict;\n var previousAllowStrictDirective = this.context.allowStrictDirective;\n this.context.allowStrictDirective = formalParameters.simple;\n var body = this.parseFunctionSourceElements();\n\n if (this.context.strict && firstRestricted) {\n this.throwUnexpectedToken(firstRestricted, message);\n }\n\n if (this.context.strict && stricted) {\n this.tolerateUnexpectedToken(stricted, message);\n }\n\n this.context.strict = previousStrict;\n this.context.allowStrictDirective = previousAllowStrictDirective;\n this.context.await = previousAllowAwait;\n this.context.allowYield = previousAllowYield;\n return isAsync ? this.finalize(node, new Node.AsyncFunctionDeclaration(id, params, body)) : this.finalize(node, new Node.FunctionDeclaration(id, params, body, isGenerator));\n };\n\n Parser.prototype.parseFunctionExpression = function () {\n var node = this.createNode();\n var isAsync = this.matchContextualKeyword('async');\n\n if (isAsync) {\n this.nextToken();\n }\n\n this.expectKeyword('function');\n var isGenerator = isAsync ? false : this.match('*');\n\n if (isGenerator) {\n this.nextToken();\n }\n\n var message;\n var id = null;\n var firstRestricted;\n var previousAllowAwait = this.context.await;\n var previousAllowYield = this.context.allowYield;\n this.context.await = isAsync;\n this.context.allowYield = !isGenerator;\n\n if (!this.match('(')) {\n var token = this.lookahead;\n id = !this.context.strict && !isGenerator && this.matchKeyword('yield') ? this.parseIdentifierName() : this.parseVariableIdentifier();\n\n if (this.context.strict) {\n if (this.scanner.isRestrictedWord(token.value)) {\n this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunctionName);\n }\n } else {\n if (this.scanner.isRestrictedWord(token.value)) {\n firstRestricted = token;\n message = messages_1.Messages.StrictFunctionName;\n } else if (this.scanner.isStrictModeReservedWord(token.value)) {\n firstRestricted = token;\n message = messages_1.Messages.StrictReservedWord;\n }\n }\n }\n\n var formalParameters = this.parseFormalParameters(firstRestricted);\n var params = formalParameters.params;\n var stricted = formalParameters.stricted;\n firstRestricted = formalParameters.firstRestricted;\n\n if (formalParameters.message) {\n message = formalParameters.message;\n }\n\n var previousStrict = this.context.strict;\n var previousAllowStrictDirective = this.context.allowStrictDirective;\n this.context.allowStrictDirective = formalParameters.simple;\n var body = this.parseFunctionSourceElements();\n\n if (this.context.strict && firstRestricted) {\n this.throwUnexpectedToken(firstRestricted, message);\n }\n\n if (this.context.strict && stricted) {\n this.tolerateUnexpectedToken(stricted, message);\n }\n\n this.context.strict = previousStrict;\n this.context.allowStrictDirective = previousAllowStrictDirective;\n this.context.await = previousAllowAwait;\n this.context.allowYield = previousAllowYield;\n return isAsync ? this.finalize(node, new Node.AsyncFunctionExpression(id, params, body)) : this.finalize(node, new Node.FunctionExpression(id, params, body, isGenerator));\n }; // https://tc39.github.io/ecma262/#sec-directive-prologues-and-the-use-strict-directive\n\n\n Parser.prototype.parseDirective = function () {\n var token = this.lookahead;\n var node = this.createNode();\n var expr = this.parseExpression();\n var directive = expr.type === syntax_1.Syntax.Literal ? this.getTokenRaw(token).slice(1, -1) : null;\n this.consumeSemicolon();\n return this.finalize(node, directive ? new Node.Directive(expr, directive) : new Node.ExpressionStatement(expr));\n };\n\n Parser.prototype.parseDirectivePrologues = function () {\n var firstRestricted = null;\n var body = [];\n\n while (true) {\n var token = this.lookahead;\n\n if (token.type !== 8\n /* StringLiteral */\n ) {\n break;\n }\n\n var statement = this.parseDirective();\n body.push(statement);\n var directive = statement.directive;\n\n if (typeof directive !== 'string') {\n break;\n }\n\n if (directive === 'use strict') {\n this.context.strict = true;\n\n if (firstRestricted) {\n this.tolerateUnexpectedToken(firstRestricted, messages_1.Messages.StrictOctalLiteral);\n }\n\n if (!this.context.allowStrictDirective) {\n this.tolerateUnexpectedToken(token, messages_1.Messages.IllegalLanguageModeDirective);\n }\n } else {\n if (!firstRestricted && token.octal) {\n firstRestricted = token;\n }\n }\n }\n\n return body;\n }; // https://tc39.github.io/ecma262/#sec-method-definitions\n\n\n Parser.prototype.qualifiedPropertyName = function (token) {\n switch (token.type) {\n case 3\n /* Identifier */\n :\n case 8\n /* StringLiteral */\n :\n case 1\n /* BooleanLiteral */\n :\n case 5\n /* NullLiteral */\n :\n case 6\n /* NumericLiteral */\n :\n case 4\n /* Keyword */\n :\n return true;\n\n case 7\n /* Punctuator */\n :\n return token.value === '[';\n\n default:\n break;\n }\n\n return false;\n };\n\n Parser.prototype.parseGetterMethod = function () {\n var node = this.createNode();\n var isGenerator = false;\n var previousAllowYield = this.context.allowYield;\n this.context.allowYield = !isGenerator;\n var formalParameters = this.parseFormalParameters();\n\n if (formalParameters.params.length > 0) {\n this.tolerateError(messages_1.Messages.BadGetterArity);\n }\n\n var method = this.parsePropertyMethod(formalParameters);\n this.context.allowYield = previousAllowYield;\n return this.finalize(node, new Node.FunctionExpression(null, formalParameters.params, method, isGenerator));\n };\n\n Parser.prototype.parseSetterMethod = function () {\n var node = this.createNode();\n var isGenerator = false;\n var previousAllowYield = this.context.allowYield;\n this.context.allowYield = !isGenerator;\n var formalParameters = this.parseFormalParameters();\n\n if (formalParameters.params.length !== 1) {\n this.tolerateError(messages_1.Messages.BadSetterArity);\n } else if (formalParameters.params[0] instanceof Node.RestElement) {\n this.tolerateError(messages_1.Messages.BadSetterRestParameter);\n }\n\n var method = this.parsePropertyMethod(formalParameters);\n this.context.allowYield = previousAllowYield;\n return this.finalize(node, new Node.FunctionExpression(null, formalParameters.params, method, isGenerator));\n };\n\n Parser.prototype.parseGeneratorMethod = function () {\n var node = this.createNode();\n var isGenerator = true;\n var previousAllowYield = this.context.allowYield;\n this.context.allowYield = true;\n var params = this.parseFormalParameters();\n this.context.allowYield = false;\n var method = this.parsePropertyMethod(params);\n this.context.allowYield = previousAllowYield;\n return this.finalize(node, new Node.FunctionExpression(null, params.params, method, isGenerator));\n }; // https://tc39.github.io/ecma262/#sec-generator-function-definitions\n\n\n Parser.prototype.isStartOfExpression = function () {\n var start = true;\n var value = this.lookahead.value;\n\n switch (this.lookahead.type) {\n case 7\n /* Punctuator */\n :\n start = value === '[' || value === '(' || value === '{' || value === '+' || value === '-' || value === '!' || value === '~' || value === '++' || value === '--' || value === '/' || value === '/='; // regular expression literal\n\n break;\n\n case 4\n /* Keyword */\n :\n start = value === 'class' || value === 'delete' || value === 'function' || value === 'let' || value === 'new' || value === 'super' || value === 'this' || value === 'typeof' || value === 'void' || value === 'yield';\n break;\n\n default:\n break;\n }\n\n return start;\n };\n\n Parser.prototype.parseYieldExpression = function () {\n var node = this.createNode();\n this.expectKeyword('yield');\n var argument = null;\n var delegate = false;\n\n if (!this.hasLineTerminator) {\n var previousAllowYield = this.context.allowYield;\n this.context.allowYield = false;\n delegate = this.match('*');\n\n if (delegate) {\n this.nextToken();\n argument = this.parseAssignmentExpression();\n } else if (this.isStartOfExpression()) {\n argument = this.parseAssignmentExpression();\n }\n\n this.context.allowYield = previousAllowYield;\n }\n\n return this.finalize(node, new Node.YieldExpression(argument, delegate));\n }; // https://tc39.github.io/ecma262/#sec-class-definitions\n\n\n Parser.prototype.parseClassElement = function (hasConstructor) {\n var token = this.lookahead;\n var node = this.createNode();\n var kind = '';\n var key = null;\n var value = null;\n var computed = false;\n var method = false;\n var isStatic = false;\n var isAsync = false;\n\n if (this.match('*')) {\n this.nextToken();\n } else {\n computed = this.match('[');\n key = this.parseObjectPropertyKey();\n var id = key;\n\n if (id.name === 'static' && (this.qualifiedPropertyName(this.lookahead) || this.match('*'))) {\n token = this.lookahead;\n isStatic = true;\n computed = this.match('[');\n\n if (this.match('*')) {\n this.nextToken();\n } else {\n key = this.parseObjectPropertyKey();\n }\n }\n\n if (token.type === 3\n /* Identifier */\n && !this.hasLineTerminator && token.value === 'async') {\n var punctuator = this.lookahead.value;\n\n if (punctuator !== ':' && punctuator !== '(' && punctuator !== '*') {\n isAsync = true;\n token = this.lookahead;\n key = this.parseObjectPropertyKey();\n\n if (token.type === 3\n /* Identifier */\n && token.value === 'constructor') {\n this.tolerateUnexpectedToken(token, messages_1.Messages.ConstructorIsAsync);\n }\n }\n }\n }\n\n var lookaheadPropertyKey = this.qualifiedPropertyName(this.lookahead);\n\n if (token.type === 3\n /* Identifier */\n ) {\n if (token.value === 'get' && lookaheadPropertyKey) {\n kind = 'get';\n computed = this.match('[');\n key = this.parseObjectPropertyKey();\n this.context.allowYield = false;\n value = this.parseGetterMethod();\n } else if (token.value === 'set' && lookaheadPropertyKey) {\n kind = 'set';\n computed = this.match('[');\n key = this.parseObjectPropertyKey();\n value = this.parseSetterMethod();\n }\n } else if (token.type === 7\n /* Punctuator */\n && token.value === '*' && lookaheadPropertyKey) {\n kind = 'init';\n computed = this.match('[');\n key = this.parseObjectPropertyKey();\n value = this.parseGeneratorMethod();\n method = true;\n }\n\n if (!kind && key && this.match('(')) {\n kind = 'init';\n value = isAsync ? this.parsePropertyMethodAsyncFunction() : this.parsePropertyMethodFunction();\n method = true;\n }\n\n if (!kind) {\n this.throwUnexpectedToken(this.lookahead);\n }\n\n if (kind === 'init') {\n kind = 'method';\n }\n\n if (!computed) {\n if (isStatic && this.isPropertyKey(key, 'prototype')) {\n this.throwUnexpectedToken(token, messages_1.Messages.StaticPrototype);\n }\n\n if (!isStatic && this.isPropertyKey(key, 'constructor')) {\n if (kind !== 'method' || !method || value && value.generator) {\n this.throwUnexpectedToken(token, messages_1.Messages.ConstructorSpecialMethod);\n }\n\n if (hasConstructor.value) {\n this.throwUnexpectedToken(token, messages_1.Messages.DuplicateConstructor);\n } else {\n hasConstructor.value = true;\n }\n\n kind = 'constructor';\n }\n }\n\n return this.finalize(node, new Node.MethodDefinition(key, computed, value, kind, isStatic));\n };\n\n Parser.prototype.parseClassElementList = function () {\n var body = [];\n var hasConstructor = {\n value: false\n };\n this.expect('{');\n\n while (!this.match('}')) {\n if (this.match(';')) {\n this.nextToken();\n } else {\n body.push(this.parseClassElement(hasConstructor));\n }\n }\n\n this.expect('}');\n return body;\n };\n\n Parser.prototype.parseClassBody = function () {\n var node = this.createNode();\n var elementList = this.parseClassElementList();\n return this.finalize(node, new Node.ClassBody(elementList));\n };\n\n Parser.prototype.parseClassDeclaration = function (identifierIsOptional) {\n var node = this.createNode();\n var previousStrict = this.context.strict;\n this.context.strict = true;\n this.expectKeyword('class');\n var id = identifierIsOptional && this.lookahead.type !== 3\n /* Identifier */\n ? null : this.parseVariableIdentifier();\n var superClass = null;\n\n if (this.matchKeyword('extends')) {\n this.nextToken();\n superClass = this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall);\n }\n\n var classBody = this.parseClassBody();\n this.context.strict = previousStrict;\n return this.finalize(node, new Node.ClassDeclaration(id, superClass, classBody));\n };\n\n Parser.prototype.parseClassExpression = function () {\n var node = this.createNode();\n var previousStrict = this.context.strict;\n this.context.strict = true;\n this.expectKeyword('class');\n var id = this.lookahead.type === 3\n /* Identifier */\n ? this.parseVariableIdentifier() : null;\n var superClass = null;\n\n if (this.matchKeyword('extends')) {\n this.nextToken();\n superClass = this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall);\n }\n\n var classBody = this.parseClassBody();\n this.context.strict = previousStrict;\n return this.finalize(node, new Node.ClassExpression(id, superClass, classBody));\n }; // https://tc39.github.io/ecma262/#sec-scripts\n // https://tc39.github.io/ecma262/#sec-modules\n\n\n Parser.prototype.parseModule = function () {\n this.context.strict = true;\n this.context.isModule = true;\n this.scanner.isModule = true;\n var node = this.createNode();\n var body = this.parseDirectivePrologues();\n\n while (this.lookahead.type !== 2\n /* EOF */\n ) {\n body.push(this.parseStatementListItem());\n }\n\n return this.finalize(node, new Node.Module(body));\n };\n\n Parser.prototype.parseScript = function () {\n var node = this.createNode();\n var body = this.parseDirectivePrologues();\n\n while (this.lookahead.type !== 2\n /* EOF */\n ) {\n body.push(this.parseStatementListItem());\n }\n\n return this.finalize(node, new Node.Script(body));\n }; // https://tc39.github.io/ecma262/#sec-imports\n\n\n Parser.prototype.parseModuleSpecifier = function () {\n var node = this.createNode();\n\n if (this.lookahead.type !== 8\n /* StringLiteral */\n ) {\n this.throwError(messages_1.Messages.InvalidModuleSpecifier);\n }\n\n var token = this.nextToken();\n var raw = this.getTokenRaw(token);\n return this.finalize(node, new Node.Literal(token.value, raw));\n }; // import {} ...;\n\n\n Parser.prototype.parseImportSpecifier = function () {\n var node = this.createNode();\n var imported;\n var local;\n\n if (this.lookahead.type === 3\n /* Identifier */\n ) {\n imported = this.parseVariableIdentifier();\n local = imported;\n\n if (this.matchContextualKeyword('as')) {\n this.nextToken();\n local = this.parseVariableIdentifier();\n }\n } else {\n imported = this.parseIdentifierName();\n local = imported;\n\n if (this.matchContextualKeyword('as')) {\n this.nextToken();\n local = this.parseVariableIdentifier();\n } else {\n this.throwUnexpectedToken(this.nextToken());\n }\n }\n\n return this.finalize(node, new Node.ImportSpecifier(local, imported));\n }; // {foo, bar as bas}\n\n\n Parser.prototype.parseNamedImports = function () {\n this.expect('{');\n var specifiers = [];\n\n while (!this.match('}')) {\n specifiers.push(this.parseImportSpecifier());\n\n if (!this.match('}')) {\n this.expect(',');\n }\n }\n\n this.expect('}');\n return specifiers;\n }; // import ...;\n\n\n Parser.prototype.parseImportDefaultSpecifier = function () {\n var node = this.createNode();\n var local = this.parseIdentifierName();\n return this.finalize(node, new Node.ImportDefaultSpecifier(local));\n }; // import <* as foo> ...;\n\n\n Parser.prototype.parseImportNamespaceSpecifier = function () {\n var node = this.createNode();\n this.expect('*');\n\n if (!this.matchContextualKeyword('as')) {\n this.throwError(messages_1.Messages.NoAsAfterImportNamespace);\n }\n\n this.nextToken();\n var local = this.parseIdentifierName();\n return this.finalize(node, new Node.ImportNamespaceSpecifier(local));\n };\n\n Parser.prototype.parseImportDeclaration = function () {\n if (this.context.inFunctionBody) {\n this.throwError(messages_1.Messages.IllegalImportDeclaration);\n }\n\n var node = this.createNode();\n this.expectKeyword('import');\n var src;\n var specifiers = [];\n\n if (this.lookahead.type === 8\n /* StringLiteral */\n ) {\n // import 'foo';\n src = this.parseModuleSpecifier();\n } else {\n if (this.match('{')) {\n // import {bar}\n specifiers = specifiers.concat(this.parseNamedImports());\n } else if (this.match('*')) {\n // import * as foo\n specifiers.push(this.parseImportNamespaceSpecifier());\n } else if (this.isIdentifierName(this.lookahead) && !this.matchKeyword('default')) {\n // import foo\n specifiers.push(this.parseImportDefaultSpecifier());\n\n if (this.match(',')) {\n this.nextToken();\n\n if (this.match('*')) {\n // import foo, * as foo\n specifiers.push(this.parseImportNamespaceSpecifier());\n } else if (this.match('{')) {\n // import foo, {bar}\n specifiers = specifiers.concat(this.parseNamedImports());\n } else {\n this.throwUnexpectedToken(this.lookahead);\n }\n }\n } else {\n this.throwUnexpectedToken(this.nextToken());\n }\n\n if (!this.matchContextualKeyword('from')) {\n var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;\n this.throwError(message, this.lookahead.value);\n }\n\n this.nextToken();\n src = this.parseModuleSpecifier();\n }\n\n this.consumeSemicolon();\n return this.finalize(node, new Node.ImportDeclaration(specifiers, src));\n }; // https://tc39.github.io/ecma262/#sec-exports\n\n\n Parser.prototype.parseExportSpecifier = function () {\n var node = this.createNode();\n var local = this.parseIdentifierName();\n var exported = local;\n\n if (this.matchContextualKeyword('as')) {\n this.nextToken();\n exported = this.parseIdentifierName();\n }\n\n return this.finalize(node, new Node.ExportSpecifier(local, exported));\n };\n\n Parser.prototype.parseExportDeclaration = function () {\n if (this.context.inFunctionBody) {\n this.throwError(messages_1.Messages.IllegalExportDeclaration);\n }\n\n var node = this.createNode();\n this.expectKeyword('export');\n var exportDeclaration;\n\n if (this.matchKeyword('default')) {\n // export default ...\n this.nextToken();\n\n if (this.matchKeyword('function')) {\n // export default function foo () {}\n // export default function () {}\n var declaration = this.parseFunctionDeclaration(true);\n exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n } else if (this.matchKeyword('class')) {\n // export default class foo {}\n var declaration = this.parseClassDeclaration(true);\n exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n } else if (this.matchContextualKeyword('async')) {\n // export default async function f () {}\n // export default async function () {}\n // export default async x => x\n var declaration = this.matchAsyncFunction() ? this.parseFunctionDeclaration(true) : this.parseAssignmentExpression();\n exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n } else {\n if (this.matchContextualKeyword('from')) {\n this.throwError(messages_1.Messages.UnexpectedToken, this.lookahead.value);\n } // export default {};\n // export default [];\n // export default (1 + 2);\n\n\n var declaration = this.match('{') ? this.parseObjectInitializer() : this.match('[') ? this.parseArrayInitializer() : this.parseAssignmentExpression();\n this.consumeSemicolon();\n exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n }\n } else if (this.match('*')) {\n // export * from 'foo';\n this.nextToken();\n\n if (!this.matchContextualKeyword('from')) {\n var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;\n this.throwError(message, this.lookahead.value);\n }\n\n this.nextToken();\n var src = this.parseModuleSpecifier();\n this.consumeSemicolon();\n exportDeclaration = this.finalize(node, new Node.ExportAllDeclaration(src));\n } else if (this.lookahead.type === 4\n /* Keyword */\n ) {\n // export var f = 1;\n var declaration = void 0;\n\n switch (this.lookahead.value) {\n case 'let':\n case 'const':\n declaration = this.parseLexicalDeclaration({\n inFor: false\n });\n break;\n\n case 'var':\n case 'class':\n case 'function':\n declaration = this.parseStatementListItem();\n break;\n\n default:\n this.throwUnexpectedToken(this.lookahead);\n }\n\n exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(declaration, [], null));\n } else if (this.matchAsyncFunction()) {\n var declaration = this.parseFunctionDeclaration();\n exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(declaration, [], null));\n } else {\n var specifiers = [];\n var source = null;\n var isExportFromIdentifier = false;\n this.expect('{');\n\n while (!this.match('}')) {\n isExportFromIdentifier = isExportFromIdentifier || this.matchKeyword('default');\n specifiers.push(this.parseExportSpecifier());\n\n if (!this.match('}')) {\n this.expect(',');\n }\n }\n\n this.expect('}');\n\n if (this.matchContextualKeyword('from')) {\n // export {default} from 'foo';\n // export {foo} from 'foo';\n this.nextToken();\n source = this.parseModuleSpecifier();\n this.consumeSemicolon();\n } else if (isExportFromIdentifier) {\n // export {default}; // missing fromClause\n var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;\n this.throwError(message, this.lookahead.value);\n } else {\n // export {foo};\n this.consumeSemicolon();\n }\n\n exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(null, specifiers, source));\n }\n\n return exportDeclaration;\n };\n\n return Parser;\n }();\n\n exports.Parser = Parser;\n /***/\n },\n /* 9 */\n\n /***/\n function (module, exports) {\n \"use strict\"; // Ensure the condition is true, otherwise throw an error.\n // This is only to have a better contract semantic, i.e. another safety net\n // to catch a logic error. The condition shall be fulfilled in normal case.\n // Do NOT use this to enforce a certain condition on any user input.\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n function assert(condition, message) {\n /* istanbul ignore if */\n if (!condition) {\n throw new Error('ASSERT: ' + message);\n }\n }\n\n exports.assert = assert;\n /***/\n },\n /* 10 */\n\n /***/\n function (module, exports) {\n \"use strict\";\n /* tslint:disable:max-classes-per-file */\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var ErrorHandler = function () {\n function ErrorHandler() {\n this.errors = [];\n this.tolerant = false;\n }\n\n ErrorHandler.prototype.recordError = function (error) {\n this.errors.push(error);\n };\n\n ErrorHandler.prototype.tolerate = function (error) {\n if (this.tolerant) {\n this.recordError(error);\n } else {\n throw error;\n }\n };\n\n ErrorHandler.prototype.constructError = function (msg, column) {\n var error = new Error(msg);\n\n try {\n throw error;\n } catch (base) {\n /* istanbul ignore else */\n if (Object.create && Object.defineProperty) {\n error = Object.create(base);\n Object.defineProperty(error, 'column', {\n value: column\n });\n }\n }\n /* istanbul ignore next */\n\n\n return error;\n };\n\n ErrorHandler.prototype.createError = function (index, line, col, description) {\n var msg = 'Line ' + line + ': ' + description;\n var error = this.constructError(msg, col);\n error.index = index;\n error.lineNumber = line;\n error.description = description;\n return error;\n };\n\n ErrorHandler.prototype.throwError = function (index, line, col, description) {\n throw this.createError(index, line, col, description);\n };\n\n ErrorHandler.prototype.tolerateError = function (index, line, col, description) {\n var error = this.createError(index, line, col, description);\n\n if (this.tolerant) {\n this.recordError(error);\n } else {\n throw error;\n }\n };\n\n return ErrorHandler;\n }();\n\n exports.ErrorHandler = ErrorHandler;\n /***/\n },\n /* 11 */\n\n /***/\n function (module, exports) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n }); // Error messages should be identical to V8.\n\n exports.Messages = {\n BadGetterArity: 'Getter must not have any formal parameters',\n BadSetterArity: 'Setter must have exactly one formal parameter',\n BadSetterRestParameter: 'Setter function argument must not be a rest parameter',\n ConstructorIsAsync: 'Class constructor may not be an async method',\n ConstructorSpecialMethod: 'Class constructor may not be an accessor',\n DeclarationMissingInitializer: 'Missing initializer in %0 declaration',\n DefaultRestParameter: 'Unexpected token =',\n DuplicateBinding: 'Duplicate binding %0',\n DuplicateConstructor: 'A class may only have one constructor',\n DuplicateProtoProperty: 'Duplicate __proto__ fields are not allowed in object literals',\n ForInOfLoopInitializer: '%0 loop variable declaration may not have an initializer',\n GeneratorInLegacyContext: 'Generator declarations are not allowed in legacy contexts',\n IllegalBreak: 'Illegal break statement',\n IllegalContinue: 'Illegal continue statement',\n IllegalExportDeclaration: 'Unexpected token',\n IllegalImportDeclaration: 'Unexpected token',\n IllegalLanguageModeDirective: 'Illegal \\'use strict\\' directive in function with non-simple parameter list',\n IllegalReturn: 'Illegal return statement',\n InvalidEscapedReservedWord: 'Keyword must not contain escaped characters',\n InvalidHexEscapeSequence: 'Invalid hexadecimal escape sequence',\n InvalidLHSInAssignment: 'Invalid left-hand side in assignment',\n InvalidLHSInForIn: 'Invalid left-hand side in for-in',\n InvalidLHSInForLoop: 'Invalid left-hand side in for-loop',\n InvalidModuleSpecifier: 'Unexpected token',\n InvalidRegExp: 'Invalid regular expression',\n LetInLexicalBinding: 'let is disallowed as a lexically bound name',\n MissingFromClause: 'Unexpected token',\n MultipleDefaultsInSwitch: 'More than one default clause in switch statement',\n NewlineAfterThrow: 'Illegal newline after throw',\n NoAsAfterImportNamespace: 'Unexpected token',\n NoCatchOrFinally: 'Missing catch or finally after try',\n ParameterAfterRestParameter: 'Rest parameter must be last formal parameter',\n Redeclaration: '%0 \\'%1\\' has already been declared',\n StaticPrototype: 'Classes may not have static property named prototype',\n StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode',\n StrictDelete: 'Delete of an unqualified identifier in strict mode.',\n StrictFunction: 'In strict mode code, functions can only be declared at top level or inside a block',\n StrictFunctionName: 'Function name may not be eval or arguments in strict mode',\n StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode',\n StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode',\n StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode',\n StrictModeWith: 'Strict mode code may not include a with statement',\n StrictOctalLiteral: 'Octal literals are not allowed in strict mode.',\n StrictParamDupe: 'Strict mode function may not have duplicate parameter names',\n StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode',\n StrictReservedWord: 'Use of future reserved word in strict mode',\n StrictVarName: 'Variable name may not be eval or arguments in strict mode',\n TemplateOctalLiteral: 'Octal literals are not allowed in template strings.',\n UnexpectedEOS: 'Unexpected end of input',\n UnexpectedIdentifier: 'Unexpected identifier',\n UnexpectedNumber: 'Unexpected number',\n UnexpectedReserved: 'Unexpected reserved word',\n UnexpectedString: 'Unexpected string',\n UnexpectedTemplate: 'Unexpected quasi %0',\n UnexpectedToken: 'Unexpected token %0',\n UnexpectedTokenIllegal: 'Unexpected token ILLEGAL',\n UnknownLabel: 'Undefined label \\'%0\\'',\n UnterminatedRegExp: 'Invalid regular expression: missing /'\n };\n /***/\n },\n /* 12 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var assert_1 = __webpack_require__(9);\n\n var character_1 = __webpack_require__(4);\n\n var messages_1 = __webpack_require__(11);\n\n function hexValue(ch) {\n return '0123456789abcdef'.indexOf(ch.toLowerCase());\n }\n\n function octalValue(ch) {\n return '01234567'.indexOf(ch);\n }\n\n var Scanner = function () {\n function Scanner(code, handler) {\n this.source = code;\n this.errorHandler = handler;\n this.trackComment = false;\n this.isModule = false;\n this.length = code.length;\n this.index = 0;\n this.lineNumber = code.length > 0 ? 1 : 0;\n this.lineStart = 0;\n this.curlyStack = [];\n }\n\n Scanner.prototype.saveState = function () {\n return {\n index: this.index,\n lineNumber: this.lineNumber,\n lineStart: this.lineStart\n };\n };\n\n Scanner.prototype.restoreState = function (state) {\n this.index = state.index;\n this.lineNumber = state.lineNumber;\n this.lineStart = state.lineStart;\n };\n\n Scanner.prototype.eof = function () {\n return this.index >= this.length;\n };\n\n Scanner.prototype.throwUnexpectedToken = function (message) {\n if (message === void 0) {\n message = messages_1.Messages.UnexpectedTokenIllegal;\n }\n\n return this.errorHandler.throwError(this.index, this.lineNumber, this.index - this.lineStart + 1, message);\n };\n\n Scanner.prototype.tolerateUnexpectedToken = function (message) {\n if (message === void 0) {\n message = messages_1.Messages.UnexpectedTokenIllegal;\n }\n\n this.errorHandler.tolerateError(this.index, this.lineNumber, this.index - this.lineStart + 1, message);\n }; // https://tc39.github.io/ecma262/#sec-comments\n\n\n Scanner.prototype.skipSingleLineComment = function (offset) {\n var comments = [];\n var start, loc;\n\n if (this.trackComment) {\n comments = [];\n start = this.index - offset;\n loc = {\n start: {\n line: this.lineNumber,\n column: this.index - this.lineStart - offset\n },\n end: {}\n };\n }\n\n while (!this.eof()) {\n var ch = this.source.charCodeAt(this.index);\n ++this.index;\n\n if (character_1.Character.isLineTerminator(ch)) {\n if (this.trackComment) {\n loc.end = {\n line: this.lineNumber,\n column: this.index - this.lineStart - 1\n };\n var entry = {\n multiLine: false,\n slice: [start + offset, this.index - 1],\n range: [start, this.index - 1],\n loc: loc\n };\n comments.push(entry);\n }\n\n if (ch === 13 && this.source.charCodeAt(this.index) === 10) {\n ++this.index;\n }\n\n ++this.lineNumber;\n this.lineStart = this.index;\n return comments;\n }\n }\n\n if (this.trackComment) {\n loc.end = {\n line: this.lineNumber,\n column: this.index - this.lineStart\n };\n var entry = {\n multiLine: false,\n slice: [start + offset, this.index],\n range: [start, this.index],\n loc: loc\n };\n comments.push(entry);\n }\n\n return comments;\n };\n\n Scanner.prototype.skipMultiLineComment = function () {\n var comments = [];\n var start, loc;\n\n if (this.trackComment) {\n comments = [];\n start = this.index - 2;\n loc = {\n start: {\n line: this.lineNumber,\n column: this.index - this.lineStart - 2\n },\n end: {}\n };\n }\n\n while (!this.eof()) {\n var ch = this.source.charCodeAt(this.index);\n\n if (character_1.Character.isLineTerminator(ch)) {\n if (ch === 0x0D && this.source.charCodeAt(this.index + 1) === 0x0A) {\n ++this.index;\n }\n\n ++this.lineNumber;\n ++this.index;\n this.lineStart = this.index;\n } else if (ch === 0x2A) {\n // Block comment ends with '*/'.\n if (this.source.charCodeAt(this.index + 1) === 0x2F) {\n this.index += 2;\n\n if (this.trackComment) {\n loc.end = {\n line: this.lineNumber,\n column: this.index - this.lineStart\n };\n var entry = {\n multiLine: true,\n slice: [start + 2, this.index - 2],\n range: [start, this.index],\n loc: loc\n };\n comments.push(entry);\n }\n\n return comments;\n }\n\n ++this.index;\n } else {\n ++this.index;\n }\n } // Ran off the end of the file - the whole thing is a comment\n\n\n if (this.trackComment) {\n loc.end = {\n line: this.lineNumber,\n column: this.index - this.lineStart\n };\n var entry = {\n multiLine: true,\n slice: [start + 2, this.index],\n range: [start, this.index],\n loc: loc\n };\n comments.push(entry);\n }\n\n this.tolerateUnexpectedToken();\n return comments;\n };\n\n Scanner.prototype.scanComments = function () {\n var comments;\n\n if (this.trackComment) {\n comments = [];\n }\n\n var start = this.index === 0;\n\n while (!this.eof()) {\n var ch = this.source.charCodeAt(this.index);\n\n if (character_1.Character.isWhiteSpace(ch)) {\n ++this.index;\n } else if (character_1.Character.isLineTerminator(ch)) {\n ++this.index;\n\n if (ch === 0x0D && this.source.charCodeAt(this.index) === 0x0A) {\n ++this.index;\n }\n\n ++this.lineNumber;\n this.lineStart = this.index;\n start = true;\n } else if (ch === 0x2F) {\n ch = this.source.charCodeAt(this.index + 1);\n\n if (ch === 0x2F) {\n this.index += 2;\n var comment = this.skipSingleLineComment(2);\n\n if (this.trackComment) {\n comments = comments.concat(comment);\n }\n\n start = true;\n } else if (ch === 0x2A) {\n this.index += 2;\n var comment = this.skipMultiLineComment();\n\n if (this.trackComment) {\n comments = comments.concat(comment);\n }\n } else {\n break;\n }\n } else if (start && ch === 0x2D) {\n // U+003E is '>'\n if (this.source.charCodeAt(this.index + 1) === 0x2D && this.source.charCodeAt(this.index + 2) === 0x3E) {\n // '-->' is a single-line comment\n this.index += 3;\n var comment = this.skipSingleLineComment(3);\n\n if (this.trackComment) {\n comments = comments.concat(comment);\n }\n } else {\n break;\n }\n } else if (ch === 0x3C && !this.isModule) {\n if (this.source.slice(this.index + 1, this.index + 4) === '!--') {\n this.index += 4; // `