text: /**
   * @license
   * Copyright (c) 2016 The IBM Research authors. All rights reserved.
   * This code may only be used under the MIT style license found at https://ibmresearch.github.io/LICENSE.txt
   * The complete set of authors may be found at https://ibmresearch.github.io/AUTHORS.txt
   * The complete set of contributors may be found at https://ibmresearch.github.io/CONTRIBUTORS.txt
   */
  
  'use strict';
  
  module.exports = {
    extends: 'eslint:recommended',
    rules: {
      // Possible Errors (http://eslint.org/docs/rules/#possible-errors)
      // These rules relate to possible syntax or logic errors in JavaScript code:
      // 'for-direction': 'off',
      'for-direction': 'error',
      // 'getter-return': 'off',
      'getter-return': 'error',
      // 'no-await-in-loop': 'off',
      'no-await-in-loop': 'error',
      // 'no-compare-neg-zero': 'error',
      'no-compare-neg-zero': 'error',
      // 'no-cond-assign': 'error',
      'no-cond-assign': ['error', 'except-parens'],
      // 'no-console': 'error',
      'no-console': ['error'],
      // 'no-constant-condition': 'error',
      'no-constant-condition': 'error',
      // 'no-control-regex': 'error',
      'no-control-regex': 'error',
      // 'no-debugger': 'error',
      'no-debugger': 'error',
      // 'no-dupe-args': 'error',
      'no-dupe-args': 'error',
      // 'no-dupe-keys': 'error',
      'no-dupe-keys': 'error',
      // 'no-duplicate-case': 'error',
      'no-duplicate-case': 'error',
      // 'no-empty-character-class': 'error',
      'no-empty-character-class': 'error',
      // 'no-empty': 'error',
      'no-empty': 'error',
      // 'no-ex-assign': 'error',
      'no-ex-assign': 'error',
      // 'no-extra-boolean-cast': 'error',
      'no-extra-boolean-cast': 'error',
      // 'no-extra-parens': 'off',
      'no-extra-parens': ['error', 'all', {
        'conditionalAssign': true,
        'returnAssign': true,
        'nestedBinaryExpressions': false
      }],
      // 'no-extra-semi': 'error',
      'no-extra-semi': 'error',
      // 'no-func-assign': 'error',
      'no-func-assign': 'error',
      // 'no-inner-declarations': 'error',
      'no-inner-declarations': ['error', 'functions'],
      // 'no-invalid-regexp': 'error',
      'no-invalid-regexp': 'error',
      // 'no-irregular-whitespace': 'error',
      'no-irregular-whitespace': 'error',
      // 'no-obj-calls': 'error',
      'no-obj-calls': 'error',
      // 'no-prototype-builtins': 'off',
      'no-prototype-builtins': 'off',
      // 'no-regex-spaces': 'error',
      'no-regex-spaces': 'error',
      // 'no-sparse-arrays': 'error',
      'no-sparse-arrays': 'error',
      // 'no-template-curly-in-string': 'off',
      'no-template-curly-in-string': 'error',
      // 'no-unexpected-multiline': 'error',
      'no-unexpected-multiline': 'error',
      // 'no-unreachable': 'error',
      'no-unreachable': 'error',
      // 'no-unsafe-finally': 'error',
      'no-unsafe-finally': 'error',
      // 'no-unsafe-negation': 'error',
      'no-unsafe-negation': 'error',
      // 'use-isnan': 'error',
      'use-isnan': 'error',
      // 'valid-jsdoc': 'off',
      'valid-jsdoc': 'off',
      // 'valid-typeof': 'error',
      'valid-typeof': 'error',
  
      // Best Practices (http://eslint.org/docs/rules/#best-practices)
      // These rules relate to better ways of doing things to help you avoid problems:
      // 'accessor-pairs': 'off',
      // 'array-callback-return': 'off',
      // 'block-scoped-var': 'off',
      // 'class-methods-use-this': 'off',
      // 'complexity': 'off',
      // 'consistent-return': 'off',
      // 'curly': 'off',
      // 'default-case': 'off',
      // 'dot-location': 'off',
      // 'dot-notation': 'off',
      // 'eqeqeq': 'off',
      // 'guard-for-in': 'off',
      // 'no-alert': 'off',
      // 'no-caller': 'off',
      // 'no-case-declarations': 'error',
      // 'no-div-regex': 'off',
      // 'no-else-return': 'off',
      // 'no-empty-function': 'off',
      // 'no-empty-pattern': 'error',
      // 'no-eq-null': 'off',
      // 'no-eval': 'off',
      // 'no-extend-native': 'off',
      // 'no-extra-bind': 'off',
      // 'no-extra-label': 'off',
      // 'no-fallthrough': 'error',
      // 'no-floating-decimal': 'off',
      // 'no-global-assign': 'error',
      // 'no-implicit-coercion': 'off',
      // 'no-implicit-globals': 'off',
      // 'no-implied-eval': 'off',
      // 'no-invalid-this': 'off',
      // 'no-iterator': 'off',
      // 'no-labels': 'off',
      // 'no-lone-blocks': 'off',
      // 'no-loop-func': 'off',
      // 'no-magic-numbers': 'off',
      // 'no-multi-spaces': 'off',
      'no-multi-spaces': 'error',
      // 'no-multi-str': 'off',
      // 'no-new-func': 'off',
      // 'no-new-wrappers': 'off',
      // 'no-new': 'off',
      // 'no-octal-escape': 'off',
      // 'no-octal': 'off',
      // 'no-param-reassign': 'off',
      // 'no-proto': 'off',
      // 'no-redeclare': 'error',
      // 'no-restricted-properties': 'off',
      // 'no-return-assign': 'off',
      // 'no-return-await': 'off',
      // 'no-script-url': 'off',
      // 'no-self-assign': 'error',
      // 'no-self-compare': 'off',
      // 'no-sequences': 'off',
      // 'no-throw-literal': 'off',
      // 'no-unmodified-loop-condition': 'off',
      // 'no-unused-expressions': 'off',
      // 'no-unused-labels': 'error',
      // 'no-useless-call': 'off',
      // 'no-useless-concat': 'off',
      // 'no-useless-escape': 'error',
      // 'no-useless-return': 'off',
      // 'no-void': 'off',
      // 'no-warning-comments': 'off',
      // 'no-with': 'off',
      // 'radix': 'off',
      // 'require-await': 'off',
      // 'vars-on-top': 'off',
      // 'wrap-iife': 'off',
      // 'yoda': 'off',
  
      // Strict Mode (http://eslint.org/docs/rules/#strict-mode)
      // These rules relate to strict mode directives:
      // 'strict': 'off',
  
      // Variables (http://eslint.org/docs/rules/#variables)
      // These rules relate to variable declarations:
      // 'init-declarations': 'off',
      'init-declarations': 'off',
      // 'no-catch-shadow': 'off',
      'no-catch-shadow': 'off',
      // 'no-delete-var': 'error',
      'no-delete-var': 'error',
      // 'no-label-var': 'off',
      'no-label-var': 'error',
      // 'no-restricted-globals': 'off',
      'no-restricted-globals': 'off',
      // 'no-shadow': 'off',
      'no-shadow': 'error',
      // 'no-shadow-restricted-names': 'off',
      'no-shadow-restricted-names': 'error',
      // 'no-undef': 'error',
      'no-undef': 'error',
      // 'no-undef-init': 'off',
      'no-undef-init': 'error',
      // 'no-undefined': 'off',
      'no-undefined': 'off',
      // 'no-unused-vars': 'error',
      'no-unused-vars': ['error', {
        'vars': 'all',
        // 'varsIgnorePattern': null,
        'args': 'after-used',
        'ignoreRestSiblings': true,
        // 'argsIgnorePattern': null,
        // 'caughtErrors': null,
        // 'caughtErrorsIgnorePattern': null
      }],
      // 'no-use-before-define': 'off',
      'no-use-before-define': ['error', {
        'functions': true,
        'classes': true,
        'variables': true
      }],
  
      // Node.js and CommonJS (http://eslint.org/docs/rules/#nodejs-and-commonjs)
      // These rules relate to code running in Node.js, or in browsers with CommonJS:
      // 'callback-return': 'off',
      'callback-return': 'off',
      // 'global-require': 'off',
      'global-require': 'error',
      // 'handle-callback-err': 'off',
      'handle-callback-err': 'off',
      // 'no-buffer-constructor': 'off',
      'no-buffer-constructor': 'error',
      // 'no-mixed-requires': 'off',
      'no-mixed-requires': 'error',
      // 'no-new-require': 'off',
      'no-new-require': 'error',
      // 'no-path-concat': 'off',
      'no-path-concat': 'error',
      // 'no-process-env': 'off',
      'no-process-env': 'off',
      // 'no-process-exit': 'off',
      'no-process-exit': 'off',
      // 'no-restricted-modules': 'off',
      'no-restricted-modules': 'off',
      // 'no-sync': 'off',
      'no-sync': 'off',
  
      // Stylistic Issues (http://eslint.org/docs/rules/#stylistic-issues)
      // These rules relate to style guidelines, and are therefore quite subjective:
      // 'array-bracket-newline': 'off',
      'array-bracket-newline': ['off', {
        'multiline': true
      }],
      // 'array-bracket-spacing': 'off',
      'array-bracket-spacing': ['error', 'never'],
      // 'array-element-newline': 'off',
      'array-element-newline': 'off',
      // 'block-spacing': 'off',
      'block-spacing': ['error', 'always'],
      // 'brace-style': 'off',
      'brace-style': ['error', '1tbs'],
      // 'camelcase': 'off',
      'camelcase': ['error', {
        'properties': 'always'
      }],
      // 'capitalized-comments': 'off',
      'capitalized-comments': ['warn', 'always', {
        'ignoreConsecutiveComments': true
      }],
      // 'comma-dangle': 'off',
      'comma-dangle': ['error', 'never'],
      // 'comma-spacing': 'off',
      'comma-spacing': ['error', {
        'before': false,
        'after': true
      }],
      // 'comma-style': 'off',
      'comma-style': ['error', 'last'],
      // 'computed-property-spacing': 'off',
      'computed-property-spacing': ['error', 'never'],
      // 'consistent-this': 'off',
      'consistent-this': ['error', 'that'],
      // 'eol-last': 'off',
      'eol-last': ['error', 'always'],
      // 'func-call-spacing': 'off',
      'func-call-spacing': ['error', 'never'],
      // 'func-name-matching': 'off',
      'func-name-matching': ['error', 'always'],
      // 'func-names': 'off',
      'func-names': ['off', 'always'],
      // 'func-style': 'off',
      'func-style': ['off', 'expression'],
      // 'id-blacklist': 'off',
      'id-blacklist': 'off',
      // 'id-length': 'off',
      'id-length': ['error', {
        'min': 2
      }],
      // 'id-match': 'off',
      'id-match': 'off',
      // 'indent': 'off',
      'indent': ['error', 2, {
        'SwitchCase': 1,
        // 'VariableDeclarator': null,
        'outerIIFEBody': 1,
        'MemberExpression': 1,
        // 'FunctionDeclaration': null,
        // 'FunctionExpression': null,
        // 'CallExpression': null,
        'ArrayExpression': 1,
        'ObjectExpression': 1,
        // 'flatTernaryExpressions': false
        'flatTernaryExpressions': false
      }],
      // 'jsx-quotes': 'off',
      'jsx-quotes': ['error', 'prefer-double'],
      // 'key-spacing': 'off',
      'key-spacing': ['error', {
        'beforeColon': false,
        'afterColon': true,
        'mode': 'strict'
      }],
      // 'keyword-spacing': 'off',
      'keyword-spacing': ['error', {
        'before': true,
        'after': true
      }],
      // 'line-comment-position': 'off',
      'line-comment-position': ['off', {
        'position': 'above',
        'applyDefaultPatterns': true,
      }],
      // 'linebreak-style': 'off',
      'linebreak-style': ['error', 'unix'],
      // 'lines-around-comment': 'off',
      'lines-around-directive': ['error', {
        'before': 'always',
        'after': 'always',
      }],
      // 'max-depth': 'off',
      'max-depth': ['error', 4],
      // 'max-len': 'off',
      'max-len': ['error', 80, 2, {
        'ignoreComments': false,
        'ignoreUrls': true,
        'ignoreStrings': true,
        'ignoreTemplateLiterals': true,
        'ignoreRegExpLiterals': true
      }],
      // 'max-lines': 'off',
      'max-lines': ['off', {
        'max': 300,
        'skipBlankLines': true,
        'skipComments': true
      }],
      // 'max-nested-callbacks': 'off',
      'max-nested-callbacks': 'off',
      // 'max-params': 'off',
      'max-params': ['off', 3],
      // 'max-statements-per-line': 'off',
      'max-statements-per-line': ['off', {
        'max': 1
      }],
      // 'max-statements': 'off',
      'max-statements': ['off', 10],
      // 'multiline-ternary': 'off',
      'multiline-ternary': ['error', 'never'],
      // 'new-cap': 'off',
      'new-cap': ['error', {
        'newIsCap': true,
        'capIsNew': false,
        // 'newIsCapExceptions': [],
        // 'newIsCapExceptionPattern': null,
        // 'capIsNewExceptions': [],
        // 'capIsNewExceptionPattern': null,
        'properties': false,
      }],
      // 'new-parens': 'off',
      'new-parens': 'error',
      // 'newline-per-chained-call': 'off',
      'newline-per-chained-call': ['error', {
        'ignoreChainWithDepth': 4
      }],
      // 'no-array-constructor': 'off',
      'no-array-constructor': 'error',
      // 'no-bitwise': 'off',
      'no-bitwise': 'error',
      // 'no-continue': 'off',
      'no-continue': 'error',
      // 'no-inline-comments': 'off',
      'no-inline-comments': 'off',
      // 'no-lonely-if': 'off',
      'no-lonely-if': 'error',
      // 'no-mixed-operators': 'off',
      'no-mixed-operators': ['error', {
        'groups': [
          ['+', '-', '*', '/', '%', '**'],
          ['&', '|', '^', '~', '<<', '>>', '>>>'],
          ['==', '!=', '===', '!==', '>', '>=', '<', '<='],
          ['&&', '||'],
          ['in', 'instanceof']
        ],
        'allowSamePrecedence': false
      }],
      // 'no-mixed-spaces-and-tabs': 'error',
      'no-mixed-spaces-and-tabs': 'error',
      // 'no-multi-assign': 'off',
      'no-multi-assign': 'error',
      // 'no-multiple-empty-lines': 'off',
      'no-multiple-empty-lines': ['error', {
        'max': 2
      }],
      // 'no-negated-condition': 'off',
      'no-negated-condition': 'off',
      // 'no-nested-ternary': 'off',
      'no-nested-ternary': 'error',
      // 'no-new-object': 'off',
      'no-new-object': 'error',
      // 'no-plusplus': 'off',
      'no-plusplus': 'error',
      // 'no-restricted-syntax': 'off',
      // 'no-tabs': 'off',
      'no-tabs': 'error',
      // 'no-ternary': 'off',
      'no-ternary': 'off',
      // 'no-trailing-spaces': 'off',
      'no-trailing-spaces': ['error', {
        'skipBlankLines': false
      }],
      // 'no-underscore-dangle': 'off',
      'no-underscore-dangle': 'off',
      // 'no-unneeded-ternary': 'off',
      'no-unneeded-ternary': ['error', {
        'defaultAssignment': false
      }],
      // 'no-whitespace-before-property': 'off',
      'no-whitespace-before-property': 'error',
      // 'nonblock-statement-body-position': 'off',
      'nonblock-statement-body-position': ['error', 'below'],
      // 'object-curly-newline': 'off',
      'object-curly-newline': ['off'],
      // 'object-curly-spacing': ['off'],
      'object-curly-spacing': ['error', 'always'],
      // 'object-property-newline': 'off',
      'object-property-newline': ['error', {
        'allowMultiplePropertiesPerLine': true
      }],
      // 'one-var-declaration-per-line': 'off',
      'one-var-declaration-per-line': ['error', 'always'],
      // 'one-var': 'off',
      'one-var': ['error', 'never'],
      // 'operator-assignment': 'off',
      'operator-assignment': ['error', 'always'],
      // 'operator-linebreak': 'off',
      'operator-linebreak': 'off',
      // 'padded-blocks': 'off',
      'padded-blocks': ['error', 'never'],
      // 'padding-line-between-statements': 'off',
      'padding-line-between-statements': 'off',
      // 'quote-props': 'off',
      'quote-props': ['error', 'as-needed', {
        'keywords': false,
        'unnecessary': true,
        'numbers': false
      }],
      // 'quotes': 'off',
      'quotes': ['error', 'single', {
        'avoidEscape': true
      }],
      // 'require-jsdoc': 'off',
      'require-jsdoc': 'off',
      // 'semi-spacing': 'off',
      'semi-spacing': ['error', {
        'before': false,
        'after': true
      }],
      // 'semi-style': 'off',
      'semi-style': ['error', 'last'],
      // 'semi': 'off',
      'semi': ['error', 'always', {
        'omitLastInOneLineBlock': true
      }],
      // 'sort-keys': 'off',
      'sort-keys': 'off',
      // 'sort-vars': 'off',
      'sort-vars': 'off',
      // 'space-before-blocks': 'off',
      'space-before-blocks': ['error', 'always'],
      // 'space-before-function-paren': 'off',
      'space-before-function-paren': ['error', 'never'],
      // 'space-in-parens': 'off',
      'space-in-parens': ['error', 'never'],
      // 'space-infix-ops': 'off',
      'space-infix-ops': ['error', {
        'int32Hint': false
      }],
      // 'space-unary-ops': 'off',
      'space-unary-ops': ['error', {
        'words': true,
        'nonwords': false
      }],
      // 'spaced-comment': 'off',
      'spaced-comment': ['error', 'always'],
      // 'switch-colon-spacing': 'off',
      'switch-colon-spacing': ['error', {
        'after': true,
        'before': false
      }],
      // 'template-tag-spacing': 'off',
      'template-tag-spacing': ['error', 'never'],
      // 'unicode-bom': 'off',
      'unicode-bom': ['error', 'never'],
      // 'wrap-regex': 'off',
      'wrap-regex': 'off',
  
      // ECMAScript 6 (http://eslint.org/docs/rules/#ecmascript-6)
      // These rules relate to ES6, also known as ES2015:
      // 'arrow-body-style': 'off',
      // 'arrow-parens': 'off',
      // 'arrow-spacing': 'off',
      // 'constructor-super': 'error',
      // 'generator-star-spacing': 'off',
      // 'no-class-assign': 'error',
      // 'no-confusing-arrow': 'off',
      // 'no-const-assign': 'error',
      // 'no-dupe-class-members': 'error',
      // 'no-duplicate-imports': 'off',
      // 'no-new-symbol': 'error',
      // 'no-restricted-imports': 'off',
      // 'no-this-before-super': 'error',
      // 'no-useless-computed-key': 'off',
      // 'no-useless-constructor': 'off',
      // 'no-useless-rename': 'off',
      // 'no-var': 'off',
      // 'object-shorthand': 'off',
      // 'prefer-arrow-callback': 'off',
      // 'prefer-const': 'off',
      // 'prefer-destructuring': 'off',
      // 'prefer-numeric-literals': 'off',
      // 'prefer-promise-reject-errors': 'off',
      // 'prefer-rest-params': 'off',
      // 'prefer-spread': 'off',
      // 'prefer-template': 'off',
      // 'require-yield': 'error',
      // 'rest-spread-spacing': 'off',
      // 'sort-imports': 'off',
      // 'symbol-description': 'off',
      // 'template-curly-spacing': 'off',
      // 'yield-star-spacing': 'off'
    }
  };
  