[
  {
    "path": ".codeclimate.yml",
    "content": "exclude_patterns:\n- \"packages/docs/src/data/\""
  },
  {
    "path": ".eslintrc.js",
    "content": "module.exports = {\n  ignorePatterns: ['lib/dist/**/*'],\n  extends: [\n    'standard',\n    'plugin:react/recommended',\n    'plugin:@typescript-eslint/recommended',\n    'plugin:react-hooks/recommended',\n    'plugin:prettier/recommended'\n  ],\n  parser: '@typescript-eslint/parser',\n  parserOptions: {\n    ecmaVersion: '2020'\n  },\n  plugins: ['react', '@typescript-eslint', 'prettier'],\n  rules: {\n    camelcase: 'off',\n    'no-use-before-define': 'off',\n    '@typescript-eslint/no-use-before-define': ['error'],\n    'prettier/prettier': [\n      'error',\n      {\n        tabWidth: 2,\n        printWidth: 120,\n        singleQuote: true,\n        trailingComma: 'none',\n        semi: false,\n        overrides: [\n          {\n            files: '*.json',\n            options: {\n              parser: 'json'\n            }\n          },\n          {\n            files: '*.html',\n            options: {\n              parser: 'html'\n            }\n          },\n          {\n            files: '*.css',\n            options: {\n              parser: 'css'\n            }\n          },\n          {\n            files: '*.md',\n            options: {\n              parser: 'markdown'\n            }\n          }\n        ]\n      }\n    ],\n    'import/order': 'error',\n    'react/react-in-jsx-scope': 'off',\n    'react/prop-types': 'off'\n  },\n  settings: {\n    react: {\n      version: 'detect'\n    }\n  }\n}\n"
  },
  {
    "path": ".github/CODEOWNERS",
    "content": "* @jens-ox\n"
  },
  {
    "path": ".github/workflows/gh-pages.yml",
    "content": "name: Deploy GitHub Pages\non:\n  push:\n    branches: [main]\n\njobs:\n  build-and-deploy:\n    name: Deploy to GitHub Pages\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v3\n      - uses: actions/setup-node@v3\n        with:\n          node-version: \"16\"\n          cache: \"yarn\"\n      - run: yarn\n      - name: Build library\n        run: yarn build\n        working-directory: ./lib\n      - name: Build frontend\n        run: yarn build\n        working-directory: ./app\n      - name: Deploy\n        uses: JamesIves/github-pages-deploy-action@v4.3.0\n        with:\n          branch: gh-pages\n          folder: ./app/out"
  },
  {
    "path": ".github/workflows/pr-gate.yml",
    "content": "name: PR Gate\non:\n  push:\n    branches-ignore:\n      - gh-pages\n\njobs:\n  lint-lib:\n    name: Lint Library\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v3\n      - uses: actions/setup-node@v3\n        with:\n          node-version: \"16\"\n          cache: \"yarn\"\n      - run: yarn\n      - name: Run ESLint\n        run: yarn lint\n        working-directory: ./lib"
  },
  {
    "path": ".github/workflows/publish.yml",
    "content": "name: Publish Package to NPM\non:\n  release:\n    types: [created]\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v3\n      - uses: actions/setup-node@v3\n        with:\n          node-version: '16'\n          registry-url: 'https://registry.npmjs.org'\n          cache: 'yarn'\n      - run: yarn\n      - name: Build library\n        run: yarn build\n        working-directory: ./lib\n      - run: npm publish\n        working-directory: ./lib\n        env:\n          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}"
  },
  {
    "path": ".gitignore",
    "content": "node_modules\n.vscode\n.DS_Store"
  },
  {
    "path": "README.md",
    "content": "[![MetricsGraphics Logo](.github/logo.svg)](https://metricsgraphicsjs.org)\n\n[![BundlePhobia](https://badgen.net/bundlephobia/minzip/mg2)](https://bundlephobia.com/result?p=mg2) [![CodeClimate](https://api.codeclimate.com/v1/badges/dc22d28ce4d8bece4504/maintainability)](https://codeclimate.com/github/jens-ox/metrics-graphics/maintainability) [![Netlify Status](https://api.netlify.com/api/v1/badges/797ef16b-da9e-461f-851b-e50ddfd905ab/deploy-status)](https://app.netlify.com/sites/affectionate-benz-6e3cf9/deploys)\n\n*MetricsGraphics* is a library built for visualizing and laying out time-series data. At around 15kB (gzipped), it provides a simple way to produce common types of graphics in a principled and consistent way. The library currently supports line charts, scatterplots and histograms, as well as features like rug plots.\n\n## Example\n\nAll you need to do is add an entry node to your document:\n\n```html\n<div id=\"chart\"></div>\n```\n\nThen, use the id to mount the chart:\n\n```js\nimport LineChart from 'metrics-graphics'\n\nnew LineChart({\n  data, // some array of data objects\n  width: 600,\n  height: 200,\n  target: '#chart',\n  area: true,\n  xAccessor: 'date',\n  yAccessor: 'value'\n})\n```\n\nThat's it!\n\n![Sample Screenshot](.img/screenshot.png)\n\nThe raw data for this example can be found [here](packages/examples/src/assets/data/ufoSightings.js)\n\n## Documentation\n\nIf you want to use *MetricsGraphics*, you can find the public API [here](packages/lib/docs/API.md).\n\nIf you want to extend *MetricsGraphics*, you can read up on the [components](packages/lib/docs/Components.md) and [utilities](packages/lib/docs/Utility.md).\n\n## Development Setup\n\nThis project uses [Yarn Workspaces](https://classic.yarnpkg.com/lang/en/docs/workspaces/). Please make sure that Yarn is installed.\n\n```bash\n# clone and setup\ngit clone https://github.com/metricsgraphics/metrics-graphics\ncd metrics-graphics\nyarn install\n```\n\nRun both the development setup of the library and the development setup of the examples\n\n```bash\n# inside packages/lib\nyarn dev\n\n# inside packages/examples\nyarn dev\n```"
  },
  {
    "path": "app/.gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pnp\n.pnp.js\n\n# testing\n/coverage\n\n# next.js\n/.next/\n/out/\n\n# production\n/build\n\n# misc\n.DS_Store\n*.pem\n\n# debug\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n.pnpm-debug.log*\n\n# local env files\n.env*.local\n\n# vercel\n.vercel\n\n# typescript\n*.tsbuildinfo\n"
  },
  {
    "path": "app/README.md",
    "content": "This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).\n\n## Getting Started\n\nFirst, run the development server:\n\n```bash\nnpm run dev\n# or\nyarn dev\n```\n\nOpen [http://localhost:3000](http://localhost:3000) with your browser to see the result.\n\nYou can start editing the page by modifying `pages/index.tsx`. The page auto-updates as you edit the file.\n\n[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.ts`.\n\nThe `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages.\n\n## Learn More\n\nTo learn more about Next.js, take a look at the following resources:\n\n- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.\n- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.\n\nYou can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!\n\n## Deploy on Vercel\n\nThe easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.\n\nCheck out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.\n"
  },
  {
    "path": "app/components/Layout.tsx",
    "content": "import Head from 'next/head'\nimport { PropsWithChildren } from 'react'\n\ninterface LayoutProps {\n  title: string\n}\n\nconst Layout: React.FC<PropsWithChildren<LayoutProps>> = ({ title, children }) => (\n  <>\n    <Head>\n      <title>{title}</title>\n    </Head>\n    {children}\n  </>\n)\n\nexport default Layout\n"
  },
  {
    "path": "app/components/Logo.tsx",
    "content": "const Logo = () => (\n  <svg width=\"40\" viewBox=\"0 0 80 80\">\n    <g>\n      <path\n        fill=\"#101111\"\n        d=\"M3.802,51.254V24.525c0-0.928,0.267-1.775,0.8-2.541s1.241-1.311,2.123-1.636l24.502-8.91   c0.51-0.186,1.021-0.279,1.531-0.279c0.51,0,1.021,0.093,1.531,0.279l24.501,8.91c0.882,0.325,1.589,0.87,2.123,1.636   s0.801,1.613,0.801,2.541v26.729c0,0.812-0.209,1.566-0.626,2.263c-0.418,0.696-0.987,1.241-1.706,1.636L34.882,68.517   c-0.65,0.371-1.357,0.558-2.123,0.558s-1.474-0.187-2.123-0.558L6.134,55.152c-0.72-0.395-1.288-0.939-1.706-1.636   S3.802,52.066,3.802,51.254z M8.466,24.456l24.293,8.84l24.292-8.84l-24.292-8.84L8.466,24.456z M34.986,63.4L57.26,51.254V29.12   l-22.274,8.109V63.4z\"\n      />\n    </g>\n  </svg>\n)\n\nexport default Logo\n"
  },
  {
    "path": "app/components/NavLink.tsx",
    "content": "import Link, { LinkProps } from 'next/link'\nimport { useRouter } from 'next/router'\nimport { PropsWithChildren } from 'react'\nimport cx from 'classnames'\n\nconst NavLink: React.FC<PropsWithChildren<LinkProps>> = ({ href, children, ...linkProps }) => {\n  const router = useRouter()\n\n  return (\n    <Link href={href}>\n      <a className={cx('rounded-full px-4 py-1', router.asPath === href && 'bg-gray-200')} {...linkProps}>\n        {children}\n      </a>\n    </Link>\n  )\n}\n\nexport default NavLink\n"
  },
  {
    "path": "app/components/ParameterTable.tsx",
    "content": "interface ParameterTableProps {\n  props: Array<{\n    name: string\n    type: string\n    default?: string\n    description: string\n  }>\n}\n\nconst ParameterTable: React.FC<ParameterTableProps> = ({ props }) => (\n  <table>\n    <thead>\n      <tr>\n        <th>Name</th>\n        <th>Type</th>\n        <th>Default</th>\n        <th>Description</th>\n      </tr>\n    </thead>\n    <tbody>\n      {props.map((p) => (\n        <tr key={p.name}>\n          <td>{p.name}</td>\n          <td>\n            <code>{p.type}</code>\n          </td>\n          <td>{p.default ? <code>{p.default}</code> : '-'}</td>\n          <td>{p.description}</td>\n        </tr>\n      ))}\n    </tbody>\n  </table>\n)\n\nexport default ParameterTable\n"
  },
  {
    "path": "app/components/charts/Renderer.tsx",
    "content": "import { MutableRefObject, PropsWithChildren, useEffect, useRef } from 'react'\n\ninterface RendererProps {\n  chartRenderer: (chartRef: MutableRefObject<null>) => unknown\n}\n\nconst Renderer: React.FC<PropsWithChildren<RendererProps>> = ({ chartRenderer, children }) => {\n  const chartRef = useRef(null)\n\n  // render chart\n  useEffect(() => {\n    // if react is still rendering, wait\n    if (!chartRef.current) return\n\n    // call render function with ref\n    chartRenderer(chartRef.current)\n  })\n\n  return (\n    <div className=\"grid grid-cols-1 lg:grid-cols-2 items-center gap-4\">\n      <div ref={chartRef} />\n      <div>{children}</div>\n    </div>\n  )\n}\n\nexport default Renderer\n"
  },
  {
    "path": "app/components/charts/histogram/Simple.tsx",
    "content": "import { HistogramChart } from 'metrics-graphics'\nimport { PropsWithChildren } from 'react'\nimport Renderer from '../Renderer'\nimport ufoData from '../../../data/ufoDates.json'\n\nconst Simple: React.FC<PropsWithChildren<unknown>> = ({ children }) => (\n  <Renderer\n    chartRenderer={(ref) =>\n      new HistogramChart({\n        data: ufoData.map((date) => date / 30).sort(),\n        width: 600,\n        height: 200,\n        binCount: 150,\n        target: ref as any,\n        brush: 'x',\n        yAxis: {\n          extendedTicks: true\n        },\n        tooltipFunction: (bar) => `${bar.time} months, volume ${bar.count}`\n      })\n    }\n  >\n    {children}\n  </Renderer>\n)\n\nexport default Simple\n"
  },
  {
    "path": "app/components/charts/line/Active.tsx",
    "content": "import { LineChart } from 'metrics-graphics'\nimport { PropsWithChildren } from 'react'\nimport Renderer from '../Renderer'\nimport { formatCompact, formatDate } from '../../../helpers/format'\n\nimport fakeUsers from '../../../data/fakeUsers1.json'\n\nconst Active: React.FC<PropsWithChildren<unknown>> = ({ children }) => (\n  <Renderer\n    chartRenderer={(ref) =>\n      new LineChart({\n        data: [\n          fakeUsers.map((entry, i) => ({\n            ...entry,\n            date: new Date(entry.date),\n            active: i % 5 === 0\n          }))\n        ],\n        width: 600,\n        height: 200,\n        target: ref as any,\n        activeAccessor: 'active',\n        activePoint: {\n          radius: 2\n        },\n        tooltipFunction: (point) => `${formatDate(point.date)}: ${formatCompact(point.value)}`\n      })\n    }\n  >\n    {children}\n  </Renderer>\n)\n\nexport default Active\n"
  },
  {
    "path": "app/components/charts/line/Aggregated.tsx",
    "content": "import { LineChart } from 'metrics-graphics'\nimport { PropsWithChildren } from 'react'\nimport Renderer from '../Renderer'\nimport { formatCompact, formatDate } from '../../../helpers/format'\n\nimport fakeUsers from '../../../data/fakeUsers2.json'\n\nconst Aggregated: React.FC<PropsWithChildren<unknown>> = ({ children }) => (\n  <Renderer\n    chartRenderer={(ref) =>\n      new LineChart({\n        data: fakeUsers.map((fakeArray) =>\n          fakeArray.map((fakeEntry) => ({\n            ...fakeEntry,\n            date: new Date(fakeEntry.date)\n          }))\n        ),\n        width: 600,\n        height: 200,\n        target: ref as any,\n        xAccessor: 'date',\n        yAccessor: 'value',\n        legend: ['Line 1', 'Line 2', 'Line 3'],\n        voronoi: {\n          aggregate: true\n        },\n        tooltipFunction: (point) => `${formatDate(point.date)}: ${formatCompact(point.value)}`\n      })\n    }\n  >\n    {children}\n  </Renderer>\n)\n\nexport default Aggregated\n"
  },
  {
    "path": "app/components/charts/line/Baseline.tsx",
    "content": "import { LineChart } from 'metrics-graphics'\nimport { PropsWithChildren } from 'react'\nimport Renderer from '../Renderer'\nimport { formatCompact, formatDate } from '../../../helpers/format'\n\nimport fakeUsers from '../../../data/fakeUsers1.json'\n\nconst Baseline: React.FC<PropsWithChildren<unknown>> = ({ children }) => (\n  <Renderer\n    chartRenderer={(ref) =>\n      new LineChart({\n        data: [\n          fakeUsers.map((entry) => ({\n            ...entry,\n            date: new Date(entry.date)\n          }))\n        ],\n        baselines: [{ value: 160000000, label: 'a baseline' }],\n        width: 600,\n        height: 200,\n        target: ref as any,\n        tooltipFunction: (point) => `${formatDate(point.date)}: ${formatCompact(point.value)}`\n      })\n    }\n  >\n    {children}\n  </Renderer>\n)\n\nexport default Baseline\n"
  },
  {
    "path": "app/components/charts/line/Broken.tsx",
    "content": "import { LineChart } from 'metrics-graphics'\nimport { PropsWithChildren } from 'react'\nimport Renderer from '../Renderer'\nimport { formatDate } from '../../../helpers/format'\n\nimport missing from '../../../data/missing.json'\n\nconst Broken: React.FC<PropsWithChildren<unknown>> = ({ children }) => (\n  <Renderer\n    chartRenderer={(ref) =>\n      new LineChart({\n        data: [missing.map((e) => ({ ...e, date: new Date(e.date) }))],\n        width: 600,\n        height: 200,\n        target: ref as any,\n        defined: (d) => !d.dead,\n        area: true,\n        tooltipFunction: (point) => `${formatDate(point.date)}: ${point.value}`\n      })\n    }\n  >\n    {children}\n  </Renderer>\n)\n\nexport default Broken\n"
  },
  {
    "path": "app/components/charts/line/Confidence.tsx",
    "content": "import { LineChart } from 'metrics-graphics'\nimport { PropsWithChildren } from 'react'\nimport Renderer from '../Renderer'\nimport confidence from '../../../data/confidenceBand.json'\nimport { formatDate, formatPercent } from '../../../helpers/format'\n\nconst Confidence: React.FC<PropsWithChildren<unknown>> = ({ children }) => (\n  <Renderer\n    chartRenderer={(ref) =>\n      new LineChart({\n        data: [\n          confidence.map((entry) => ({\n            ...entry,\n            date: new Date(entry.date)\n          }))\n        ],\n        xAxis: {\n          extendedTicks: true\n        },\n        yAxis: {\n          tickFormat: 'percentage'\n        },\n        width: 600,\n        height: 200,\n        target: ref as any,\n        confidenceBand: ['l', 'u'],\n        tooltipFunction: (point) => `${formatDate(point.date)}: ${formatPercent(point.value)}`\n      })\n    }\n  >\n    {children}\n  </Renderer>\n)\n\nexport default Confidence\n"
  },
  {
    "path": "app/components/charts/line/Multi.tsx",
    "content": "import { LineChart } from 'metrics-graphics'\nimport { PropsWithChildren } from 'react'\nimport Renderer from '../Renderer'\nimport fakeUsers from '../../../data/fakeUsers2.json'\nimport { formatCompact, formatDate } from '../../../helpers/format'\n\nconst Multi: React.FC<PropsWithChildren<unknown>> = ({ children }) => (\n  <Renderer\n    chartRenderer={(ref) =>\n      new LineChart({\n        data: fakeUsers.map((fakeArray) =>\n          fakeArray.map((fakeEntry) => ({\n            ...fakeEntry,\n            date: new Date(fakeEntry.date)\n          }))\n        ),\n        width: 600,\n        height: 200,\n        target: ref as any,\n        xAccessor: 'date',\n        yAccessor: 'value',\n        legend: ['Line 1', 'Line 2', 'Line 3'],\n        tooltipFunction: (point) => `${formatDate(point.date)}: ${formatCompact(point.value)}`\n      })\n    }\n  >\n    {children}\n  </Renderer>\n)\n\nexport default Multi\n"
  },
  {
    "path": "app/components/charts/line/Simple.tsx",
    "content": "import { LineChart } from 'metrics-graphics'\nimport { PropsWithChildren } from 'react'\nimport Renderer from '../Renderer'\nimport fakeUsers from '../../../data/fakeUsers1.json'\nimport { formatCompact, formatDate } from '../../../helpers/format'\n\nconst Simple: React.FC<PropsWithChildren<unknown>> = ({ children }) => (\n  <Renderer\n    chartRenderer={(ref) =>\n      new LineChart({\n        data: [fakeUsers.map(({ date, value }) => ({ date: new Date(date), value }))],\n        width: 600,\n        height: 200,\n        yScale: {\n          minValue: 0\n        },\n        target: ref as any,\n        brush: 'xy',\n        area: true,\n        xAccessor: 'date',\n        yAccessor: 'value',\n        tooltipFunction: (point) => `${formatDate(point.date)}: ${formatCompact(point.value)}`\n      })\n    }\n  >\n    {children}\n  </Renderer>\n)\n\nexport default Simple\n"
  },
  {
    "path": "app/components/charts/scatter/Categories.tsx",
    "content": "import { ScatterChart } from 'metrics-graphics'\nimport { PropsWithChildren } from 'react'\nimport Renderer from '../Renderer'\nimport points1 from '../../../data/points1.json'\nimport { formatDecimal } from '../../../helpers/format'\n\nconst groupByArray = (xs: Array<any>, key: string) =>\n  xs.reduce((rv, x) => {\n    const v = x[key]\n    const el = rv.find((r: any) => r && r.key === v)\n    if (el) el.values.push(x)\n    else rv.push({ key: v, values: [x] })\n    return rv\n  }, [])\nconst points2 = groupByArray(points1, 'v')\n\nconst Categories: React.FC<PropsWithChildren<unknown>> = ({ children }) => (\n  <Renderer\n    chartRenderer={(ref) =>\n      new ScatterChart({\n        data: points2.map((x: any) => x.values),\n        legend: points2.map((x: any) => x.key),\n        width: 500,\n        height: 200,\n        xAccessor: 'x',\n        yAccessor: 'y',\n        yRug: true,\n        target: ref as any,\n        tooltipFunction: (point) => `${formatDecimal(point.x)} - ${formatDecimal(point.y)}`\n      })\n    }\n  >\n    {children}\n  </Renderer>\n)\n\nexport default Categories\n"
  },
  {
    "path": "app/components/charts/scatter/Complex.tsx",
    "content": "import { ScatterChart } from 'metrics-graphics'\nimport { PropsWithChildren } from 'react'\nimport Renderer from '../Renderer'\nimport points1 from '../../../data/points1.json'\nimport { formatDecimal } from '../../../helpers/format'\n\nconst groupByArray = (xs: Array<any>, key: string) =>\n  xs.reduce((rv, x) => {\n    const v = x[key]\n    const el = rv.find((r: any) => r && r.key === v)\n    if (el) el.values.push(x)\n    else rv.push({ key: v, values: [x] })\n    return rv\n  }, [])\nconst points2 = groupByArray(points1, 'v')\n\nconst Complex: React.FC<PropsWithChildren<unknown>> = ({ children }) => (\n  <Renderer\n    chartRenderer={(ref) =>\n      new ScatterChart({\n        data: points2.map((x: any) => x.values),\n        legend: points2.map((x: any) => x.key),\n        width: 500,\n        height: 200,\n        target: ref as any,\n        xAccessor: 'x',\n        yAccessor: 'y',\n        sizeAccessor: (x: any) => Math.abs(x.w) * 3,\n        tooltipFunction: (point) => `${formatDecimal(point.x)} - ${formatDecimal(point.y)}: ${formatDecimal(point.w)}`\n      })\n    }\n  >\n    {children}\n  </Renderer>\n)\n\nexport default Complex\n"
  },
  {
    "path": "app/components/charts/scatter/Simple.tsx",
    "content": "import { ScatterChart } from 'metrics-graphics'\nimport { PropsWithChildren } from 'react'\nimport Renderer from '../Renderer'\nimport points1 from '../../../data/points1.json'\nimport { formatDecimal } from '../../../helpers/format'\n\nconst Simple: React.FC<PropsWithChildren<unknown>> = ({ children }) => (\n  <Renderer\n    chartRenderer={(ref) =>\n      new ScatterChart({\n        data: [points1],\n        width: 500,\n        height: 200,\n        target: ref as any,\n        xAccessor: 'x',\n        yAccessor: 'y',\n        brush: 'xy',\n        xRug: true,\n        tooltipFunction: (point) => `${formatDecimal(point.x)} - ${formatDecimal(point.y)}`\n      })\n    }\n  >\n    {children}\n  </Renderer>\n)\n\nexport default Simple\n"
  },
  {
    "path": "app/data/confidenceBand.json",
    "content": "[\n  {\n    \"value\": -1.1618426259,\n    \"date\": \"2012-08-28\",\n    \"l\": -2.6017329022,\n    \"u\": 0.2949717757\n  },\n  {\n    \"value\": -0.5828247293,\n    \"date\": \"2012-08-29\",\n    \"l\": -1.3166963635,\n    \"u\": 0.1324086347\n  },\n  {\n    \"value\": -0.3790770636,\n    \"date\": \"2012-08-30\",\n    \"l\": -0.8712221305,\n    \"u\": 0.0956413566\n  },\n  {\n    \"value\": -0.2792926002,\n    \"date\": \"2012-08-31\",\n    \"l\": -0.6541832008,\n    \"u\": 0.0717120241\n  },\n  {\n    \"value\": -0.2461165469,\n    \"date\": \"2012-09-01\",\n    \"l\": -0.5222677907,\n    \"u\": 0.0594188803\n  },\n  {\n    \"value\": -0.2017354137,\n    \"date\": \"2012-09-02\",\n    \"l\": -0.4434280535,\n    \"u\": 0.0419213465\n  },\n  {\n    \"value\": -0.1457476871,\n    \"date\": \"2012-09-03\",\n    \"l\": -0.3543957712,\n    \"u\": 0.0623761171\n  },\n  {\n    \"value\": -0.002610973,\n    \"date\": \"2012-09-04\",\n    \"l\": -0.3339911495,\n    \"u\": 0.031286929\n  },\n  {\n    \"value\": -0.0080692734,\n    \"date\": \"2012-09-05\",\n    \"l\": -0.2951839941,\n    \"u\": 0.0301762553\n  },\n  {\n    \"value\": -0.0296490933,\n    \"date\": \"2012-09-06\",\n    \"l\": -0.2964395801,\n    \"u\": -0.0029821004\n  },\n  {\n    \"value\": 0.001317397,\n    \"date\": \"2012-09-07\",\n    \"l\": -0.2295443759,\n    \"u\": 0.037903312\n  },\n  {\n    \"value\": -0.0117649838,\n    \"date\": \"2012-09-08\",\n    \"l\": -0.2226376418,\n    \"u\": 0.0239720183\n  },\n  {\n    \"value\": 0.0059394263,\n    \"date\": \"2012-09-09\",\n    \"l\": -0.2020479849,\n    \"u\": 0.0259489347\n  },\n  {\n    \"value\": -0.0115565898,\n    \"date\": \"2012-09-10\",\n    \"l\": -0.2042048037,\n    \"u\": 0.0077863806\n  },\n  {\n    \"value\": 0.0041183019,\n    \"date\": \"2012-09-11\",\n    \"l\": -0.1837263172,\n    \"u\": 0.0137898406\n  },\n  {\n    \"value\": 0.0353559544,\n    \"date\": \"2012-09-12\",\n    \"l\": -0.136610008,\n    \"u\": 0.051403828\n  },\n  {\n    \"value\": 0.0070046011,\n    \"date\": \"2012-09-13\",\n    \"l\": -0.1569988647,\n    \"u\": 0.0202266411\n  },\n  {\n    \"value\": -0.0004251807,\n    \"date\": \"2012-09-14\",\n    \"l\": -0.1410340292,\n    \"u\": 0.0273410185\n  },\n  {\n    \"value\": -0.0035461023,\n    \"date\": \"2012-09-15\",\n    \"l\": -0.1438653689,\n    \"u\": 0.0165445684\n  },\n  {\n    \"value\": 0.007797889,\n    \"date\": \"2012-09-16\",\n    \"l\": -0.1291975355,\n    \"u\": 0.0232461153\n  },\n  {\n    \"value\": 0.0025402723,\n    \"date\": \"2012-09-17\",\n    \"l\": -0.133972479,\n    \"u\": 0.0116753921\n  },\n  {\n    \"value\": -0.005317381,\n    \"date\": \"2012-09-18\",\n    \"l\": -0.1269266586,\n    \"u\": 0.0129723291\n  },\n  {\n    \"value\": -0.0075841521,\n    \"date\": \"2012-09-19\",\n    \"l\": -0.1283478383,\n    \"u\": 0.0056371616\n  },\n  {\n    \"value\": -0.0391388721,\n    \"date\": \"2012-09-20\",\n    \"l\": -0.1571172198,\n    \"u\": -0.0311678828\n  },\n  {\n    \"value\": 0.0075430252,\n    \"date\": \"2012-09-21\",\n    \"l\": -0.1097354417,\n    \"u\": 0.0141132062\n  },\n  {\n    \"value\": 0.1850284663,\n    \"date\": \"2012-09-22\",\n    \"l\": 0.0333682152,\n    \"u\": 0.2140709422\n  },\n  {\n    \"value\": 0.076629596,\n    \"date\": \"2012-09-23\",\n    \"l\": -0.0068472967,\n    \"u\": 0.1101280569\n  },\n  {\n    \"value\": -0.0314292271,\n    \"date\": \"2012-09-24\",\n    \"l\": -0.1074281762,\n    \"u\": 0.0032669363\n  },\n  {\n    \"value\": -0.0232608674,\n    \"date\": \"2012-09-25\",\n    \"l\": -0.0905197842,\n    \"u\": 0.0164250295\n  },\n  {\n    \"value\": -0.01968615,\n    \"date\": \"2012-09-26\",\n    \"l\": -0.084319856,\n    \"u\": 0.0193319465\n  },\n  {\n    \"value\": -0.0310196816,\n    \"date\": \"2012-09-27\",\n    \"l\": -0.0914356781,\n    \"u\": 0.0094436256\n  },\n  {\n    \"value\": -0.0758746967,\n    \"date\": \"2012-09-28\",\n    \"l\": -0.1169814745,\n    \"u\": -0.019659551\n  },\n  {\n    \"value\": 0.0233974572,\n    \"date\": \"2012-09-29\",\n    \"l\": -0.0356839258,\n    \"u\": 0.0610712506\n  },\n  {\n    \"value\": 0.011073579,\n    \"date\": \"2012-09-30\",\n    \"l\": -0.0558712863,\n    \"u\": 0.0346160081\n  },\n  {\n    \"value\": -0.002094822,\n    \"date\": \"2012-10-01\",\n    \"l\": -0.0707143388,\n    \"u\": 0.0152899266\n  },\n  {\n    \"value\": -0.1083707096,\n    \"date\": \"2012-10-02\",\n    \"l\": -0.1718101335,\n    \"u\": -0.0886271057\n  },\n  {\n    \"value\": -0.1098258972,\n    \"date\": \"2012-10-03\",\n    \"l\": -0.1881274065,\n    \"u\": -0.1072157972\n  },\n  {\n    \"value\": -0.0872970297,\n    \"date\": \"2012-10-04\",\n    \"l\": -0.1731903321,\n    \"u\": -0.064381434\n  },\n  {\n    \"value\": -0.0761992047,\n    \"date\": \"2012-10-05\",\n    \"l\": -0.1770373817,\n    \"u\": 0.100085727\n  },\n  {\n    \"value\": -0.0416654249,\n    \"date\": \"2012-10-06\",\n    \"l\": -0.1502479611,\n    \"u\": 0.0751148102\n  },\n  {\n    \"value\": -0.0410128962,\n    \"date\": \"2012-10-07\",\n    \"l\": -0.1618694445,\n    \"u\": 0.0881453482\n  },\n  {\n    \"value\": -0.0214289042,\n    \"date\": \"2012-10-08\",\n    \"l\": -0.1590852977,\n    \"u\": 0.0871880288\n  },\n  {\n    \"value\": 0.2430880604,\n    \"date\": \"2012-10-09\",\n    \"l\": 0.063624221,\n    \"u\": 0.2455101587\n  },\n  {\n    \"value\": 0.3472823479,\n    \"date\": \"2012-10-10\",\n    \"l\": 0.1553854927,\n    \"u\": 0.3583991097\n  },\n  {\n    \"value\": 0.3360734074,\n    \"date\": \"2012-10-11\",\n    \"l\": 0.2055952772,\n    \"u\": 0.3812162823\n  },\n  {\n    \"value\": -0.0463648355,\n    \"date\": \"2012-10-12\",\n    \"l\": -0.0626466998,\n    \"u\": 0.0037342957\n  },\n  {\n    \"value\": -0.0867009379,\n    \"date\": \"2012-10-13\",\n    \"l\": -0.0867594055,\n    \"u\": -0.0223791074\n  },\n  {\n    \"value\": -0.1288672826,\n    \"date\": \"2012-10-14\",\n    \"l\": -0.1161709129,\n    \"u\": -0.0534789124\n  },\n  {\n    \"value\": -0.1474426821,\n    \"date\": \"2012-10-15\",\n    \"l\": -0.1559759048,\n    \"u\": -0.0646995092\n  },\n  {\n    \"value\": -0.1502405066,\n    \"date\": \"2012-10-16\",\n    \"l\": -0.1604364638,\n    \"u\": -0.0602562376\n  },\n  {\n    \"value\": -0.1203765529,\n    \"date\": \"2012-10-17\",\n    \"l\": -0.1569023195,\n    \"u\": -0.0578129637\n  },\n  {\n    \"value\": -0.0649122919,\n    \"date\": \"2012-10-18\",\n    \"l\": -0.0782987564,\n    \"u\": -0.0501999174\n  },\n  {\n    \"value\": -0.015525562,\n    \"date\": \"2012-10-19\",\n    \"l\": -0.1103873808,\n    \"u\": -0.0132131311\n  },\n  {\n    \"value\": -0.006051357,\n    \"date\": \"2012-10-20\",\n    \"l\": -0.1089644497,\n    \"u\": 0.0230384197\n  },\n  {\n    \"value\": 0.0003154213,\n    \"date\": \"2012-10-21\",\n    \"l\": -0.1073849227,\n    \"u\": 0.0017290437\n  },\n  {\n    \"value\": -0.0063018298,\n    \"date\": \"2012-10-22\",\n    \"l\": -0.1120298155,\n    \"u\": 0.0173284555\n  },\n  {\n    \"value\": -0.004294834,\n    \"date\": \"2012-10-23\",\n    \"l\": -0.1076841119,\n    \"u\": 0.0547933965\n  },\n  {\n    \"value\": -0.0053400832,\n    \"date\": \"2012-10-24\",\n    \"l\": -0.1096991408,\n    \"u\": 0.0560555803\n  },\n  {\n    \"value\": 0.0070057212,\n    \"date\": \"2012-10-25\",\n    \"l\": -0.0940613813,\n    \"u\": 0.0425517607\n  },\n  {\n    \"value\": 0.0082121656,\n    \"date\": \"2012-10-26\",\n    \"l\": -0.0906810455,\n    \"u\": 0.0396884383\n  },\n  {\n    \"value\": 0.0141422884,\n    \"date\": \"2012-10-27\",\n    \"l\": -0.0841305678,\n    \"u\": 0.0340050012\n  },\n  {\n    \"value\": 0.0041613553,\n    \"date\": \"2012-10-28\",\n    \"l\": -0.0886723749,\n    \"u\": 0.039426727\n  },\n  {\n    \"value\": -0.0013614287,\n    \"date\": \"2012-10-29\",\n    \"l\": -0.0923481608,\n    \"u\": 0.0438725574\n  },\n  {\n    \"value\": -0.0052144933,\n    \"date\": \"2012-10-30\",\n    \"l\": -0.0937763043,\n    \"u\": 0.0459998555\n  },\n  {\n    \"value\": 0.0078904741,\n    \"date\": \"2012-10-31\",\n    \"l\": -0.0807028001,\n    \"u\": 0.0334824169\n  },\n  {\n    \"value\": 0.0099598702,\n    \"date\": \"2012-11-01\",\n    \"l\": -0.0740001323,\n    \"u\": 0.0280264274\n  },\n  {\n    \"value\": 0.0001146029,\n    \"date\": \"2012-11-02\",\n    \"l\": -0.0820430294,\n    \"u\": 0.0326771125\n  },\n  {\n    \"value\": 0.0047572651,\n    \"date\": \"2012-11-03\",\n    \"l\": -0.0754113825,\n    \"u\": 0.0294912577\n  },\n  {\n    \"value\": 0.006204557,\n    \"date\": \"2012-11-04\",\n    \"l\": -0.0750627059,\n    \"u\": 0.029693607\n  },\n  {\n    \"value\": 0.0115231406,\n    \"date\": \"2012-11-05\",\n    \"l\": -0.0663484142,\n    \"u\": 0.0214084056\n  },\n  {\n    \"value\": -0.0032634994,\n    \"date\": \"2012-11-06\",\n    \"l\": -0.0793170451,\n    \"u\": 0.0355159827\n  },\n  {\n    \"value\": -0.0108985452,\n    \"date\": \"2012-11-07\",\n    \"l\": -0.0846123893,\n    \"u\": 0.0409797057\n  },\n  {\n    \"value\": -0.0092766813,\n    \"date\": \"2012-11-08\",\n    \"l\": -0.0802668328,\n    \"u\": 0.0373886301\n  },\n  {\n    \"value\": 0.0095972086,\n    \"date\": \"2012-11-09\",\n    \"l\": -0.0623739694,\n    \"u\": 0.0194918693\n  },\n  {\n    \"value\": -0.0111809358,\n    \"date\": \"2012-11-10\",\n    \"l\": -0.0819555908,\n    \"u\": 0.038335749\n  },\n  {\n    \"value\": -0.0023572296,\n    \"date\": \"2012-11-11\",\n    \"l\": -0.0745443377,\n    \"u\": 0.0306093592\n  },\n  {\n    \"value\": 0.0084213775,\n    \"date\": \"2012-11-12\",\n    \"l\": -0.0657707155,\n    \"u\": 0.0227270619\n  },\n  {\n    \"value\": 0.0107446453,\n    \"date\": \"2012-11-13\",\n    \"l\": -0.0617995017,\n    \"u\": 0.0196547867\n  },\n  {\n    \"value\": 0.009457792,\n    \"date\": \"2012-11-14\",\n    \"l\": -0.0597697849,\n    \"u\": 0.0191832343\n  },\n  {\n    \"value\": 0.0031194779,\n    \"date\": \"2012-11-15\",\n    \"l\": -0.0589126783,\n    \"u\": 0.0186409442\n  },\n  {\n    \"value\": -0.0115128213,\n    \"date\": \"2012-11-16\",\n    \"l\": -0.0767105447,\n    \"u\": 0.0370292452\n  },\n  {\n    \"value\": 0.0058347339,\n    \"date\": \"2012-11-17\",\n    \"l\": -0.0592236472,\n    \"u\": 0.0198181452\n  },\n  {\n    \"value\": -0.0235630436,\n    \"date\": \"2012-11-18\",\n    \"l\": -0.083529944,\n    \"u\": 0.046280909\n  },\n  {\n    \"value\": -0.0479795964,\n    \"date\": \"2012-11-19\",\n    \"l\": -0.1086422529,\n    \"u\": 0.0113044645\n  },\n  {\n    \"value\": -0.0218184359,\n    \"date\": \"2012-11-21\",\n    \"l\": -0.0881634878,\n    \"u\": 0.0448568265\n  },\n  {\n    \"value\": -0.0071361172,\n    \"date\": \"2012-11-28\",\n    \"l\": -0.0807350229,\n    \"u\": 0.0453599734\n  },\n  {\n    \"value\": -0.0151966912,\n    \"date\": \"2012-12-05\",\n    \"l\": -0.089995793,\n    \"u\": 0.0558329569\n  },\n  {\n    \"value\": -0.0097784855,\n    \"date\": \"2012-12-12\",\n    \"l\": -0.089466481,\n    \"u\": 0.0550191387\n  },\n  {\n    \"value\": -0.0095681495,\n    \"date\": \"2012-12-19\",\n    \"l\": -0.090513354,\n    \"u\": 0.057073314\n  },\n  {\n    \"value\": -0.0034165915,\n    \"date\": \"2012-12-27\",\n    \"l\": -0.0907151292,\n    \"u\": 0.0561479112\n  },\n  {\n    \"value\": 0.3297981389,\n    \"date\": \"2012-12-31\",\n    \"l\": 0.1537781522,\n    \"u\": 0.3499473316\n  }\n]"
  },
  {
    "path": "app/data/fakeUsers1.json",
    "content": "[\n  {\n    \"date\": \"2014-01-01\",\n    \"value\": 190000000\n  },\n  {\n    \"date\": \"2014-01-02\",\n    \"value\": 190379978\n  },\n  {\n    \"date\": \"2014-01-03\",\n    \"value\": 90493749\n  },\n  {\n    \"date\": \"2014-01-04\",\n    \"value\": 190785250\n  },\n  {\n    \"date\": \"2014-01-05\",\n    \"value\": 197391904\n  },\n  {\n    \"date\": \"2014-01-06\",\n    \"value\": 191576838\n  },\n  {\n    \"date\": \"2014-01-07\",\n    \"value\": 191413854\n  },\n  {\n    \"date\": \"2014-01-08\",\n    \"value\": 142177211\n  },\n  {\n    \"date\": \"2014-01-09\",\n    \"value\": 103762210\n  },\n  {\n    \"date\": \"2014-01-10\",\n    \"value\": 144381072\n  },\n  {\n    \"date\": \"2014-01-11\",\n    \"value\": 154352310\n  },\n  {\n    \"date\": \"2014-01-12\",\n    \"value\": 165531790\n  },\n  {\n    \"date\": \"2014-01-13\",\n    \"value\": 175748881\n  },\n  {\n    \"date\": \"2014-01-14\",\n    \"value\": 187064037\n  },\n  {\n    \"date\": \"2014-01-15\",\n    \"value\": 197520685\n  },\n  {\n    \"date\": \"2014-01-16\",\n    \"value\": 210176418\n  },\n  {\n    \"date\": \"2014-01-17\",\n    \"value\": 196122924\n  },\n  {\n    \"date\": \"2014-01-18\",\n    \"value\": 157337480\n  },\n  {\n    \"date\": \"2014-01-19\",\n    \"value\": 200258882\n  },\n  {\n    \"date\": \"2014-01-20\",\n    \"value\": 186829538\n  },\n  {\n    \"date\": \"2014-01-21\",\n    \"value\": 112456897\n  },\n  {\n    \"date\": \"2014-01-22\",\n    \"value\": 114299711\n  },\n  {\n    \"date\": \"2014-01-23\",\n    \"value\": 122759017\n  },\n  {\n    \"date\": \"2014-01-24\",\n    \"value\": 203596183\n  },\n  {\n    \"date\": \"2014-01-25\",\n    \"value\": 208107346\n  },\n  {\n    \"date\": \"2014-01-26\",\n    \"value\": 196359852\n  },\n  {\n    \"date\": \"2014-01-27\",\n    \"value\": 192570783\n  },\n  {\n    \"date\": \"2014-01-28\",\n    \"value\": 177967768\n  },\n  {\n    \"date\": \"2014-01-29\",\n    \"value\": 190632803\n  },\n  {\n    \"date\": \"2014-01-30\",\n    \"value\": 203725316\n  },\n  {\n    \"date\": \"2014-01-31\",\n    \"value\": 118226177\n  },\n  {\n    \"date\": \"2014-02-01\",\n    \"value\": 210698669\n  },\n  {\n    \"date\": \"2014-02-02\",\n    \"value\": 217640656\n  },\n  {\n    \"date\": \"2014-02-03\",\n    \"value\": 216142362\n  },\n  {\n    \"date\": \"2014-02-04\",\n    \"value\": 201410971\n  },\n  {\n    \"date\": \"2014-02-05\",\n    \"value\": 196704289\n  },\n  {\n    \"date\": \"2014-02-06\",\n    \"value\": 190436945\n  },\n  {\n    \"date\": \"2014-02-07\",\n    \"value\": 178891686\n  },\n  {\n    \"date\": \"2014-02-08\",\n    \"value\": 171613962\n  },\n  {\n    \"date\": \"2014-02-09\",\n    \"value\": 107579773\n  },\n  {\n    \"date\": \"2014-02-10\",\n    \"value\": 158677098\n  },\n  {\n    \"date\": \"2014-02-11\",\n    \"value\": 147129977\n  },\n  {\n    \"date\": \"2014-02-12\",\n    \"value\": 151561876\n  },\n  {\n    \"date\": \"2014-02-13\",\n    \"value\": 151627421\n  },\n  {\n    \"date\": \"2014-02-14\",\n    \"value\": 143543872\n  },\n  {\n    \"date\": \"2014-02-15\",\n    \"value\": 136581057\n  },\n  {\n    \"date\": \"2014-02-16\",\n    \"value\": 135560715\n  },\n  {\n    \"date\": \"2014-02-17\",\n    \"value\": 122625263\n  },\n  {\n    \"date\": \"2014-02-18\",\n    \"value\": 112091484\n  },\n  {\n    \"date\": \"2014-02-19\",\n    \"value\": 98810329\n  },\n  {\n    \"date\": \"2014-02-20\",\n    \"value\": 99882912\n  },\n  {\n    \"date\": \"2014-02-21\",\n    \"value\": 94943095\n  },\n  {\n    \"date\": \"2014-02-22\",\n    \"value\": 104875743\n  },\n  {\n    \"date\": \"2014-02-23\",\n    \"value\": 116383678\n  },\n  {\n    \"date\": \"2014-02-24\",\n    \"value\": 105028841\n  },\n  {\n    \"date\": \"2014-02-25\",\n    \"value\": 123967310\n  },\n  {\n    \"date\": \"2014-02-26\",\n    \"value\": 133167029\n  },\n  {\n    \"date\": \"2014-02-27\",\n    \"value\": 128577263\n  },\n  {\n    \"date\": \"2014-02-28\",\n    \"value\": 115836969\n  },\n  {\n    \"date\": \"2014-03-01\",\n    \"value\": 119264529\n  },\n  {\n    \"date\": \"2014-03-02\",\n    \"value\": 109363374\n  },\n  {\n    \"date\": \"2014-03-03\",\n    \"value\": 113985628\n  },\n  {\n    \"date\": \"2014-03-04\",\n    \"value\": 114650999\n  },\n  {\n    \"date\": \"2014-03-05\",\n    \"value\": 110866108\n  },\n  {\n    \"date\": \"2014-03-06\",\n    \"value\": 96473454\n  },\n  {\n    \"date\": \"2014-03-07\",\n    \"value\": 84075886\n  },\n  {\n    \"date\": \"2014-03-08\",\n    \"value\": 103568384\n  },\n  {\n    \"date\": \"2014-03-09\",\n    \"value\": 101534883\n  },\n  {\n    \"date\": \"2014-03-10\",\n    \"value\": 115825447\n  },\n  {\n    \"date\": \"2014-03-11\",\n    \"value\": 126133916\n  },\n  {\n    \"date\": \"2014-03-12\",\n    \"value\": 116502109\n  },\n  {\n    \"date\": \"2014-03-13\",\n    \"value\": 80169411\n  },\n  {\n    \"date\": \"2014-03-14\",\n    \"value\": 84296886\n  },\n  {\n    \"date\": \"2014-03-15\",\n    \"value\": 86347399\n  },\n  {\n    \"date\": \"2014-03-16\",\n    \"value\": 31483669\n  },\n  {\n    \"date\": \"2014-03-17\",\n    \"value\": 142811333\n  },\n  {\n    \"date\": \"2014-03-18\",\n    \"value\": 89675396\n  },\n  {\n    \"date\": \"2014-03-19\",\n    \"value\": 115514483\n  },\n  {\n    \"date\": \"2014-03-20\",\n    \"value\": 117630630\n  },\n  {\n    \"date\": \"2014-03-21\",\n    \"value\": 122340239\n  },\n  {\n    \"date\": \"2014-03-22\",\n    \"value\": 132349091\n  },\n  {\n    \"date\": \"2014-03-23\",\n    \"value\": 125613305\n  },\n  {\n    \"date\": \"2014-03-24\",\n    \"value\": 135592466\n  },\n  {\n    \"date\": \"2014-03-25\",\n    \"value\": 123408762\n  },\n  {\n    \"date\": \"2014-03-26\",\n    \"value\": 111991454\n  },\n  {\n    \"date\": \"2014-03-27\",\n    \"value\": 116123955\n  },\n  {\n    \"date\": \"2014-03-28\",\n    \"value\": 112817214\n  },\n  {\n    \"date\": \"2014-03-29\",\n    \"value\": 113029590\n  },\n  {\n    \"date\": \"2014-03-30\",\n    \"value\": 108753398\n  },\n  {\n    \"date\": \"2014-03-31\",\n    \"value\": 99383763\n  },\n  {\n    \"date\": \"2014-04-01\",\n    \"value\": 100151737\n  },\n  {\n    \"date\": \"2014-04-02\",\n    \"value\": 94985209\n  },\n  {\n    \"date\": \"2014-04-03\",\n    \"value\": 82913669\n  },\n  {\n    \"date\": \"2014-04-04\",\n    \"value\": 78748268\n  },\n  {\n    \"date\": \"2014-04-05\",\n    \"value\": 63829135\n  },\n  {\n    \"date\": \"2014-04-06\",\n    \"value\": 78694727\n  },\n  {\n    \"date\": \"2014-04-07\",\n    \"value\": 80868994\n  },\n  {\n    \"date\": \"2014-04-08\",\n    \"value\": 93799013\n  },\n  {\n    \"date\": \"2014-04-09\",\n    \"value\": 9042416\n  },\n  {\n    \"date\": \"2014-04-10\",\n    \"value\": 97298692\n  },\n  {\n    \"date\": \"2014-04-11\",\n    \"value\": 53353499\n  },\n  {\n    \"date\": \"2014-04-12\",\n    \"value\": 71248129\n  },\n  {\n    \"date\": \"2014-04-13\",\n    \"value\": 75253744\n  },\n  {\n    \"date\": \"2014-04-14\",\n    \"value\": 68976648\n  },\n  {\n    \"date\": \"2014-04-15\",\n    \"value\": 71002284\n  },\n  {\n    \"date\": \"2014-04-16\",\n    \"value\": 75052401\n  },\n  {\n    \"date\": \"2014-04-17\",\n    \"value\": 83894030\n  },\n  {\n    \"date\": \"2014-04-18\",\n    \"value\": 50236528\n  },\n  {\n    \"date\": \"2014-04-19\",\n    \"value\": 59739114\n  },\n  {\n    \"date\": \"2014-04-20\",\n    \"value\": 56407136\n  },\n  {\n    \"date\": \"2014-04-21\",\n    \"value\": 108323177\n  },\n  {\n    \"date\": \"2014-04-22\",\n    \"value\": 101578914\n  },\n  {\n    \"date\": \"2014-04-23\",\n    \"value\": 115877608\n  },\n  {\n    \"date\": \"2014-04-24\",\n    \"value\": 132088857\n  },\n  {\n    \"date\": \"2014-04-25\",\n    \"value\": 112071353\n  },\n  {\n    \"date\": \"2014-04-26\",\n    \"value\": 81790062\n  },\n  {\n    \"date\": \"2014-04-27\",\n    \"value\": 105003761\n  },\n  {\n    \"date\": \"2014-04-28\",\n    \"value\": 100457727\n  },\n  {\n    \"date\": \"2014-04-29\",\n    \"value\": 118253926\n  },\n  {\n    \"date\": \"2014-04-30\",\n    \"value\": 67956992\n  }\n]"
  },
  {
    "path": "app/data/fakeUsers2.json",
    "content": "[\n  [\n    {\n      \"date\": \"2014-01-01\",\n      \"value\": 10000000\n    },\n    {\n      \"date\": \"2014-01-02\",\n      \"value\": 10379978\n    },\n    {\n      \"date\": \"2014-01-03\",\n      \"value\": 10493749\n    },\n    {\n      \"date\": \"2014-01-04\",\n      \"value\": 10785250\n    },\n    {\n      \"date\": \"2014-01-05\",\n      \"value\": 13901904\n    },\n    {\n      \"date\": \"2014-01-06\",\n      \"value\": 11576838\n    },\n    {\n      \"date\": \"2014-01-07\",\n      \"value\": 14413854\n    },\n    {\n      \"date\": \"2014-01-08\",\n      \"value\": 15177211\n    },\n    {\n      \"date\": \"2014-01-09\",\n      \"value\": 16622100\n    },\n    {\n      \"date\": \"2014-01-10\",\n      \"value\": 17381072\n    },\n    {\n      \"date\": \"2014-01-11\",\n      \"value\": 18802310\n    },\n    {\n      \"date\": \"2014-01-12\",\n      \"value\": 15531790\n    },\n    {\n      \"date\": \"2014-01-13\",\n      \"value\": 15748881\n    },\n    {\n      \"date\": \"2014-01-14\",\n      \"value\": 18706437\n    },\n    {\n      \"date\": \"2014-01-15\",\n      \"value\": 19752685\n    },\n    {\n      \"date\": \"2014-01-16\",\n      \"value\": 21016418\n    },\n    {\n      \"date\": \"2014-01-17\",\n      \"value\": 25622924\n    },\n    {\n      \"date\": \"2014-01-18\",\n      \"value\": 25337480\n    },\n    {\n      \"date\": \"2014-01-19\",\n      \"value\": 22258882\n    },\n    {\n      \"date\": \"2014-01-20\",\n      \"value\": 23829538\n    },\n    {\n      \"date\": \"2014-01-21\",\n      \"value\": 24245689\n    },\n    {\n      \"date\": \"2014-01-22\",\n      \"value\": 26429711\n    },\n    {\n      \"date\": \"2014-01-23\",\n      \"value\": 26259017\n    },\n    {\n      \"date\": \"2014-01-24\",\n      \"value\": 25396183\n    },\n    {\n      \"date\": \"2014-01-25\",\n      \"value\": 23107346\n    },\n    {\n      \"date\": \"2014-01-26\",\n      \"value\": 28659852\n    },\n    {\n      \"date\": \"2014-01-27\",\n      \"value\": 25270783\n    },\n    {\n      \"date\": \"2014-01-28\",\n      \"value\": 26270783\n    },\n    {\n      \"date\": \"2014-01-29\",\n      \"value\": 27270783\n    },\n    {\n      \"date\": \"2014-01-30\",\n      \"value\": 28270783\n    },\n    {\n      \"date\": \"2014-01-31\",\n      \"value\": 29270783\n    },\n    {\n      \"date\": \"2014-02-01\",\n      \"value\": 30270783\n    },\n    {\n      \"date\": \"2014-02-02\",\n      \"value\": 31270783\n    },\n    {\n      \"date\": \"2014-02-03\",\n      \"value\": 32270783\n    },\n    {\n      \"date\": \"2014-02-04\",\n      \"value\": 33270783\n    },\n    {\n      \"date\": \"2014-02-05\",\n      \"value\": 28270783\n    },\n    {\n      \"date\": \"2014-02-06\",\n      \"value\": 27270783\n    },\n    {\n      \"date\": \"2014-02-07\",\n      \"value\": 35270783\n    },\n    {\n      \"date\": \"2014-02-08\",\n      \"value\": 34270783\n    },\n    {\n      \"date\": \"2014-02-09\",\n      \"value\": 28270783\n    },\n    {\n      \"date\": \"2014-02-10\",\n      \"value\": 35270783\n    },\n    {\n      \"date\": \"2014-02-11\",\n      \"value\": 36270783\n    },\n    {\n      \"date\": \"2014-02-12\",\n      \"value\": 34127078\n    },\n    {\n      \"date\": \"2014-02-13\",\n      \"value\": 33124078\n    },\n    {\n      \"date\": \"2014-02-14\",\n      \"value\": 36227078\n    },\n    {\n      \"date\": \"2014-02-15\",\n      \"value\": 37827078\n    },\n    {\n      \"date\": \"2014-02-16\",\n      \"value\": 36427073\n    },\n    {\n      \"date\": \"2014-02-17\",\n      \"value\": 37570783\n    },\n    {\n      \"date\": \"2014-02-18\",\n      \"value\": 38627073\n    },\n    {\n      \"date\": \"2014-02-19\",\n      \"value\": 37727078\n    },\n    {\n      \"date\": \"2014-02-20\",\n      \"value\": 38827073\n    },\n    {\n      \"date\": \"2014-02-21\",\n      \"value\": 40927078\n    },\n    {\n      \"date\": \"2014-02-22\",\n      \"value\": 41027078\n    },\n    {\n      \"date\": \"2014-02-23\",\n      \"value\": 42127073\n    },\n    {\n      \"date\": \"2014-02-24\",\n      \"value\": 43220783\n    },\n    {\n      \"date\": \"2014-02-25\",\n      \"value\": 44327078\n    },\n    {\n      \"date\": \"2014-02-26\",\n      \"value\": 40427078\n    },\n    {\n      \"date\": \"2014-02-27\",\n      \"value\": 41027078\n    },\n    {\n      \"date\": \"2014-02-28\",\n      \"value\": 45627078\n    },\n    {\n      \"date\": \"2014-03-01\",\n      \"value\": 44727078\n    },\n    {\n      \"date\": \"2014-03-02\",\n      \"value\": 44227078\n    },\n    {\n      \"date\": \"2014-03-03\",\n      \"value\": 45227078\n    },\n    {\n      \"date\": \"2014-03-04\",\n      \"value\": 46027078\n    },\n    {\n      \"date\": \"2014-03-05\",\n      \"value\": 46927078\n    },\n    {\n      \"date\": \"2014-03-06\",\n      \"value\": 47027078\n    },\n    {\n      \"date\": \"2014-03-07\",\n      \"value\": 46227078\n    },\n    {\n      \"date\": \"2014-03-08\",\n      \"value\": 47027078\n    },\n    {\n      \"date\": \"2014-03-09\",\n      \"value\": 48027078\n    },\n    {\n      \"date\": \"2014-03-10\",\n      \"value\": 47027078\n    },\n    {\n      \"date\": \"2014-03-11\",\n      \"value\": 47027078\n    },\n    {\n      \"date\": \"2014-03-12\",\n      \"value\": 48017078\n    },\n    {\n      \"date\": \"2014-03-13\",\n      \"value\": 48077078\n    },\n    {\n      \"date\": \"2014-03-14\",\n      \"value\": 48087078\n    },\n    {\n      \"date\": \"2014-03-15\",\n      \"value\": 48017078\n    },\n    {\n      \"date\": \"2014-03-16\",\n      \"value\": 48047078\n    },\n    {\n      \"date\": \"2014-03-17\",\n      \"value\": 48067078\n    },\n    {\n      \"date\": \"2014-03-18\",\n      \"value\": 48077078\n    },\n    {\n      \"date\": \"2014-03-19\",\n      \"value\": 48027074\n    },\n    {\n      \"date\": \"2014-03-20\",\n      \"value\": 48927079\n    },\n    {\n      \"date\": \"2014-03-21\",\n      \"value\": 48727071\n    },\n    {\n      \"date\": \"2014-03-22\",\n      \"value\": 48127072\n    },\n    {\n      \"date\": \"2014-03-23\",\n      \"value\": 48527072\n    },\n    {\n      \"date\": \"2014-03-24\",\n      \"value\": 48627027\n    },\n    {\n      \"date\": \"2014-03-25\",\n      \"value\": 48027040\n    },\n    {\n      \"date\": \"2014-03-26\",\n      \"value\": 48027043\n    },\n    {\n      \"date\": \"2014-03-27\",\n      \"value\": 48057022\n    },\n    {\n      \"date\": \"2014-03-28\",\n      \"value\": 49057022\n    },\n    {\n      \"date\": \"2014-03-29\",\n      \"value\": 50057022\n    },\n    {\n      \"date\": \"2014-03-30\",\n      \"value\": 51057022\n    },\n    {\n      \"date\": \"2014-03-31\",\n      \"value\": 52057022\n    },\n    {\n      \"date\": \"2014-04-01\",\n      \"value\": 53057022\n    },\n    {\n      \"date\": \"2014-04-02\",\n      \"value\": 54057022\n    },\n    {\n      \"date\": \"2014-04-03\",\n      \"value\": 52057022\n    },\n    {\n      \"date\": \"2014-04-04\",\n      \"value\": 55057022\n    },\n    {\n      \"date\": \"2014-04-05\",\n      \"value\": 58270783\n    },\n    {\n      \"date\": \"2014-04-06\",\n      \"value\": 56270783\n    },\n    {\n      \"date\": \"2014-04-07\",\n      \"value\": 55270783\n    },\n    {\n      \"date\": \"2014-04-08\",\n      \"value\": 58270783\n    },\n    {\n      \"date\": \"2014-04-09\",\n      \"value\": 59270783\n    },\n    {\n      \"date\": \"2014-04-10\",\n      \"value\": 60270783\n    },\n    {\n      \"date\": \"2014-04-11\",\n      \"value\": 61270783\n    },\n    {\n      \"date\": \"2014-04-12\",\n      \"value\": 62270783\n    },\n    {\n      \"date\": \"2014-04-13\",\n      \"value\": 63270783\n    },\n    {\n      \"date\": \"2014-04-14\",\n      \"value\": 64270783\n    },\n    {\n      \"date\": \"2014-04-15\",\n      \"value\": 65270783\n    },\n    {\n      \"date\": \"2014-04-16\",\n      \"value\": 66270783\n    },\n    {\n      \"date\": \"2014-04-17\",\n      \"value\": 67270783\n    },\n    {\n      \"date\": \"2014-04-18\",\n      \"value\": 68270783\n    },\n    {\n      \"date\": \"2014-04-19\",\n      \"value\": 69270783\n    },\n    {\n      \"date\": \"2014-04-20\",\n      \"value\": 70270783\n    },\n    {\n      \"date\": \"2014-04-21\",\n      \"value\": 71270783\n    },\n    {\n      \"date\": \"2014-04-22\",\n      \"value\": 72270783\n    },\n    {\n      \"date\": \"2014-04-23\",\n      \"value\": 73270783\n    },\n    {\n      \"date\": \"2014-04-24\",\n      \"value\": 74270783\n    },\n    {\n      \"date\": \"2014-04-25\",\n      \"value\": 75270783\n    },\n    {\n      \"date\": \"2014-04-26\",\n      \"value\": 76660783\n    },\n    {\n      \"date\": \"2014-04-27\",\n      \"value\": 77270783\n    },\n    {\n      \"date\": \"2014-04-28\",\n      \"value\": 78370783\n    },\n    {\n      \"date\": \"2014-04-29\",\n      \"value\": 79470783\n    },\n    {\n      \"date\": \"2014-04-30\",\n      \"value\": 80170783\n    }\n  ],\n  [\n    {\n      \"date\": \"2014-01-01\",\n      \"value\": 150000000\n    },\n    {\n      \"date\": \"2014-01-02\",\n      \"value\": 160379978\n    },\n    {\n      \"date\": \"2014-01-03\",\n      \"value\": 170493749\n    },\n    {\n      \"date\": \"2014-01-04\",\n      \"value\": 160785250\n    },\n    {\n      \"date\": \"2014-01-05\",\n      \"value\": 167391904\n    },\n    {\n      \"date\": \"2014-01-06\",\n      \"value\": 161576838\n    },\n    {\n      \"date\": \"2014-01-07\",\n      \"value\": 161413854\n    },\n    {\n      \"date\": \"2014-01-08\",\n      \"value\": 152177211\n    },\n    {\n      \"date\": \"2014-01-09\",\n      \"value\": 143762210\n    },\n    {\n      \"date\": \"2014-01-10\",\n      \"value\": 144381072\n    },\n    {\n      \"date\": \"2014-01-11\",\n      \"value\": 154352310\n    },\n    {\n      \"date\": \"2014-01-12\",\n      \"value\": 165531790\n    },\n    {\n      \"date\": \"2014-01-13\",\n      \"value\": 175748881\n    },\n    {\n      \"date\": \"2014-01-14\",\n      \"value\": 187064037\n    },\n    {\n      \"date\": \"2014-01-15\",\n      \"value\": 197520685\n    },\n    {\n      \"date\": \"2014-01-16\",\n      \"value\": 210176418\n    },\n    {\n      \"date\": \"2014-01-17\",\n      \"value\": 196122924\n    },\n    {\n      \"date\": \"2014-01-18\",\n      \"value\": 207337480\n    },\n    {\n      \"date\": \"2014-01-19\",\n      \"value\": 200258882\n    },\n    {\n      \"date\": \"2014-01-20\",\n      \"value\": 186829538\n    },\n    {\n      \"date\": \"2014-01-21\",\n      \"value\": 192456897\n    },\n    {\n      \"date\": \"2014-01-22\",\n      \"value\": 204299711\n    },\n    {\n      \"date\": \"2014-01-23\",\n      \"value\": 192759017\n    },\n    {\n      \"date\": \"2014-01-24\",\n      \"value\": 203596183\n    },\n    {\n      \"date\": \"2014-01-25\",\n      \"value\": 208107346\n    },\n    {\n      \"date\": \"2014-01-26\",\n      \"value\": 196359852\n    },\n    {\n      \"date\": \"2014-01-27\",\n      \"value\": 192570783\n    },\n    {\n      \"date\": \"2014-01-28\",\n      \"value\": 177967768\n    },\n    {\n      \"date\": \"2014-01-29\",\n      \"value\": 190632803\n    },\n    {\n      \"date\": \"2014-01-30\",\n      \"value\": 203725316\n    },\n    {\n      \"date\": \"2014-01-31\",\n      \"value\": 218226177\n    },\n    {\n      \"date\": \"2014-02-01\",\n      \"value\": 210698669\n    },\n    {\n      \"date\": \"2014-02-02\",\n      \"value\": 217640656\n    },\n    {\n      \"date\": \"2014-02-03\",\n      \"value\": 216142362\n    },\n    {\n      \"date\": \"2014-02-04\",\n      \"value\": 201410971\n    },\n    {\n      \"date\": \"2014-02-05\",\n      \"value\": 196704289\n    },\n    {\n      \"date\": \"2014-02-06\",\n      \"value\": 190436945\n    },\n    {\n      \"date\": \"2014-02-07\",\n      \"value\": 178891686\n    },\n    {\n      \"date\": \"2014-02-08\",\n      \"value\": 171613962\n    },\n    {\n      \"date\": \"2014-02-09\",\n      \"value\": 157579773\n    },\n    {\n      \"date\": \"2014-02-10\",\n      \"value\": 158677098\n    },\n    {\n      \"date\": \"2014-02-11\",\n      \"value\": 147129977\n    },\n    {\n      \"date\": \"2014-02-12\",\n      \"value\": 151561876\n    },\n    {\n      \"date\": \"2014-02-13\",\n      \"value\": 151627421\n    },\n    {\n      \"date\": \"2014-02-14\",\n      \"value\": 143543872\n    },\n    {\n      \"date\": \"2014-02-15\",\n      \"value\": 136581057\n    },\n    {\n      \"date\": \"2014-02-16\",\n      \"value\": 135560715\n    },\n    {\n      \"date\": \"2014-02-17\",\n      \"value\": 122625263\n    },\n    {\n      \"date\": \"2014-02-18\",\n      \"value\": 112091484\n    },\n    {\n      \"date\": \"2014-02-19\",\n      \"value\": 98810329\n    },\n    {\n      \"date\": \"2014-02-20\",\n      \"value\": 99882912\n    },\n    {\n      \"date\": \"2014-02-21\",\n      \"value\": 94943095\n    },\n    {\n      \"date\": \"2014-02-22\",\n      \"value\": 104875743\n    },\n    {\n      \"date\": \"2014-02-23\",\n      \"value\": 116383678\n    },\n    {\n      \"date\": \"2014-02-24\",\n      \"value\": 125028841\n    },\n    {\n      \"date\": \"2014-02-25\",\n      \"value\": 123967310\n    },\n    {\n      \"date\": \"2014-02-26\",\n      \"value\": 133167029\n    },\n    {\n      \"date\": \"2014-02-27\",\n      \"value\": 128577263\n    },\n    {\n      \"date\": \"2014-02-28\",\n      \"value\": 115836969\n    },\n    {\n      \"date\": \"2014-03-01\",\n      \"value\": 119264529\n    },\n    {\n      \"date\": \"2014-03-02\",\n      \"value\": 109363374\n    },\n    {\n      \"date\": \"2014-03-03\",\n      \"value\": 113985628\n    },\n    {\n      \"date\": \"2014-03-04\",\n      \"value\": 114650999\n    },\n    {\n      \"date\": \"2014-03-05\",\n      \"value\": 110866108\n    },\n    {\n      \"date\": \"2014-03-06\",\n      \"value\": 96473454\n    },\n    {\n      \"date\": \"2014-03-07\",\n      \"value\": 104075886\n    },\n    {\n      \"date\": \"2014-03-08\",\n      \"value\": 103568384\n    },\n    {\n      \"date\": \"2014-03-09\",\n      \"value\": 101534883\n    },\n    {\n      \"date\": \"2014-03-10\",\n      \"value\": 115825447\n    },\n    {\n      \"date\": \"2014-03-11\",\n      \"value\": 126133916\n    },\n    {\n      \"date\": \"2014-03-12\",\n      \"value\": 116502109\n    },\n    {\n      \"date\": \"2014-03-13\",\n      \"value\": 130169411\n    },\n    {\n      \"date\": \"2014-03-14\",\n      \"value\": 124296886\n    },\n    {\n      \"date\": \"2014-03-15\",\n      \"value\": 126347399\n    },\n    {\n      \"date\": \"2014-03-16\",\n      \"value\": 131483669\n    },\n    {\n      \"date\": \"2014-03-17\",\n      \"value\": 142811333\n    },\n    {\n      \"date\": \"2014-03-18\",\n      \"value\": 129675396\n    },\n    {\n      \"date\": \"2014-03-19\",\n      \"value\": 115514483\n    },\n    {\n      \"date\": \"2014-03-20\",\n      \"value\": 117630630\n    },\n    {\n      \"date\": \"2014-03-21\",\n      \"value\": 122340239\n    },\n    {\n      \"date\": \"2014-03-22\",\n      \"value\": 132349091\n    },\n    {\n      \"date\": \"2014-03-23\",\n      \"value\": 125613305\n    },\n    {\n      \"date\": \"2014-03-24\",\n      \"value\": 135592466\n    },\n    {\n      \"date\": \"2014-03-25\",\n      \"value\": 123408762\n    },\n    {\n      \"date\": \"2014-03-26\",\n      \"value\": 111991454\n    },\n    {\n      \"date\": \"2014-03-27\",\n      \"value\": 116123955\n    },\n    {\n      \"date\": \"2014-03-28\",\n      \"value\": 112817214\n    },\n    {\n      \"date\": \"2014-03-29\",\n      \"value\": 113029590\n    },\n    {\n      \"date\": \"2014-03-30\",\n      \"value\": 108753398\n    },\n    {\n      \"date\": \"2014-03-31\",\n      \"value\": 99383763\n    },\n    {\n      \"date\": \"2014-04-01\",\n      \"value\": 100151737\n    },\n    {\n      \"date\": \"2014-04-02\",\n      \"value\": 94985209\n    },\n    {\n      \"date\": \"2014-04-03\",\n      \"value\": 82913669\n    },\n    {\n      \"date\": \"2014-04-04\",\n      \"value\": 78748268\n    },\n    {\n      \"date\": \"2014-04-05\",\n      \"value\": 63829135\n    },\n    {\n      \"date\": \"2014-04-06\",\n      \"value\": 78694727\n    },\n    {\n      \"date\": \"2014-04-07\",\n      \"value\": 80868994\n    },\n    {\n      \"date\": \"2014-04-08\",\n      \"value\": 93799013\n    },\n    {\n      \"date\": \"2014-04-09\",\n      \"value\": 99042416\n    },\n    {\n      \"date\": \"2014-04-10\",\n      \"value\": 97298692\n    },\n    {\n      \"date\": \"2014-04-11\",\n      \"value\": 83353499\n    },\n    {\n      \"date\": \"2014-04-12\",\n      \"value\": 71248129\n    },\n    {\n      \"date\": \"2014-04-13\",\n      \"value\": 75253744\n    },\n    {\n      \"date\": \"2014-04-14\",\n      \"value\": 68976648\n    },\n    {\n      \"date\": \"2014-04-15\",\n      \"value\": 71002284\n    },\n    {\n      \"date\": \"2014-04-16\",\n      \"value\": 75052401\n    },\n    {\n      \"date\": \"2014-04-17\",\n      \"value\": 83894030\n    },\n    {\n      \"date\": \"2014-04-18\",\n      \"value\": 90236528\n    },\n    {\n      \"date\": \"2014-04-19\",\n      \"value\": 99739114\n    },\n    {\n      \"date\": \"2014-04-20\",\n      \"value\": 96407136\n    },\n    {\n      \"date\": \"2014-04-21\",\n      \"value\": 108323177\n    },\n    {\n      \"date\": \"2014-04-22\",\n      \"value\": 101578914\n    },\n    {\n      \"date\": \"2014-04-23\",\n      \"value\": 115877608\n    },\n    {\n      \"date\": \"2014-04-24\",\n      \"value\": 112088857\n    },\n    {\n      \"date\": \"2014-04-25\",\n      \"value\": 112071353\n    },\n    {\n      \"date\": \"2014-04-26\",\n      \"value\": 101790062\n    },\n    {\n      \"date\": \"2014-04-27\",\n      \"value\": 115003761\n    },\n    {\n      \"date\": \"2014-04-28\",\n      \"value\": 120457727\n    },\n    {\n      \"date\": \"2014-04-29\",\n      \"value\": 118253926\n    },\n    {\n      \"date\": \"2014-04-30\",\n      \"value\": 117956992\n    }\n  ],\n  [\n    {\n      \"date\": \"2014-01-01\",\n      \"value\": 60000000\n    },\n    {\n      \"date\": \"2014-01-02\",\n      \"value\": 60379978\n    },\n    {\n      \"date\": \"2014-01-03\",\n      \"value\": 40493749\n    },\n    {\n      \"date\": \"2014-01-04\",\n      \"value\": 60785250\n    },\n    {\n      \"date\": \"2014-01-05\",\n      \"value\": 67391904\n    },\n    {\n      \"date\": \"2014-01-06\",\n      \"value\": 61576838\n    },\n    {\n      \"date\": \"2014-01-07\",\n      \"value\": 61413854\n    },\n    {\n      \"date\": \"2014-01-08\",\n      \"value\": 82177211\n    },\n    {\n      \"date\": \"2014-01-09\",\n      \"value\": 103762210\n    },\n    {\n      \"date\": \"2014-01-10\",\n      \"value\": 84381072\n    },\n    {\n      \"date\": \"2014-01-11\",\n      \"value\": 54352310\n    },\n    {\n      \"date\": \"2014-01-12\",\n      \"value\": 65531790\n    },\n    {\n      \"date\": \"2014-01-13\",\n      \"value\": 75748881\n    },\n    {\n      \"date\": \"2014-01-14\",\n      \"value\": 47064037\n    },\n    {\n      \"date\": \"2014-01-15\",\n      \"value\": 67520685\n    },\n    {\n      \"date\": \"2014-01-16\",\n      \"value\": 60176418\n    },\n    {\n      \"date\": \"2014-01-17\",\n      \"value\": 66122924\n    },\n    {\n      \"date\": \"2014-01-18\",\n      \"value\": 57337480\n    },\n    {\n      \"date\": \"2014-01-19\",\n      \"value\": 100258882\n    },\n    {\n      \"date\": \"2014-01-20\",\n      \"value\": 46829538\n    },\n    {\n      \"date\": \"2014-01-21\",\n      \"value\": 92456897\n    },\n    {\n      \"date\": \"2014-01-22\",\n      \"value\": 94299711\n    },\n    {\n      \"date\": \"2014-01-23\",\n      \"value\": 62759017\n    },\n    {\n      \"date\": \"2014-01-24\",\n      \"value\": 103596183\n    },\n    {\n      \"date\": \"2014-01-25\",\n      \"value\": 108107346\n    },\n    {\n      \"date\": \"2014-01-26\",\n      \"value\": 66359852\n    },\n    {\n      \"date\": \"2014-01-27\",\n      \"value\": 62570783\n    },\n    {\n      \"date\": \"2014-01-28\",\n      \"value\": 77967768\n    },\n    {\n      \"date\": \"2014-01-29\",\n      \"value\": 60632803\n    },\n    {\n      \"date\": \"2014-01-30\",\n      \"value\": 103725316\n    },\n    {\n      \"date\": \"2014-01-31\",\n      \"value\": 98226177\n    },\n    {\n      \"date\": \"2014-02-01\",\n      \"value\": 60698669\n    },\n    {\n      \"date\": \"2014-02-02\",\n      \"value\": 67640656\n    },\n    {\n      \"date\": \"2014-02-03\",\n      \"value\": 66142362\n    },\n    {\n      \"date\": \"2014-02-04\",\n      \"value\": 101410971\n    },\n    {\n      \"date\": \"2014-02-05\",\n      \"value\": 66704289\n    },\n    {\n      \"date\": \"2014-02-06\",\n      \"value\": 60436945\n    },\n    {\n      \"date\": \"2014-02-07\",\n      \"value\": 78891686\n    },\n    {\n      \"date\": \"2014-02-08\",\n      \"value\": 71613962\n    },\n    {\n      \"date\": \"2014-02-09\",\n      \"value\": 107579773\n    },\n    {\n      \"date\": \"2014-02-10\",\n      \"value\": 58677098\n    },\n    {\n      \"date\": \"2014-02-11\",\n      \"value\": 87129977\n    },\n    {\n      \"date\": \"2014-02-12\",\n      \"value\": 51561876\n    },\n    {\n      \"date\": \"2014-02-13\",\n      \"value\": 51627421\n    },\n    {\n      \"date\": \"2014-02-14\",\n      \"value\": 83543872\n    },\n    {\n      \"date\": \"2014-02-15\",\n      \"value\": 66581057\n    },\n    {\n      \"date\": \"2014-02-16\",\n      \"value\": 65560715\n    },\n    {\n      \"date\": \"2014-02-17\",\n      \"value\": 62625263\n    },\n    {\n      \"date\": \"2014-02-18\",\n      \"value\": 92091484\n    },\n    {\n      \"date\": \"2014-02-19\",\n      \"value\": 48810329\n    },\n    {\n      \"date\": \"2014-02-20\",\n      \"value\": 49882912\n    },\n    {\n      \"date\": \"2014-02-21\",\n      \"value\": 44943095\n    },\n    {\n      \"date\": \"2014-02-22\",\n      \"value\": 104875743\n    },\n    {\n      \"date\": \"2014-02-23\",\n      \"value\": 96383678\n    },\n    {\n      \"date\": \"2014-02-24\",\n      \"value\": 105028841\n    },\n    {\n      \"date\": \"2014-02-25\",\n      \"value\": 63967310\n    },\n    {\n      \"date\": \"2014-02-26\",\n      \"value\": 63167029\n    },\n    {\n      \"date\": \"2014-02-27\",\n      \"value\": 68577263\n    },\n    {\n      \"date\": \"2014-02-28\",\n      \"value\": 95836969\n    },\n    {\n      \"date\": \"2014-03-01\",\n      \"value\": 99264529\n    },\n    {\n      \"date\": \"2014-03-02\",\n      \"value\": 109363374\n    },\n    {\n      \"date\": \"2014-03-03\",\n      \"value\": 93985628\n    },\n    {\n      \"date\": \"2014-03-04\",\n      \"value\": 94650999\n    },\n    {\n      \"date\": \"2014-03-05\",\n      \"value\": 90866108\n    },\n    {\n      \"date\": \"2014-03-06\",\n      \"value\": 46473454\n    },\n    {\n      \"date\": \"2014-03-07\",\n      \"value\": 84075886\n    },\n    {\n      \"date\": \"2014-03-08\",\n      \"value\": 103568384\n    },\n    {\n      \"date\": \"2014-03-09\",\n      \"value\": 101534883\n    },\n    {\n      \"date\": \"2014-03-10\",\n      \"value\": 95825447\n    },\n    {\n      \"date\": \"2014-03-11\",\n      \"value\": 66133916\n    },\n    {\n      \"date\": \"2014-03-12\",\n      \"value\": 96502109\n    },\n    {\n      \"date\": \"2014-03-13\",\n      \"value\": 80169411\n    },\n    {\n      \"date\": \"2014-03-14\",\n      \"value\": 84296886\n    },\n    {\n      \"date\": \"2014-03-15\",\n      \"value\": 86347399\n    },\n    {\n      \"date\": \"2014-03-16\",\n      \"value\": 31483669\n    },\n    {\n      \"date\": \"2014-03-17\",\n      \"value\": 82811333\n    },\n    {\n      \"date\": \"2014-03-18\",\n      \"value\": 89675396\n    },\n    {\n      \"date\": \"2014-03-19\",\n      \"value\": 95514483\n    },\n    {\n      \"date\": \"2014-03-20\",\n      \"value\": 97630630\n    },\n    {\n      \"date\": \"2014-03-21\",\n      \"value\": 62340239\n    },\n    {\n      \"date\": \"2014-03-22\",\n      \"value\": 62349091\n    },\n    {\n      \"date\": \"2014-03-23\",\n      \"value\": 65613305\n    },\n    {\n      \"date\": \"2014-03-24\",\n      \"value\": 65592466\n    },\n    {\n      \"date\": \"2014-03-25\",\n      \"value\": 63408762\n    },\n    {\n      \"date\": \"2014-03-26\",\n      \"value\": 91991454\n    },\n    {\n      \"date\": \"2014-03-27\",\n      \"value\": 96123955\n    },\n    {\n      \"date\": \"2014-03-28\",\n      \"value\": 92817214\n    },\n    {\n      \"date\": \"2014-03-29\",\n      \"value\": 93029590\n    },\n    {\n      \"date\": \"2014-03-30\",\n      \"value\": 108753398\n    },\n    {\n      \"date\": \"2014-03-31\",\n      \"value\": 49383763\n    },\n    {\n      \"date\": \"2014-04-01\",\n      \"value\": 100151737\n    },\n    {\n      \"date\": \"2014-04-02\",\n      \"value\": 44985209\n    },\n    {\n      \"date\": \"2014-04-03\",\n      \"value\": 52913669\n    },\n    {\n      \"date\": \"2014-04-04\",\n      \"value\": 48748268\n    },\n    {\n      \"date\": \"2014-04-05\",\n      \"value\": 23829135\n    },\n    {\n      \"date\": \"2014-04-06\",\n      \"value\": 58694727\n    },\n    {\n      \"date\": \"2014-04-07\",\n      \"value\": 50868994\n    },\n    {\n      \"date\": \"2014-04-08\",\n      \"value\": 43799013\n    },\n    {\n      \"date\": \"2014-04-09\",\n      \"value\": 4042416\n    },\n    {\n      \"date\": \"2014-04-10\",\n      \"value\": 47298692\n    },\n    {\n      \"date\": \"2014-04-11\",\n      \"value\": 53353499\n    },\n    {\n      \"date\": \"2014-04-12\",\n      \"value\": 71248129\n    },\n    {\n      \"date\": \"2014-04-13\",\n      \"value\": 75253744\n    },\n    {\n      \"date\": \"2014-04-14\",\n      \"value\": 68976648\n    },\n    {\n      \"date\": \"2014-04-15\",\n      \"value\": 71002284\n    },\n    {\n      \"date\": \"2014-04-16\",\n      \"value\": 75052401\n    },\n    {\n      \"date\": \"2014-04-17\",\n      \"value\": 83894030\n    },\n    {\n      \"date\": \"2014-04-18\",\n      \"value\": 50236528\n    },\n    {\n      \"date\": \"2014-04-19\",\n      \"value\": 59739114\n    },\n    {\n      \"date\": \"2014-04-20\",\n      \"value\": 56407136\n    },\n    {\n      \"date\": \"2014-04-21\",\n      \"value\": 108323177\n    },\n    {\n      \"date\": \"2014-04-22\",\n      \"value\": 101578914\n    },\n    {\n      \"date\": \"2014-04-23\",\n      \"value\": 95877608\n    },\n    {\n      \"date\": \"2014-04-24\",\n      \"value\": 62088857\n    },\n    {\n      \"date\": \"2014-04-25\",\n      \"value\": 92071353\n    },\n    {\n      \"date\": \"2014-04-26\",\n      \"value\": 81790062\n    },\n    {\n      \"date\": \"2014-04-27\",\n      \"value\": 105003761\n    },\n    {\n      \"date\": \"2014-04-28\",\n      \"value\": 100457727\n    },\n    {\n      \"date\": \"2014-04-29\",\n      \"value\": 98253926\n    },\n    {\n      \"date\": \"2014-04-30\",\n      \"value\": 67956992\n    }\n  ]\n]"
  },
  {
    "path": "app/data/missing.json",
    "content": "[\n  {\n    \"date\": \"2014-01-08\",\n    \"value\": 500\n  },\n  {\n    \"date\": \"2014-01-09\",\n    \"value\": 500\n  },\n  {\n    \"date\": \"2014-01-10\",\n    \"value\": 400\n  },\n  {\n    \"date\": \"2014-01-11\",\n    \"value\": 500,\n    \"dead\": true\n  },\n  {\n    \"date\": \"2014-01-12\",\n    \"value\": 400\n  },\n  {\n    \"date\": \"2014-01-13\",\n    \"value\": 430\n  },\n  {\n    \"date\": \"2014-01-14\",\n    \"value\": 410\n  },\n  {\n    \"date\": \"2014-01-15\",\n    \"value\": 200,\n    \"dead\": true\n  },\n  {\n    \"date\": \"2014-01-16\",\n    \"value\": 500\n  },\n  {\n    \"date\": \"2014-01-17\",\n    \"value\": 100\n  },\n  {\n    \"date\": \"2014-01-18\",\n    \"value\": 30\n  },\n  {\n    \"date\": \"2014-01-19\",\n    \"value\": 300\n  },\n  {\n    \"date\": \"2014-01-20\",\n    \"value\": 200\n  }\n]"
  },
  {
    "path": "app/data/points1.json",
    "content": "[\n  {\n    \"u\": \"cat_10\",\n    \"w\": 1.243871075541485,\n    \"v\": \"other\",\n    \"y\": 211.80029085913867,\n    \"x\": 156.56698521169255,\n    \"z\": 1.2592730408041488\n  },\n  {\n    \"u\": \"cat_9\",\n    \"w\": 0.18317089873596637,\n    \"v\": \"other\",\n    \"y\": 196.93116746887526,\n    \"x\": 182.9226627644747,\n    \"z\": 1.5420852412869692\n  },\n  {\n    \"u\": \"cat_11\",\n    \"w\": 1.6440310398846552,\n    \"v\": \"other\",\n    \"y\": 198.15275935129918,\n    \"x\": 180.46587284398524,\n    \"z\": 1.0607952297441374\n  },\n  {\n    \"u\": \"cat_7\",\n    \"w\": -0.7500939816017782,\n    \"v\": \"other\",\n    \"y\": 146.31202991730444,\n    \"x\": 102.35636312891461,\n    \"z\": 0.30940991631448456\n  },\n  {\n    \"u\": \"cat_10\",\n    \"w\": 0.46988959503208527,\n    \"v\": \"other\",\n    \"y\": 118.66304545624911,\n    \"x\": 175.8035980586206,\n    \"z\": 1.589820005614669\n  },\n  {\n    \"u\": \"cat_3\",\n    \"w\": 2.4359184943127667,\n    \"v\": \"other\",\n    \"y\": 214.0123663650676,\n    \"x\": 146.24883586964125,\n    \"z\": -0.8716888194991463\n  },\n  {\n    \"u\": \"cat_8\",\n    \"w\": -1.2794477449179462,\n    \"v\": \"other\",\n    \"y\": 165.45000531931404,\n    \"x\": 138.83167553877533,\n    \"z\": 0.365531221729956\n  },\n  {\n    \"u\": \"other\",\n    \"w\": 0.6533051004485967,\n    \"v\": \"cat_0\",\n    \"y\": 133.99465910929834,\n    \"x\": 119.39730303633817,\n    \"z\": 1.270978774871001\n  },\n  {\n    \"u\": \"cat_13\",\n    \"w\": -0.4527608603464446,\n    \"v\": \"other\",\n    \"y\": 262.89541671133776,\n    \"x\": 209.42459012646566,\n    \"z\": 0.15317285949553272\n  },\n  {\n    \"u\": \"cat_12\",\n    \"w\": 0.06915365942882012,\n    \"v\": \"cat_0\",\n    \"y\": 139.0123425273913,\n    \"x\": 140.27809963809628,\n    \"z\": 1.0850789531923752\n  },\n  {\n    \"u\": \"cat_5\",\n    \"w\": 0.18422289588498686,\n    \"v\": \"other\",\n    \"y\": 123.5696526089444,\n    \"x\": 178.47540577185424,\n    \"z\": 0.40291991519951875\n  },\n  {\n    \"u\": \"cat_4\",\n    \"w\": -0.4338210953783319,\n    \"v\": \"cat_1\",\n    \"y\": 161.93728020049016,\n    \"x\": 166.16502625602917,\n    \"z\": 0.5093424182003234\n  },\n  {\n    \"u\": \"cat_7\",\n    \"w\": 1.40583885575462,\n    \"v\": \"other\",\n    \"y\": 155.63962440916566,\n    \"x\": 99.85204107456539,\n    \"z\": 1.2530442449107233\n  },\n  {\n    \"u\": \"cat_10\",\n    \"w\": -0.4275099099676807,\n    \"v\": \"other\",\n    \"y\": 176.85285727542032,\n    \"x\": 161.42701652535786,\n    \"z\": 0.8230669881454445\n  },\n  {\n    \"u\": \"cat_4\",\n    \"w\": 1.463656501437303,\n    \"v\": \"cat_1\",\n    \"y\": 246.6642430026098,\n    \"x\": 73.48368170456627,\n    \"z\": 1.0052929735375302\n  },\n  {\n    \"u\": \"cat_11\",\n    \"w\": 0.013089161287933138,\n    \"v\": \"other\",\n    \"y\": 156.36354536529558,\n    \"x\": 243.2026715373837,\n    \"z\": 0.39667694750274274\n  },\n  {\n    \"u\": \"cat_12\",\n    \"w\": 0.36730326802039404,\n    \"v\": \"other\",\n    \"y\": 156.71697413402487,\n    \"x\": 148.27450037397765,\n    \"z\": -1.4105618351561287\n  },\n  {\n    \"u\": \"cat_14\",\n    \"w\": -0.06953747774947772,\n    \"v\": \"other\",\n    \"y\": 141.22433267951084,\n    \"x\": 69.06616491304716,\n    \"z\": 0.475924622911404\n  },\n  {\n    \"u\": \"other\",\n    \"w\": 0.517415189557197,\n    \"v\": \"other\",\n    \"y\": 115.95680666029197,\n    \"x\": 153.0898637311175,\n    \"z\": 0.9443947812526814\n  },\n  {\n    \"u\": \"cat_3\",\n    \"w\": 0.5670223685982718,\n    \"v\": \"other\",\n    \"y\": 227.27960266143467,\n    \"x\": 153.22490080491232,\n    \"z\": 1.32067405076989\n  },\n  {\n    \"u\": \"cat_7\",\n    \"w\": 0.5376290623874869,\n    \"v\": \"other\",\n    \"y\": 260.9119300068415,\n    \"x\": 158.76997596111525,\n    \"z\": 0.26196386810779426\n  },\n  {\n    \"u\": \"cat_8\",\n    \"w\": 2.168516664994767,\n    \"v\": \"other\",\n    \"y\": 170.77570545745968,\n    \"x\": 135.65940169018805,\n    \"z\": 0.9162849263421061\n  },\n  {\n    \"u\": \"cat_5\",\n    \"w\": 2.311955371948698,\n    \"v\": \"other\",\n    \"y\": 243.37468134084048,\n    \"x\": 20.66820288532847,\n    \"z\": -0.322645627898664\n  },\n  {\n    \"u\": \"cat_4\",\n    \"w\": 1.8314759939943595,\n    \"v\": \"other\",\n    \"y\": 214.1727802647768,\n    \"x\": 216.61746891013505,\n    \"z\": 2.4147498286441165\n  },\n  {\n    \"u\": \"other\",\n    \"w\": 0.8365279958031904,\n    \"v\": \"other\",\n    \"y\": 100.90575192733515,\n    \"x\": 151.6306779403549,\n    \"z\": 0.8606212265228668\n  },\n  {\n    \"u\": \"cat_13\",\n    \"w\": -0.26452281419648993,\n    \"v\": \"cat_0\",\n    \"y\": 194.59598730955793,\n    \"x\": 129.361227705571,\n    \"z\": 1.0322894496099724\n  },\n  {\n    \"u\": \"cat_13\",\n    \"w\": 2.6043512596594365,\n    \"v\": \"other\",\n    \"y\": 213.8128177957785,\n    \"x\": 194.6414121394208,\n    \"z\": 3.280204884184917\n  },\n  {\n    \"u\": \"cat_6\",\n    \"w\": 1.6310983407120137,\n    \"v\": \"other\",\n    \"y\": 163.2658097189387,\n    \"x\": 187.70506769054072,\n    \"z\": 1.3488889788600984\n  },\n  {\n    \"u\": \"cat_8\",\n    \"w\": 0.6487974580274094,\n    \"v\": \"other\",\n    \"y\": 194.3209257079902,\n    \"x\": 192.10028088047798,\n    \"z\": -0.07036372606337338\n  },\n  {\n    \"u\": \"cat_10\",\n    \"w\": 1.3927144738318111,\n    \"v\": \"other\",\n    \"y\": 161.3486689563104,\n    \"x\": 86.73894049392862,\n    \"z\": 0.1537876062955914\n  },\n  {\n    \"u\": \"cat_9\",\n    \"w\": -0.3771368838057665,\n    \"v\": \"other\",\n    \"y\": 182.55687300867896,\n    \"x\": 201.1112292465731,\n    \"z\": -0.058098755927163515\n  },\n  {\n    \"u\": \"cat_0\",\n    \"w\": -0.6345913552330389,\n    \"v\": \"other\",\n    \"y\": 165.80314397714827,\n    \"x\": 206.7182591446124,\n    \"z\": 1.4845564495064427\n  },\n  {\n    \"u\": \"cat_0\",\n    \"w\": 0.6855019579009463,\n    \"v\": \"cat_1\",\n    \"y\": 159.66118937446728,\n    \"x\": 192.39649008863876,\n    \"z\": 0.055873071009385766\n  },\n  {\n    \"u\": \"cat_6\",\n    \"w\": 2.964882131756106,\n    \"v\": \"other\",\n    \"y\": 241.84769149238159,\n    \"x\": 111.35023940160411,\n    \"z\": 0.167414971004892\n  },\n  {\n    \"u\": \"other\",\n    \"w\": -0.4506378010737888,\n    \"v\": \"other\",\n    \"y\": 90.4639669582562,\n    \"x\": 158.90001697899683,\n    \"z\": 1.1696787253371819\n  },\n  {\n    \"u\": \"cat_0\",\n    \"w\": 1.2656151949587624,\n    \"v\": \"other\",\n    \"y\": 183.02945581640645,\n    \"x\": 180.4213167593254,\n    \"z\": 2.0539930046863035\n  },\n  {\n    \"u\": \"cat_13\",\n    \"w\": 1.228801369090003,\n    \"v\": \"other\",\n    \"y\": 277.13369884311936,\n    \"x\": 80.15664163346004,\n    \"z\": 2.2937904251948638\n  },\n  {\n    \"u\": \"cat_5\",\n    \"w\": 2.0896213510871937,\n    \"v\": \"other\",\n    \"y\": 163.72382240169802,\n    \"x\": 215.41216187620037,\n    \"z\": 2.553028570447125\n  },\n  {\n    \"u\": \"cat_15\",\n    \"w\": 1.0981586322470924,\n    \"v\": \"other\",\n    \"y\": 109.2838491053391,\n    \"x\": 184.09570421897956,\n    \"z\": 0.44759620112619647\n  },\n  {\n    \"u\": \"other\",\n    \"w\": 1.3457067544720736,\n    \"v\": \"other\",\n    \"y\": 171.16629782677862,\n    \"x\": 213.12963803437316,\n    \"z\": 0.7270493828061404\n  },\n  {\n    \"u\": \"cat_13\",\n    \"w\": -0.7076617244518462,\n    \"v\": \"other\",\n    \"y\": 144.05587078713071,\n    \"x\": 184.28906651578978,\n    \"z\": 1.382134562867984\n  },\n  {\n    \"u\": \"cat_0\",\n    \"w\": -0.2800595737017382,\n    \"v\": \"other\",\n    \"y\": 193.27473606725474,\n    \"x\": 154.94633537134789,\n    \"z\": -0.33791235399367947\n  },\n  {\n    \"u\": \"cat_14\",\n    \"w\": 0.4456793621586681,\n    \"v\": \"other\",\n    \"y\": 125.1308061934427,\n    \"x\": 123.90267987241343,\n    \"z\": 2.3230978938654645\n  },\n  {\n    \"u\": \"cat_5\",\n    \"w\": 3.075103103171694,\n    \"v\": \"cat_0\",\n    \"y\": 154.8755877624397,\n    \"x\": 61.020238047163375,\n    \"z\": 1.6674654330131888\n  },\n  {\n    \"u\": \"other\",\n    \"w\": 0.16319305741807733,\n    \"v\": \"cat_0\",\n    \"y\": 114.08645682777497,\n    \"x\": 225.28654361195518,\n    \"z\": 0.4242182000961613\n  },\n  {\n    \"u\": \"cat_6\",\n    \"w\": 1.9417162589422323,\n    \"v\": \"other\",\n    \"y\": 185.28537858495014,\n    \"x\": 155.5736376536581,\n    \"z\": 1.1747492195973144\n  },\n  {\n    \"u\": \"cat_4\",\n    \"w\": 1.155787735870216,\n    \"v\": \"cat_1\",\n    \"y\": 183.24930292147863,\n    \"x\": 115.40643586463635,\n    \"z\": 0.19242660628339903\n  },\n  {\n    \"u\": \"other\",\n    \"w\": 0.6070329867687532,\n    \"v\": \"other\",\n    \"y\": 57.398818613660296,\n    \"x\": 219.87611544574744,\n    \"z\": 1.1095208041769122\n  },\n  {\n    \"u\": \"cat_6\",\n    \"w\": 0.4083905726447342,\n    \"v\": \"other\",\n    \"y\": 175.40387812166918,\n    \"x\": 224.68335734038368,\n    \"z\": -0.42207104629857617\n  },\n  {\n    \"u\": \"cat_5\",\n    \"w\": 0.6585907631358738,\n    \"v\": \"cat_1\",\n    \"y\": 124.05051069396585,\n    \"x\": 127.07766432478591,\n    \"z\": 0.1354114111502046\n  },\n  {\n    \"u\": \"cat_10\",\n    \"w\": 1.734882212854999,\n    \"v\": \"cat_1\",\n    \"y\": 143.78518104207086,\n    \"x\": 198.75776145611215,\n    \"z\": -0.12283925137929064\n  },\n  {\n    \"u\": \"other\",\n    \"w\": 0.20503963437937356,\n    \"v\": \"other\",\n    \"y\": 151.75327292745928,\n    \"x\": 148.9695770940796,\n    \"z\": 0.564428194218838\n  },\n  {\n    \"u\": \"cat_15\",\n    \"w\": 1.8574692523422356,\n    \"v\": \"other\",\n    \"y\": 306.0898140884456,\n    \"x\": 147.43144660079602,\n    \"z\": -0.22413411708624853\n  },\n  {\n    \"u\": \"cat_4\",\n    \"w\": 1.1062688896220425,\n    \"v\": \"other\",\n    \"y\": 212.44397654702615,\n    \"x\": 195.86829581464062,\n    \"z\": 0.7453160939357952\n  },\n  {\n    \"u\": \"cat_15\",\n    \"w\": -0.27774340110996487,\n    \"v\": \"cat_0\",\n    \"y\": 122.63707978879633,\n    \"x\": 95.64182307323996,\n    \"z\": 0.6430476399500114\n  },\n  {\n    \"u\": \"cat_11\",\n    \"w\": 1.693891428609414,\n    \"v\": \"other\",\n    \"y\": 161.59041244043587,\n    \"x\": 64.83892325218056,\n    \"z\": 0.6409468598992659\n  },\n  {\n    \"u\": \"cat_0\",\n    \"w\": 1.8192638452039414,\n    \"v\": \"cat_0\",\n    \"y\": 203.44169192711857,\n    \"x\": 175.9035258508178,\n    \"z\": 1.0101903553514529\n  },\n  {\n    \"u\": \"cat_10\",\n    \"w\": 1.6693901234237167,\n    \"v\": \"other\",\n    \"y\": 266.02281722067806,\n    \"x\": 193.7229721388815,\n    \"z\": 1.3287927803604402\n  },\n  {\n    \"u\": \"cat_2\",\n    \"w\": 1.6276382654036277,\n    \"v\": \"cat_0\",\n    \"y\": 174.54476940927518,\n    \"x\": 85.70090208863968,\n    \"z\": 1.3166929052154481\n  },\n  {\n    \"u\": \"cat_4\",\n    \"w\": 0.893609545984623,\n    \"v\": \"other\",\n    \"y\": 135.20127141724655,\n    \"x\": 161.0852992807473,\n    \"z\": 0.7423369081120028\n  },\n  {\n    \"u\": \"cat_8\",\n    \"w\": -0.25726080091728387,\n    \"v\": \"other\",\n    \"y\": 87.98074634203813,\n    \"x\": 194.6466767641028,\n    \"z\": 1.171709779521613\n  },\n  {\n    \"u\": \"cat_6\",\n    \"w\": 1.4386749809763226,\n    \"v\": \"other\",\n    \"y\": 154.56889252680085,\n    \"x\": 137.16494490842896,\n    \"z\": 1.8319953052292166\n  },\n  {\n    \"u\": \"cat_1\",\n    \"w\": 1.9751827147081238,\n    \"v\": \"other\",\n    \"y\": 150.52324196509258,\n    \"x\": 51.69078624012406,\n    \"z\": -0.23529144151246717\n  },\n  {\n    \"u\": \"cat_14\",\n    \"w\": 1.3843184328271165,\n    \"v\": \"other\",\n    \"y\": 160.51323171649904,\n    \"x\": 169.7361988952806,\n    \"z\": 1.3970600816965812\n  },\n  {\n    \"u\": \"cat_15\",\n    \"w\": -0.475868599212677,\n    \"v\": \"other\",\n    \"y\": 132.27225542990598,\n    \"x\": 103.56729490389614,\n    \"z\": 0.4512210085364755\n  },\n  {\n    \"u\": \"cat_4\",\n    \"w\": 1.2081442447975173,\n    \"v\": \"cat_0\",\n    \"y\": 56.102440394233255,\n    \"x\": 124.56829572524175,\n    \"z\": 1.2994110022657026\n  },\n  {\n    \"u\": \"cat_13\",\n    \"w\": 1.736143244910195,\n    \"v\": \"cat_0\",\n    \"y\": 212.5650565277553,\n    \"x\": 140.4278102663895,\n    \"z\": 2.3771380059458744\n  },\n  {\n    \"u\": \"cat_14\",\n    \"w\": -0.461785512082463,\n    \"v\": \"cat_1\",\n    \"y\": 101.5707842719089,\n    \"x\": 196.16957370342342,\n    \"z\": 2.0950787429883846\n  },\n  {\n    \"u\": \"cat_5\",\n    \"w\": 1.3260330340794257,\n    \"v\": \"cat_1\",\n    \"y\": 195.74556071781365,\n    \"x\": 36.939138857293585,\n    \"z\": -0.05847270264086335\n  },\n  {\n    \"u\": \"cat_9\",\n    \"w\": 0.3220908087517964,\n    \"v\": \"other\",\n    \"y\": 221.78294482102933,\n    \"x\": 74.76586558666337,\n    \"z\": -0.05817419869022866\n  },\n  {\n    \"u\": \"cat_5\",\n    \"w\": 0.8170251870816604,\n    \"v\": \"other\",\n    \"y\": 179.17790605043118,\n    \"x\": 232.48747575985655,\n    \"z\": 1.7029885149441673\n  },\n  {\n    \"u\": \"cat_3\",\n    \"w\": 0.2659811986182221,\n    \"v\": \"cat_1\",\n    \"y\": 192.81824199631728,\n    \"x\": 140.710358385573,\n    \"z\": 1.5793646916427102\n  },\n  {\n    \"u\": \"cat_8\",\n    \"w\": 1.2271687489820546,\n    \"v\": \"other\",\n    \"y\": 111.59013545108343,\n    \"x\": 101.3489243773156,\n    \"z\": 3.21128318091031\n  },\n  {\n    \"u\": \"cat_13\",\n    \"w\": 1.3499209090064648,\n    \"v\": \"other\",\n    \"y\": 91.89209852687142,\n    \"x\": 154.6035518322702,\n    \"z\": 0.6817267324899431\n  },\n  {\n    \"u\": \"cat_0\",\n    \"w\": 2.159235435849202,\n    \"v\": \"other\",\n    \"y\": 158.63631854616588,\n    \"x\": 120.35802170671863,\n    \"z\": 0.6067162231097979\n  },\n  {\n    \"u\": \"cat_14\",\n    \"w\": 0.8523794752014957,\n    \"v\": \"other\",\n    \"y\": 76.05793322732642,\n    \"x\": 138.4115475783541,\n    \"z\": 0.2967991752860232\n  },\n  {\n    \"u\": \"cat_12\",\n    \"w\": 1.0558373735944235,\n    \"v\": \"other\",\n    \"y\": 124.74002651703651,\n    \"x\": 157.02907657551447,\n    \"z\": -0.025374565392791038\n  },\n  {\n    \"u\": \"cat_0\",\n    \"w\": 1.3648422432834806,\n    \"v\": \"cat_1\",\n    \"y\": 203.82847317695288,\n    \"x\": 152.02003088030492,\n    \"z\": -0.4421819240850271\n  },\n  {\n    \"u\": \"cat_4\",\n    \"w\": 0.8156055831409262,\n    \"v\": \"other\",\n    \"y\": 95.97296459484079,\n    \"x\": 78.51455593195435,\n    \"z\": 1.1994133990162583\n  },\n  {\n    \"u\": \"cat_3\",\n    \"w\": 0.727605537039985,\n    \"v\": \"other\",\n    \"y\": 168.70196209212494,\n    \"x\": 212.41730028904536,\n    \"z\": 0.6997491454171789\n  },\n  {\n    \"u\": \"cat_6\",\n    \"w\": 1.262490286926595,\n    \"v\": \"other\",\n    \"y\": 134.65200754480446,\n    \"x\": 42.54634367887225,\n    \"z\": 0.5177600909542267\n  },\n  {\n    \"u\": \"cat_8\",\n    \"w\": 1.4837053114286998,\n    \"v\": \"cat_0\",\n    \"y\": 112.28208956177541,\n    \"x\": 193.95863032046006,\n    \"z\": 1.0019859410064678\n  },\n  {\n    \"u\": \"cat_8\",\n    \"w\": -0.16895357221403362,\n    \"v\": \"cat_0\",\n    \"y\": 192.98985884826888,\n    \"x\": 144.96182365337268,\n    \"z\": 1.4190462447457899\n  },\n  {\n    \"u\": \"cat_16\",\n    \"w\": 1.0468806482899717,\n    \"v\": \"cat_0\",\n    \"y\": 152.86277692393685,\n    \"x\": 137.2022037296142,\n    \"z\": 0.4593974450208086\n  },\n  {\n    \"u\": \"cat_6\",\n    \"w\": 2.462089222004976,\n    \"v\": \"cat_1\",\n    \"y\": 178.5621123552027,\n    \"x\": 142.01082685227874,\n    \"z\": 0.580699096900331\n  },\n  {\n    \"u\": \"other\",\n    \"w\": -0.9097490420343397,\n    \"v\": \"other\",\n    \"y\": 137.21823856264854,\n    \"x\": 94.98376759227347,\n    \"z\": 2.118286289288478\n  },\n  {\n    \"u\": \"cat_5\",\n    \"w\": 0.6155123359814616,\n    \"v\": \"other\",\n    \"y\": 52.94291552982141,\n    \"x\": 85.57431217669814,\n    \"z\": -0.09704681018895633\n  },\n  {\n    \"u\": \"cat_11\",\n    \"w\": 1.9468348457441005,\n    \"v\": \"other\",\n    \"y\": 243.07706417763518,\n    \"x\": 163.35061475046334,\n    \"z\": 1.178015608927323\n  },\n  {\n    \"u\": \"cat_13\",\n    \"w\": -0.11396040656336393,\n    \"v\": \"other\",\n    \"y\": 102.69550510842956,\n    \"x\": 105.80547059051209,\n    \"z\": 1.7309952065474825\n  },\n  {\n    \"u\": \"cat_0\",\n    \"w\": 1.0201819734167836,\n    \"v\": \"other\",\n    \"y\": 226.24093931458543,\n    \"x\": 128.26413056781655,\n    \"z\": 0.602354545792653\n  },\n  {\n    \"u\": \"cat_9\",\n    \"w\": 0.41269060095932775,\n    \"v\": \"other\",\n    \"y\": 22.06560060765568,\n    \"x\": 169.41836118747312,\n    \"z\": 0.6422396319927962\n  },\n  {\n    \"u\": \"cat_13\",\n    \"w\": 1.1423761297271733,\n    \"v\": \"other\",\n    \"y\": 122.16006750791158,\n    \"x\": 64.32267243426844,\n    \"z\": 0.5677725122287971\n  },\n  {\n    \"u\": \"cat_0\",\n    \"w\": -0.4940883354815302,\n    \"v\": \"other\",\n    \"y\": 146.45339448820994,\n    \"x\": 172.009924725858,\n    \"z\": 0.5733149663059203\n  },\n  {\n    \"u\": \"cat_12\",\n    \"w\": 2.0427267231236836,\n    \"v\": \"other\",\n    \"y\": 105.09233739863171,\n    \"x\": 151.8604441328228,\n    \"z\": -1.0417341971519445\n  },\n  {\n    \"u\": \"cat_0\",\n    \"w\": -0.06844772614894712,\n    \"v\": \"cat_0\",\n    \"y\": 208.74646965359665,\n    \"x\": 211.0589178490544,\n    \"z\": 3.033892234816319\n  },\n  {\n    \"u\": \"cat_10\",\n    \"w\": 0.1407531030532979,\n    \"v\": \"other\",\n    \"y\": 212.1295737404453,\n    \"x\": 157.62156278215423,\n    \"z\": -0.17802781876760476\n  },\n  {\n    \"u\": \"cat_7\",\n    \"w\": 0.654514275645782,\n    \"v\": \"cat_1\",\n    \"y\": 127.45107550739947,\n    \"x\": 94.87901525572023,\n    \"z\": 1.169027403658316\n  },\n  {\n    \"u\": \"cat_15\",\n    \"w\": 2.7361843748627708,\n    \"v\": \"other\",\n    \"y\": 184.8888620082486,\n    \"x\": 116.81017887336674,\n    \"z\": -0.5196787907040106\n  },\n  {\n    \"u\": \"other\",\n    \"w\": 0.7134526835944346,\n    \"v\": \"other\",\n    \"y\": 169.9779808978828,\n    \"x\": 108.48468655071922,\n    \"z\": 2.4985146493801524\n  },\n  {\n    \"u\": \"cat_1\",\n    \"w\": 2.0017599837707474,\n    \"v\": \"other\",\n    \"y\": 193.69331303548242,\n    \"x\": 161.953677145996,\n    \"z\": 0.9928254618909004\n  }\n]"
  },
  {
    "path": "app/data/ufoDates.json",
    "content": "[\n  30,\n  0,\n  203,\n  0,\n  30,\n  0,\n  0,\n  116,\n  180,\n  57,\n  0,\n  0,\n  2,\n  75,\n  0,\n  0,\n  21,\n  25,\n  2,\n  0,\n  29,\n  0,\n  101,\n  27,\n  43,\n  0,\n  770,\n  0,\n  24,\n  0,\n  0,\n  39,\n  0,\n  2,\n  24,\n  21,\n  25,\n  1,\n  27,\n  1866,\n  113,\n  0,\n  1,\n  1,\n  876,\n  1,\n  0,\n  0,\n  68,\n  287,\n  1,\n  257,\n  31,\n  299,\n  176,\n  21,\n  51,\n  51,\n  51,\n  25,\n  20,\n  91,\n  24,\n  0,\n  0,\n  48,\n  279,\n  70,\n  52,\n  22,\n  100,\n  50,\n  80,\n  1,\n  10,\n  0,\n  3059,\n  3059,\n  3059,\n  4,\n  74,\n  26,\n  383,\n  0,\n  3227,\n  32,\n  315,\n  0,\n  0,\n  28,\n  34,\n  1,\n  35,\n  84,\n  20,\n  0,\n  94,\n  21,\n  730,\n  203,\n  3,\n  30,\n  5,\n  0,\n  1,\n  1013,\n  84,\n  8,\n  2056,\n  7,\n  75,\n  291,\n  291,\n  291,\n  570,\n  4582,\n  4582,\n  4582,\n  148,\n  415,\n  139,\n  30,\n  0,\n  6,\n  40,\n  237,\n  3318,\n  3318,\n  3318,\n  253,\n  106,\n  162,\n  356,\n  121,\n  1172,\n  41,\n  525,\n  320,\n  320,\n  320,\n  1632,\n  1632,\n  1632,\n  1437,\n  1267,\n  64,\n  149,\n  67,\n  0,\n  29,\n  33,\n  115,\n  482,\n  1,\n  434,\n  65,\n  219,\n  0,\n  142,\n  157,\n  13,\n  0,\n  27,\n  24,\n  1464,\n  1464,\n  1464,\n  56,\n  422,\n  1,\n  775,\n  367,\n  90,\n  189,\n  0,\n  1636,\n  631,\n  3261,\n  3261,\n  3261,\n  137,\n  20,\n  30,\n  1268,\n  1268,\n  1268,\n  115,\n  153,\n  193,\n  3,\n  20,\n  0,\n  1,\n  0,\n  162,\n  726,\n  16,\n  2069,\n  53,\n  786,\n  552,\n  46,\n  148,\n  28,\n  205,\n  3,\n  0,\n  0,\n  98,\n  4006,\n  4006,\n  4006,\n  37,\n  2,\n  49,\n  25,\n  211,\n  135,\n  541,\n  549,\n  56,\n  184,\n  1398,\n  1398,\n  1398,\n  2602,\n  2602,\n  2602,\n  178,\n  331,\n  49,\n  598,\n  2219,\n  28,\n  8,\n  65,\n  3653,\n  3653,\n  3653,\n  2552,\n  2552,\n  2552,\n  31,\n  1233,\n  28,\n  69,\n  126,\n  585,\n  22,\n  89,\n  35,\n  97,\n  36,\n  32,\n  430,\n  4241,\n  4241,\n  4241,\n  4513,\n  4513,\n  4513,\n  132,\n  701,\n  21,\n  493,\n  119,\n  784,\n  346,\n  149,\n  0,\n  43,\n  101,\n  20,\n  28,\n  398,\n  23,\n  980,\n  343,\n  51,\n  1183,\n  58,\n  61,\n  358,\n  977,\n  938,\n  1,\n  22,\n  567,\n  622,\n  2341,\n  1166,\n  194,\n  1044,\n  292,\n  942,\n  754,\n  39,\n  2,\n  642,\n  99,\n  35,\n  23,\n  140,\n  2534,\n  280,\n  3228,\n  3228,\n  3228,\n  36,\n  40,\n  37,\n  1424,\n  40,\n  309,\n  36,\n  48,\n  87,\n  1,\n  627,\n  155,\n  155,\n  155,\n  326,\n  178,\n  481,\n  1321,\n  1321,\n  1321,\n  2310,\n  2310,\n  2310,\n  32,\n  3773,\n  3773,\n  3773,\n  63,\n  729,\n  406,\n  369,\n  119,\n  119,\n  119,\n  4193,\n  4193,\n  4193,\n  799,\n  677,\n  912,\n  2197,\n  2197,\n  2197,\n  23,\n  56,\n  1203,\n  1203,\n  1203,\n  1030,\n  224,\n  363,\n  1746,\n  1746,\n  1746,\n  23,\n  417,\n  2340,\n  4634,\n  4634,\n  4634,\n  610,\n  350,\n  320,\n  3,\n  115,\n  3,\n  23,\n  202,\n  47,\n  4001,\n  4001,\n  4001,\n  0,\n  0,\n  211,\n  211,\n  211,\n  0,\n  2,\n  133,\n  1588,\n  1588,\n  1588,\n  53,\n  34,\n  4,\n  12,\n  21,\n  238,\n  144,\n  144,\n  144,\n  11,\n  74,\n  280,\n  107,\n  24,\n  343,\n  68,\n  46,\n  38,\n  339,\n  1922,\n  0,\n  1947,\n  1947,\n  1947,\n  3187,\n  29,\n  61,\n  55,\n  47,\n  104,\n  179,\n  1446,\n  1,\n  238,\n  669,\n  3,\n  79,\n  61,\n  5,\n  581,\n  1112,\n  24,\n  52,\n  316,\n  203,\n  39,\n  226,\n  106,\n  106,\n  106,\n  0,\n  203,\n  137,\n  4411,\n  4411,\n  4411,\n  120,\n  36,\n  722,\n  27,\n  681,\n  105,\n  135,\n  21,\n  215,\n  0,\n  69,\n  81,\n  65,\n  4,\n  104,\n  792,\n  2327,\n  74,\n  20,\n  30,\n  42,\n  0,\n  4300,\n  4300,\n  4300,\n  92,\n  113,\n  28,\n  392,\n  20,\n  37,\n  115,\n  31,\n  607,\n  241,\n  169,\n  104,\n  27,\n  84,\n  403,\n  2205,\n  3447,\n  3447,\n  3447,\n  213,\n  21,\n  36,\n  989,\n  888,\n  888,\n  888,\n  0,\n  206,\n  14,\n  98,\n  98,\n  98,\n  325,\n  87,\n  172,\n  299,\n  1193,\n  208,\n  2862,\n  203,\n  727,\n  727,\n  727,\n  409,\n  3770,\n  3770,\n  3770,\n  56,\n  87,\n  582,\n  582,\n  582,\n  614,\n  3067,\n  3067,\n  3067,\n  252,\n  2272,\n  2272,\n  2272,\n  3911,\n  21,\n  451,\n  894,\n  49,\n  268,\n  268,\n  268,\n  0,\n  151,\n  212,\n  575,\n  23,\n  1063,\n  2,\n  21,\n  159,\n  440,\n  979,\n  3183,\n  3183,\n  3183,\n  1805,\n  217,\n  280,\n  90,\n  1110,\n  2480,\n  444,\n  1382,\n  2523,\n  2523,\n  2523,\n  22,\n  131,\n  35,\n  125,\n  388,\n  3502,\n  3502,\n  3502,\n  30,\n  26,\n  64,\n  1830,\n  1830,\n  1830,\n  1268,\n  3604,\n  3604,\n  3604,\n  967,\n  41,\n  483,\n  46,\n  972,\n  84,\n  21,\n  906,\n  0,\n  0,\n  3,\n  576,\n  365,\n  2885,\n  2885,\n  2885,\n  365,\n  1,\n  236,\n  634,\n  99,\n  477,\n  49,\n  114,\n  34,\n  1381,\n  702,\n  395,\n  775,\n  255,\n  4660,\n  4660,\n  4660,\n  116,\n  803,\n  289,\n  2432,\n  2432,\n  2432,\n  148,\n  28,\n  1206,\n  98,\n  67,\n  2639,\n  185,\n  1205,\n  1511,\n  1463,\n  24,\n  1290,\n  450,\n  1,\n  1370,\n  3315,\n  2558,\n  181,\n  0,\n  1380,\n  1380,\n  1380,\n  174,\n  2507,\n  2507,\n  2507,\n  29,\n  286,\n  525,\n  1732,\n  70,\n  99,\n  8,\n  21,\n  95,\n  2163,\n  664,\n  664,\n  664,\n  21,\n  33,\n  56,\n  3138,\n  28,\n  1,\n  1361,\n  37,\n  0,\n  36,\n  33,\n  38,\n  260,\n  90,\n  0,\n  582,\n  972,\n  302,\n  4854,\n  4854,\n  4854,\n  7,\n  485,\n  53,\n  4636,\n  4636,\n  4636,\n  55,\n  89,\n  255,\n  186,\n  93,\n  22,\n  2032,\n  23,\n  63,\n  3524,\n  3524,\n  3524,\n  2596,\n  2596,\n  2596,\n  2843,\n  4589,\n  4589,\n  4589,\n  1172,\n  367,\n  26,\n  22,\n  350,\n  15,\n  278,\n  122,\n  1202,\n  185,\n  0,\n  1593,\n  1593,\n  1593,\n  32,\n  39,\n  916,\n  23,\n  577,\n  526,\n  1231,\n  36,\n  34,\n  502,\n  52,\n  0,\n  2084,\n  2084,\n  2084,\n  853,\n  853,\n  853,\n  21,\n  82,\n  195,\n  1592,\n  1592,\n  1592,\n  22,\n  4372,\n  4372,\n  4372,\n  1,\n  9,\n  904,\n  904,\n  904,\n  474,\n  1135,\n  100,\n  1490,\n  1284,\n  25,\n  2415,\n  2415,\n  2415,\n  44,\n  140,\n  352,\n  220,\n  345,\n  48,\n  25,\n  147,\n  82,\n  360,\n  1487,\n  1487,\n  1487,\n  1601,\n  1601,\n  1601,\n  20,\n  1536,\n  29,\n  410,\n  1077,\n  0,\n  161,\n  161,\n  161,\n  3949,\n  3949,\n  3949,\n  1139,\n  257,\n  29,\n  44,\n  62,\n  62,\n  62,\n  582,\n  582,\n  582,\n  130,\n  1076,\n  320,\n  1,\n  61,\n  214,\n  2782,\n  64,\n  41,\n  283,\n  30,\n  520,\n  454,\n  2454,\n  2454,\n  2454,\n  388,\n  7,\n  950,\n  45,\n  80,\n  190,\n  5,\n  189,\n  1933,\n  1933,\n  1933,\n  26,\n  2,\n  470,\n  73,\n  1513,\n  434,\n  1410,\n  1410,\n  1410,\n  559,\n  3363,\n  3363,\n  3363,\n  0,\n  441,\n  525,\n  1070,\n  0,\n  1834,\n  1506,\n  41,\n  32,\n  404,\n  0,\n  808,\n  166,\n  53,\n  2,\n  834,\n  0,\n  136,\n  24,\n  404,\n  1056,\n  1,\n  3284,\n  3284,\n  3284,\n  4662,\n  4662,\n  4662,\n  1009,\n  1009,\n  1009,\n  40,\n  1326,\n  25,\n  1542,\n  195,\n  49,\n  31,\n  45,\n  21,\n  1436,\n  25,\n  1476,\n  1476,\n  1476,\n  1194,\n  49,\n  2002,\n  51,\n  2,\n  3734,\n  3734,\n  3734,\n  455,\n  1209,\n  243,\n  48,\n  34,\n  393,\n  1160,\n  1160,\n  1160,\n  1020,\n  368,\n  34,\n  1,\n  31,\n  47,\n  103,\n  109,\n  540,\n  3212,\n  3212,\n  3212,\n  460,\n  1958,\n  1958,\n  1958,\n  30,\n  1121,\n  1959,\n  1959,\n  1959,\n  411,\n  93,\n  203,\n  1425,\n  190,\n  245,\n  2088,\n  280,\n  280,\n  280,\n  2290,\n  94,\n  4755,\n  4755,\n  4755,\n  1,\n  25,\n  3512,\n  3512,\n  3512,\n  53,\n  59,\n  1887,\n  1887,\n  1887,\n  33,\n  45,\n  55,\n  24,\n  1872,\n  741,\n  1405,\n  1405,\n  1405,\n  1098,\n  85,\n  31,\n  92,\n  94,\n  148,\n  397,\n  393,\n  445,\n  2476,\n  56,\n  1182,\n  711,\n  789,\n  0,\n  48,\n  264,\n  104,\n  839,\n  780,\n  780,\n  780,\n  360,\n  533,\n  0,\n  27,\n  2625,\n  1851,\n  697,\n  53,\n  1342,\n  4443,\n  4443,\n  4443,\n  23,\n  1,\n  112,\n  3118,\n  1535,\n  4705,\n  4705,\n  4705,\n  1,\n  3,\n  397,\n  679,\n  1489,\n  202,\n  202,\n  202,\n  72,\n  1199,\n  1275,\n  1259,\n  2028,\n  2028,\n  2028,\n  32,\n  360,\n  1076,\n  1076,\n  1076,\n  1042,\n  1776,\n  155,\n  63,\n  39,\n  3698,\n  563,\n  146,\n  40,\n  125,\n  1218,\n  3873,\n  4683,\n  4683,\n  4683,\n  68,\n  811,\n  79,\n  22,\n  514,\n  31,\n  362,\n  153,\n  714,\n  1188,\n  1188,\n  1188,\n  501,\n  4037,\n  4037,\n  4037,\n  900,\n  2653,\n  2653,\n  2653,\n  1557,\n  1557,\n  1557,\n  2174,\n  29,\n  0,\n  32,\n  3332,\n  3332,\n  3332,\n  32,\n  31,\n  349,\n  2,\n  307,\n  349,\n  828,\n  4,\n  764,\n  27,\n  4044,\n  1,\n  14,\n  3327,\n  3327,\n  3327,\n  480,\n  480,\n  480,\n  171,\n  99,\n  22,\n  4321,\n  4321,\n  4321,\n  35,\n  101,\n  20,\n  68,\n  101,\n  59,\n  0,\n  489,\n  27,\n  55,\n  43,\n  1648,\n  1648,\n  1648,\n  1,\n  4,\n  1769,\n  68,\n  1273,\n  646,\n  639,\n  1557,\n  452,\n  216,\n  1070,\n  1229,\n  1229,\n  1229,\n  701,\n  142,\n  3494,\n  2,\n  149,\n  365,\n  608,\n  370,\n  30,\n  0,\n  2388,\n  2388,\n  2388,\n  27,\n  314,\n  603,\n  24,\n  333,\n  333,\n  333,\n  2736,\n  2736,\n  2736,\n  365,\n  417,\n  2808,\n  2808,\n  2808,\n  2201,\n  3341,\n  3341,\n  3341,\n  1327,\n  42,\n  366,\n  366,\n  366,\n  249,\n  23,\n  56,\n  1258,\n  486,\n  93,\n  210,\n  2581,\n  2581,\n  2581,\n  810,\n  49,\n  251,\n  251,\n  251,\n  205,\n  1100,\n  135,\n  75,\n  155,\n  160,\n  82,\n  960,\n  2037,\n  2110,\n  75,\n  3421,\n  3421,\n  3421,\n  158,\n  37,\n  873,\n  70,\n  674,\n  4606,\n  4606,\n  4606,\n  192,\n  4435,\n  4435,\n  4435,\n  2251,\n  1,\n  848,\n  220,\n  0,\n  155,\n  768,\n  768,\n  768,\n  54,\n  31,\n  1460,\n  1460,\n  1460,\n  168,\n  102,\n  342,\n  3147,\n  3147,\n  3147,\n  128,\n  37,\n  1856,\n  161,\n  614,\n  520,\n  27,\n  480,\n  54,\n  4166,\n  838,\n  92,\n  512,\n  219,\n  219,\n  219,\n  661,\n  75,\n  220,\n  812,\n  27,\n  1976,\n  1899,\n  41,\n  172,\n  4975,\n  4975,\n  4975,\n  4709,\n  4709,\n  4709,\n  2734,\n  2734,\n  2734,\n  3147,\n  3147,\n  3147,\n  505,\n  231,\n  231,\n  231,\n  44,\n  31,\n  271,\n  62,\n  862,\n  276,\n  36,\n  18,\n  228,\n  497,\n  4279,\n  4279,\n  4279,\n  606,\n  1,\n  29,\n  496,\n  152,\n  223,\n  63,\n  1196,\n  156,\n  78,\n  221,\n  368,\n  1954,\n  1954,\n  1954,\n  271,\n  4,\n  101,\n  2336,\n  398,\n  262,\n  2297,\n  2060,\n  4252,\n  2905,\n  2905,\n  2905,\n  35,\n  598,\n  1417,\n  175,\n  1280,\n  1280,\n  1280,\n  55,\n  1176,\n  2453,\n  1921,\n  1921,\n  1921,\n  48,\n  1729,\n  1397,\n  71,\n  0,\n  1748,\n  2,\n  223,\n  336,\n  1603,\n  1332,\n  28,\n  90,\n  1545,\n  2630,\n  1347,\n  120,\n  3668,\n  3668,\n  3668,\n  0,\n  477,\n  2780,\n  2399,\n  2399,\n  2399,\n  2497,\n  46,\n  1250,\n  282,\n  26,\n  28,\n  2064,\n  7,\n  58,\n  4926,\n  4926,\n  4926,\n  160,\n  392,\n  281,\n  1006,\n  1025,\n  133,\n  4877,\n  4877,\n  4877,\n  185,\n  139,\n  399,\n  276,\n  4065,\n  4065,\n  4065,\n  4840,\n  4840,\n  4840,\n  1948,\n  25,\n  184,\n  184,\n  184,\n  154,\n  1636,\n  30,\n  71,\n  497,\n  698,\n  698,\n  698,\n  1813,\n  21,\n  3,\n  135,\n  47,\n  729,\n  207,\n  804,\n  31,\n  5,\n  252,\n  32,\n  657,\n  2,\n  1342,\n  497,\n  166,\n  522,\n  102,\n  1657,\n  1657,\n  1657,\n  157,\n  1282,\n  1282,\n  1282,\n  365,\n  365,\n  365,\n  3726,\n  3726,\n  3726,\n  263,\n  84,\n  170,\n  562,\n  27,\n  43,\n  2045,\n  2045,\n  2045,\n  3,\n  325,\n  144,\n  4646,\n  4646,\n  4646,\n  1611,\n  82,\n  1601,\n  1601,\n  1601,\n  1656,\n  1656,\n  1656,\n  259,\n  963,\n  900,\n  1107,\n  1225,\n  543,\n  56,\n  0,\n  876,\n  2235,\n  2235,\n  2235,\n  218,\n  378,\n  378,\n  378,\n  4806,\n  4806,\n  4806,\n  276,\n  53,\n  176,\n  2050,\n  3659,\n  1167,\n  804,\n  117,\n  3113,\n  3113,\n  3113,\n  130,\n  1118,\n  133,\n  48,\n  2,\n  1,\n  206,\n  55,\n  55,\n  55,\n  2049,\n  366,\n  558,\n  64,\n  1729,\n  85,\n  95,\n  608,\n  91,\n  28,\n  105,\n  153,\n  342,\n  15,\n  0,\n  438,\n  20,\n  644,\n  1750,\n  276,\n  3458,\n  3458,\n  3458,\n  89,\n  1274,\n  551,\n  971,\n  294,\n  302,\n  1000,\n  172,\n  107,\n  21,\n  23,\n  1,\n  371,\n  104,\n  2222,\n  2,\n  27,\n  4976,\n  4976,\n  4976,\n  1663,\n  1663,\n  1663,\n  3121,\n  3121,\n  3121,\n  296,\n  672,\n  754,\n  83,\n  38,\n  710,\n  4678,\n  4678,\n  4678,\n  2,\n  2128,\n  2128,\n  2128,\n  48,\n  198,\n  489,\n  8,\n  798,\n  580,\n  0,\n  34,\n  4840,\n  4840,\n  4840,\n  44,\n  1419,\n  2838,\n  2838,\n  2838,\n  22,\n  463,\n  4657,\n  4657,\n  4657,\n  1651,\n  310,\n  0,\n  35,\n  31,\n  3618,\n  3618,\n  3618,\n  3795,\n  3795,\n  3795,\n  1498,\n  2,\n  1377,\n  347,\n  147,\n  32,\n  114,\n  303,\n  52,\n  510,\n  510,\n  510,\n  30,\n  35,\n  683,\n  0,\n  4983,\n  4983,\n  4983,\n  579,\n  42,\n  1162,\n  3189,\n  3189,\n  3189,\n  165,\n  1,\n  2872,\n  2872,\n  2872,\n  47,\n  1355,\n  1092,\n  2108,\n  2108,\n  2108,\n  4373,\n  15,\n  322,\n  1053,\n  213,\n  331,\n  344,\n  23,\n  1477,\n  1477,\n  1477,\n  2190,\n  2190,\n  2190,\n  114,\n  62,\n  650,\n  41,\n  1439,\n  1439,\n  1439,\n  30,\n  595,\n  1882,\n  1186,\n  25,\n  334,\n  4677,\n  4677,\n  4677,\n  91,\n  4091,\n  528,\n  1756,\n  1756,\n  1756,\n  45,\n  40,\n  316,\n  0,\n  279,\n  1634,\n  673,\n  61,\n  1517,\n  66,\n  407,\n  106,\n  251,\n  22,\n  3731,\n  3731,\n  3731,\n  218,\n  533,\n  85,\n  1050,\n  1050,\n  1050,\n  458,\n  1435,\n  363,\n  94,\n  1431,\n  126,\n  930,\n  3655,\n  1461,\n  1,\n  755,\n  231,\n  36,\n  271,\n  2843,\n  92,\n  48,\n  0,\n  603,\n  30,\n  320,\n  131,\n  24,\n  1369,\n  30,\n  1390,\n  308,\n  1,\n  2823,\n  2823,\n  2823,\n  3691,\n  3691,\n  3691,\n  1934,\n  373,\n  548,\n  726,\n  50,\n  1406,\n  783,\n  304,\n  353,\n  35,\n  670,\n  365,\n  344,\n  628,\n  1885,\n  1885,\n  1885,\n  30,\n  60,\n  34,\n  34,\n  2550,\n  691,\n  3172,\n  3172,\n  3172,\n  35,\n  978,\n  4810,\n  4810,\n  4810,\n  127,\n  7,\n  4430,\n  4430,\n  4430,\n  2173,\n  378,\n  340,\n  719,\n  26,\n  642,\n  646,\n  4585,\n  4585,\n  4585,\n  549,\n  3227,\n  3227,\n  3227,\n  50,\n  378,\n  67,\n  2,\n  66,\n  89,\n  308,\n  964,\n  467,\n  4986,\n  4986,\n  4986,\n  4343,\n  4343,\n  4343,\n  789,\n  139,\n  32,\n  18,\n  172,\n  954,\n  44,\n  3285,\n  3285,\n  3285,\n  2,\n  1485,\n  24,\n  885,\n  81,\n  12,\n  2364,\n  292,\n  415,\n  1376,\n  4366,\n  4366,\n  4366,\n  29,\n  902,\n  140,\n  85,\n  1208,\n  0,\n  522,\n  26,\n  1847,\n  622,\n  701,\n  701,\n  701,\n  1072,\n  1072,\n  1072,\n  59,\n  25,\n  190,\n  921,\n  55,\n  77,\n  53,\n  4387,\n  4387,\n  4387,\n  2173,\n  2173,\n  2173,\n  749,\n  63,\n  0,\n  703,\n  703,\n  703,\n  143,\n  125,\n  181,\n  15,\n  190,\n  715,\n  4029,\n  4029,\n  4029,\n  27,\n  2042,\n  2042,\n  2042,\n  2221,\n  195,\n  253,\n  605,\n  96,\n  62,\n  48,\n  47,\n  36,\n  2387,\n  2387,\n  2387,\n  22,\n  192,\n  38,\n  91,\n  1721,\n  396,\n  396,\n  396,\n  42,\n  374,\n  64,\n  85,\n  584,\n  25,\n  1944,\n  46,\n  1052,\n  1052,\n  1052,\n  340,\n  22,\n  33,\n  104,\n  0,\n  852,\n  21,\n  419,\n  2292,\n  2292,\n  2292,\n  57,\n  64,\n  1815,\n  312,\n  1843,\n  1843,\n  1843,\n  320,\n  79,\n  269,\n  369,\n  369,\n  369,\n  78,\n  3141,\n  3141,\n  3141,\n  44,\n  64,\n  4418,\n  30,\n  92,\n  175,\n  97,\n  4724,\n  4724,\n  4724,\n  828,\n  3451,\n  415,\n  4148,\n  4148,\n  4148,\n  46,\n  224,\n  0,\n  2198,\n  2198,\n  2198,\n  1212,\n  1212,\n  1212,\n  31,\n  1129,\n  161,\n  1908,\n  1908,\n  1908,\n  714,\n  322,\n  42,\n  3816,\n  3816,\n  3816,\n  33,\n  249,\n  249,\n  249,\n  3,\n  22,\n  48,\n  1641,\n  3635,\n  3788,\n  3788,\n  3788,\n  215,\n  592,\n  1660,\n  1471,\n  447,\n  2,\n  0,\n  1,\n  665,\n  1202,\n  615,\n  1575,\n  277,\n  277,\n  277,\n  38,\n  397,\n  30,\n  1166,\n  1118,\n  116,\n  76,\n  52,\n  946,\n  21,\n  57,\n  153,\n  55,\n  41,\n  1900,\n  31,\n  2964,\n  2964,\n  2964,\n  473,\n  4095,\n  4095,\n  4095,\n  0,\n  1771,\n  733,\n  21,\n  162,\n  625,\n  1118,\n  20,\n  376,\n  395,\n  395,\n  395,\n  4,\n  4023,\n  4023,\n  4023,\n  628,\n  3671,\n  3671,\n  3671,\n  1,\n  781,\n  675,\n  334,\n  83,\n  619,\n  580,\n  56,\n  95,\n  85,\n  44,\n  23,\n  1096,\n  150,\n  31,\n  1811,\n  1811,\n  1811,\n  3033,\n  3033,\n  3033,\n  747,\n  747,\n  747,\n  146,\n  243,\n  2149,\n  497,\n  25,\n  206,\n  764,\n  764,\n  764,\n  4357,\n  4357,\n  4357,\n  4720,\n  4720,\n  4720,\n  339,\n  25,\n  0,\n  310,\n  188,\n  4041,\n  4041,\n  4041,\n  50,\n  706,\n  733,\n  64,\n  722,\n  4077,\n  4077,\n  4077,\n  4515,\n  4515,\n  4515,\n  1213,\n  1448,\n  1165,\n  0,\n  26,\n  67,\n  2379,\n  2379,\n  2379,\n  59,\n  84,\n  38,\n  1474,\n  351,\n  494,\n  808,\n  26,\n  311,\n  311,\n  311,\n  180,\n  1638,\n  1638,\n  1638,\n  1834,\n  1834,\n  1834,\n  22,\n  3732,\n  3732,\n  3732,\n  70,\n  237,\n  96,\n  2878,\n  133,\n  610,\n  4369,\n  4369,\n  4369,\n  53,\n  1017,\n  1017,\n  1017,\n  765,\n  765,\n  765,\n  1050,\n  1050,\n  1050,\n  23,\n  1253,\n  282,\n  318,\n  375,\n  7,\n  2054,\n  409,\n  31,\n  18,\n  0,\n  37,\n  3,\n  42,\n  370,\n  91,\n  31,\n  914,\n  270,\n  733,\n  31,\n  183,\n  31,\n  1,\n  11,\n  633,\n  1,\n  101,\n  101,\n  101,\n  27,\n  70,\n  186,\n  248,\n  24,\n  1836,\n  243,\n  28,\n  880,\n  30,\n  133,\n  27,\n  20,\n  792,\n  363,\n  1063,\n  27,\n  24,\n  5,\n  633,\n  633,\n  633,\n  37,\n  722,\n  1562,\n  1562,\n  1562,\n  0,\n  0,\n  16,\n  54,\n  39,\n  277,\n  857,\n  15,\n  1097,\n  38,\n  802,\n  1065,\n  34,\n  3223,\n  3223,\n  3223,\n  38,\n  1957,\n  1957,\n  1957,\n  513,\n  604,\n  23,\n  3337,\n  3337,\n  3337,\n  881,\n  590,\n  30,\n  9,\n  7,\n  274,\n  22,\n  23,\n  3253,\n  3253,\n  3253,\n  105,\n  58,\n  130,\n  843,\n  843,\n  843,\n  160,\n  191,\n  223,\n  223,\n  223,\n  196,\n  1844,\n  1844,\n  1844,\n  1,\n  9,\n  1,\n  53,\n  25,\n  908,\n  769,\n  398,\n  2116,\n  22,\n  263,\n  2974,\n  3442,\n  3442,\n  3442,\n  49,\n  801,\n  24,\n  24,\n  911,\n  68,\n  69,\n  255,\n  321,\n  26,\n  41,\n  0,\n  337,\n  20,\n  817,\n  1865,\n  2922,\n  2922,\n  2922,\n  350,\n  55,\n  71,\n  1974,\n  1974,\n  1974,\n  131,\n  911,\n  911,\n  911,\n  4947,\n  4947,\n  4947,\n  1,\n  25,\n  21,\n  372,\n  41,\n  141,\n  44,\n  3,\n  1,\n  761,\n  23,\n  1960,\n  1960,\n  1960,\n  25,\n  76,\n  269,\n  799,\n  799,\n  799,\n  903,\n  903,\n  903,\n  11,\n  7,\n  48,\n  3,\n  28,\n  4737,\n  4737,\n  4737,\n  176,\n  1,\n  3344,\n  800,\n  0,\n  132,\n  1869,\n  1869,\n  1869,\n  21,\n  24,\n  199,\n  27,\n  43,\n  1,\n  71,\n  1,\n  4176,\n  4176,\n  4176,\n  1843,\n  1843,\n  1843,\n  4106,\n  4106,\n  4106,\n  80,\n  1015,\n  1015,\n  1015,\n  110,\n  1460,\n  122,\n  2947,\n  28,\n  12,\n  0,\n  30,\n  36,\n  112,\n  141,\n  756,\n  61,\n  71,\n  282,\n  27,\n  1816,\n  1816,\n  1816,\n  2302,\n  1726,\n  125,\n  89,\n  41,\n  234,\n  0,\n  124,\n  22,\n  4127,\n  4127,\n  4127,\n  4546,\n  4546,\n  4546,\n  805,\n  70,\n  0,\n  1592,\n  568,\n  851,\n  28,\n  4449,\n  4449,\n  4449,\n  0,\n  0,\n  327,\n  884,\n  1,\n  1261,\n  338,\n  322,\n  64,\n  90,\n  85,\n  0,\n  43,\n  239,\n  8,\n  118,\n  1512,\n  841,\n  452,\n  251,\n  859,\n  45,\n  789,\n  1550,\n  22,\n  1,\n  26,\n  120,\n  1370,\n  24,\n  50,\n  0,\n  231,\n  1056,\n  21,\n  218,\n  885,\n  129,\n  20,\n  2590,\n  2590,\n  2590,\n  377,\n  0,\n  2639,\n  2639,\n  2639,\n  1556,\n  1556,\n  1556,\n  33,\n  872,\n  24,\n  0,\n  1080,\n  0,\n  4145,\n  4145,\n  4145,\n  32,\n  0,\n  33,\n  1122,\n  3058,\n  51,\n  1561,\n  2263,\n  2263,\n  2263,\n  34,\n  39,\n  0,\n  4443,\n  4443,\n  4443,\n  889,\n  346,\n  1295,\n  1,\n  1894,\n  1894,\n  1894,\n  21,\n  32,\n  3303,\n  3303,\n  3303,\n  23,\n  102,\n  1,\n  59,\n  46,\n  836,\n  3319,\n  3319,\n  3319,\n  1408,\n  20,\n  924,\n  563,\n  563,\n  563,\n  2846,\n  2846,\n  2846,\n  1,\n  370,\n  1646,\n  4339,\n  46,\n  915,\n  952,\n  3609,\n  548,\n  1220,\n  2,\n  369,\n  539,\n  539,\n  539,\n  4528,\n  4528,\n  4528,\n  513,\n  148,\n  3166,\n  1910,\n  1910,\n  1910,\n  930,\n  79,\n  127,\n  21,\n  545,\n  864,\n  591,\n  3723,\n  539,\n  120,\n  367,\n  20,\n  24,\n  222,\n  162,\n  56,\n  23,\n  484,\n  4,\n  59,\n  1,\n  162,\n  240,\n  9,\n  458,\n  952,\n  1022,\n  32,\n  20,\n  155,\n  131,\n  51,\n  26,\n  1,\n  4414,\n  4414,\n  4414,\n  1134,\n  0,\n  360,\n  0,\n  147,\n  70,\n  890,\n  126,\n  29,\n  114,\n  771,\n  860,\n  609,\n  22,\n  68,\n  977,\n  173,\n  1181,\n  20,\n  2668,\n  2668,\n  2668,\n  45,\n  40,\n  367,\n  113,\n  958,\n  863,\n  863,\n  863,\n  180,\n  26,\n  1,\n  43,\n  1611,\n  1611,\n  1611,\n  1376,\n  24,\n  4714,\n  4714,\n  4714,\n  2983,\n  2983,\n  2983,\n  3,\n  0,\n  0,\n  1096,\n  31,\n  64,\n  4195,\n  4195,\n  4195,\n  185,\n  3939,\n  3939,\n  3939,\n  784,\n  334,\n  22,\n  26,\n  3531,\n  3531,\n  3531,\n  1599,\n  1599,\n  1599,\n  4127,\n  4127,\n  4127,\n  54,\n  126,\n  1055,\n  79,\n  371,\n  1187,\n  28,\n  0,\n  116,\n  1645,\n  170,\n  22,\n  1960,\n  458,\n  550,\n  25,\n  39,\n  43,\n  269,\n  892,\n  1,\n  0,\n  592,\n  592,\n  592,\n  1,\n  555,\n  555,\n  555,\n  1822,\n  1822,\n  1822,\n  14,\n  1463,\n  1463,\n  1463,\n  52,\n  365,\n  92,\n  41,\n  36,\n  3079,\n  3079,\n  3079,\n  1156,\n  525,\n  604,\n  2606,\n  1671,\n  201,\n  2249,\n  2249,\n  2249,\n  29,\n  345,\n  2938,\n  24,\n  3875,\n  3875,\n  3875,\n  925,\n  925,\n  925,\n  366,\n  31,\n  298,\n  177,\n  185,\n  36,\n  189,\n  546,\n  486,\n  1,\n  52,\n  1267,\n  71,\n  1718,\n  2325,\n  2325,\n  2325,\n  4059,\n  47,\n  1646,\n  1687,\n  38,\n  739,\n  499,\n  37,\n  608,\n  23,\n  22,\n  6,\n  103,\n  38,\n  0,\n  101,\n  3431,\n  3431,\n  3431,\n  4044,\n  4044,\n  4044,\n  225,\n  527,\n  905,\n  905,\n  905,\n  3387,\n  3387,\n  3387,\n  46,\n  519,\n  376,\n  376,\n  376,\n  2344,\n  216,\n  743,\n  743,\n  743,\n  3671,\n  3671,\n  3671,\n  328,\n  508,\n  41,\n  4001,\n  4001,\n  4001,\n  88,\n  1,\n  25,\n  365,\n  40,\n  1543,\n  374,\n  461,\n  324,\n  2402,\n  2,\n  1983,\n  1983,\n  1983,\n  2073,\n  441,\n  24,\n  145,\n  137,\n  4993,\n  4993,\n  4993,\n  36,\n  1,\n  155,\n  317,\n  54,\n  276,\n  260,\n  2396,\n  3463,\n  3463,\n  3463,\n  1137,\n  4,\n  96,\n  3201,\n  3201,\n  3201,\n  2,\n  60,\n  2369,\n  1567,\n  1,\n  235,\n  113,\n  52,\n  392,\n  2360,\n  175,\n  175,\n  175,\n  415,\n  1269,\n  1269,\n  1269,\n  0,\n  30,\n  632,\n  207,\n  365,\n  3434,\n  3434,\n  3434,\n  222,\n  167,\n  1428,\n  3867,\n  3867,\n  3867,\n  1723,\n  172,\n  99,\n  1030,\n  192,\n  316,\n  911,\n  124,\n  1066,\n  43,\n  236,\n  3589,\n  575,\n  449,\n  65,\n  366,\n  76,\n  1382,\n  547,\n  104,\n  2,\n  1947,\n  1947,\n  1947,\n  187,\n  198,\n  3554,\n  3554,\n  3554,\n  1378,\n  51,\n  4624,\n  185,\n  217,\n  3,\n  258,\n  4650,\n  4650,\n  4650,\n  47,\n  1071,\n  61,\n  976,\n  37,\n  978,\n  978,\n  978,\n  1717,\n  1717,\n  1717,\n  12,\n  493,\n  0,\n  784,\n  22,\n  1193,\n  1193,\n  1193,\n  50,\n  2310,\n  1299,\n  7,\n  1271,\n  1271,\n  1271,\n  3098,\n  62,\n  29,\n  667,\n  341,\n  358,\n  4075,\n  4075,\n  4075,\n  2738,\n  2738,\n  2738,\n  3564,\n  3564,\n  3564,\n  2472,\n  186,\n  2,\n  132,\n  409,\n  545,\n  1283,\n  1283,\n  1283,\n  1479,\n  593,\n  592,\n  231,\n  231,\n  231,\n  1,\n  2524,\n  2524,\n  2524,\n  157,\n  3725,\n  151,\n  334,\n  2503,\n  1063,\n  1063,\n  1063,\n  11,\n  761,\n  29,\n  53,\n  579,\n  74,\n  129,\n  32,\n  233,\n  3821,\n  3821,\n  3821,\n  1287,\n  102,\n  923,\n  339,\n  79,\n  146,\n  2470,\n  2470,\n  2470,\n  101,\n  64,\n  2965,\n  2965,\n  2965,\n  209,\n  1,\n  1731,\n  367,\n  156,\n  223,\n  194,\n  20,\n  1081,\n  1081,\n  1081,\n  62,\n  40,\n  518,\n  220,\n  317,\n  1081,\n  4213,\n  4213,\n  4213,\n  1743,\n  3607,\n  3607,\n  3607,\n  1487,\n  664,\n  519,\n  1,\n  2511,\n  321,\n  3370,\n  3370,\n  3370,\n  32,\n  36,\n  1738,\n  111,\n  1228,\n  1228,\n  1228,\n  30,\n  35,\n  421,\n  942,\n  942,\n  942,\n  18,\n  29,\n  611,\n  205,\n  4981,\n  4981,\n  4981,\n  998,\n  974,\n  2763,\n  2856,\n  2856,\n  2856,\n  3996,\n  3996,\n  3996,\n  99,\n  1036,\n  1036,\n  1036,\n  367,\n  1664,\n  367,\n  367,\n  367,\n  1167,\n  111,\n  372,\n  796,\n  796,\n  796,\n  113,\n  113,\n  113,\n  210,\n  56,\n  127,\n  791,\n  47,\n  855,\n  65,\n  1140,\n  22,\n  448,\n  1224,\n  21,\n  33,\n  1147,\n  113,\n  119,\n  557,\n  26,\n  48,\n  226,\n  315,\n  0,\n  302,\n  60,\n  1189,\n  1189,\n  1189,\n  3124,\n  3124,\n  3124,\n  5,\n  25,\n  47,\n  37,\n  923,\n  1733,\n  1733,\n  1733,\n  22,\n  0,\n  21,\n  179,\n  0,\n  679,\n  692,\n  1,\n  1059,\n  1059,\n  1059,\n  24,\n  43,\n  0,\n  3843,\n  3843,\n  3843,\n  4,\n  1,\n  2728,\n  1727,\n  2536,\n  1123,\n  0,\n  2947,\n  10,\n  3874,\n  3874,\n  3874,\n  4260,\n  962,\n  225,\n  1821,\n  84,\n  0,\n  3576,\n  3576,\n  3576,\n  138,\n  3474,\n  3474,\n  3474,\n  4045,\n  4045,\n  4045,\n  1093,\n  36,\n  3406,\n  133,\n  113,\n  236,\n  249,\n  2737,\n  53,\n  1757,\n  157,\n  968,\n  0,\n  848,\n  59,\n  2094,\n  2094,\n  2094,\n  304,\n  1978,\n  29,\n  921,\n  1,\n  3757,\n  3757,\n  3757,\n  306,\n  20,\n  145,\n  26,\n  189,\n  4678,\n  4678,\n  4678,\n  202,\n  76,\n  28,\n  94,\n  74,\n  18,\n  1429,\n  634,\n  0,\n  1420,\n  35,\n  147,\n  339,\n  2240,\n  2240,\n  2240,\n  22,\n  1752,\n  101,\n  4878,\n  4878,\n  4878,\n  230,\n  112,\n  38,\n  71,\n  359,\n  39,\n  74,\n  1795,\n  30,\n  3990,\n  3990,\n  3990,\n  40,\n  2572,\n  2572,\n  2572,\n  383,\n  30,\n  836,\n  55,\n  29,\n  356,\n  1738,\n  35,\n  1839,\n  1839,\n  1839,\n  2125,\n  2125,\n  2125,\n  761,\n  96,\n  23,\n  204,\n  6,\n  53,\n  1,\n  1829,\n  125,\n  284,\n  743,\n  26,\n  20,\n  301,\n  1867,\n  3889,\n  3889,\n  3889,\n  327,\n  281,\n  2999,\n  2999,\n  2999,\n  1151,\n  22,\n  66,\n  725,\n  1367,\n  4,\n  4601,\n  4601,\n  4601,\n  6,\n  706,\n  89,\n  25,\n  545,\n  44,\n  30,\n  91,\n  26,\n  21,\n  1218,\n  52,\n  1520,\n  456,\n  1741,\n  2496,\n  2496,\n  2496,\n  278,\n  1050,\n  362,\n  54,\n  1,\n  37,\n  249,\n  21,\n  1269,\n  38,\n  1,\n  2021,\n  2021,\n  2021,\n  89,\n  179,\n  1126,\n  1126,\n  1126,\n  2,\n  752,\n  752,\n  752,\n  29,\n  2356,\n  2356,\n  2356,\n  373,\n  1120,\n  190,\n  31,\n  1376,\n  4318,\n  4683,\n  20,\n  45,\n  55,\n  0,\n  111,\n  930,\n  464,\n  25,\n  1812,\n  265,\n  696,\n  906,\n  326,\n  326,\n  326,\n  51,\n  294,\n  685,\n  2309,\n  2309,\n  2309,\n  298,\n  333,\n  2545,\n  2545,\n  2545,\n  70,\n  1540,\n  559,\n  501,\n  710,\n  1159,\n  41,\n  617,\n  1200,\n  1125,\n  849,\n  1437,\n  1437,\n  1437,\n  916,\n  390,\n  138,\n  175,\n  0,\n  227,\n  332,\n  1472,\n  2550,\n  2550,\n  2550,\n  1130,\n  16,\n  1796,\n  0,\n  393,\n  366,\n  26,\n  2817,\n  1,\n  711,\n  907,\n  26,\n  41,\n  4320,\n  4320,\n  4320,\n  1510,\n  1510,\n  1510,\n  2,\n  132,\n  1379,\n  1501,\n  605,\n  64,\n  186,\n  1101,\n  89,\n  1574,\n  80,\n  187,\n  329,\n  118,\n  59,\n  56,\n  2,\n  212,\n  1025,\n  174,\n  1,\n  25,\n  253,\n  1431,\n  2193,\n  2193,\n  2193,\n  1956,\n  916,\n  916,\n  916,\n  2446,\n  2620,\n  21,\n  43,\n  6,\n  139,\n  0,\n  2607,\n  2607,\n  2607,\n  0,\n  1365,\n  274,\n  33,\n  241,\n  2285,\n  52,\n  1,\n  61,\n  235,\n  235,\n  235,\n  183,\n  30,\n  0,\n  1,\n  1,\n  765,\n  1,\n  3533,\n  3533,\n  3533,\n  1042,\n  29,\n  4190,\n  4190,\n  4190,\n  26,\n  1615,\n  27,\n  229,\n  368,\n  368,\n  368,\n  250,\n  8,\n  1,\n  0,\n  32,\n  355,\n  31,\n  432,\n  32,\n  20,\n  22,\n  22,\n  44,\n  146,\n  1763,\n  491,\n  491,\n  491,\n  0,\n  180,\n  39,\n  30,\n  50,\n  941,\n  1180,\n  328,\n  1,\n  100,\n  1778,\n  707,\n  293,\n  32,\n  1790,\n  31,\n  825,\n  31,\n  11,\n  24,\n  429,\n  0,\n  20,\n  1852,\n  79,\n  109,\n  0,\n  0,\n  2579,\n  2579,\n  2579,\n  74,\n  30,\n  29,\n  112,\n  3392,\n  3087,\n  3087,\n  3087,\n  19,\n  1554,\n  1554,\n  1554,\n  23,\n  2393,\n  131,\n  347,\n  444,\n  1842,\n  1681,\n  3,\n  6,\n  999,\n  34,\n  1193,\n  183,\n  880,\n  880,\n  880,\n  919,\n  919,\n  919,\n  966,\n  966,\n  966,\n  1242,\n  3275,\n  3275,\n  3275,\n  1,\n  0,\n  137,\n  665,\n  25,\n  31,\n  65,\n  70,\n  1389,\n  3097,\n  845,\n  2669,\n  91,\n  370,\n  213,\n  1850,\n  38,\n  138,\n  218,\n  624,\n  624,\n  624,\n  93,\n  1955,\n  1955,\n  1955,\n  265,\n  1297,\n  21,\n  1577,\n  1994,\n  1994,\n  1994,\n  113,\n  552,\n  57,\n  834,\n  75,\n  0,\n  1187,\n  3400,\n  3400,\n  3400,\n  2250,\n  34,\n  61,\n  2885,\n  2885,\n  2885,\n  0,\n  35,\n  35,\n  35,\n  1892,\n  1862,\n  1897,\n  1897,\n  1897,\n  235,\n  45,\n  43,\n  3906,\n  3906,\n  3906,\n  121,\n  2751,\n  21,\n  2072,\n  2072,\n  2072,\n  36,\n  83,\n  1881,\n  483,\n  2506,\n  2987,\n  2987,\n  2987,\n  419,\n  6,\n  32,\n  4860,\n  4860,\n  4860,\n  82,\n  385,\n  4,\n  1578,\n  1578,\n  1578,\n  3072,\n  3072,\n  3072,\n  7,\n  574,\n  104,\n  265,\n  853,\n  0,\n  60,\n  1626,\n  91,\n  242,\n  58,\n  1,\n  4465,\n  3005,\n  3005,\n  3005,\n  250,\n  1864,\n  2215,\n  1858,\n  20,\n  105,\n  458,\n  20,\n  46,\n  26,\n  29,\n  220,\n  3818,\n  3818,\n  3818,\n  88,\n  22,\n  462,\n  339,\n  0,\n  2,\n  0,\n  1239,\n  1239,\n  1239,\n  33,\n  40,\n  87,\n  2687,\n  2687,\n  2687,\n  0,\n  856,\n  28,\n  35,\n  2496,\n  2496,\n  2496,\n  20,\n  44,\n  498,\n  205,\n  61,\n  557,\n  60,\n  1984,\n  646,\n  1511,\n  182,\n  6,\n  625,\n  29,\n  246,\n  2044,\n  475,\n  4162,\n  4162,\n  4162,\n  21,\n  1971,\n  0,\n  1998,\n  3016,\n  20,\n  44,\n  29,\n  32,\n  35,\n  110,\n  125,\n  1470,\n  737,\n  33,\n  803,\n  1036,\n  1861,\n  31,\n  0,\n  4866,\n  4866,\n  4866,\n  12,\n  44,\n  889,\n  889,\n  889,\n  367,\n  1810,\n  1172,\n  1172,\n  1172,\n  24,\n  892,\n  307,\n  1585,\n  900,\n  191,\n  2985,\n  0,\n  1946,\n  1946,\n  1946,\n  344,\n  344,\n  344,\n  4551,\n  4551,\n  4551,\n  1670,\n  1670,\n  1670,\n  852,\n  123,\n  1598,\n  22,\n  366,\n  23,\n  69,\n  132,\n  3373,\n  3373,\n  3373,\n  366,\n  27,\n  148,\n  1654,\n  599,\n  72,\n  4561,\n  4561,\n  4561,\n  502,\n  1731,\n  1731,\n  1731,\n  2186,\n  2184,\n  197,\n  22,\n  189,\n  933,\n  457,\n  2372,\n  2504,\n  488,\n  889,\n  3976,\n  3976,\n  3976,\n  1122,\n  988,\n  38,\n  1393,\n  1393,\n  1393,\n  1877,\n  393,\n  470,\n  1513,\n  343,\n  362,\n  175,\n  42,\n  390,\n  818,\n  0,\n  68,\n  3096,\n  3096,\n  3096,\n  1002,\n  1277,\n  332,\n  1189,\n  2058,\n  171,\n  650,\n  650,\n  650,\n  792,\n  105,\n  2215,\n  21,\n  112,\n  23,\n  118,\n  2470,\n  46,\n  4422,\n  4422,\n  4422,\n  294,\n  105,\n  716,\n  28,\n  57,\n  222,\n  4616,\n  4616,\n  4616,\n  372,\n  1146,\n  1202,\n  1202,\n  1202,\n  4119,\n  4119,\n  4119,\n  444,\n  1326,\n  1326,\n  1326,\n  1,\n  4898,\n  4898,\n  4898,\n  941,\n  603,\n  4385,\n  4385,\n  4385,\n  46,\n  573,\n  181,\n  219,\n  3481,\n  3481,\n  3481,\n  518,\n  0,\n  4143,\n  4143,\n  4143,\n  366,\n  20,\n  1618,\n  104,\n  157,\n  74,\n  46,\n  173,\n  1,\n  3373,\n  3373,\n  3373,\n  950,\n  950,\n  950,\n  1,\n  492,\n  2372,\n  2372,\n  2372,\n  1,\n  28,\n  1873,\n  1873,\n  1873,\n  1108,\n  1108,\n  1108,\n  566,\n  302,\n  2848,\n  2848,\n  2848,\n  39,\n  2366,\n  2366,\n  2366,\n  40,\n  2379,\n  2379,\n  2379,\n  542,\n  134,\n  4232,\n  4232,\n  4232,\n  866,\n  920,\n  3135,\n  3135,\n  3135,\n  533,\n  97,\n  22,\n  258,\n  2166,\n  3157,\n  1101,\n  1101,\n  1101,\n  43,\n  64,\n  340,\n  25,\n  4973,\n  4973,\n  4973,\n  3421,\n  3421,\n  3421,\n  377,\n  1163,\n  1220,\n  22,\n  1299,\n  1664,\n  1664,\n  1664,\n  42,\n  185,\n  171,\n  58,\n  705,\n  26,\n  43,\n  33,\n  671,\n  49,\n  0,\n  53,\n  1107,\n  165,\n  1743,\n  556,\n  3062,\n  3062,\n  3062,\n  4932,\n  4932,\n  4932,\n  366,\n  38,\n  44,\n  4845,\n  4845,\n  4845,\n  746,\n  3155,\n  36,\n  119,\n  2979,\n  218,\n  4093,\n  129,\n  1485,\n  73,\n  30,\n  43,\n  25,\n  4201,\n  4201,\n  4201,\n  38,\n  21,\n  896,\n  2,\n  70,\n  49,\n  34,\n  1905,\n  467,\n  2748,\n  132,\n  478,\n  500,\n  1,\n  38,\n  365,\n  2442,\n  521,\n  0,\n  101,\n  1383,\n  62,\n  4633,\n  4633,\n  4633,\n  601,\n  2061,\n  64,\n  2353,\n  2353,\n  2353,\n  718,\n  717,\n  2245,\n  786,\n  1562,\n  41,\n  27,\n  1254,\n  1254,\n  1254,\n  588,\n  190,\n  102,\n  24,\n  43,\n  2217,\n  24,\n  2452,\n  2452,\n  2452,\n  26,\n  1452,\n  1187,\n  1187,\n  1187,\n  211,\n  446,\n  81,\n  21,\n  48,\n  1,\n  85,\n  255,\n  1874,\n  1874,\n  1874,\n  3813,\n  97,\n  2221,\n  154,\n  429,\n  1463,\n  1463,\n  1463,\n  1032,\n  28,\n  479,\n  48,\n  2047,\n  4980,\n  4980,\n  4980,\n  1927,\n  1927,\n  1927,\n  4605,\n  4605,\n  4605,\n  1,\n  0,\n  1486,\n  4299,\n  4299,\n  4299,\n  369,\n  506,\n  367,\n  37,\n  1313,\n  1313,\n  1313,\n  1621,\n  9,\n  4727,\n  4727,\n  4727,\n  3164,\n  3164,\n  3164,\n  1252,\n  1252,\n  1252,\n  1144,\n  1144,\n  1144,\n  1514,\n  1514,\n  1514,\n  0,\n  1435,\n  213,\n  575,\n  58,\n  1548,\n  187,\n  339,\n  64,\n  60,\n  205,\n  1176,\n  1176,\n  1176,\n  378,\n  1119,\n  3780,\n  3780,\n  3780,\n  1,\n  246,\n  25,\n  1083,\n  1083,\n  1083,\n  66,\n  101,\n  2463,\n  3925,\n  3925,\n  3925,\n  471,\n  2171,\n  366,\n  244,\n  478,\n  3174,\n  3174,\n  3174,\n  247,\n  201,\n  0,\n  2431,\n  4348,\n  4348,\n  4348,\n  29,\n  808,\n  263,\n  1444,\n  1444,\n  1444,\n  80,\n  122,\n  378,\n  174,\n  2659,\n  2659,\n  2659,\n  415,\n  21,\n  42,\n  3059,\n  3059,\n  3059,\n  1,\n  1222,\n  2060,\n  40,\n  49,\n  288,\n  572,\n  3942,\n  3942,\n  3942,\n  1449,\n  2106,\n  2106,\n  2106,\n  1186,\n  40,\n  1201,\n  1952,\n  203,\n  48,\n  898,\n  421,\n  31,\n  2226,\n  2226,\n  2226,\n  45,\n  400,\n  184,\n  195,\n  2790,\n  2790,\n  2790,\n  99,\n  4239,\n  4239,\n  4239,\n  78,\n  177,\n  793,\n  545,\n  3252,\n  3252,\n  3252,\n  78,\n  86,\n  2310,\n  2310,\n  2310,\n  1345,\n  1721,\n  1,\n  115,\n  174,\n  3626,\n  57,\n  1696,\n  1696,\n  1696,\n  492,\n  492,\n  492,\n  2330,\n  2285,\n  2285,\n  2285,\n  40,\n  2867,\n  2867,\n  2867,\n  2513,\n  2513,\n  2513,\n  85,\n  2099,\n  1759,\n  4508,\n  4508,\n  4508,\n  4951,\n  4951,\n  4951,\n  21,\n  564,\n  1068,\n  29,\n  1696,\n  433,\n  55,\n  1943,\n  4264,\n  4264,\n  4264,\n  994,\n  21,\n  2707,\n  0,\n  10,\n  258,\n  258,\n  258,\n  948,\n  51,\n  504,\n  268,\n  251,\n  1,\n  856,\n  2629,\n  2629,\n  2629,\n  19,\n  407,\n  4431,\n  4431,\n  4431,\n  1,\n  505,\n  3883,\n  607,\n  48,\n  115,\n  3477,\n  3477,\n  3477,\n  54,\n  80,\n  2827,\n  2827,\n  2827,\n  1101,\n  526,\n  1034,\n  102,\n  47,\n  921,\n  228,\n  32,\n  1,\n  58,\n  20,\n  2398,\n  893,\n  1730,\n  414,\n  47,\n  224,\n  334,\n  246,\n  928,\n  338,\n  1948,\n  1948,\n  1948,\n  4161,\n  4161,\n  4161,\n  1517,\n  1241,\n  2094,\n  2094,\n  2094,\n  2380,\n  98,\n  3690,\n  3690,\n  3690,\n  578,\n  439,\n  0,\n  145,\n  190,\n  1217,\n  1,\n  3538,\n  3538,\n  3538,\n  512,\n  1125,\n  2,\n  138,\n  713,\n  367,\n  476,\n  73,\n  62,\n  544,\n  1387,\n  76,\n  550,\n  0,\n  126,\n  248,\n  967,\n  967,\n  967,\n  826,\n  975,\n  181,\n  446,\n  1266,\n  34,\n  460,\n  31,\n  1568,\n  1,\n  2,\n  2201,\n  2201,\n  2201,\n  13,\n  36,\n  24,\n  234,\n  234,\n  234,\n  368,\n  1468,\n  1478,\n  4221,\n  4221,\n  4221,\n  248,\n  2673,\n  2673,\n  2673,\n  4552,\n  4552,\n  4552,\n  4664,\n  4664,\n  4664,\n  227,\n  29,\n  222,\n  4439,\n  3184,\n  3184,\n  3184,\n  886,\n  98,\n  2492,\n  103,\n  193,\n  1775,\n  332,\n  332,\n  332,\n  365,\n  59,\n  108,\n  302,\n  39,\n  3406,\n  3406,\n  3406,\n  212,\n  599,\n  599,\n  599,\n  264,\n  2,\n  250,\n  979,\n  663,\n  325,\n  0,\n  1105,\n  2124,\n  2470,\n  55,\n  151,\n  1533,\n  1533,\n  1533,\n  507,\n  294,\n  294,\n  294,\n  38,\n  2150,\n  1562,\n  202,\n  202,\n  202,\n  323,\n  235,\n  756,\n  48,\n  4345,\n  4345,\n  4345,\n  371,\n  2863,\n  2863,\n  2863,\n  274,\n  712,\n  325,\n  529,\n  1019,\n  1019,\n  1019,\n  4481,\n  4481,\n  4481,\n  232,\n  4254,\n  4254,\n  4254,\n  312,\n  3827,\n  3827,\n  3827,\n  150,\n  1030,\n  2779,\n  2779,\n  2779,\n  4979,\n  4979,\n  4979,\n  373,\n  28,\n  277,\n  806,\n  658,\n  35,\n  154,\n  36,\n  1571,\n  148,\n  295,\n  3614,\n  4,\n  262,\n  1,\n  2019,\n  30,\n  600,\n  2991,\n  2991,\n  2991,\n  1021,\n  1404,\n  33,\n  38,\n  75,\n  531,\n  667,\n  376,\n  2050,\n  19,\n  3807,\n  3807,\n  3807,\n  199,\n  89,\n  2187,\n  3599,\n  3599,\n  3599,\n  389,\n  2123,\n  3409,\n  716,\n  716,\n  716,\n  1861,\n  1753,\n  1753,\n  1753,\n  107,\n  53,\n  2105,\n  2105,\n  2105,\n  645,\n  1707,\n  301,\n  36,\n  1812,\n  1785,\n  1785,\n  1785,\n  190,\n  112,\n  901,\n  2622,\n  2622,\n  2622,\n  0,\n  580,\n  4022,\n  1259,\n  282,\n  1269,\n  1269,\n  1269,\n  2990,\n  2990,\n  2990,\n  99,\n  2800,\n  64,\n  4621,\n  4621,\n  4621,\n  154,\n  0,\n  1385,\n  85,\n  240,\n  691,\n  0,\n  24,\n  1965,\n  191,\n  105,\n  49,\n  2,\n  273,\n  381,\n  3669,\n  3669,\n  3669,\n  1771,\n  282,\n  478,\n  708,\n  51,\n  290,\n  671,\n  122,\n  122,\n  122,\n  3453,\n  3453,\n  3453,\n  1045,\n  62,\n  4394,\n  4394,\n  4394,\n  2201,\n  310,\n  948,\n  2271,\n  658,\n  1516,\n  2852,\n  1714,\n  2130,\n  2160,\n  56,\n  60,\n  2447,\n  2447,\n  2447,\n  232,\n  373,\n  2240,\n  2240,\n  2240,\n  64,\n  3,\n  1119,\n  34,\n  2224,\n  0,\n  5,\n  1390,\n  1390,\n  1390,\n  3708,\n  3708,\n  3708,\n  345,\n  609,\n  23,\n  255,\n  352,\n  188,\n  1280,\n  1203,\n  168,\n  58,\n  703,\n  189,\n  31,\n  532,\n  1087,\n  627,\n  21,\n  24,\n  903,\n  1314,\n  33,\n  991,\n  991,\n  991,\n  561,\n  271,\n  2245,\n  1228,\n  4,\n  4905,\n  4905,\n  4905,\n  155,\n  203,\n  2821,\n  32,\n  183,\n  32,\n  1042,\n  1780,\n  7,\n  1597,\n  279,\n  86,\n  43,\n  4,\n  2084,\n  2084,\n  2084,\n  20,\n  3630,\n  3630,\n  3630,\n  1065,\n  1414,\n  1414,\n  1414,\n  4667,\n  4667,\n  4667,\n  21,\n  3598,\n  3598,\n  3598,\n  164,\n  1102,\n  546,\n  27,\n  25,\n  233,\n  910,\n  0,\n  808,\n  808,\n  808,\n  1800,\n  59,\n  97,\n  41,\n  10,\n  23,\n  0,\n  1493,\n  2525,\n  2525,\n  2525,\n  121,\n  6,\n  29,\n  706,\n  41,\n  143,\n  98,\n  1564,\n  674,\n  674,\n  674,\n  1119,\n  82,\n  3417,\n  3417,\n  3417,\n  24,\n  429,\n  2042,\n  1651,\n  3287,\n  3287,\n  3287,\n  27,\n  30,\n  25,\n  5,\n  0,\n  373,\n  381,\n  103,\n  24,\n  231,\n  3419,\n  3419,\n  3419,\n  475,\n  31,\n  60,\n  60,\n  60,\n  502,\n  1374,\n  477,\n  21,\n  4,\n  4,\n  3,\n  881,\n  674,\n  1017,\n  1017,\n  1017,\n  2185,\n  2185,\n  2185,\n  0,\n  30,\n  1053,\n  1053,\n  1053,\n  0,\n  0,\n  2273,\n  2273,\n  2273,\n  1007,\n  32,\n  400,\n  26,\n  441,\n  22,\n  61,\n  171,\n  39,\n  1086,\n  58,\n  2580,\n  2580,\n  2580,\n  4193,\n  4193,\n  4193,\n  43,\n  111,\n  1755,\n  155,\n  380,\n  1,\n  3978,\n  27,\n  2851,\n  31,\n  458,\n  1,\n  23,\n  1120,\n  35,\n  40,\n  3,\n  3491,\n  4734,\n  4734,\n  4734,\n  4750,\n  4750,\n  4750,\n  93,\n  1,\n  29,\n  72,\n  4012,\n  4012,\n  4012,\n  4448,\n  4448,\n  4448,\n  324,\n  855,\n  1683,\n  1683,\n  1683,\n  3013,\n  3013,\n  3013,\n  0,\n  1381,\n  10,\n  1393,\n  1513,\n  1513,\n  1513,\n  0,\n  519,\n  36,\n  692,\n  36,\n  26,\n  243,\n  174,\n  307,\n  2336,\n  2336,\n  2336,\n  132,\n  1540,\n  91,\n  229,\n  20,\n  1,\n  635,\n  4927,\n  4927,\n  4927,\n  4029,\n  4029,\n  4029,\n  803,\n  67,\n  1367,\n  55,\n  44,\n  206,\n  47,\n  4444,\n  4444,\n  4444,\n  9,\n  74,\n  134,\n  1071,\n  1071,\n  1071,\n  1443,\n  1443,\n  1443,\n  714,\n  757,\n  124,\n  282,\n  1258,\n  64,\n  46,\n  96,\n  365,\n  92,\n  4083,\n  79,\n  398,\n  2258,\n  2258,\n  2258,\n  30,\n  2858,\n  86,\n  40,\n  3196,\n  1054,\n  46,\n  1,\n  187,\n  2111,\n  173,\n  763,\n  59,\n  1026,\n  774,\n  89,\n  28,\n  3075,\n  3075,\n  3075,\n  753,\n  23,\n  0,\n  1358,\n  0,\n  3655,\n  3655,\n  3655,\n  89,\n  21,\n  56,\n  1993,\n  5,\n  14,\n  700,\n  700,\n  700,\n  2920,\n  2981,\n  1929,\n  1538,\n  5,\n  458,\n  278,\n  79,\n  33,\n  1017,\n  0,\n  737,\n  2,\n  43,\n  20,\n  0,\n  860,\n  39,\n  28,\n  330,\n  25,\n  1158,\n  173,\n  318,\n  0,\n  260,\n  71,\n  45,\n  16,\n  1358,\n  420,\n  1086,\n  122,\n  482,\n  0,\n  1561,\n  110,\n  3687,\n  3687,\n  3687,\n  2988,\n  1060,\n  32,\n  12,\n  4,\n  381,\n  59,\n  4287,\n  4287,\n  4287,\n  65,\n  2355,\n  1171,\n  1171,\n  1171,\n  67,\n  68,\n  87,\n  1012,\n  524,\n  33,\n  0,\n  1998,\n  1998,\n  1998,\n  823,\n  823,\n  823,\n  28,\n  21,\n  1086,\n  1086,\n  1086,\n  1,\n  3459,\n  3459,\n  3459,\n  3,\n  883,\n  4,\n  198,\n  2282,\n  2282,\n  2282,\n  478,\n  651,\n  2638,\n  28,\n  4010,\n  54,\n  53,\n  41,\n  336,\n  2251,\n  2907,\n  2907,\n  2907,\n  731,\n  2171,\n  30,\n  21,\n  3393,\n  1,\n  734,\n  1509,\n  3042,\n  3042,\n  3042,\n  27,\n  2362,\n  2362,\n  2362,\n  39,\n  26,\n  91,\n  26,\n  117,\n  656,\n  2284,\n  1,\n  0,\n  1,\n  2341,\n  0,\n  239,\n  4008,\n  4008,\n  4008,\n  4539,\n  4539,\n  4539,\n  196,\n  69,\n  24,\n  34,\n  90,\n  1808,\n  2530,\n  2530,\n  2530,\n  389,\n  377,\n  22,\n  39,\n  0,\n  1564,\n  1564,\n  1564,\n  22,\n  3745,\n  3745,\n  3745,\n  2061,\n  375,\n  28,\n  28,\n  796,\n  796,\n  796,\n  67,\n  2612,\n  87,\n  38,\n  63,\n  816,\n  10,\n  77,\n  63,\n  346,\n  68,\n  4032,\n  4032,\n  4032,\n  0,\n  653,\n  0,\n  41,\n  2243,\n  2243,\n  2243,\n  4365,\n  4365,\n  4365,\n  1,\n  177,\n  21,\n  408,\n  32,\n  4707,\n  134,\n  1,\n  5,\n  2564,\n  0,\n  89,\n  2313,\n  4065,\n  4065,\n  4065,\n  508,\n  508,\n  508,\n  1542,\n  208,\n  249,\n  1901,\n  103,\n  544,\n  26,\n  1926,\n  197,\n  1558,\n  1558,\n  1558,\n  26,\n  3740,\n  3740,\n  3740,\n  49,\n  274,\n  1831,\n  54,\n  388,\n  100,\n  1558,\n  3037,\n  3037,\n  3037,\n  102,\n  27,\n  1612,\n  3382,\n  1,\n  436,\n  1913,\n  4690,\n  4690,\n  4690,\n  1242,\n  0,\n  170,\n  4292,\n  4292,\n  4292,\n  37,\n  1793,\n  1793,\n  1793,\n  967,\n  967,\n  967,\n  1,\n  1,\n  4719,\n  4719,\n  4719,\n  2340,\n  2340,\n  2340,\n  553,\n  1851,\n  1851,\n  1851,\n  1143,\n  113,\n  71,\n  65,\n  143,\n  50,\n  0,\n  2392,\n  1298,\n  2,\n  88,\n  2524,\n  2524,\n  2524,\n  1558,\n  1558,\n  1558,\n  32,\n  120,\n  0,\n  74,\n  479,\n  705,\n  4094,\n  21,\n  2217,\n  1820,\n  3,\n  143,\n  3410,\n  3410,\n  3410,\n  2165,\n  1271,\n  1271,\n  1271,\n  44,\n  1,\n  77,\n  0,\n  45,\n  21,\n  1411,\n  20,\n  595,\n  97,\n  3,\n  919,\n  3895,\n  3895,\n  3895,\n  32,\n  587,\n  30,\n  140,\n  521,\n  521,\n  521,\n  199,\n  68,\n  26,\n  247,\n  4441,\n  4441,\n  4441,\n  21,\n  45,\n  2363,\n  2363,\n  2363,\n  1,\n  33,\n  25,\n  2625,\n  1581,\n  1581,\n  1581,\n  4761,\n  4761,\n  4761,\n  434,\n  4,\n  3101,\n  44,\n  3,\n  20,\n  3216,\n  3216,\n  3216,\n  118,\n  173,\n  751,\n  4537,\n  4537,\n  4537,\n  0,\n  31,\n  2362,\n  2362,\n  2362,\n  1423,\n  469,\n  49,\n  33,\n  222,\n  1176,\n  1,\n  300,\n  4933,\n  4933,\n  4933,\n  1139,\n  2409,\n  2409,\n  2409,\n  554,\n  45,\n  1144,\n  25,\n  35,\n  73,\n  120,\n  1988,\n  105,\n  1929,\n  0,\n  4,\n  208,\n  39,\n  23,\n  473,\n  2901,\n  2901,\n  2901,\n  1644,\n  1644,\n  1644,\n  2329,\n  2329,\n  2329,\n  46,\n  1642,\n  74,\n  34,\n  2,\n  537,\n  69,\n  2770,\n  17,\n  45,\n  601,\n  601,\n  601,\n  1,\n  641,\n  0,\n  813,\n  2004,\n  35,\n  105,\n  26,\n  77,\n  1534,\n  9,\n  922,\n  27,\n  3,\n  330,\n  0,\n  609,\n  63,\n  810,\n  17,\n  0,\n  1146,\n  344,\n  1,\n  365,\n  365,\n  365,\n  25,\n  685,\n  49,\n  108,\n  1128,\n  1128,\n  1128,\n  21,\n  3154,\n  3154,\n  3154,\n  792,\n  354,\n  749,\n  1165,\n  1165,\n  1165,\n  1195,\n  1613,\n  1613,\n  1613,\n  1718,\n  1718,\n  1718,\n  118,\n  22,\n  804,\n  1375,\n  111,\n  1145,\n  615,\n  6,\n  334,\n  1490,\n  76,\n  71,\n  521,\n  199,\n  1297,\n  222,\n  323,\n  507,\n  2,\n  217,\n  431,\n  38,\n  22,\n  1,\n  337,\n  4184,\n  4184,\n  4184,\n  371,\n  891,\n  4339,\n  4339,\n  4339,\n  888,\n  1206,\n  4408,\n  4408,\n  4408,\n  1374,\n  75,\n  2301,\n  1,\n  1726,\n  0,\n  1,\n  62,\n  1622,\n  392,\n  21,\n  31,\n  2776,\n  2279,\n  2279,\n  2279,\n  454,\n  90,\n  1,\n  38,\n  35,\n  3537,\n  3537,\n  3537,\n  454,\n  377,\n  375,\n  22,\n  1671,\n  1671,\n  1671,\n  2204,\n  2204,\n  2204,\n  37,\n  129,\n  47,\n  43,\n  2012,\n  44,\n  225,\n  889,\n  920,\n  38,\n  148,\n  3830,\n  3830,\n  3830,\n  829,\n  2538,\n  2538,\n  2538,\n  585,\n  611,\n  117,\n  150,\n  396,\n  1827,\n  1,\n  1336,\n  189,\n  708,\n  359,\n  1980,\n  70,\n  5,\n  1676,\n  725,\n  150,\n  150,\n  150,\n  95,\n  60,\n  213,\n  118,\n  103,\n  133,\n  965,\n  32,\n  2,\n  2308,\n  2308,\n  2308,\n  1204,\n  146,\n  4767,\n  21,\n  2156,\n  2156,\n  2156,\n  22,\n  391,\n  391,\n  391,\n  264,\n  153,\n  24,\n  50,\n  34,\n  365,\n  2666,\n  63,\n  4440,\n  1131,\n  1155,\n  1155,\n  1155,\n  29,\n  3500,\n  3500,\n  3500,\n  156,\n  1702,\n  930,\n  365,\n  124,\n  0,\n  508,\n  4585,\n  4585,\n  4585,\n  87,\n  84,\n  38,\n  609,\n  609,\n  609,\n  102,\n  3495,\n  3495,\n  3495,\n  1654,\n  146,\n  3570,\n  3570,\n  3570,\n  288,\n  1,\n  159,\n  2386,\n  598,\n  93,\n  23,\n  4913,\n  4913,\n  4913,\n  36,\n  72,\n  651,\n  1286,\n  2158,\n  2158,\n  2158,\n  71,\n  456,\n  1238,\n  728,\n  4265,\n  0,\n  2107,\n  1760,\n  1760,\n  1760,\n  22,\n  1284,\n  25,\n  204,\n  4435,\n  4435,\n  4435,\n  941,\n  424,\n  1395,\n  3126,\n  3126,\n  3126,\n  2688,\n  547,\n  83,\n  8,\n  146,\n  4390,\n  4390,\n  4390,\n  499,\n  510,\n  1,\n  2130,\n  51,\n  148,\n  0,\n  25,\n  171,\n  701,\n  3773,\n  3773,\n  3773,\n  206,\n  3611,\n  3611,\n  3611,\n  28,\n  1083,\n  5,\n  560,\n  529,\n  114,\n  3156,\n  115,\n  20,\n  4597,\n  4597,\n  4597,\n  1515,\n  145,\n  2,\n  712,\n  32,\n  181,\n  165,\n  695,\n  127,\n  2113,\n  108,\n  52,\n  775,\n  775,\n  775,\n  0,\n  28,\n  30,\n  117,\n  117,\n  117,\n  174,\n  32,\n  1658,\n  1658,\n  1658,\n  2721,\n  211,\n  255,\n  255,\n  255,\n  173,\n  63,\n  112,\n  108,\n  67,\n  2646,\n  69,\n  1022,\n  1422,\n  1422,\n  1422,\n  20,\n  2893,\n  2893,\n  2893,\n  8,\n  15,\n  3255,\n  3255,\n  3255,\n  778,\n  231,\n  25,\n  974,\n  1368,\n  217,\n  637,\n  30,\n  141,\n  2169,\n  117,\n  1,\n  48,\n  63,\n  708,\n  688,\n  2015,\n  2015,\n  2015,\n  158,\n  158,\n  158,\n  3284,\n  3284,\n  3284,\n  0,\n  882,\n  37,\n  2,\n  1444,\n  4343,\n  4343,\n  4343,\n  3084,\n  3084,\n  3084,\n  325,\n  27,\n  1416,\n  1416,\n  1416,\n  569,\n  1826,\n  1826,\n  1826,\n  927,\n  1285,\n  38,\n  44,\n  28,\n  190,\n  3197,\n  3197,\n  3197,\n  1471,\n  83,\n  1748,\n  1748,\n  1748,\n  1615,\n  1615,\n  1615,\n  60,\n  2799,\n  2799,\n  2799,\n  4971,\n  4971,\n  4971,\n  282,\n  134,\n  444,\n  32,\n  616,\n  427,\n  209,\n  1063,\n  3891,\n  816,\n  139,\n  1115,\n  932,\n  2152,\n  815,\n  407,\n  407,\n  407,\n  313,\n  103,\n  1536,\n  3278,\n  47,\n  1345,\n  512,\n  3204,\n  3204,\n  3204,\n  20,\n  2218,\n  4480,\n  4480,\n  4480,\n  1753,\n  1486,\n  316,\n  16,\n  1826,\n  67,\n  4002,\n  4002,\n  4002,\n  1764,\n  1764,\n  1764,\n  46,\n  2088,\n  0,\n  3999,\n  3999,\n  3999,\n  2880,\n  2880,\n  2880,\n  4980,\n  4980,\n  4980,\n  1657,\n  1657,\n  1657,\n  169,\n  2039,\n  2039,\n  2039,\n  237,\n  5,\n  42,\n  1002,\n  1636,\n  1636,\n  1636,\n  1291,\n  26,\n  10,\n  4502,\n  4502,\n  4502,\n  198,\n  237,\n  1,\n  1000,\n  187,\n  36,\n  144,\n  955,\n  79,\n  2051,\n  233,\n  2269,\n  2269,\n  2269,\n  1713,\n  1713,\n  1713,\n  2908,\n  911,\n  911,\n  911,\n  130,\n  89,\n  666,\n  22,\n  1969,\n  1969,\n  1969,\n  3234,\n  3234,\n  3234,\n  905,\n  676,\n  23,\n  11,\n  985,\n  1448,\n  180,\n  180,\n  180,\n  165,\n  330,\n  126,\n  6,\n  671,\n  2855,\n  2855,\n  2855,\n  1826,\n  26,\n  1,\n  322,\n  3252,\n  3252,\n  3252,\n  589,\n  78,\n  721,\n  1732,\n  1732,\n  1732,\n  749,\n  21,\n  1102,\n  118,\n  530,\n  2096,\n  2724,\n  2724,\n  2724,\n  1077,\n  110,\n  45,\n  48,\n  74,\n  30,\n  101,\n  343,\n  2515,\n  2515,\n  2515,\n  1585,\n  1461,\n  551,\n  1047,\n  354,\n  1959,\n  223,\n  337,\n  4371,\n  4371,\n  4371,\n  0,\n  1488,\n  254,\n  950,\n  950,\n  950,\n  576,\n  100,\n  578,\n  578,\n  578,\n  3650,\n  3917,\n  3917,\n  3917,\n  2466,\n  926,\n  303,\n  2191,\n  925,\n  1206,\n  1206,\n  1206,\n  0,\n  315,\n  1826,\n  1826,\n  1826,\n  3,\n  223,\n  31,\n  147,\n  661,\n  661,\n  661,\n  1081,\n  704,\n  87,\n  717,\n  9,\n  108,\n  993,\n  166,\n  27,\n  83,\n  174,\n  263,\n  28,\n  708,\n  708,\n  708,\n  1239,\n  2396,\n  2396,\n  2396,\n  998,\n  307,\n  1814,\n  2662,\n  2662,\n  2662,\n  4294,\n  4294,\n  4294,\n  4702,\n  4702,\n  4702,\n  31,\n  133,\n  54,\n  2,\n  80,\n  22,\n  1967,\n  4562,\n  4562,\n  4562,\n  158,\n  2467,\n  97,\n  480,\n  705,\n  1290,\n  1511,\n  3403,\n  1117,\n  1117,\n  1117,\n  1872,\n  283,\n  178,\n  738,\n  738,\n  738,\n  1431,\n  1753,\n  66,\n  210,\n  3423,\n  3423,\n  3423,\n  33,\n  473,\n  62,\n  1078,\n  1085,\n  56,\n  4312,\n  4312,\n  4312,\n  41,\n  20,\n  622,\n  2160,\n  920,\n  56,\n  118,\n  1,\n  34,\n  45,\n  20,\n  398,\n  22,\n  730,\n  481,\n  481,\n  481,\n  1142,\n  1551,\n  1551,\n  1551,\n  35,\n  3590,\n  3590,\n  3590,\n  357,\n  2973,\n  2973,\n  2973,\n  24,\n  531,\n  365,\n  365,\n  365,\n  31,\n  1119,\n  744,\n  2593,\n  2593,\n  2593,\n  90,\n  0,\n  2121,\n  2121,\n  2121,\n  367,\n  263,\n  4998,\n  4998,\n  4998,\n  52,\n  1127,\n  1127,\n  1127,\n  77,\n  54,\n  2965,\n  2965,\n  2965,\n  1359,\n  1365,\n  553,\n  91,\n  114,\n  62,\n  45,\n  1211,\n  1,\n  2599,\n  2599,\n  2599,\n  2218,\n  2218,\n  2218,\n  198,\n  33,\n  194,\n  1014,\n  1,\n  840,\n  1498,\n  1498,\n  1498,\n  1494,\n  1494,\n  1494,\n  1,\n  2454,\n  2454,\n  2454,\n  619,\n  393,\n  206,\n  189,\n  4658,\n  1036,\n  238,\n  439,\n  34,\n  96,\n  1080,\n  2020,\n  2128,\n  665,\n  1448,\n  1,\n  369,\n  1844,\n  177,\n  2787,\n  2787,\n  2787,\n  36,\n  827,\n  1302,\n  1435,\n  0,\n  4,\n  1785,\n  725,\n  607,\n  8,\n  32,\n  2605,\n  2605,\n  2605,\n  365,\n  1,\n  37,\n  263,\n  0,\n  24,\n  4658,\n  4658,\n  4658,\n  2187,\n  130,\n  136,\n  160,\n  0,\n  2,\n  1062,\n  750,\n  158,\n  2515,\n  1,\n  30,\n  1243,\n  104,\n  427,\n  207,\n  3280,\n  3280,\n  3280,\n  465,\n  28,\n  141,\n  161,\n  4705,\n  4705,\n  4705,\n  268,\n  41,\n  65,\n  65,\n  65,\n  326,\n  3729,\n  3729,\n  3729,\n  32,\n  1897,\n  1897,\n  1897,\n  1930,\n  94,\n  927,\n  90,\n  339,\n  254,\n  270,\n  270,\n  270,\n  11,\n  1333,\n  1333,\n  1333,\n  301,\n  1085,\n  730,\n  84,\n  1855,\n  20,\n  71,\n  1062,\n  21,\n  21,\n  3271,\n  3271,\n  3271,\n  1859,\n  245,\n  61,\n  1507,\n  1507,\n  1507,\n  368,\n  2203,\n  1389,\n  1389,\n  1389,\n  437,\n  51,\n  147,\n  1,\n  2565,\n  2524,\n  1239,\n  22,\n  290,\n  0,\n  4363,\n  4363,\n  4363,\n  1947,\n  1947,\n  1947,\n  36,\n  11,\n  3,\n  516,\n  459,\n  4785,\n  4785,\n  4785,\n  1,\n  303,\n  2470,\n  2470,\n  2470,\n  728,\n  34,\n  20,\n  41,\n  161,\n  72,\n  1517,\n  1438,\n  1690,\n  1443,\n  3132,\n  3132,\n  3132,\n  123,\n  51,\n  522,\n  1,\n  29,\n  23,\n  375,\n  365,\n  1257,\n  1257,\n  1257,\n  72,\n  1760,\n  1760,\n  1760,\n  1366,\n  968,\n  1,\n  1,\n  4404,\n  4404,\n  4404,\n  2958,\n  2958,\n  2958,\n  2301,\n  29,\n  261,\n  169,\n  31,\n  1889,\n  0,\n  328,\n  123,\n  1898,\n  1898,\n  1898,\n  1475,\n  42,\n  31,\n  737,\n  101,\n  0,\n  596,\n  596,\n  596,\n  39,\n  24,\n  231,\n  26,\n  2251,\n  2251,\n  2251,\n  924,\n  599,\n  24,\n  2981,\n  2981,\n  2981,\n  1379,\n  1379,\n  1379,\n  1060,\n  1525,\n  755,\n  42,\n  2154,\n  1620,\n  128,\n  2105,\n  1075,\n  193,\n  738,\n  1240,\n  27,\n  776,\n  3134,\n  3134,\n  3134,\n  4830,\n  4830,\n  4830,\n  241,\n  35,\n  987,\n  0,\n  1439,\n  1439,\n  1439,\n  53,\n  1728,\n  3718,\n  3718,\n  3718,\n  6,\n  182,\n  220,\n  3910,\n  3910,\n  3910,\n  1,\n  25,\n  1209,\n  79,\n  408,\n  110,\n  28,\n  413,\n  4851,\n  4851,\n  4851,\n  0,\n  411,\n  36,\n  316,\n  65,\n  2503,\n  2503,\n  2503,\n  193,\n  32,\n  176,\n  4816,\n  4816,\n  4816,\n  264,\n  223,\n  29,\n  1108,\n  408,\n  53,\n  162,\n  100,\n  788,\n  788,\n  788,\n  32,\n  75,\n  25,\n  29,\n  41,\n  4155,\n  4155,\n  4155,\n  2777,\n  2777,\n  2777,\n  425,\n  401,\n  1565,\n  445,\n  35,\n  1424,\n  753,\n  3501,\n  31,\n  2589,\n  1,\n  3271,\n  1112,\n  1112,\n  1112,\n  2129,\n  0,\n  4411,\n  4411,\n  4411,\n  1168,\n  1168,\n  1168,\n  1198,\n  1752,\n  1752,\n  1752,\n  0,\n  66,\n  33,\n  1501,\n  430,\n  2719,\n  2719,\n  2719,\n  0,\n  1111,\n  711,\n  4,\n  678,\n  0,\n  141,\n  1198,\n  1198,\n  1198,\n  0,\n  282,\n  301,\n  10,\n  3664,\n  3664,\n  3664,\n  23,\n  4,\n  20,\n  410,\n  3358,\n  3358,\n  3358,\n  37,\n  4637,\n  4637,\n  4637,\n  3386,\n  3386,\n  3386,\n  33,\n  2271,\n  2271,\n  2271,\n  778,\n  48,\n  1536,\n  580,\n  339,\n  2,\n  0,\n  3599,\n  2566,\n  2566,\n  2566,\n  1780,\n  1780,\n  1780,\n  645,\n  45,\n  1456,\n  1456,\n  1456,\n  10,\n  41,\n  33,\n  4,\n  741,\n  288,\n  25,\n  113,\n  2131,\n  0,\n  4,\n  21,\n  2172,\n  372,\n  21,\n  1720,\n  1720,\n  1720,\n  63,\n  63,\n  63,\n  81,\n  896,\n  896,\n  896,\n  22,\n  3,\n  470,\n  148,\n  46,\n  536,\n  3024,\n  1,\n  2954,\n  2954,\n  2954,\n  356,\n  1968,\n  67,\n  2022,\n  2022,\n  2022,\n  2196,\n  2203,\n  2203,\n  2203,\n  2798,\n  3,\n  20,\n  37,\n  31,\n  32,\n  230,\n  21,\n  73,\n  1999,\n  1999,\n  1999,\n  50,\n  0,\n  488,\n  1759,\n  1756,\n  4598,\n  4598,\n  4598,\n  763,\n  763,\n  763,\n  4260,\n  4260,\n  4260,\n  393,\n  176,\n  2940,\n  1208,\n  1208,\n  1208,\n  0,\n  302,\n  2559,\n  2351,\n  2351,\n  2351,\n  0,\n  395,\n  886,\n  381,\n  2924,\n  0,\n  27,\n  602,\n  260,\n  151,\n  1,\n  767,\n  767,\n  767,\n  2996,\n  2996,\n  2996,\n  37,\n  383,\n  383,\n  383,\n  351,\n  696,\n  190,\n  0,\n  1,\n  1091,\n  2986,\n  2122,\n  82,\n  2054,\n  335,\n  750,\n  0,\n  182,\n  776,\n  2633,\n  2582,\n  2582,\n  2582,\n  71,\n  755,\n  2,\n  1,\n  50,\n  378,\n  122,\n  2571,\n  1292,\n  1292,\n  1292,\n  1469,\n  39,\n  4873,\n  4873,\n  4873,\n  0,\n  31,\n  122,\n  120,\n  336,\n  61,\n  74,\n  31,\n  1487,\n  1159,\n  1159,\n  1159,\n  776,\n  1848,\n  16,\n  4571,\n  4571,\n  4571,\n  54,\n  225,\n  225,\n  225,\n  1626,\n  0,\n  4482,\n  4482,\n  4482,\n  41,\n  3,\n  0,\n  45,\n  45,\n  45,\n  24,\n  0,\n  391,\n  4871,\n  4871,\n  4871,\n  1286,\n  55,\n  123,\n  5,\n  46,\n  200,\n  55,\n  130,\n  1185,\n  51,\n  193,\n  234,\n  43,\n  43,\n  43,\n  40,\n  133,\n  2571,\n  32,\n  48,\n  328,\n  29,\n  3979,\n  3979,\n  3979,\n  487,\n  2680,\n  2680,\n  2680,\n  0,\n  4263,\n  4263,\n  4263,\n  1620,\n  1620,\n  1620,\n  28,\n  1,\n  31,\n  2111,\n  216,\n  816,\n  4,\n  229,\n  28,\n  3103,\n  3103,\n  3103,\n  79,\n  51,\n  120,\n  782,\n  107,\n  24,\n  435,\n  435,\n  435,\n  52,\n  9,\n  876,\n  876,\n  876,\n  503,\n  3043,\n  3043,\n  3043,\n  30,\n  326,\n  4488,\n  4488,\n  4488,\n  84,\n  35,\n  1,\n  846,\n  846,\n  846,\n  469,\n  469,\n  469,\n  0,\n  538,\n  25,\n  3171,\n  3171,\n  3171,\n  124,\n  51,\n  1,\n  197,\n  36,\n  53,\n  4747,\n  4747,\n  4747,\n  3010,\n  4526,\n  4526,\n  4526,\n  1794,\n  29,\n  497,\n  22,\n  914,\n  139,\n  404,\n  2937,\n  1078,\n  4473,\n  4473,\n  4473,\n  0,\n  2928,\n  2967,\n  2967,\n  2967,\n  50,\n  0,\n  208,\n  572,\n  572,\n  572,\n  2932,\n  2932,\n  2932,\n  171,\n  0,\n  1,\n  844,\n  844,\n  844,\n  2,\n  1,\n  1880,\n  26,\n  2770,\n  2770,\n  2770,\n  33,\n  42,\n  28,\n  2923,\n  4146,\n  4146,\n  4146,\n  1153,\n  958,\n  1973,\n  141,\n  29,\n  1570,\n  14,\n  154,\n  132,\n  3779,\n  3779,\n  3779,\n  176,\n  3823,\n  3823,\n  3823,\n  1470,\n  474,\n  20,\n  0,\n  1,\n  63,\n  1082,\n  59,\n  1,\n  32,\n  215,\n  161,\n  1687,\n  1687,\n  1687,\n  32,\n  0,\n  63,\n  100,\n  81,\n  20,\n  32,\n  1653,\n  1653,\n  1653,\n  4935,\n  4935,\n  4935,\n  22,\n  1963,\n  1284,\n  20,\n  43,\n  1954,\n  731,\n  80,\n  178,\n  1027,\n  783,\n  783,\n  783,\n  4937,\n  4937,\n  4937,\n  2746,\n  2746,\n  2746,\n  415,\n  153,\n  158,\n  0,\n  1362,\n  1127,\n  24,\n  21,\n  27,\n  300,\n  2529,\n  2529,\n  2529,\n  3095,\n  3095,\n  3095,\n  66,\n  2725,\n  2725,\n  2725,\n  30,\n  132,\n  178,\n  2337,\n  2337,\n  2337,\n  1663,\n  2655,\n  2655,\n  2655,\n  47,\n  816,\n  1017,\n  1043,\n  1576,\n  1576,\n  1576,\n  4719,\n  4719,\n  4719,\n  3041,\n  3041,\n  3041,\n  2281,\n  665,\n  665,\n  665,\n  722,\n  151,\n  151,\n  151,\n  795,\n  1648,\n  1648,\n  1648,\n  2762,\n  36,\n  28,\n  1,\n  114,\n  1202,\n  1202,\n  1202,\n  168,\n  1218,\n  186,\n  306,\n  2016,\n  2459,\n  1131,\n  68,\n  129,\n  75,\n  29,\n  0,\n  138,\n  1085,\n  1259,\n  1259,\n  1259,\n  4162,\n  4162,\n  4162,\n  720,\n  0,\n  26,\n  2522,\n  2522,\n  2522,\n  1139,\n  23,\n  4,\n  142,\n  150,\n  23,\n  608,\n  608,\n  608,\n  32,\n  1987,\n  8,\n  3498,\n  3498,\n  3498,\n  1836,\n  22,\n  29,\n  365,\n  365,\n  365,\n  34,\n  775,\n  1862,\n  487,\n  61,\n  3833,\n  3833,\n  3833,\n  708,\n  708,\n  708,\n  1251,\n  1251,\n  1251,\n  102,\n  52,\n  1670,\n  4379,\n  4379,\n  4379,\n  0,\n  2020,\n  2020,\n  2020,\n  3002,\n  1213,\n  2,\n  6,\n  546,\n  2170,\n  2170,\n  2170,\n  325,\n  27,\n  4915,\n  4915,\n  4915,\n  1577,\n  61,\n  3294,\n  2012,\n  87,\n  58,\n  20,\n  4459,\n  4459,\n  4459,\n  4145,\n  20,\n  0,\n  3834,\n  3834,\n  3834,\n  96,\n  55,\n  2175,\n  2175,\n  2175,\n  24,\n  365,\n  107,\n  3388,\n  3388,\n  3388,\n  608,\n  60,\n  4080,\n  4080,\n  4080,\n  2053,\n  31,\n  1640,\n  1568,\n  1568,\n  1568,\n  171,\n  4106,\n  4106,\n  4106,\n  2579,\n  1831,\n  1831,\n  1831,\n  2181,\n  35,\n  2152,\n  1518,\n  1518,\n  1518,\n  147,\n  209,\n  0,\n  1296,\n  1296,\n  1296,\n  117,\n  0,\n  214,\n  15,\n  3149,\n  3149,\n  3149,\n  106,\n  1549,\n  1549,\n  1549,\n  61,\n  495,\n  112,\n  471,\n  3429,\n  3429,\n  3429,\n  0,\n  181,\n  36,\n  89,\n  3456,\n  365,\n  26,\n  830,\n  151,\n  4170,\n  4170,\n  4170,\n  140,\n  860,\n  1517,\n  1517,\n  1517,\n  106,\n  471,\n  0,\n  223,\n  550,\n  3989,\n  3989,\n  3989,\n  5,\n  0,\n  2449,\n  2449,\n  2449,\n  2214,\n  307,\n  0,\n  2788,\n  2788,\n  2788,\n  0,\n  91,\n  1,\n  308,\n  3839,\n  3839,\n  3839,\n  4522,\n  4522,\n  4522,\n  3818,\n  3818,\n  3818,\n  3411,\n  91,\n  0,\n  3951,\n  3951,\n  3951,\n  60,\n  1550,\n  1550,\n  1550,\n  2015,\n  3006,\n  3006,\n  3006,\n  12,\n  1,\n  71,\n  212,\n  155,\n  21,\n  72,\n  24,\n  201,\n  2137,\n  2137,\n  2137,\n  34,\n  4484,\n  4484,\n  4484,\n  462,\n  64,\n  28,\n  0,\n  56,\n  2437,\n  2437,\n  2437,\n  1522,\n  1522,\n  1522,\n  116,\n  2083,\n  2083,\n  2083,\n  390,\n  1879,\n  1879,\n  1879,\n  2649,\n  2649,\n  2649,\n  1633,\n  1292,\n  32,\n  4610,\n  4610,\n  4610,\n  375,\n  164,\n  2076,\n  2076,\n  2076,\n  1866,\n  2978,\n  4,\n  4844,\n  4844,\n  4844,\n  4229,\n  4229,\n  4229,\n  45,\n  28,\n  156,\n  546,\n  1336,\n  1201,\n  3879,\n  3879,\n  3879,\n  857,\n  2090,\n  3147,\n  46,\n  190,\n  3154,\n  3154,\n  3154,\n  3511,\n  3511,\n  3511,\n  34,\n  1314,\n  161,\n  2149,\n  2149,\n  2149,\n  162,\n  4985,\n  4985,\n  4985,\n  4462,\n  4462,\n  4462,\n  4769,\n  4769,\n  4769,\n  627,\n  233,\n  175,\n  2647,\n  4225,\n  4225,\n  4225,\n  3653,\n  1834,\n  471,\n  1241,\n  1241,\n  1241,\n  899,\n  35,\n  150,\n  705,\n  1652,\n  1306,\n  0,\n  1297,\n  1297,\n  1297,\n  2071,\n  499,\n  1,\n  67,\n  1246,\n  586,\n  6,\n  1,\n  50,\n  3857,\n  3857,\n  3857,\n  29,\n  0,\n  374,\n  1639,\n  156,\n  3549,\n  3549,\n  3549,\n  9,\n  175,\n  42,\n  563,\n  0,\n  1,\n  226,\n  2296,\n  111,\n  23,\n  36,\n  479,\n  3403,\n  3403,\n  3403,\n  3167,\n  206,\n  1874,\n  87,\n  20,\n  64,\n  2685,\n  1654,\n  1654,\n  1654,\n  1334,\n  90,\n  2225,\n  242,\n  242,\n  242,\n  31,\n  230,\n  59,\n  1,\n  883,\n  1377,\n  818,\n  448,\n  4184,\n  4184,\n  4184,\n  362,\n  913,\n  106,\n  950,\n  950,\n  950,\n  562,\n  38,\n  144,\n  2807,\n  37,\n  102,\n  4110,\n  4110,\n  4110,\n  2422,\n  2422,\n  2422,\n  4277,\n  4277,\n  4277,\n  99,\n  377,\n  0,\n  169,\n  102,\n  501,\n  165,\n  0,\n  611,\n  1115,\n  39,\n  4785,\n  4785,\n  4785,\n  1140,\n  3539,\n  3539,\n  3539,\n  645,\n  841,\n  841,\n  841,\n  378,\n  3897,\n  3897,\n  3897,\n  2699,\n  1,\n  62,\n  234,\n  1950,\n  1428,\n  1428,\n  1428,\n  211,\n  211,\n  1825,\n  0,\n  1,\n  26,\n  31,\n  1349,\n  1349,\n  1349,\n  925,\n  75,\n  185,\n  32,\n  56,\n  368,\n  171,\n  2,\n  389,\n  485,\n  31,\n  1557,\n  1079,\n  4813,\n  4813,\n  4813,\n  155,\n  498,\n  113,\n  3898,\n  3898,\n  3898,\n  1293,\n  42,\n  4972,\n  4972,\n  4972,\n  236,\n  42,\n  1782,\n  1782,\n  1782,\n  1667,\n  3010,\n  3010,\n  3010,\n  26,\n  2446,\n  2446,\n  2446,\n  538,\n  3913,\n  3913,\n  3913,\n  367,\n  248,\n  433,\n  2257,\n  519,\n  461,\n  2263,\n  2263,\n  2263,\n  130,\n  40,\n  54,\n  166,\n  46,\n  231,\n  0,\n  3937,\n  3937,\n  3937,\n  1575,\n  4460,\n  4460,\n  4460,\n  0,\n  692,\n  27,\n  842,\n  842,\n  842,\n  163,\n  618,\n  0,\n  186,\n  230,\n  2714,\n  838,\n  1134,\n  113,\n  504,\n  20,\n  598,\n  284,\n  7,\n  176,\n  66,\n  3873,\n  3873,\n  3873,\n  0,\n  368,\n  368,\n  368,\n  187,\n  203,\n  75,\n  3183,\n  3183,\n  3183,\n  93,\n  326,\n  1331,\n  186,\n  2577,\n  2577,\n  2577,\n  29,\n  1050,\n  3593,\n  3593,\n  3593,\n  1076,\n  573,\n  2239,\n  31,\n  1536,\n  1536,\n  1536,\n  41,\n  0,\n  4378,\n  4378,\n  4378,\n  3238,\n  3238,\n  3238,\n  77,\n  0,\n  584,\n  847,\n  4890,\n  4890,\n  4890,\n  205,\n  545,\n  978,\n  2504,\n  36,\n  296,\n  190,\n  1566,\n  33,\n  701,\n  701,\n  701,\n  961,\n  2218,\n  4266,\n  4266,\n  4266,\n  0,\n  23,\n  36,\n  2056,\n  2056,\n  2056,\n  5,\n  331,\n  571,\n  30,\n  166,\n  32,\n  4628,\n  4628,\n  4628,\n  641,\n  681,\n  40,\n  65,\n  2463,\n  276,\n  2191,\n  2191,\n  2191,\n  71,\n  90,\n  2124,\n  2124,\n  2124,\n  266,\n  32,\n  28,\n  4067,\n  4067,\n  4067,\n  39,\n  649,\n  4228,\n  85,\n  3345,\n  3345,\n  3345,\n  73,\n  3999,\n  3999,\n  3999,\n  25,\n  844,\n  2502,\n  2502,\n  2502,\n  3,\n  219,\n  323,\n  25,\n  917,\n  2508,\n  2508,\n  2508,\n  1514,\n  1514,\n  1514,\n  922,\n  62,\n  2764,\n  2764,\n  2764,\n  48,\n  29,\n  2072,\n  184,\n  1921,\n  741,\n  741,\n  741,\n  25,\n  31,\n  40,\n  306,\n  65,\n  1513,\n  1400,\n  1400,\n  1400,\n  355,\n  3623,\n  3623,\n  3623,\n  4703,\n  4703,\n  4703,\n  1429,\n  1440,\n  42,\n  3721,\n  3721,\n  3721,\n  69,\n  705,\n  2718,\n  265,\n  29,\n  21,\n  21,\n  1727,\n  192,\n  2820,\n  98,\n  19,\n  269,\n  2,\n  5,\n  2195,\n  2195,\n  2195,\n  37,\n  25,\n  2050,\n  1718,\n  1718,\n  1718,\n  23,\n  21,\n  3155,\n  3155,\n  3155,\n  190,\n  1,\n  99,\n  1213,\n  1213,\n  1213,\n  0,\n  114,\n  1693,\n  1693,\n  1693,\n  168,\n  43,\n  0,\n  368,\n  1457,\n  21,\n  1489,\n  1489,\n  1489,\n  900,\n  1142,\n  0,\n  616,\n  27,\n  2113,\n  2113,\n  2113,\n  29,\n  47,\n  875,\n  305,\n  27,\n  252,\n  3722,\n  3722,\n  3722,\n  1636,\n  3558,\n  3558,\n  3558,\n  57,\n  2082,\n  789,\n  344,\n  1246,\n  4286,\n  247,\n  20,\n  66,\n  10,\n  197,\n  666,\n  111,\n  59,\n  2179,\n  2179,\n  2179,\n  326,\n  3732,\n  3732,\n  3732,\n  59,\n  20,\n  818,\n  1941,\n  30,\n  317,\n  142,\n  52,\n  42,\n  895,\n  35,\n  561,\n  42,\n  137,\n  640,\n  1276,\n  105,\n  4943,\n  4943,\n  4943,\n  297,\n  65,\n  1,\n  628,\n  161,\n  3712,\n  3712,\n  3712,\n  1,\n  653,\n  966,\n  80,\n  251,\n  21,\n  2490,\n  43,\n  276,\n  80,\n  262,\n  1262,\n  1383,\n  23,\n  692,\n  1271,\n  80,\n  115,\n  136,\n  1,\n  1044,\n  151,\n  79,\n  1735,\n  1361,\n  1361,\n  1361,\n  90,\n  3191,\n  152,\n  48,\n  29,\n  61,\n  1389,\n  240,\n  2468,\n  2433,\n  88,\n  696,\n  696,\n  696,\n  1755,\n  1755,\n  1755,\n  906,\n  906,\n  906,\n  293,\n  532,\n  526,\n  240,\n  1,\n  845,\n  845,\n  845,\n  2500,\n  1766,\n  85,\n  87,\n  671,\n  245,\n  914,\n  689,\n  37,\n  86,\n  332,\n  481,\n  735,\n  112,\n  2,\n  0,\n  1,\n  4646,\n  4646,\n  4646,\n  4298,\n  4298,\n  4298,\n  179,\n  181,\n  1367,\n  365,\n  164,\n  2529,\n  9,\n  946,\n  216,\n  30,\n  23,\n  4564,\n  4564,\n  4564,\n  4657,\n  4657,\n  4657,\n  293,\n  284,\n  233,\n  94,\n  1418,\n  1418,\n  1418,\n  258,\n  1002,\n  139,\n  398,\n  608,\n  56,\n  2504,\n  2504,\n  2504,\n  204,\n  87,\n  274,\n  49,\n  542,\n  62,\n  27,\n  1,\n  3664,\n  2716,\n  2716,\n  2716,\n  25,\n  706,\n  1370,\n  2590,\n  1,\n  396,\n  31,\n  1070,\n  1070,\n  1070,\n  2312,\n  2312,\n  2312,\n  92,\n  0,\n  673,\n  30,\n  38,\n  2499,\n  2499,\n  2499,\n  1412,\n  427,\n  2129,\n  3284,\n  3284,\n  3284,\n  162,\n  305,\n  3258,\n  3258,\n  3258,\n  703,\n  645,\n  3615,\n  3615,\n  3615,\n  341,\n  276,\n  1366,\n  93,\n  697,\n  697,\n  697,\n  54,\n  355,\n  37,\n  57,\n  4015,\n  4015,\n  4015,\n  1100,\n  1100,\n  1100,\n  149,\n  1762,\n  1762,\n  1762,\n  1262,\n  65,\n  20,\n  4897,\n  4897,\n  4897,\n  753,\n  0,\n  679,\n  63,\n  3279,\n  32,\n  4856,\n  4856,\n  4856,\n  1,\n  28,\n  4716,\n  4716,\n  4716,\n  65,\n  750,\n  2,\n  29,\n  23,\n  4790,\n  4790,\n  4790,\n  127,\n  894,\n  260,\n  2164,\n  3,\n  1175,\n  236,\n  583,\n  1098,\n  1,\n  42,\n  335,\n  4629,\n  4629,\n  4629,\n  2,\n  1799,\n  399,\n  121,\n  2266,\n  441,\n  2122,\n  72,\n  172,\n  1472,\n  0,\n  3059,\n  3059,\n  3059,\n  1403,\n  1403,\n  1403,\n  44,\n  4425,\n  4425,\n  4425,\n  339,\n  339,\n  339,\n  0,\n  3364,\n  3364,\n  3364,\n  1114,\n  1753,\n  1753,\n  1753,\n  755,\n  30,\n  1136,\n  399,\n  82,\n  1102,\n  617,\n  61,\n  3422,\n  173,\n  105,\n  3778,\n  3778,\n  3778,\n  712,\n  318,\n  3635,\n  30,\n  1419,\n  49,\n  65,\n  65,\n  0,\n  324,\n  787,\n  18,\n  1,\n  2718,\n  2718,\n  2718,\n  4,\n  1391,\n  34,\n  33,\n  3826,\n  3826,\n  3826,\n  73,\n  0,\n  6,\n  59,\n  1005,\n  165,\n  4732,\n  4732,\n  4732,\n  56,\n  1823,\n  334,\n  4759,\n  4759,\n  4759,\n  732,\n  55,\n  182,\n  37,\n  361,\n  26,\n  3965,\n  3965,\n  3965,\n  365,\n  382,\n  1531,\n  115,\n  4758,\n  4758,\n  4758,\n  1417,\n  110,\n  1110,\n  121,\n  219,\n  4784,\n  4784,\n  4784,\n  0,\n  4034,\n  3942,\n  3942,\n  3942,\n  46,\n  2595,\n  2197,\n  3665,\n  3665,\n  3665,\n  30,\n  76,\n  2859,\n  2859,\n  2859,\n  4380,\n  4380,\n  4380,\n  1850,\n  731,\n  2507,\n  800,\n  0,\n  34,\n  1327,\n  24,\n  325,\n  57,\n  3,\n  24,\n  70,\n  30,\n  1339,\n  4,\n  64,\n  324,\n  324,\n  324,\n  4830,\n  4830,\n  4830,\n  681,\n  133,\n  2202,\n  2202,\n  2202,\n  203,\n  2,\n  2239,\n  381,\n  1108,\n  1108,\n  1108,\n  3156,\n  3156,\n  3156,\n  3,\n  307,\n  40,\n  3315,\n  30,\n  2918,\n  22,\n  3716,\n  3716,\n  3716,\n  2528,\n  3284,\n  3284,\n  3284,\n  254,\n  56,\n  1,\n  365,\n  3164,\n  3164,\n  3164,\n  53,\n  0,\n  0,\n  2531,\n  634,\n  300,\n  4610,\n  4610,\n  4610,\n  3121,\n  4397,\n  4397,\n  4397,\n  1388,\n  1388,\n  1388,\n  31,\n  371,\n  70,\n  0,\n  3656,\n  3656,\n  3656,\n  5,\n  2137,\n  2389,\n  2389,\n  2389,\n  26,\n  6,\n  4737,\n  4737,\n  4737,\n  1513,\n  1195,\n  22,\n  233,\n  328,\n  182,\n  180,\n  100,\n  1897,\n  1897,\n  1897,\n  26,\n  171,\n  2602,\n  1815,\n  1815,\n  1815,\n  11,\n  88,\n  178,\n  0,\n  27,\n  4741,\n  4741,\n  4741,\n  21,\n  121,\n  4734,\n  4734,\n  4734,\n  505,\n  505,\n  505,\n  31,\n  703,\n  4083,\n  4083,\n  4083,\n  2428,\n  1867,\n  1992,\n  3168,\n  3168,\n  3168,\n  188,\n  509,\n  509,\n  509,\n  2823,\n  1320,\n  3144,\n  152,\n  3082,\n  3710,\n  3710,\n  3710,\n  2998,\n  50,\n  50,\n  50,\n  1559,\n  689,\n  1372,\n  1372,\n  1372,\n  2091,\n  1010,\n  1010,\n  1010,\n  2267,\n  1835,\n  3246,\n  3246,\n  3246,\n  2900,\n  2900,\n  2900,\n  21,\n  1,\n  4476,\n  4476,\n  4476,\n  337,\n  201,\n  29,\n  4057,\n  4057,\n  4057,\n  42,\n  33,\n  3318,\n  3318,\n  3318,\n  1047,\n  84,\n  64,\n  24,\n  4042,\n  4042,\n  4042,\n  20,\n  2367,\n  33,\n  3555,\n  3555,\n  3555,\n  0,\n  105,\n  1684,\n  1,\n  1379,\n  25,\n  29,\n  92,\n  455,\n  455,\n  455,\n  1541,\n  1541,\n  1541,\n  1995,\n  2290,\n  447,\n  33,\n  101,\n  1455,\n  1455,\n  1455,\n  31,\n  2507,\n  2045,\n  2045,\n  2045,\n  7,\n  20,\n  31,\n  21,\n  0,\n  387,\n  374,\n  100,\n  32,\n  3349,\n  3349,\n  3349,\n  37,\n  1267,\n  373,\n  1,\n  200,\n  68,\n  339,\n  40,\n  532,\n  532,\n  532,\n  1492,\n  1886,\n  5,\n  1400,\n  7,\n  468,\n  951,\n  472,\n  1193,\n  1930,\n  1930,\n  1930,\n  29,\n  4211,\n  4211,\n  4211,\n  119,\n  1,\n  0,\n  94,\n  371,\n  28,\n  183,\n  21,\n  1502,\n  1502,\n  1502,\n  46,\n  491,\n  491,\n  491,\n  1416,\n  1416,\n  1416,\n  3359,\n  3359,\n  3359,\n  2511,\n  4,\n  773,\n  0,\n  3,\n  100,\n  0,\n  21,\n  0,\n  45,\n  1496,\n  1496,\n  1496,\n  116,\n  4727,\n  4727,\n  4727,\n  394,\n  1993,\n  138,\n  2229,\n  2229,\n  2229,\n  1476,\n  3652,\n  3652,\n  3652,\n  21,\n  351,\n  3781,\n  3781,\n  3781,\n  28,\n  2113,\n  1510,\n  2930,\n  2930,\n  2930,\n  22,\n  22,\n  3254,\n  3254,\n  3254,\n  203,\n  4056,\n  3024,\n  1159,\n  37,\n  58,\n  46,\n  1779,\n  355,\n  1091,\n  40,\n  21,\n  0,\n  880,\n  2882,\n  2882,\n  2882,\n  1144,\n  3614,\n  3614,\n  3614,\n  0,\n  399,\n  20,\n  30,\n  92,\n  1673,\n  256,\n  2735,\n  2735,\n  2735,\n  4,\n  40,\n  2964,\n  2964,\n  2964,\n  45,\n  436,\n  3090,\n  3090,\n  3090,\n  403,\n  983,\n  1549,\n  1058,\n  1712,\n  22,\n  1539,\n  376,\n  357,\n  24,\n  9,\n  3066,\n  3066,\n  3066,\n  2897,\n  2910,\n  34,\n  8,\n  4,\n  549,\n  3589,\n  3589,\n  3589,\n  717,\n  191,\n  60,\n  24,\n  0,\n  33,\n  25,\n  4825,\n  4825,\n  4825,\n  1860,\n  52,\n  35,\n  4401,\n  4401,\n  4401,\n  3221,\n  83,\n  1893,\n  39,\n  603,\n  53,\n  991,\n  2615,\n  197,\n  197,\n  197,\n  7,\n  75,\n  2825,\n  31,\n  775,\n  775,\n  775,\n  2854,\n  2854,\n  2854,\n  714,\n  3093,\n  3093,\n  3093,\n  80,\n  745,\n  5,\n  1815,\n  69,\n  618,\n  1840,\n  2279,\n  2279,\n  2279,\n  847,\n  426,\n  390,\n  753,\n  178,\n  284,\n  284,\n  284,\n  248,\n  1,\n  8,\n  1537,\n  594,\n  1537,\n  1537,\n  1537,\n  74,\n  0,\n  2352,\n  2352,\n  2352,\n  3487,\n  3487,\n  3487,\n  2989,\n  2989,\n  2989,\n  1,\n  26,\n  4110,\n  4110,\n  4110,\n  1824,\n  2318,\n  2318,\n  2318,\n  3669,\n  139,\n  391,\n  704,\n  1,\n  49,\n  1,\n  37,\n  21,\n  2930,\n  2863,\n  2863,\n  2863,\n  785,\n  785,\n  785,\n  924,\n  3519,\n  40,\n  27,\n  1822,\n  0,\n  25,\n  0,\n  1108,\n  4700,\n  4700,\n  4700,\n  507,\n  1831,\n  1,\n  4432,\n  4432,\n  4432,\n  2566,\n  0,\n  1810,\n  212,\n  82,\n  22,\n  28,\n  685,\n  33,\n  143,\n  638,\n  638,\n  638,\n  203,\n  1166,\n  1166,\n  1166,\n  37,\n  22,\n  35,\n  36,\n  798,\n  798,\n  798,\n  330,\n  283,\n  42,\n  284,\n  1994,\n  73,\n  2941,\n  2638,\n  2638,\n  2638,\n  35,\n  1311,\n  3,\n  274,\n  1059,\n  1059,\n  1059,\n  757,\n  2304,\n  4628,\n  4628,\n  4628,\n  5,\n  3258,\n  3258,\n  3258,\n  799,\n  2373,\n  11,\n  635,\n  2634,\n  2634,\n  2634,\n  2537,\n  2654,\n  28,\n  4450,\n  2304,\n  0,\n  378,\n  2478,\n  2478,\n  2478,\n  35,\n  1380,\n  1090,\n  396,\n  396,\n  396,\n  428,\n  428,\n  428,\n  28,\n  34,\n  692,\n  692,\n  692,\n  3534,\n  3534,\n  3534,\n  1,\n  99,\n  58,\n  3,\n  1,\n  4608,\n  4608,\n  4608,\n  1,\n  506,\n  293,\n  3326,\n  882,\n  2188,\n  3033,\n  3033,\n  3033,\n  29,\n  5,\n  27,\n  514,\n  2690,\n  2690,\n  2690,\n  207,\n  130,\n  23,\n  67,\n  30,\n  1356,\n  1356,\n  1356,\n  3933,\n  3933,\n  3933,\n  3610,\n  3610,\n  3610,\n  430,\n  26,\n  1786,\n  2652,\n  2652,\n  2652,\n  62,\n  460,\n  760,\n  3787,\n  3787,\n  3787,\n  43,\n  2,\n  91,\n  3628,\n  3628,\n  3628,\n  3825,\n  3825,\n  3825,\n  1952,\n  45,\n  1740,\n  21,\n  2642,\n  21,\n  109,\n  1118,\n  1509,\n  1509,\n  1509,\n  30,\n  4,\n  20,\n  522,\n  295,\n  60,\n  131,\n  2263,\n  2263,\n  2263,\n  1801,\n  1801,\n  1801,\n  0,\n  111,\n  731,\n  731,\n  731,\n  0,\n  2133,\n  96,\n  20,\n  3970,\n  3970,\n  3970,\n  203,\n  4146,\n  4146,\n  4146,\n  518,\n  518,\n  518,\n  24,\n  3040,\n  3040,\n  3040,\n  2091,\n  1908,\n  795,\n  795,\n  795,\n  21,\n  1849,\n  51,\n  150,\n  230,\n  4,\n  36,\n  61,\n  1128,\n  472,\n  473,\n  473,\n  473,\n  35,\n  387,\n  34,\n  3426,\n  2111,\n  22,\n  697,\n  1241,\n  26,\n  1470,\n  1269,\n  849,\n  3350,\n  3350,\n  3350,\n  3058,\n  3058,\n  3058,\n  52,\n  9,\n  3363,\n  3363,\n  3363,\n  21,\n  3720,\n  3720,\n  3720,\n  65,\n  36,\n  2900,\n  2900,\n  2900,\n  986,\n  30,\n  0,\n  38,\n  748,\n  1747,\n  1126,\n  4,\n  4406,\n  4406,\n  4406,\n  4202,\n  86,\n  2688,\n  1529,\n  0,\n  33,\n  1591,\n  1591,\n  1591,\n  15,\n  1957,\n  3119,\n  30,\n  5,\n  4629,\n  4629,\n  4629,\n  34,\n  1490,\n  1490,\n  1490,\n  55,\n  1862,\n  1862,\n  1862,\n  96,\n  190,\n  1433,\n  416,\n  850,\n  3494,\n  3494,\n  3494,\n  830,\n  28,\n  169,\n  4658,\n  4658,\n  4658,\n  2577,\n  140,\n  652,\n  1586,\n  0,\n  370,\n  1365,\n  201,\n  1,\n  82,\n  3030,\n  61,\n  74,\n  380,\n  1080,\n  4217,\n  4217,\n  4217,\n  5,\n  1,\n  3748,\n  3748,\n  3748,\n  2255,\n  411,\n  508,\n  201,\n  3,\n  21,\n  198,\n  29,\n  2196,\n  2237,\n  24,\n  1376,\n  1421,\n  5,\n  1295,\n  3604,\n  3604,\n  3604,\n  149,\n  149,\n  149,\n  376,\n  1473,\n  1473,\n  1473,\n  2371,\n  215,\n  489,\n  184,\n  184,\n  184,\n  62,\n  1418,\n  1418,\n  1418,\n  23,\n  23,\n  820,\n  96,\n  574,\n  32,\n  3492,\n  3492,\n  3492,\n  1454,\n  2985,\n  2985,\n  2985,\n  119,\n  38,\n  1591,\n  2271,\n  2271,\n  2271,\n  10,\n  2232,\n  3009,\n  3009,\n  3009,\n  3785,\n  3785,\n  3785,\n  1399,\n  2856,\n  2856,\n  2856,\n  4201,\n  4201,\n  4201,\n  22,\n  545,\n  38,\n  69,\n  1904,\n  1904,\n  1904,\n  2818,\n  97,\n  25,\n  510,\n  1524,\n  122,\n  1931,\n  1931,\n  1931,\n  3444,\n  3444,\n  3444,\n  878,\n  803,\n  41,\n  146,\n  31,\n  3359,\n  3359,\n  3359,\n  3724,\n  3724,\n  3724,\n  2938,\n  2938,\n  2938,\n  50,\n  478,\n  13,\n  2,\n  286,\n  112,\n  2626,\n  2626,\n  2626,\n  766,\n  156,\n  42,\n  2895,\n  1052,\n  60,\n  3655,\n  3655,\n  3655,\n  181,\n  634,\n  2625,\n  3149,\n  1821,\n  24,\n  402,\n  219,\n  20,\n  44,\n  48,\n  57,\n  73,\n  468,\n  1194,\n  32,\n  5,\n  49,\n  4729,\n  46,\n  205,\n  3782,\n  1,\n  2,\n  302,\n  111,\n  3749,\n  28,\n  412,\n  1520,\n  36,\n  2892,\n  2892,\n  2892,\n  68,\n  1626,\n  2226,\n  1198,\n  0,\n  173,\n  216,\n  216,\n  216,\n  1965,\n  20,\n  1776,\n  757,\n  23,\n  4366,\n  4366,\n  4366,\n  95,\n  139,\n  1566,\n  188,\n  1375,\n  0,\n  2248,\n  2248,\n  2248,\n  4836,\n  4836,\n  4836,\n  1002,\n  32,\n  4533,\n  4533,\n  4533,\n  2207,\n  104,\n  0,\n  592,\n  458,\n  21,\n  1986,\n  1986,\n  1986,\n  256,\n  1954,\n  1954,\n  1954,\n  829,\n  115,\n  1532,\n  1532,\n  1532,\n  1,\n  214,\n  2976,\n  669,\n  4860,\n  4860,\n  4860,\n  1601,\n  1601,\n  1601,\n  29,\n  31,\n  216,\n  2227,\n  113,\n  4351,\n  4351,\n  4351,\n  1230,\n  3110,\n  397,\n  41,\n  3,\n  1,\n  110,\n  77,\n  1994,\n  1994,\n  1994,\n  4041,\n  1219,\n  588,\n  338,\n  22,\n  27,\n  2667,\n  2667,\n  2667,\n  2009,\n  2009,\n  2009,\n  31,\n  222,\n  91,\n  2,\n  3012,\n  4582,\n  4582,\n  4582,\n  0,\n  1736,\n  2442,\n  88,\n  505,\n  2718,\n  4497,\n  4497,\n  4497,\n  155,\n  3352,\n  3352,\n  3352,\n  10,\n  24,\n  4889,\n  4889,\n  4889,\n  520,\n  1856,\n  53,\n  2,\n  33,\n  2187,\n  2187,\n  2187,\n  1,\n  2965,\n  2965,\n  2965,\n  117,\n  30,\n  3991,\n  3991,\n  3991,\n  633,\n  40,\n  385,\n  1964,\n  57,\n  34,\n  3962,\n  2163,\n  2281,\n  3828,\n  3828,\n  3828,\n  157,\n  4493,\n  4493,\n  4493,\n  2782,\n  577,\n  70,\n  4448,\n  4448,\n  4448,\n  56,\n  3344,\n  3344,\n  3344,\n  3,\n  39,\n  149,\n  149,\n  149,\n  352,\n  759,\n  61,\n  89,\n  22,\n  1128,\n  1128,\n  1128,\n  35,\n  142,\n  2367,\n  2367,\n  2367,\n  159,\n  966,\n  2992,\n  2992,\n  2992,\n  3398,\n  3398,\n  3398,\n  372,\n  376,\n  21,\n  107,\n  3824,\n  3824,\n  3824,\n  4854,\n  4854,\n  4854,\n  1867,\n  339,\n  383,\n  755,\n  819,\n  81,\n  864,\n  75,\n  32,\n  258,\n  396,\n  3080,\n  3080,\n  3080,\n  45,\n  1243,\n  107,\n  3100,\n  3061,\n  3061,\n  3061,\n  1,\n  62,\n  61,\n  3236,\n  3236,\n  3236,\n  1955,\n  1955,\n  1955,\n  1336,\n  0,\n  0,\n  1292,\n  1292,\n  1292,\n  95,\n  1953,\n  30,\n  488,\n  4836,\n  4836,\n  4836,\n  153,\n  135,\n  839,\n  839,\n  839,\n  1284,\n  2916,\n  3056,\n  1555,\n  206,\n  1924,\n  1924,\n  1924,\n  2928,\n  3138,\n  3138,\n  3138,\n  2589,\n  2589,\n  2589,\n  59,\n  2659,\n  25,\n  0,\n  20,\n  106,\n  31,\n  31,\n  233,\n  4495,\n  4495,\n  4495,\n  835,\n  847,\n  1149,\n  381,\n  51,\n  27,\n  2619,\n  120,\n  836,\n  836,\n  836,\n  4878,\n  4878,\n  4878,\n  1585,\n  1585,\n  1585,\n  32,\n  1243,\n  90,\n  329,\n  44,\n  2166,\n  2166,\n  2166,\n  4033,\n  4033,\n  4033,\n  3051,\n  1,\n  34,\n  845,\n  285,\n  1,\n  2101,\n  0,\n  4137,\n  4137,\n  4137,\n  141,\n  52,\n  3824,\n  3824,\n  3824,\n  2450,\n  2,\n  69,\n  2619,\n  0,\n  36,\n  1530,\n  1201,\n  69,\n  1153,\n  4076,\n  4076,\n  4076,\n  1829,\n  1829,\n  1829,\n  132,\n  4701,\n  4701,\n  4701,\n  32,\n  99,\n  2327,\n  3074,\n  3074,\n  3074,\n  55,\n  2403,\n  2403,\n  2403,\n  27,\n  2156,\n  381,\n  3,\n  124,\n  1092,\n  3818,\n  3818,\n  3818,\n  4827,\n  4827,\n  4827,\n  625,\n  68,\n  29,\n  0,\n  2,\n  109,\n  1242,\n  1242,\n  1242,\n  187,\n  33,\n  225,\n  93,\n  35,\n  117,\n  2171,\n  18,\n  71,\n  49,\n  0,\n  3755,\n  1158,\n  137,\n  137,\n  137,\n  2402,\n  2402,\n  2402,\n  100,\n  1893,\n  2618,\n  2618,\n  2618,\n  309,\n  953,\n  1426,\n  1426,\n  1426,\n  3651,\n  3651,\n  3651,\n  458,\n  1,\n  161,\n  415,\n  3844,\n  3844,\n  3844,\n  2337,\n  3039,\n  3039,\n  3039,\n  1892,\n  2,\n  1417,\n  1417,\n  1417,\n  1770,\n  140,\n  53,\n  801,\n  2367,\n  2816,\n  2816,\n  2816,\n  2553,\n  4194,\n  4194,\n  4194,\n  723,\n  6,\n  25,\n  219,\n  1852,\n  103,\n  1822,\n  43,\n  365,\n  34,\n  1847,\n  34,\n  58,\n  4929,\n  4929,\n  4929,\n  731,\n  2540,\n  2540,\n  2540,\n  1611,\n  99,\n  2502,\n  2328,\n  1549,\n  1273,\n  1273,\n  1273,\n  6,\n  736,\n  4045,\n  4045,\n  4045,\n  1084,\n  24,\n  438,\n  0,\n  572,\n  4206,\n  4206,\n  4206,\n  1,\n  237,\n  2605,\n  2605,\n  2605,\n  3100,\n  1566,\n  1566,\n  1566,\n  1372,\n  1372,\n  1372,\n  31,\n  120,\n  176,\n  2680,\n  2680,\n  2680,\n  362,\n  214,\n  2787,\n  210,\n  1976,\n  1976,\n  1976,\n  77,\n  1803,\n  49,\n  25,\n  2012,\n  2012,\n  2012,\n  438,\n  438,\n  438,\n  1973,\n  361,\n  28,\n  366,\n  4032,\n  4032,\n  4032,\n  91,\n  4110,\n  4110,\n  4110,\n  63,\n  2410,\n  28,\n  9,\n  49,\n  194,\n  26,\n  95,\n  99,\n  982,\n  3277,\n  3277,\n  3277,\n  116,\n  923,\n  697,\n  1170,\n  54,\n  2537,\n  2537,\n  2537,\n  1267,\n  1204,\n  3565,\n  3565,\n  3565,\n  2498,\n  107,\n  42,\n  1708,\n  66,\n  28,\n  573,\n  997,\n  0,\n  1512,\n  1512,\n  1512,\n  4477,\n  4477,\n  4477,\n  46,\n  30,\n  81,\n  67,\n  186,\n  4,\n  31,\n  78,\n  4382,\n  2174,\n  366,\n  1933,\n  1034,\n  179,\n  6,\n  231,\n  1737,\n  1737,\n  1737,\n  1161,\n  156,\n  97,\n  4917,\n  4917,\n  4917,\n  4236,\n  4236,\n  4236,\n  0,\n  446,\n  27,\n  71,\n  55,\n  36,\n  825,\n  1,\n  823,\n  823,\n  823,\n  327,\n  327,\n  327,\n  81,\n  173,\n  0,\n  2740,\n  46,\n  46,\n  2719,\n  2719,\n  2719,\n  845,\n  26,\n  21,\n  1,\n  4276,\n  4276,\n  4276,\n  1282,\n  0,\n  2110,\n  3971,\n  63,\n  4614,\n  4614,\n  4614,\n  495,\n  3572,\n  2314,\n  1412,\n  79,\n  3128,\n  3128,\n  3128,\n  578,\n  2536,\n  2536,\n  2536,\n  4490,\n  86,\n  1872,\n  3543,\n  3543,\n  3543,\n  977,\n  977,\n  977,\n  303,\n  0,\n  2087,\n  2574,\n  2574,\n  2574,\n  907,\n  28,\n  589,\n  71,\n  32,\n  31,\n  3593,\n  3593,\n  3593,\n  84,\n  338,\n  153,\n  2408,\n  2408,\n  2408,\n  62,\n  814,\n  3170,\n  3170,\n  3170,\n  83,\n  22,\n  1288,\n  212,\n  1788,\n  47,\n  1,\n  2346,\n  2346,\n  2346,\n  4922,\n  4922,\n  4922,\n  2,\n  561,\n  50,\n  4086,\n  4086,\n  4086,\n  135,\n  22,\n  1085,\n  1085,\n  1085,\n  177,\n  80,\n  0,\n  23,\n  20,\n  2506,\n  2122,\n  2122,\n  2122,\n  367,\n  2837,\n  2837,\n  2837,\n  23,\n  985,\n  10,\n  1323,\n  1323,\n  1323,\n  2795,\n  1527,\n  4083,\n  4083,\n  4083,\n  72,\n  2,\n  31,\n  432,\n  1723,\n  534,\n  3075,\n  127,\n  2708,\n  2708,\n  2708,\n  365,\n  538,\n  2771,\n  2771,\n  2771,\n  119,\n  920,\n  4669,\n  4669,\n  4669,\n  861,\n  366,\n  173,\n  67,\n  159,\n  49,\n  2738,\n  124,\n  22,\n  123,\n  72,\n  27,\n  3428,\n  39,\n  57,\n  2769,\n  64,\n  956,\n  11,\n  63,\n  13,\n  588,\n  2415,\n  2415,\n  2415,\n  383,\n  1120,\n  3658,\n  3658,\n  3658,\n  661,\n  661,\n  661,\n  1984,\n  153,\n  29,\n  2163,\n  988,\n  37,\n  43,\n  0,\n  0,\n  980,\n  6,\n  27,\n  1985,\n  875,\n  2017,\n  2927,\n  2927,\n  2927,\n  2757,\n  613,\n  4718,\n  4718,\n  4718,\n  367,\n  17,\n  242,\n  200,\n  28,\n  1331,\n  216,\n  257,\n  257,\n  257,\n  29,\n  251,\n  2021,\n  2527,\n  2527,\n  2527,\n  1153,\n  29,\n  177,\n  75,\n  1185,\n  485,\n  2212,\n  389,\n  43,\n  36,\n  590,\n  1812,\n  1812,\n  1812,\n  1620,\n  59,\n  80,\n  3192,\n  3192,\n  3192,\n  21,\n  925,\n  245,\n  630,\n  32,\n  2961,\n  29,\n  2636,\n  1,\n  390,\n  935,\n  336,\n  25,\n  4567,\n  4567,\n  4567,\n  128,\n  95,\n  1,\n  2117,\n  4,\n  30,\n  574,\n  554,\n  2328,\n  2328,\n  2328,\n  97,\n  43,\n  106,\n  25,\n  1364,\n  573,\n  0,\n  622,\n  0,\n  2066,\n  4978,\n  4978,\n  4978,\n  2185,\n  2185,\n  2185,\n  151,\n  338,\n  0,\n  2375,\n  31,\n  1,\n  0,\n  250,\n  94,\n  4163,\n  4163,\n  4163,\n  282,\n  165,\n  3546,\n  3546,\n  3546,\n  3199,\n  229,\n  3774,\n  3774,\n  3774,\n  2001,\n  192,\n  40,\n  2534,\n  2534,\n  2534,\n  0,\n  109,\n  4812,\n  4812,\n  4812,\n  91,\n  1181,\n  1181,\n  1181,\n  125,\n  269,\n  4737,\n  4737,\n  4737,\n  2797,\n  2797,\n  2797,\n  315,\n  34,\n  0,\n  20,\n  66,\n  1,\n  334,\n  4991,\n  4991,\n  4991,\n  84,\n  202,\n  488,\n  28,\n  1009,\n  1009,\n  1009,\n  1626,\n  2283,\n  2283,\n  2283,\n  2450,\n  1168,\n  143,\n  38,\n  582,\n  160,\n  1936,\n  1936,\n  1936,\n  147,\n  31,\n  4560,\n  4560,\n  4560,\n  139,\n  26,\n  1,\n  75,\n  72,\n  2884,\n  2884,\n  2884,\n  732,\n  66,\n  163,\n  16,\n  5,\n  366,\n  249,\n  4203,\n  4203,\n  4203,\n  23,\n  3128,\n  3128,\n  3128,\n  0,\n  1008,\n  1008,\n  1008,\n  55,\n  560,\n  560,\n  560,\n  1346,\n  0,\n  1919,\n  26,\n  0,\n  26,\n  635,\n  658,\n  4,\n  44,\n  112,\n  112,\n  112,\n  0,\n  5,\n  221,\n  4683,\n  4683,\n  4683,\n  264,\n  264,\n  264,\n  0,\n  32,\n  148,\n  29,\n  835,\n  881,\n  1,\n  2434,\n  2434,\n  2434,\n  98,\n  176,\n  1382,\n  80,\n  48,\n  62,\n  42,\n  57,\n  47,\n  1511,\n  147,\n  235,\n  2891,\n  2891,\n  2891,\n  410,\n  3400,\n  81,\n  4984,\n  4984,\n  4984,\n  2534,\n  2534,\n  2534,\n  3598,\n  3598,\n  3598,\n  732,\n  732,\n  732,\n  54,\n  422,\n  21,\n  1855,\n  3197,\n  3197,\n  3197,\n  117,\n  2122,\n  2122,\n  2122,\n  1024,\n  41,\n  138,\n  2859,\n  2859,\n  2859,\n  0,\n  66,\n  0,\n  768,\n  768,\n  768,\n  1,\n  4794,\n  4794,\n  4794,\n  38,\n  2635,\n  226,\n  3958,\n  3958,\n  3958,\n  662,\n  71,\n  71,\n  71,\n  0,\n  2827,\n  2827,\n  2827,\n  96,\n  367,\n  2768,\n  2768,\n  2768,\n  277,\n  2196,\n  0,\n  1969,\n  60,\n  688,\n  2288,\n  23,\n  46,\n  4986,\n  4986,\n  4986,\n  1741,\n  2397,\n  2397,\n  2397,\n  604,\n  117,\n  47,\n  1,\n  3665,\n  2241,\n  72,\n  208,\n  1570,\n  1570,\n  1570,\n  145,\n  67,\n  23,\n  170,\n  2,\n  247,\n  35,\n  2574,\n  2852,\n  1639,\n  1639,\n  1639,\n  22,\n  1385,\n  2641,\n  20,\n  77,\n  72,\n  3506,\n  365,\n  0,\n  68,\n  77,\n  2743,\n  2743,\n  2743,\n  26,\n  4514,\n  4514,\n  4514,\n  2,\n  30,\n  3,\n  230,\n  3667,\n  1371,\n  1371,\n  1371,\n  3923,\n  3923,\n  3923,\n  128,\n  59,\n  59,\n  59,\n  4327,\n  4327,\n  4327,\n  86,\n  1678,\n  3,\n  2504,\n  1579,\n  1579,\n  1579,\n  0,\n  1033,\n  2398,\n  2398,\n  2398,\n  4238,\n  4238,\n  4238,\n  3307,\n  3480,\n  37,\n  1460,\n  116,\n  4,\n  2015,\n  2015,\n  2015,\n  2220,\n  2220,\n  2220,\n  232,\n  583,\n  667,\n  3689,\n  3689,\n  3689,\n  3,\n  4083,\n  4083,\n  4083,\n  394,\n  83,\n  310,\n  0,\n  168,\n  4419,\n  4419,\n  4419,\n  969,\n  969,\n  969,\n  528,\n  402,\n  1587,\n  4859,\n  4859,\n  4859,\n  572,\n  572,\n  572,\n  674,\n  3903,\n  3903,\n  3903,\n  0,\n  26,\n  2255,\n  68,\n  3,\n  34,\n  51,\n  3293,\n  3293,\n  3293,\n  1061,\n  2456,\n  2456,\n  2456,\n  176,\n  188,\n  1,\n  2130,\n  31,\n  30,\n  339,\n  368,\n  368,\n  368,\n  1,\n  166,\n  275,\n  255,\n  341,\n  751,\n  31,\n  657,\n  657,\n  657,\n  330,\n  841,\n  53,\n  1760,\n  1760,\n  1760,\n  210,\n  258,\n  1000,\n  3881,\n  3881,\n  3881,\n  41,\n  3974,\n  3974,\n  3974,\n  1827,\n  1547,\n  1547,\n  1547,\n  1499,\n  1499,\n  1499,\n  30,\n  318,\n  52,\n  41,\n  37,\n  37,\n  37,\n  21,\n  99,\n  677,\n  2534,\n  2156,\n  2156,\n  2156,\n  1742,\n  637,\n  1690,\n  1690,\n  1690,\n  2511,\n  1291,\n  3297,\n  3297,\n  3297,\n  131,\n  505,\n  452,\n  0,\n  3670,\n  3670,\n  3670,\n  1,\n  28,\n  3173,\n  3173,\n  3173,\n  25,\n  1366,\n  28,\n  103,\n  56,\n  63,\n  2495,\n  2495,\n  2495,\n  2255,\n  2255,\n  2255,\n  2872,\n  33,\n  1166,\n  68,\n  1,\n  1086,\n  69,\n  69,\n  69,\n  2609,\n  2609,\n  2609,\n  269,\n  20,\n  2770,\n  2770,\n  2770,\n  2,\n  1130,\n  1130,\n  1130,\n  1285,\n  1225,\n  527,\n  33,\n  2308,\n  45,\n  2164,\n  2164,\n  2164,\n  2369,\n  2369,\n  2369,\n  20,\n  642,\n  642,\n  642,\n  1127,\n  1590,\n  626,\n  3462,\n  3462,\n  3462,\n  1788,\n  78,\n  129,\n  0,\n  2089,\n  2089,\n  2089,\n  30,\n  26,\n  1030,\n  59,\n  3961,\n  568,\n  1,\n  1376,\n  171,\n  23,\n  9,\n  0,\n  96,\n  75,\n  264,\n  1348,\n  1348,\n  1348,\n  3235,\n  3235,\n  3235,\n  0,\n  2,\n  2840,\n  2840,\n  2840,\n  405,\n  3933,\n  1719,\n  3192,\n  22,\n  32,\n  664,\n  689,\n  159,\n  292,\n  55,\n  2855,\n  2855,\n  2855,\n  109,\n  2457,\n  2457,\n  2457,\n  2158,\n  812,\n  1,\n  600,\n  302,\n  852,\n  0,\n  395,\n  223,\n  2572,\n  2572,\n  2572,\n  105,\n  40,\n  1730,\n  4361,\n  20,\n  0,\n  2101,\n  22,\n  57,\n  4667,\n  4667,\n  4667,\n  526,\n  177,\n  177,\n  177,\n  284,\n  783,\n  25,\n  68,\n  562,\n  4053,\n  4053,\n  4053,\n  169,\n  26,\n  524,\n  89,\n  2,\n  0,\n  326,\n  256,\n  26,\n  0,\n  1283,\n  756,\n  1236,\n  104,\n  35,\n  302,\n  4304,\n  4304,\n  4304,\n  2351,\n  2351,\n  2351,\n  1868,\n  3622,\n  1298,\n  12,\n  21,\n  2931,\n  2931,\n  2931,\n  2802,\n  2802,\n  2802,\n  138,\n  63,\n  2816,\n  2816,\n  2816,\n  254,\n  6,\n  99,\n  11,\n  32,\n  1007,\n  2512,\n  88,\n  88,\n  88,\n  375,\n  61,\n  44,\n  4568,\n  4568,\n  4568,\n  3389,\n  3389,\n  3389,\n  39,\n  24,\n  4673,\n  4673,\n  4673,\n  4685,\n  4685,\n  4685,\n  2911,\n  2911,\n  2911,\n  0,\n  153,\n  344,\n  344,\n  344,\n  3270,\n  2192,\n  264,\n  2803,\n  2803,\n  2803,\n  0,\n  114,\n  650,\n  2859,\n  2859,\n  2859,\n  204,\n  279,\n  6,\n  525,\n  26,\n  20,\n  1070,\n  63,\n  132,\n  132,\n  132,\n  756,\n  61,\n  258,\n  269,\n  436,\n  0,\n  2656,\n  37,\n  41,\n  805,\n  1551,\n  1551,\n  1551,\n  110,\n  33,\n  10,\n  1753,\n  1753,\n  1753,\n  0,\n  103,\n  103,\n  103,\n  876,\n  876,\n  876,\n  3290,\n  3290,\n  3290,\n  3430,\n  58,\n  0,\n  336,\n  92,\n  1460,\n  1507,\n  1818,\n  1818,\n  1818,\n  25,\n  2542,\n  1006,\n  1006,\n  1006,\n  3306,\n  3306,\n  3306,\n  97,\n  33,\n  23,\n  26,\n  30,\n  0,\n  2862,\n  2,\n  20,\n  141,\n  1276,\n  825,\n  365,\n  360,\n  42,\n  103,\n  698,\n  413,\n  1321,\n  2517,\n  2517,\n  2517,\n  62,\n  1100,\n  687,\n  1116,\n  1331,\n  62,\n  36,\n  3430,\n  2915,\n  1366,\n  277,\n  2970,\n  2970,\n  2970,\n  10,\n  2274,\n  24,\n  4169,\n  4169,\n  4169,\n  36,\n  1,\n  366,\n  21,\n  1752,\n  1752,\n  1752,\n  26,\n  3355,\n  3355,\n  3355,\n  325,\n  351,\n  522,\n  22,\n  722,\n  950,\n  950,\n  950,\n  0,\n  23,\n  50,\n  34,\n  1621,\n  1621,\n  1621,\n  2028,\n  2028,\n  2028,\n  36,\n  4793,\n  4793,\n  4793,\n  957,\n  1387,\n  91,\n  756,\n  1,\n  139,\n  328,\n  450,\n  3003,\n  71,\n  1,\n  224,\n  4866,\n  4866,\n  4866,\n  2347,\n  2347,\n  2347,\n  2330,\n  2330,\n  2330,\n  24,\n  35,\n  130,\n  301,\n  1784,\n  146,\n  731,\n  3914,\n  3914,\n  3914,\n  1,\n  3192,\n  27,\n  1598,\n  172,\n  990,\n  24,\n  1141,\n  286,\n  310,\n  1673,\n  1673,\n  1673,\n  40,\n  3653,\n  3653,\n  3653,\n  2039,\n  2039,\n  2039,\n  25,\n  20,\n  27,\n  3264,\n  3264,\n  3264,\n  303,\n  751,\n  4467,\n  4467,\n  4467,\n  1,\n  101,\n  1443,\n  120,\n  98,\n  4,\n  4281,\n  4281,\n  4281,\n  5,\n  121,\n  20,\n  3245,\n  3245,\n  3245,\n  75,\n  1555,\n  1555,\n  1555,\n  428,\n  82,\n  27,\n  1060,\n  4364,\n  4364,\n  4364,\n  2981,\n  2981,\n  2981,\n  186,\n  4437,\n  4437,\n  4437,\n  125,\n  0,\n  2298,\n  2298,\n  2298,\n  1337,\n  109,\n  2560,\n  2560,\n  2560,\n  30,\n  2241,\n  1877,\n  30,\n  2299,\n  22,\n  241,\n  580,\n  91,\n  2759,\n  2759,\n  2759,\n  704,\n  463,\n  51,\n  435,\n  0,\n  204,\n  31,\n  2676,\n  0,\n  4295,\n  4295,\n  4295,\n  40,\n  1539,\n  37,\n  1531,\n  1,\n  1525,\n  290,\n  2184,\n  26,\n  28,\n  171,\n  2313,\n  84,\n  184,\n  368,\n  4,\n  2303,\n  3719,\n  3719,\n  3719,\n  7,\n  3288,\n  3288,\n  3288,\n  4,\n  110,\n  443,\n  127,\n  314,\n  20,\n  7,\n  1537,\n  1537,\n  1537,\n  67,\n  21,\n  2,\n  2585,\n  214,\n  589,\n  0,\n  456,\n  3653,\n  3653,\n  3653,\n  128,\n  1,\n  519,\n  151,\n  0,\n  67,\n  360,\n  0,\n  41,\n  2565,\n  2565,\n  2565,\n  31,\n  3,\n  730,\n  1167,\n  2220,\n  84,\n  28,\n  24,\n  43,\n  0,\n  1,\n  1828,\n  2413,\n  2413,\n  2413,\n  1081,\n  1081,\n  1081,\n  1864,\n  2123,\n  410,\n  2257,\n  2257,\n  2257,\n  2559,\n  25,\n  1598,\n  1598,\n  1598,\n  910,\n  0,\n  784,\n  2589,\n  2589,\n  2589,\n  38,\n  951,\n  316,\n  316,\n  316,\n  14,\n  200,\n  526,\n  23,\n  54,\n  3213,\n  3213,\n  3213,\n  75,\n  40,\n  675,\n  741,\n  23,\n  164,\n  5,\n  2447,\n  2447,\n  2447,\n  23,\n  0,\n  4344,\n  4344,\n  4344,\n  2,\n  2684,\n  2684,\n  2684,\n  719,\n  719,\n  719,\n  2273,\n  1068,\n  1856,\n  1856,\n  1856,\n  159,\n  1045,\n  0,\n  62,\n  172,\n  26,\n  874,\n  2785,\n  2973,\n  2973,\n  2973,\n  1259,\n  3211,\n  24,\n  45,\n  0,\n  2534,\n  1,\n  7,\n  32,\n  23,\n  21,\n  4134,\n  4134,\n  4134,\n  1873,\n  50,\n  22,\n  2912,\n  99,\n  5,\n  2094,\n  41,\n  29,\n  32,\n  24,\n  2594,\n  29,\n  28,\n  2927,\n  1740,\n  1740,\n  1740,\n  195,\n  72,\n  103,\n  4729,\n  4729,\n  4729,\n  36,\n  3783,\n  3783,\n  3783,\n  4091,\n  4091,\n  4091,\n  348,\n  4989,\n  2763,\n  3049,\n  4,\n  22,\n  349,\n  57,\n  2711,\n  1012,\n  299,\n  0,\n  245,\n  2317,\n  123,\n  41,\n  23,\n  1096,\n  31,\n  1009,\n  1108,\n  1108,\n  1108,\n  73,\n  61,\n  2,\n  56,\n  33,\n  0,\n  71,\n  311,\n  311,\n  918,\n  32,\n  274,\n  97,\n  767,\n  767,\n  767,\n  2641,\n  4746,\n  4746,\n  4746,\n  62,\n  0,\n  34,\n  777,\n  53,\n  129,\n  54,\n  21,\n  398,\n  3293,\n  3293,\n  3293,\n  1348,\n  35,\n  806,\n  259,\n  150,\n  1090,\n  792,\n  1189,\n  27,\n  2315,\n  48,\n  0,\n  0,\n  759,\n  40,\n  363,\n  93,\n  104,\n  37,\n  3687,\n  3687,\n  3687,\n  68,\n  26,\n  71,\n  37,\n  63,\n  57,\n  20,\n  2662,\n  2662,\n  2662,\n  21,\n  35,\n  470,\n  2998,\n  2998,\n  2998,\n  40,\n  848,\n  54,\n  72,\n  93,\n  322,\n  5,\n  26,\n  29,\n  2965,\n  2965,\n  2965,\n  276,\n  23,\n  32,\n  127,\n  239,\n  239,\n  239,\n  1160,\n  53,\n  1548,\n  27,\n  57,\n  34,\n  0,\n  60,\n  58,\n  8,\n  1928,\n  1928,\n  1928,\n  300,\n  434,\n  45,\n  410,\n  4278,\n  4278,\n  4278,\n  1154,\n  3683,\n  3683,\n  3683,\n  31,\n  1,\n  198,\n  32,\n  796,\n  4024,\n  4024,\n  4024,\n  1110,\n  53,\n  32,\n  58,\n  4540,\n  4540,\n  4540,\n  4116,\n  4116,\n  4116,\n  761,\n  67,\n  328,\n  603,\n  21,\n  3953,\n  3953,\n  3953,\n  4387,\n  4387,\n  4387,\n  476,\n  29,\n  1,\n  0,\n  1259,\n  73,\n  0,\n  203,\n  1509,\n  2505,\n  3305,\n  2439,\n  2340,\n  214,\n  2283,\n  0,\n  34,\n  381,\n  0,\n  7,\n  3049,\n  3049,\n  3049,\n  364,\n  3090,\n  3090,\n  3090,\n  844,\n  844,\n  844,\n  0,\n  178,\n  5,\n  2995,\n  2995,\n  2995,\n  21,\n  387,\n  4709,\n  4709,\n  4709,\n  2740,\n  2740,\n  2740,\n  26,\n  213,\n  3581,\n  3581,\n  3581,\n  221,\n  59,\n  2664,\n  2664,\n  2664,\n  380,\n  380,\n  380,\n  498,\n  25,\n  56,\n  3195,\n  3195,\n  3195,\n  225,\n  670,\n  3122,\n  3122,\n  3122,\n  0,\n  65,\n  1098,\n  49,\n  132,\n  945,\n  945,\n  945,\n  50,\n  731,\n  620,\n  620,\n  620,\n  58,\n  1464,\n  100,\n  59,\n  131,\n  65,\n  58,\n  58,\n  21,\n  0,\n  357,\n  536,\n  4844,\n  4844,\n  4844,\n  2947,\n  2947,\n  2947,\n  93,\n  769,\n  28,\n  20,\n  21,\n  48,\n  58,\n  1144,\n  83,\n  58,\n  1095,\n  1531,\n  0,\n  44,\n  3959,\n  3959,\n  3959,\n  95,\n  4045,\n  69,\n  3073,\n  3073,\n  3073,\n  182,\n  27,\n  66,\n  26,\n  120,\n  30,\n  4060,\n  4060,\n  4060,\n  27,\n  0,\n  29,\n  194,\n  86,\n  44,\n  4,\n  28,\n  431,\n  789,\n  1489,\n  743,\n  155,\n  22,\n  733,\n  132,\n  0,\n  115,\n  67,\n  1,\n  1087,\n  30,\n  117,\n  0,\n  1,\n  2318,\n  4068,\n  104,\n  2358,\n  2358,\n  2358,\n  88,\n  1913,\n  1913,\n  1913,\n  4826,\n  4826,\n  4826,\n  2612,\n  41,\n  20,\n  624,\n  4,\n  98,\n  796,\n  1777,\n  589,\n  589,\n  589,\n  3514,\n  3514,\n  3514,\n  1026,\n  434,\n  2644,\n  0,\n  5,\n  0,\n  59,\n  21,\n  4852,\n  4852,\n  4852,\n  2201,\n  35,\n  1198,\n  4382,\n  4382,\n  4382,\n  35,\n  71,\n  800,\n  33,\n  32,\n  20,\n  42,\n  52,\n  34,\n  29,\n  772,\n  2267,\n  2267,\n  2267,\n  1097,\n  107,\n  0,\n  2208,\n  4,\n  1103,\n  134,\n  3168,\n  3168,\n  3168,\n  7,\n  48,\n  1753,\n  29,\n  107,\n  0,\n  310,\n  82,\n  124,\n  1171,\n  3788,\n  3788,\n  3788,\n  1,\n  62,\n  66,\n  93,\n  0,\n  4748,\n  4748,\n  4748,\n  94,\n  418,\n  53,\n  4966,\n  4966,\n  4966,\n  29,\n  27,\n  1097,\n  3442,\n  176,\n  1672,\n  837,\n  0,\n  185,\n  0,\n  1023,\n  128,\n  64,\n  1464,\n  31,\n  31,\n  1,\n  2076,\n  2076,\n  2076,\n  214,\n  616,\n  1549,\n  32,\n  3090,\n  3090,\n  3090,\n  4502,\n  4502,\n  4502,\n  37,\n  98,\n  89,\n  3328,\n  3328,\n  3328,\n  3774,\n  3774,\n  3774,\n  2775,\n  517,\n  78,\n  30,\n  869,\n  0,\n  32,\n  186,\n  2256,\n  66,\n  3451,\n  3451,\n  3451,\n  836,\n  2208,\n  98,\n  85,\n  32,\n  260,\n  3005,\n  3005,\n  3005,\n  441,\n  441,\n  441,\n  139,\n  91,\n  102,\n  47,\n  517,\n  76,\n  41,\n  1792,\n  1792,\n  1792,\n  1705,\n  4153,\n  4153,\n  4153,\n  933,\n  90,\n  2221,\n  2221,\n  2221,\n  2040,\n  1769,\n  1769,\n  1769,\n  7,\n  2753,\n  37,\n  812,\n  139,\n  94,\n  3636,\n  67,\n  24,\n  4786,\n  4786,\n  4786,\n  2846,\n  4,\n  29,\n  1296,\n  46,\n  33,\n  62,\n  39,\n  1,\n  2772,\n  0,\n  183,\n  319,\n  188,\n  914,\n  1278,\n  2992,\n  3595,\n  136,\n  3388,\n  3388,\n  3388,\n  62,\n  681,\n  1,\n  50,\n  26,\n  122,\n  26,\n  147,\n  94,\n  150,\n  63,\n  366,\n  915,\n  1,\n  133,\n  3051,\n  1403,\n  99,\n  486,\n  0,\n  1290,\n  515,\n  1670,\n  30,\n  58,\n  1741,\n  1741,\n  1741,\n  641,\n  23,\n  52,\n  0,\n  3409,\n  3409,\n  3409,\n  133,\n  1942,\n  1942,\n  1942,\n  559,\n  407,\n  2054,\n  367,\n  93,\n  109,\n  367,\n  80,\n  201,\n  0,\n  2922,\n  106,\n  106,\n  106,\n  56,\n  4284,\n  4284,\n  4284,\n  1464,\n  72,\n  2307,\n  71,\n  31,\n  1299,\n  1299,\n  1299,\n  4382,\n  4382,\n  4382,\n  28,\n  310,\n  1,\n  2042,\n  3141,\n  371,\n  2827,\n  2827,\n  2827,\n  2051,\n  71,\n  0,\n  24,\n  123,\n  191,\n  2373,\n  2373,\n  2373,\n  1,\n  24,\n  0,\n  25,\n  634,\n  4,\n  3,\n  140,\n  148,\n  369,\n  0,\n  55,\n  372,\n  216,\n  4516,\n  4516,\n  4516,\n  41,\n  129,\n  1,\n  4081,\n  2645,\n  124,\n  3766,\n  246,\n  116,\n  62,\n  243,\n  659,\n  659,\n  659,\n  0,\n  126,\n  23,\n  150,\n  3544,\n  276,\n  276,\n  276,\n  830,\n  173,\n  210,\n  854,\n  514,\n  34,\n  195,\n  105,\n  2625,\n  2625,\n  2625,\n  1489,\n  1,\n  20,\n  1548,\n  21,\n  1,\n  5,\n  857,\n  78,\n  26,\n  2270,\n  2648,\n  2648,\n  2648,\n  2889,\n  2889,\n  2889,\n  861,\n  4942,\n  4942,\n  4942,\n  37,\n  1,\n  0,\n  3309,\n  3309,\n  3309,\n  3613,\n  3613,\n  3613,\n  25,\n  338,\n  898,\n  113,\n  32,\n  2336,\n  2336,\n  2336,\n  2024,\n  1623,\n  3302,\n  3302,\n  3302,\n  3167,\n  3167,\n  3167,\n  1268,\n  2762,\n  2762,\n  2762,\n  151,\n  73,\n  48,\n  114,\n  2945,\n  2945,\n  2945,\n  4136,\n  4136,\n  4136,\n  102,\n  2057,\n  2057,\n  2057,\n  79,\n  928,\n  928,\n  928,\n  320,\n  4537,\n  4537,\n  4537,\n  0,\n  626,\n  3653,\n  72,\n  58,\n  814,\n  2408,\n  2408,\n  2408,\n  54,\n  168,\n  3622,\n  3622,\n  3622,\n  2288,\n  71,\n  1255,\n  1735,\n  1735,\n  1735,\n  221,\n  103,\n  297,\n  435,\n  435,\n  435,\n  858,\n  5,\n  0,\n  248,\n  1436,\n  1436,\n  1436,\n  1766,\n  1766,\n  1766,\n  2525,\n  2525,\n  2525,\n  34,\n  60,\n  299,\n  24,\n  3843,\n  3843,\n  3843,\n  508,\n  3116,\n  3116,\n  3116,\n  35,\n  0,\n  839,\n  2700,\n  79,\n  3013,\n  3628,\n  3628,\n  3628,\n  2732,\n  2732,\n  2732,\n  1,\n  275,\n  73,\n  945,\n  98,\n  2365,\n  2365,\n  2365,\n  1266,\n  568,\n  568,\n  568,\n  3,\n  367,\n  111,\n  2106,\n  1741,\n  896,\n  3961,\n  510,\n  510,\n  510,\n  4134,\n  4134,\n  4134,\n  60,\n  3499,\n  3499,\n  3499,\n  4189,\n  4189,\n  4189,\n  101,\n  101,\n  101,\n  20,\n  20,\n  11,\n  3560,\n  3560,\n  3560,\n  104,\n  23,\n  506,\n  31,\n  217,\n  1411,\n  1,\n  2291,\n  2291,\n  2291,\n  21,\n  101,\n  1254,\n  1254,\n  1254,\n  93,\n  3,\n  377,\n  105,\n  1761,\n  39,\n  0,\n  3,\n  2,\n  62,\n  53,\n  60,\n  152,\n  450,\n  44,\n  502,\n  4847,\n  4847,\n  4847,\n  1264,\n  1509,\n  1509,\n  1509,\n  25,\n  1778,\n  2380,\n  2380,\n  2380,\n  74,\n  2803,\n  2803,\n  2803,\n  299,\n  1027,\n  1466,\n  4635,\n  4635,\n  4635,\n  119,\n  127,\n  1334,\n  23,\n  1731,\n  231,\n  381,\n  2781,\n  2781,\n  2781,\n  304,\n  29,\n  28,\n  4364,\n  1459,\n  2268,\n  4590,\n  4590,\n  4590,\n  2225,\n  2225,\n  2225,\n  216,\n  2441,\n  4082,\n  101,\n  266,\n  3542,\n  368,\n  1218,\n  27,\n  615,\n  4206,\n  785,\n  3851,\n  3851,\n  3851,\n  1262,\n  1,\n  101,\n  1263,\n  1263,\n  1263,\n  2919,\n  29,\n  1275,\n  1641,\n  624,\n  1056,\n  4759,\n  4759,\n  4759,\n  4604,\n  4604,\n  4604,\n  2,\n  261,\n  4704,\n  4704,\n  4704,\n  632,\n  1586,\n  2460,\n  2460,\n  2460,\n  137,\n  61,\n  1114,\n  785,\n  625,\n  2003,\n  1891,\n  81,\n  133,\n  2854,\n  2854,\n  2854,\n  2888,\n  2382,\n  2382,\n  2382,\n  1660,\n  4252,\n  4252,\n  4252,\n  2811,\n  2811,\n  2811,\n  1947,\n  1947,\n  1947,\n  593,\n  4553,\n  4553,\n  4553,\n  4839,\n  4839,\n  4839,\n  1386,\n  1386,\n  1386,\n  2360,\n  2360,\n  2360,\n  4930,\n  4930,\n  4930,\n  463,\n  55,\n  294,\n  294,\n  294,\n  815,\n  565,\n  3,\n  549,\n  4973,\n  4973,\n  4973,\n  4423,\n  4423,\n  4423,\n  545,\n  3983,\n  3983,\n  3983,\n  1165,\n  2013,\n  327,\n  327,\n  327,\n  1422,\n  1422,\n  1422,\n  620,\n  1853,\n  3173,\n  3173,\n  3173,\n  2772,\n  2772,\n  2772,\n  69,\n  682,\n  523,\n  3946,\n  3946,\n  3946,\n  1275,\n  1275,\n  1275,\n  4182,\n  4182,\n  4182,\n  1876,\n  1876,\n  1876,\n  2383,\n  2383,\n  2383,\n  2442,\n  581,\n  684,\n  564,\n  1009,\n  1267,\n  418,\n  367,\n  4580,\n  4580,\n  4580,\n  188,\n  1002,\n  7,\n  495,\n  4933,\n  4933,\n  4933,\n  1752,\n  62,\n  559,\n  989,\n  989,\n  989,\n  2,\n  124,\n  4471,\n  4471,\n  4471,\n  788,\n  691,\n  2081,\n  0,\n  1729,\n  3171,\n  2905,\n  2905,\n  2905,\n  2386,\n  2386,\n  2386,\n  33,\n  52,\n  2013,\n  0,\n  65,\n  2989,\n  4495,\n  4495,\n  4495,\n  0,\n  409,\n  2081,\n  1314,\n  190,\n  2262,\n  2262,\n  2262,\n  76,\n  127,\n  2314,\n  0,\n  4089,\n  4089,\n  4089,\n  237,\n  375,\n  1965,\n  252,\n  137,\n  137,\n  137,\n  602,\n  2031,\n  2031,\n  2031,\n  2081,\n  2081,\n  2081,\n  299,\n  23,\n  3165,\n  3165,\n  3165,\n  72,\n  1771,\n  309,\n  71,\n  1903,\n  1836,\n  3434,\n  3434,\n  3434,\n  2173,\n  4024,\n  1036,\n  485,\n  695,\n  695,\n  695,\n  4666,\n  4666,\n  4666,\n  4877,\n  4877,\n  4877,\n  203,\n  3221,\n  3221,\n  3221,\n  1114,\n  1940,\n  223,\n  2905,\n  2905,\n  2905,\n  69,\n  0,\n  2781,\n  254,\n  3974,\n  63,\n  1027,\n  1027,\n  1027,\n  70,\n  2008,\n  2008,\n  2008,\n  4729,\n  4729,\n  4729,\n  1514,\n  60,\n  4511,\n  3558,\n  3558,\n  3558,\n  623,\n  18,\n  50,\n  1365,\n  1365,\n  1365,\n  134,\n  3455,\n  3455,\n  3455,\n  82,\n  1041,\n  254,\n  502,\n  1350,\n  879,\n  967,\n  967,\n  967,\n  248,\n  3115,\n  3115,\n  3115,\n  509,\n  2906,\n  4009,\n  4009,\n  4009,\n  374,\n  208,\n  1819,\n  1819,\n  1819,\n  1928,\n  4987,\n  4987,\n  4987,\n  3609,\n  3609,\n  3609,\n  2102,\n  1,\n  360,\n  918,\n  0,\n  3748,\n  3748,\n  3748,\n  327,\n  2283,\n  1263,\n  627,\n  2084,\n  1,\n  325,\n  1776,\n  1776,\n  1776,\n  4042,\n  4042,\n  4042,\n  2823,\n  269,\n  687,\n  3157,\n  3157,\n  3157,\n  159,\n  88,\n  509,\n  20,\n  570,\n  4759,\n  4759,\n  4759,\n  163,\n  22,\n  4623,\n  4623,\n  4623,\n  1979,\n  3252,\n  3252,\n  3252,\n  70,\n  2905,\n  2905,\n  2905,\n  1936,\n  4269,\n  4269,\n  4269,\n  1,\n  1200,\n  2769,\n  4863,\n  4863,\n  4863,\n  4222,\n  1898,\n  1898,\n  1898,\n  890,\n  4624,\n  4624,\n  4624,\n  1830,\n  1830,\n  1830,\n  23,\n  2823,\n  2823,\n  2823,\n  467,\n  82,\n  2038,\n  2038,\n  2038,\n  61,\n  3671,\n  4430,\n  4430,\n  4430,\n  40,\n  1114,\n  1114,\n  1114,\n  3436,\n  27,\n  1668,\n  3119,\n  4916,\n  4916,\n  4916,\n  349,\n  30,\n  60,\n  1313,\n  1,\n  1930,\n  643,\n  985,\n  29,\n  1624,\n  1624,\n  1624,\n  2016,\n  1295,\n  226,\n  1309,\n  1309,\n  1309,\n  3888,\n  3888,\n  3888,\n  2415,\n  1754,\n  2372,\n  285,\n  4244,\n  4244,\n  4244,\n  2459,\n  3968,\n  3968,\n  3968,\n  1071,\n  36,\n  1458,\n  1458,\n  1458,\n  78,\n  1824,\n  385,\n  1236,\n  7,\n  942,\n  20,\n  1446,\n  1446,\n  1446,\n  2859,\n  2859,\n  2859,\n  51,\n  20,\n  284,\n  2715,\n  2715,\n  2715,\n  2406,\n  22,\n  1616,\n  0,\n  1530,\n  42,\n  49,\n  995,\n  33,\n  20,\n  1216,\n  1,\n  24,\n  582,\n  499,\n  852,\n  852,\n  852,\n  726,\n  1532,\n  49,\n  88,\n  100,\n  2903,\n  2903,\n  2903,\n  1188,\n  32,\n  556,\n  3923,\n  3923,\n  3923,\n  662,\n  775,\n  595,\n  2075,\n  175,\n  2487,\n  2487,\n  2487,\n  2963,\n  4205,\n  4205,\n  4205,\n  236,\n  3924,\n  3924,\n  3924,\n  53,\n  55,\n  604,\n  604,\n  604,\n  293,\n  125,\n  54,\n  2246,\n  22,\n  8,\n  25,\n  224,\n  1,\n  1678,\n  365,\n  4123,\n  4123,\n  4123,\n  1024,\n  1307,\n  1307,\n  1307,\n  247,\n  4610,\n  4610,\n  4610,\n  3215,\n  727,\n  1502,\n  1,\n  53,\n  2829,\n  3968,\n  3968,\n  3968,\n  1420,\n  1420,\n  1420,\n  29,\n  29,\n  29,\n  179,\n  39,\n  611,\n  1084,\n  1821,\n  1821,\n  1821,\n  261,\n  2794,\n  2794,\n  2794,\n  1633,\n  2176,\n  2176,\n  2176,\n  582,\n  3234,\n  359,\n  359,\n  359,\n  0,\n  365,\n  576,\n  4305,\n  4305,\n  4305,\n  61,\n  4567,\n  4567,\n  4567,\n  2573,\n  2573,\n  2573,\n  366,\n  1247,\n  1247,\n  1247,\n  1283,\n  446,\n  3591,\n  3591,\n  3591,\n  2142,\n  343,\n  3152,\n  3152,\n  3152,\n  42,\n  93,\n  3163,\n  236,\n  630,\n  2920,\n  2920,\n  2920,\n  64,\n  1602,\n  1602,\n  1602,\n  1745,\n  1745,\n  1745,\n  235,\n  365,\n  31,\n  901,\n  1176,\n  1,\n  335,\n  13,\n  24,\n  29,\n  888,\n  888,\n  888,\n  1051,\n  2773,\n  2773,\n  2773,\n  2918,\n  2918,\n  2918,\n  60,\n  99,\n  30,\n  1603,\n  54,\n  33,\n  835,\n  1082,\n  3878,\n  3878,\n  3878,\n  67,\n  906,\n  2,\n  9,\n  1244,\n  1244,\n  1244,\n  369,\n  30,\n  53,\n  0,\n  3973,\n  3973,\n  3973,\n  2491,\n  455,\n  887,\n  73,\n  37,\n  269,\n  29,\n  1,\n  38,\n  28,\n  410,\n  1076,\n  3948,\n  3948,\n  3948,\n  973,\n  26,\n  280,\n  203,\n  2566,\n  2566,\n  2566,\n  632,\n  260,\n  151,\n  3616,\n  3616,\n  3616,\n  2473,\n  2285,\n  2372,\n  0,\n  0,\n  34,\n  706,\n  2765,\n  2765,\n  2765,\n  2619,\n  2619,\n  2619,\n  34,\n  0,\n  60,\n  936,\n  51,\n  2,\n  109,\n  167,\n  33,\n  391,\n  23,\n  2434,\n  253,\n  106,\n  227,\n  404,\n  254,\n  3503,\n  3503,\n  3503,\n  1175,\n  37,\n  140,\n  1,\n  23,\n  28,\n  2319,\n  104,\n  2423,\n  2423,\n  2423,\n  0,\n  2115,\n  700,\n  462,\n  0,\n  1511,\n  2448,\n  2448,\n  2448,\n  61,\n  40,\n  2451,\n  1651,\n  1053,\n  1053,\n  1053,\n  635,\n  1677,\n  177,\n  985,\n  985,\n  985,\n  3351,\n  3351,\n  3351,\n  32,\n  2954,\n  96,\n  279,\n  257,\n  24,\n  24,\n  24,\n  108,\n  2369,\n  272,\n  2031,\n  23,\n  2954,\n  2954,\n  2954,\n  306,\n  318,\n  365,\n  2583,\n  2583,\n  2583,\n  271,\n  254,\n  48,\n  0,\n  3643,\n  3643,\n  3643,\n  5,\n  51,\n  1081,\n  50,\n  36,\n  3028,\n  3028,\n  3028,\n  710,\n  2,\n  447,\n  466,\n  4844,\n  4844,\n  4844,\n  1887,\n  1887,\n  1887,\n  1802,\n  8,\n  41,\n  73,\n  96,\n  1082,\n  1082,\n  1082,\n  1882,\n  281,\n  229,\n  2510,\n  2510,\n  2510,\n  780,\n  780,\n  780,\n  33,\n  31,\n  163,\n  92,\n  136,\n  3029,\n  3029,\n  3029,\n  150,\n  67,\n  3660,\n  727,\n  2150,\n  729,\n  28,\n  291,\n  0,\n  61,\n  35,\n  105,\n  1086,\n  34,\n  159,\n  0,\n  38,\n  75,\n  2907,\n  2907,\n  2907,\n  1256,\n  2143,\n  27,\n  368,\n  249,\n  1,\n  342,\n  342,\n  342,\n  2405,\n  327,\n  61,\n  3032,\n  86,\n  3738,\n  3738,\n  3738,\n  21,\n  4003,\n  4003,\n  4003,\n  4,\n  1313,\n  9,\n  633,\n  2,\n  3666,\n  49,\n  59,\n  1821,\n  4732,\n  4732,\n  4732,\n  184,\n  1734,\n  3636,\n  2918,\n  2918,\n  2918,\n  1355,\n  36,\n  255,\n  0,\n  91,\n  33,\n  47,\n  159,\n  29,\n  1916,\n  1916,\n  1916,\n  117,\n  584,\n  584,\n  584,\n  303,\n  303,\n  303,\n  352,\n  452,\n  33,\n  115,\n  1197,\n  4064,\n  4064,\n  4064,\n  369,\n  2826,\n  2826,\n  2826,\n  425,\n  1,\n  3696,\n  3696,\n  3696,\n  3300,\n  3300,\n  3300,\n  1,\n  3408,\n  3408,\n  3408,\n  74,\n  407,\n  271,\n  319,\n  24,\n  43,\n  96,\n  90,\n  2924,\n  49,\n  32,\n  746,\n  277,\n  3176,\n  3976,\n  3976,\n  3976,\n  356,\n  356,\n  356,\n  375,\n  34,\n  1778,\n  2,\n  29,\n  1486,\n  4027,\n  4027,\n  4027,\n  1848,\n  1848,\n  1848,\n  262,\n  9,\n  1195,\n  31,\n  2909,\n  2909,\n  2909,\n  1172,\n  1172,\n  1172,\n  49,\n  2,\n  3302,\n  3302,\n  3302,\n  4076,\n  4076,\n  4076,\n  1,\n  27,\n  3271,\n  25,\n  676,\n  90,\n  1662,\n  20,\n  3214,\n  11,\n  57,\n  4781,\n  4781,\n  4781,\n  47,\n  1977,\n  281,\n  0,\n  325,\n  112,\n  60,\n  1,\n  2158,\n  2379,\n  2379,\n  2379,\n  434,\n  65,\n  53,\n  87,\n  2501,\n  2501,\n  2501,\n  64,\n  20,\n  33,\n  3149,\n  3149,\n  3149,\n  25,\n  90,\n  30,\n  1366,\n  73,\n  594,\n  3244,\n  3244,\n  3244,\n  696,\n  696,\n  696,\n  11,\n  687,\n  208,\n  1444,\n  1444,\n  1444,\n  162,\n  47,\n  3956,\n  3956,\n  3956,\n  51,\n  2916,\n  709,\n  2984,\n  2984,\n  2984,\n  0,\n  1,\n  79,\n  256,\n  393,\n  393,\n  393,\n  275,\n  3,\n  191,\n  2912,\n  2912,\n  2912,\n  57,\n  348,\n  670,\n  4093,\n  4093,\n  4093,\n  526,\n  3040,\n  3040,\n  3040,\n  367,\n  33,\n  1039,\n  1039,\n  1039,\n  1732,\n  1279,\n  0,\n  535,\n  317,\n  1027,\n  35,\n  1,\n  4551,\n  4551,\n  4551,\n  4662,\n  4662,\n  4662,\n  183,\n  25,\n  1147,\n  1147,\n  1147,\n  3673,\n  3673,\n  3673,\n  60,\n  2121,\n  83,\n  3667,\n  3667,\n  3667,\n  75,\n  365,\n  1797,\n  305,\n  10,\n  1403,\n  4,\n  3205,\n  3205,\n  3205,\n  3623,\n  3623,\n  3623,\n  370,\n  1407,\n  54,\n  1311,\n  0,\n  441,\n  31,\n  4772,\n  4772,\n  4772,\n  27,\n  1412,\n  2750,\n  2750,\n  2750,\n  540,\n  388,\n  936,\n  1528,\n  2,\n  32,\n  1736,\n  1736,\n  1736,\n  57,\n  26,\n  1392,\n  3293,\n  3293,\n  3293,\n  3326,\n  282,\n  1057,\n  143,\n  7,\n  12,\n  23,\n  2595,\n  2595,\n  2595,\n  0,\n  32,\n  310,\n  54,\n  130,\n  86,\n  6,\n  2644,\n  2644,\n  2644,\n  28,\n  3048,\n  3048,\n  3048,\n  681,\n  2182,\n  2182,\n  2182,\n  136,\n  41,\n  92,\n  64,\n  2133,\n  2133,\n  2133,\n  1393,\n  1393,\n  1393,\n  4360,\n  4360,\n  4360,\n  314,\n  114,\n  1512,\n  1349,\n  1349,\n  1349,\n  1555,\n  423,\n  3,\n  29,\n  72,\n  23,\n  728,\n  329,\n  3695,\n  3695,\n  3695,\n  1745,\n  20,\n  1138,\n  133,\n  7,\n  39,\n  103,\n  2201,\n  2201,\n  2201,\n  2202,\n  2202,\n  2202,\n  37,\n  378,\n  4694,\n  4694,\n  4694,\n  25,\n  401,\n  63,\n  2681,\n  4354,\n  4354,\n  4354,\n  290,\n  557,\n  463,\n  272,\n  382,\n  44,\n  22,\n  124,\n  2274,\n  2274,\n  2274,\n  35,\n  1,\n  188,\n  2581,\n  4668,\n  62,\n  1507,\n  33,\n  3123,\n  3123,\n  3123,\n  1369,\n  0,\n  59,\n  34,\n  46,\n  20,\n  795,\n  247,\n  7,\n  789,\n  4220,\n  736,\n  31,\n  2679,\n  138,\n  120,\n  30,\n  2114,\n  4174,\n  4174,\n  4174,\n  47,\n  331,\n  49,\n  147,\n  2798,\n  3170,\n  3170,\n  3170,\n  44,\n  160,\n  0,\n  649,\n  1191,\n  4844,\n  4844,\n  4844,\n  15,\n  58,\n  45,\n  969,\n  32,\n  4264,\n  4264,\n  4264,\n  173,\n  2566,\n  2566,\n  2566,\n  0,\n  361,\n  2690,\n  25,\n  47,\n  4637,\n  4637,\n  4637,\n  400,\n  2682,\n  2682,\n  2682,\n  174,\n  0,\n  1,\n  1467,\n  2985,\n  0,\n  65,\n  2615,\n  2615,\n  2615,\n  86,\n  2816,\n  2816,\n  2816,\n  2827,\n  2827,\n  2827,\n  1150,\n  1150,\n  1150,\n  99,\n  185,\n  2934,\n  2133,\n  3964,\n  3964,\n  3964,\n  2938,\n  2938,\n  2938,\n  4854,\n  4854,\n  4854,\n  34,\n  1694,\n  1694,\n  1694,\n  2610,\n  32,\n  88,\n  373,\n  2988,\n  3659,\n  3659,\n  3659,\n  2900,\n  779,\n  248,\n  2411,\n  26,\n  16,\n  1067,\n  154,\n  197,\n  36,\n  63,\n  137,\n  3256,\n  25,\n  49,\n  73,\n  45,\n  279,\n  2708,\n  2708,\n  2708,\n  47,\n  41,\n  2223,\n  3931,\n  3931,\n  3931,\n  52,\n  141,\n  95,\n  251,\n  28,\n  29,\n  4445,\n  4445,\n  4445,\n  4054,\n  4054,\n  4054,\n  262,\n  1427,\n  2621,\n  2621,\n  2621,\n  4917,\n  4917,\n  4917,\n  458,\n  2193,\n  2193,\n  2193,\n  3934,\n  3934,\n  3934,\n  35,\n  81,\n  25,\n  309,\n  2257,\n  2257,\n  2257,\n  30,\n  26,\n  76,\n  2021,\n  2021,\n  2021,\n  93,\n  2596,\n  2596,\n  2596,\n  73,\n  294,\n  49,\n  435,\n  494,\n  2497,\n  497,\n  1315,\n  1878,\n  2,\n  243,\n  529,\n  39,\n  787,\n  787,\n  787,\n  67,\n  21,\n  0,\n  1,\n  4410,\n  4410,\n  4410,\n  36,\n  158,\n  2633,\n  4054,\n  4054,\n  4054,\n  1,\n  59,\n  1463,\n  57,\n  2231,\n  188,\n  701,\n  276,\n  1629,\n  902,\n  902,\n  902,\n  502,\n  0,\n  2829,\n  0,\n  501,\n  2813,\n  2813,\n  2813,\n  354,\n  310,\n  1569,\n  3391,\n  3391,\n  3391,\n  2806,\n  2806,\n  2806,\n  2519,\n  2519,\n  2519,\n  27,\n  33,\n  3673,\n  3673,\n  3673,\n  860,\n  1888,\n  126,\n  70,\n  451,\n  366,\n  61,\n  1,\n  873,\n  2954,\n  155,\n  722,\n  722,\n  722,\n  145,\n  365,\n  13,\n  1219,\n  1219,\n  1219,\n  1,\n  0,\n  2707,\n  259,\n  130,\n  41,\n  751,\n  2,\n  882,\n  145,\n  36,\n  0,\n  4,\n  3284,\n  3284,\n  3284,\n  4847,\n  4847,\n  4847,\n  104,\n  368,\n  2583,\n  1620,\n  1620,\n  1620,\n  94,\n  2940,\n  2940,\n  2940,\n  10,\n  110,\n  23,\n  365,\n  252,\n  20,\n  1,\n  2218,\n  4368,\n  4368,\n  4368,\n  1046,\n  4798,\n  4798,\n  4798,\n  49,\n  485,\n  0,\n  1184,\n  4830,\n  4830,\n  4830,\n  2195,\n  2195,\n  2195,\n  243,\n  0,\n  2544,\n  1834,\n  1834,\n  1834,\n  1473,\n  790,\n  321,\n  23,\n  1053,\n  41,\n  1109,\n  3690,\n  3690,\n  3690,\n  50,\n  55,\n  2521,\n  2521,\n  2521,\n  2631,\n  406,\n  202,\n  202,\n  202,\n  119,\n  55,\n  61,\n  1363,\n  711,\n  686,\n  3428,\n  3428,\n  3428,\n  785,\n  452,\n  45,\n  11,\n  1706,\n  460,\n  460,\n  460,\n  1478,\n  2483,\n  225,\n  2120,\n  388,\n  296,\n  1454,\n  113,\n  102,\n  382,\n  181,\n  117,\n  70,\n  99,\n  38,\n  1213,\n  1213,\n  1213,\n  2639,\n  2639,\n  2639,\n  2944,\n  1509,\n  70,\n  109,\n  23,\n  340,\n  38,\n  39,\n  156,\n  105,\n  0,\n  3006,\n  332,\n  234,\n  0,\n  3,\n  3656,\n  3749,\n  3749,\n  3749,\n  4410,\n  4410,\n  4410,\n  2006,\n  133,\n  819,\n  1526,\n  37,\n  344,\n  0,\n  4383,\n  4383,\n  4383,\n  512,\n  753,\n  235,\n  0,\n  385,\n  95,\n  2,\n  53,\n  120,\n  21,\n  380,\n  50,\n  4005,\n  4005,\n  4005,\n  0,\n  4088,\n  4088,\n  4088,\n  298,\n  3713,\n  3713,\n  3713,\n  21,\n  37,\n  91,\n  1,\n  431,\n  24,\n  561,\n  62,\n  62,\n  36,\n  130,\n  751,\n  3096,\n  3096,\n  3096,\n  56,\n  89,\n  113,\n  0,\n  2,\n  415,\n  583,\n  782,\n  54,\n  782,\n  73,\n  0,\n  3694,\n  2,\n  25,\n  2323,\n  2323,\n  2323,\n  4066,\n  3019,\n  428,\n  428,\n  428,\n  0,\n  70,\n  70,\n  117,\n  117,\n  117,\n  74,\n  3561,\n  3561,\n  3561,\n  1,\n  1,\n  1,\n  3258,\n  3258,\n  3258,\n  0,\n  0,\n  2345,\n  2345,\n  2345,\n  3744,\n  3744,\n  3744,\n  413,\n  443,\n  144,\n  42,\n  1428,\n  1428,\n  1428,\n  345,\n  231,\n  27,\n  4527,\n  4527,\n  4527,\n  682,\n  410,\n  3710,\n  3710,\n  3710,\n  48,\n  380,\n  97,\n  3301,\n  3301,\n  3301,\n  549,\n  0,\n  71,\n  1558,\n  1558,\n  1558,\n  1273,\n  688,\n  107,\n  2967,\n  423,\n  0,\n  1625,\n  163,\n  3071,\n  33,\n  364,\n  2410,\n  3211,\n  3211,\n  3211,\n  2259,\n  31,\n  1084,\n  1084,\n  1084,\n  58,\n  0,\n  2181,\n  2181,\n  2181,\n  44,\n  287,\n  38,\n  1,\n  39,\n  26,\n  26,\n  3440,\n  3440,\n  3440,\n  3313,\n  29,\n  148,\n  148,\n  148,\n  2955,\n  2955,\n  2955,\n  2213,\n  61,\n  68,\n  27,\n  155,\n  21,\n  2,\n  92,\n  47,\n  1,\n  3823,\n  305,\n  683,\n  683,\n  683,\n  4,\n  21,\n  2029,\n  1,\n  20,\n  4772,\n  4772,\n  4772,\n  52,\n  65,\n  2253,\n  38,\n  181,\n  209,\n  1843,\n  1843,\n  1843,\n  45,\n  859,\n  32,\n  125,\n  2983,\n  2983,\n  2983,\n  28,\n  4108,\n  4108,\n  4108,\n  1963,\n  170,\n  32,\n  1,\n  1354,\n  86,\n  1459,\n  1459,\n  1459,\n  23,\n  0,\n  56,\n  84,\n  26,\n  34,\n  66,\n  319,\n  32,\n  1018,\n  73,\n  3526,\n  3526,\n  3526,\n  28,\n  271,\n  2042,\n  2042,\n  2042,\n  489,\n  341,\n  1,\n  26,\n  81,\n  48,\n  4077,\n  4077,\n  4077,\n  32,\n  0,\n  32,\n  689,\n  0,\n  1005,\n  31,\n  4245,\n  1,\n  0,\n  2,\n  3368,\n  3368,\n  3368,\n  4407,\n  170,\n  3135,\n  849,\n  222,\n  128,\n  41,\n  222,\n  222,\n  222,\n  32,\n  1868,\n  1868,\n  1868,\n  140,\n  547,\n  1004,\n  111,\n  24,\n  424,\n  3508,\n  3508,\n  3508,\n  1046,\n  1046,\n  1046,\n  2326,\n  2326,\n  2326,\n  2395,\n  42,\n  95,\n  142,\n  229,\n  304,\n  0,\n  368,\n  262,\n  262,\n  262,\n  80,\n  20,\n  28,\n  148,\n  57,\n  48,\n  46,\n  3488,\n  3488,\n  3488,\n  36,\n  30,\n  43,\n  816,\n  2928,\n  1523,\n  40,\n  907,\n  22,\n  3764,\n  3575,\n  3575,\n  3575,\n  222,\n  3,\n  275,\n  371,\n  773,\n  4866,\n  4866,\n  4866,\n  1243,\n  1128,\n  4190,\n  4190,\n  4190,\n  6,\n  35,\n  135,\n  138,\n  206,\n  1754,\n  22,\n  21,\n  241,\n  278,\n  1273,\n  6,\n  171,\n  22,\n  274,\n  1575,\n  1575,\n  1575,\n  403,\n  2650,\n  2650,\n  2650,\n  314,\n  1969,\n  310,\n  190,\n  163,\n  1346,\n  405,\n  167,\n  2370,\n  2370,\n  2370,\n  135,\n  65,\n  31,\n  895,\n  1740,\n  0,\n  0,\n  339,\n  0,\n  79,\n  4672,\n  4672,\n  4672,\n  1421,\n  921,\n  452,\n  1182,\n  372,\n  0,\n  763,\n  4158,\n  4158,\n  4158,\n  38,\n  946,\n  177,\n  1919,\n  1100,\n  4265,\n  4265,\n  4265,\n  1869,\n  48,\n  511,\n  511,\n  511,\n  2300,\n  589,\n  372,\n  372,\n  372,\n  2261,\n  64,\n  24,\n  0,\n  2373,\n  2373,\n  2373,\n  533,\n  2995,\n  2995,\n  2995,\n  110,\n  141,\n  123,\n  648,\n  123,\n  910,\n  31,\n  0,\n  518,\n  1156,\n  3056,\n  44,\n  142,\n  99,\n  99,\n  99,\n  131,\n  4185,\n  4185,\n  4185,\n  1593,\n  746,\n  94,\n  268,\n  2684,\n  2684,\n  2684,\n  415,\n  38,\n  140,\n  149,\n  424,\n  1388,\n  24,\n  2742,\n  160,\n  1,\n  1,\n  577,\n  136,\n  925,\n  925,\n  925,\n  25,\n  661,\n  79,\n  1086,\n  383,\n  1,\n  4570,\n  4570,\n  4570,\n  55,\n  3347,\n  3,\n  26,\n  376,\n  14,\n  2734,\n  2734,\n  2734,\n  193,\n  193,\n  193,\n  1398,\n  1398,\n  1398,\n  805,\n  3918,\n  3918,\n  3918,\n  1680,\n  178,\n  196,\n  2765,\n  2765,\n  2765,\n  1146,\n  500,\n  853,\n  4969,\n  4969,\n  4969,\n  3209,\n  3993,\n  3993,\n  3993,\n  264,\n  60,\n  4544,\n  372,\n  2627,\n  2627,\n  2627,\n  2,\n  1,\n  2305,\n  2305,\n  2305,\n  365,\n  4552,\n  4552,\n  4552,\n  217,\n  3825,\n  3825,\n  3825,\n  2573,\n  2573,\n  2573,\n  3088,\n  3088,\n  3088,\n  106,\n  205,\n  3280,\n  3280,\n  3280,\n  4942,\n  4942,\n  4942,\n  83,\n  2798,\n  2798,\n  2798,\n  16,\n  868,\n  868,\n  868,\n  938,\n  30,\n  22,\n  23,\n  809,\n  95,\n  84,\n  70,\n  261,\n  894,\n  3556,\n  3556,\n  3556,\n  390,\n  4179,\n  4179,\n  4179,\n  3861,\n  3861,\n  3861,\n  2,\n  1010,\n  1010,\n  1010,\n  175,\n  21,\n  3778,\n  3778,\n  3778,\n  405,\n  156,\n  8,\n  4905,\n  4905,\n  4905,\n  2027,\n  2027,\n  2027,\n  947,\n  38,\n  30,\n  1677,\n  1677,\n  1677,\n  2,\n  135,\n  1992,\n  1992,\n  1992,\n  1633,\n  170,\n  859,\n  85,\n  742,\n  634,\n  634,\n  634,\n  107,\n  22,\n  132,\n  9,\n  189,\n  47,\n  33,\n  2881,\n  763,\n  2971,\n  2971,\n  2971,\n  1826,\n  147,\n  314,\n  314,\n  314,\n  55,\n  62,\n  681,\n  96,\n  1475,\n  0,\n  3,\n  109,\n  847,\n  4626,\n  4626,\n  4626,\n  4941,\n  4941,\n  4941,\n  28,\n  47,\n  4682,\n  4682,\n  4682,\n  1273,\n  0,\n  81,\n  172,\n  24,\n  337,\n  2,\n  1937,\n  115,\n  157,\n  96,\n  914,\n  3147,\n  3147,\n  3147,\n  106,\n  142,\n  859,\n  7,\n  511,\n  1519,\n  1519,\n  1519,\n  4666,\n  4666,\n  4666,\n  309,\n  365,\n  63,\n  24,\n  429,\n  3441,\n  3441,\n  3441,\n  2034,\n  2034,\n  2034,\n  2358,\n  51,\n  80,\n  20,\n  3077,\n  1032,\n  3398,\n  3398,\n  3398,\n  1259,\n  888,\n  269,\n  600,\n  64,\n  643,\n  232,\n  4860,\n  4860,\n  4860,\n  615,\n  45,\n  3180,\n  3180,\n  3180,\n  159,\n  159,\n  159,\n  3465,\n  3465,\n  3465,\n  915,\n  2001,\n  2018,\n  1519,\n  38,\n  2050,\n  2050,\n  2050,\n  764,\n  4974,\n  4974,\n  4974,\n  4302,\n  4302,\n  4302,\n  1551,\n  1551,\n  1551,\n  30,\n  21,\n  67,\n  67,\n  67,\n  3451,\n  3451,\n  3451,\n  3834,\n  3834,\n  3834,\n  2,\n  0,\n  0,\n  365,\n  1540,\n  1540,\n  1540,\n  24,\n  336,\n  2642,\n  2642,\n  2642,\n  175,\n  163,\n  470,\n  0,\n  31,\n  908,\n  103,\n  27,\n  108,\n  80,\n  3291,\n  3291,\n  3291,\n  273,\n  293,\n  111,\n  1350,\n  447,\n  96,\n  247,\n  40,\n  0,\n  3285,\n  3285,\n  3285,\n  119,\n  96,\n  0,\n  31,\n  29,\n  127,\n  2786,\n  2786,\n  2786,\n  438,\n  241,\n  42,\n  1236,\n  1236,\n  1236,\n  1962,\n  636,\n  704,\n  21,\n  305,\n  126,\n  119,\n  256,\n  2081,\n  590,\n  1351,\n  4962,\n  4962,\n  4962,\n  214,\n  580,\n  1668,\n  1668,\n  1668,\n  4258,\n  4258,\n  4258,\n  1,\n  228,\n  228,\n  228,\n  1,\n  129,\n  2842,\n  23,\n  58,\n  110,\n  4204,\n  180,\n  134,\n  3235,\n  3235,\n  3235,\n  2087,\n  77,\n  161,\n  142,\n  65,\n  72,\n  68,\n  1089,\n  3286,\n  3286,\n  3286,\n  135,\n  1627,\n  1818,\n  2047,\n  36,\n  1,\n  112,\n  112,\n  112,\n  124,\n  0,\n  72,\n  855,\n  855,\n  855,\n  3170,\n  3170,\n  3170,\n  1668,\n  1668,\n  1668,\n  698,\n  517,\n  108,\n  39,\n  36,\n  0,\n  60,\n  54,\n  2811,\n  300,\n  4,\n  1586,\n  599,\n  243,\n  1762,\n  0,\n  969,\n  969,\n  969,\n  26,\n  555,\n  555,\n  555,\n  1,\n  492,\n  206,\n  308,\n  105,\n  3291,\n  3291,\n  3291,\n  883,\n  2753,\n  0,\n  342,\n  138,\n  190,\n  21,\n  4298,\n  4298,\n  4298,\n  48,\n  105,\n  122,\n  622,\n  171,\n  3149,\n  1,\n  2731,\n  115,\n  2928,\n  2928,\n  2928,\n  4258,\n  4258,\n  4258,\n  3270,\n  3270,\n  3270,\n  1298,\n  2227,\n  34,\n  2295,\n  65,\n  36,\n  36,\n  142,\n  256,\n  1937,\n  650,\n  1497,\n  25,\n  259,\n  55,\n  219,\n  212,\n  212,\n  212,\n  0,\n  365,\n  2816,\n  2816,\n  2816,\n  319,\n  56,\n  4191,\n  4191,\n  4191,\n  301,\n  134,\n  272,\n  620,\n  1355,\n  1347,\n  151,\n  2859,\n  1,\n  559,\n  215,\n  1097,\n  9,\n  251,\n  1972,\n  1972,\n  1972,\n  110,\n  3108,\n  3108,\n  3108,\n  533,\n  2424,\n  3511,\n  138,\n  56,\n  105,\n  1,\n  3642,\n  3642,\n  3642,\n  180,\n  1,\n  39,\n  139,\n  656,\n  346,\n  2484,\n  1,\n  1691,\n  1691,\n  1691,\n  38,\n  37,\n  3299,\n  3299,\n  3299,\n  374,\n  1,\n  2211,\n  2211,\n  2211,\n  2245,\n  4258,\n  4258,\n  4258,\n  365,\n  43,\n  25,\n  2072,\n  1751,\n  12,\n  81,\n  367,\n  129,\n  3883,\n  3883,\n  3883,\n  2803,\n  2,\n  1,\n  32,\n  42,\n  241,\n  1075,\n  112,\n  179,\n  4654,\n  4654,\n  4654,\n  56,\n  588,\n  225,\n  351,\n  44,\n  1029,\n  453,\n  3402,\n  3402,\n  3402,\n  369,\n  4654,\n  4654,\n  4654,\n  3281,\n  3281,\n  3281,\n  106,\n  3850,\n  4302,\n  4302,\n  4302,\n  471,\n  0,\n  976,\n  976,\n  976,\n  2725,\n  2372,\n  2372,\n  2372,\n  201,\n  585,\n  547,\n  99,\n  134,\n  252,\n  437,\n  85,\n  3167,\n  651,\n  2913,\n  38,\n  95,\n  857,\n  857,\n  857,\n  27,\n  34,\n  2152,\n  1462,\n  591,\n  3446,\n  3446,\n  3446,\n  1789,\n  112,\n  2193,\n  2193,\n  2193,\n  887,\n  605,\n  4889,\n  4889,\n  4889,\n  3286,\n  3286,\n  3286,\n  1331,\n  1569,\n  1569,\n  1569,\n  1,\n  1725,\n  366,\n  734,\n  4018,\n  4018,\n  4018,\n  11,\n  2411,\n  2411,\n  2411,\n  1990,\n  3811,\n  1096,\n  51,\n  126,\n  0,\n  36,\n  999,\n  3596,\n  3596,\n  3596,\n  154,\n  376,\n  1043,\n  226,\n  330,\n  3965,\n  3965,\n  3965,\n  365,\n  4877,\n  4877,\n  4877,\n  3880,\n  3880,\n  3880,\n  292,\n  1898,\n  1898,\n  1898,\n  2870,\n  169,\n  4997,\n  4997,\n  4997,\n  21,\n  3535,\n  3535,\n  3535,\n  30,\n  3809,\n  364,\n  338,\n  3521,\n  3521,\n  3521,\n  285,\n  49,\n  1913,\n  640,\n  1408,\n  259,\n  144,\n  1026,\n  164,\n  3591,\n  3591,\n  3591,\n  369,\n  4524,\n  4524,\n  4524,\n  1438,\n  1438,\n  1438,\n  704,\n  704,\n  704,\n  609,\n  67,\n  358,\n  2973,\n  2973,\n  2973,\n  63,\n  299,\n  3277,\n  3277,\n  3277,\n  306,\n  3582,\n  16,\n  3970,\n  3970,\n  3970,\n  1013,\n  1013,\n  1013,\n  1410,\n  1410,\n  1410,\n  376,\n  2963,\n  88,\n  579,\n  2174,\n  2174,\n  2174,\n  87,\n  59,\n  2875,\n  549,\n  966,\n  155,\n  362,\n  38,\n  37,\n  1,\n  1,\n  169,\n  45,\n  883,\n  1050,\n  29,\n  116,\n  1778,\n  1013,\n  1013,\n  1013,\n  71,\n  66,\n  1687,\n  47,\n  482,\n  1098,\n  22,\n  2849,\n  1256,\n  1256,\n  1256,\n  276,\n  73,\n  175,\n  225,\n  20,\n  84,\n  382,\n  770,\n  1601,\n  1601,\n  1601,\n  2085,\n  4028,\n  4028,\n  4028,\n  3255,\n  3255,\n  3255,\n  62,\n  664,\n  664,\n  664,\n  369,\n  0,\n  1325,\n  4158,\n  4158,\n  4158,\n  35,\n  6,\n  1,\n  0,\n  2891,\n  2891,\n  2891,\n  32,\n  422,\n  928,\n  18,\n  3963,\n  3963,\n  3963,\n  94,\n  2848,\n  2848,\n  2848,\n  758,\n  1,\n  2901,\n  2901,\n  2901,\n  335,\n  0,\n  799,\n  21,\n  1820,\n  1820,\n  1820,\n  4,\n  3980,\n  3980,\n  3980,\n  3253,\n  3253,\n  3253,\n  186,\n  1745,\n  44,\n  4355,\n  4355,\n  4355,\n  0,\n  1992,\n  1992,\n  1992,\n  1013,\n  456,\n  0,\n  42,\n  152,\n  758,\n  758,\n  758,\n  1548,\n  83,\n  67,\n  44,\n  54,\n  680,\n  3039,\n  3039,\n  3039,\n  45,\n  1276,\n  33,\n  1733,\n  1772,\n  90,\n  1010,\n  25,\n  2343,\n  2343,\n  2343,\n  1688,\n  105,\n  2972,\n  2972,\n  2972,\n  0,\n  648,\n  694,\n  694,\n  694,\n  1011,\n  1,\n  326,\n  15,\n  312,\n  2877,\n  1799,\n  3543,\n  3543,\n  3543,\n  97,\n  868,\n  163,\n  3713,\n  3713,\n  3713,\n  27,\n  328,\n  4490,\n  186,\n  1404,\n  4709,\n  514,\n  2146,\n  654,\n  337,\n  243,\n  559,\n  582,\n  1124,\n  3203,\n  3203,\n  3203,\n  814,\n  28,\n  1733,\n  1733,\n  1733,\n  0,\n  3885,\n  3885,\n  3885,\n  557,\n  1796,\n  1832,\n  2484,\n  2484,\n  2484,\n  186,\n  3998,\n  3998,\n  3998,\n  69,\n  3223,\n  139,\n  137,\n  1762,\n  1,\n  298,\n  158,\n  0,\n  2022,\n  3123,\n  3123,\n  3123,\n  31,\n  242,\n  25,\n  3039,\n  3039,\n  3039,\n  2822,\n  2822,\n  2822,\n  747,\n  156,\n  3269,\n  2289,\n  3670,\n  3670,\n  3670,\n  4412,\n  4412,\n  4412,\n  3870,\n  293,\n  460,\n  53,\n  660,\n  4,\n  2561,\n  3257,\n  3257,\n  3257,\n  2119,\n  2119,\n  2119,\n  90,\n  216,\n  62,\n  29,\n  2272,\n  0,\n  151,\n  49,\n  106,\n  43,\n  2,\n  774,\n  27,\n  217,\n  540,\n  34,\n  118,\n  0,\n  67,\n  27,\n  140,\n  0,\n  3576,\n  3576,\n  3576,\n  3659,\n  3659,\n  3659,\n  640,\n  1587,\n  32,\n  4459,\n  4459,\n  4459,\n  175,\n  4768,\n  4768,\n  4768,\n  242,\n  1323,\n  1,\n  128,\n  34,\n  1834,\n  1834,\n  1834,\n  0,\n  2438,\n  2095,\n  1806,\n  30,\n  62,\n  4784,\n  4784,\n  4784,\n  3045,\n  3045,\n  3045,\n  3316,\n  3316,\n  3316,\n  4495,\n  4495,\n  4495,\n  4116,\n  4116,\n  4116,\n  63,\n  1611,\n  1611,\n  1611,\n  49,\n  74,\n  0,\n  20,\n  621,\n  94,\n  289,\n  20,\n  64,\n  84,\n  31,\n  74,\n  23,\n  500,\n  3435,\n  3435,\n  3435,\n  516,\n  1485,\n  0,\n  123,\n  955,\n  1485,\n  232,\n  138,\n  59,\n  23,\n  58,\n  545,\n  30,\n  2376,\n  119,\n  424,\n  0,\n  264,\n  1065,\n  3412,\n  2,\n  93,\n  48,\n  1781,\n  381,\n  1,\n  40,\n  2623,\n  2623,\n  2623,\n  4968,\n  4968,\n  4968,\n  141,\n  21,\n  727,\n  727,\n  727,\n  1097,\n  1097,\n  1097,\n  61,\n  0,\n  21,\n  274,\n  1092,\n  1092,\n  1092,\n  4007,\n  21,\n  358,\n  358,\n  358,\n  606,\n  260,\n  20,\n  2295,\n  8,\n  2337,\n  2337,\n  2337,\n  120,\n  60,\n  4172,\n  3,\n  0,\n  31,\n  3223,\n  0,\n  0,\n  0,\n  848,\n  332,\n  3015,\n  275,\n  1105,\n  0,\n  3335,\n  3335,\n  3335,\n  57,\n  1500,\n  21,\n  53,\n  61,\n  814,\n  2483,\n  2483,\n  2483,\n  2155,\n  32,\n  1,\n  77,\n  1,\n  4314,\n  4314,\n  4314,\n  108,\n  828,\n  21,\n  4,\n  252,\n  1802,\n  72,\n  264,\n  169,\n  4609,\n  4609,\n  4609,\n  1054,\n  31,\n  30,\n  2474,\n  32,\n  13,\n  186,\n  3373,\n  3373,\n  3373,\n  0,\n  672,\n  976,\n  976,\n  976,\n  31,\n  50,\n  4863,\n  4863,\n  4863,\n  4029,\n  665,\n  665,\n  665,\n  353,\n  723,\n  1,\n  2956,\n  86,\n  26,\n  365,\n  1,\n  2232,\n  0,\n  2319,\n  2319,\n  2319,\n  298,\n  34,\n  42,\n  72,\n  56,\n  2935,\n  91,\n  147,\n  0,\n  151,\n  438,\n  468,\n  404,\n  202,\n  766,\n  26,\n  34,\n  68,\n  35,\n  43,\n  83,\n  0,\n  3297,\n  3297,\n  3297,\n  0,\n  177,\n  3229,\n  4142,\n  4142,\n  4142,\n  184,\n  31,\n  1,\n  2192,\n  2192,\n  2192,\n  31,\n  4803,\n  4803,\n  4803,\n  2780,\n  1608,\n  60,\n  4509,\n  4509,\n  4509,\n  23,\n  23,\n  23,\n  1,\n  135,\n  781,\n  35,\n  181,\n  380,\n  152,\n  416,\n  1513,\n  1513,\n  1513,\n  24,\n  1,\n  827,\n  376,\n  762,\n  119,\n  32,\n  2199,\n  206,\n  206,\n  206,\n  4854,\n  4854,\n  4854,\n  137,\n  2582,\n  2582,\n  2582,\n  60,\n  310,\n  93,\n  0,\n  1876,\n  54,\n  329,\n  329,\n  329,\n  310,\n  40,\n  3690,\n  3690,\n  3690,\n  35,\n  0,\n  2230,\n  2230,\n  2230,\n  4422,\n  4422,\n  4422,\n  35,\n  744,\n  5,\n  4388,\n  4388,\n  4388,\n  48,\n  724,\n  43,\n  3432,\n  67,\n  281,\n  4754,\n  4754,\n  4754,\n  3,\n  9,\n  764,\n  336,\n  351,\n  651,\n  178,\n  147,\n  699,\n  55,\n  395,\n  38,\n  2000,\n  23,\n  1253,\n  1253,\n  1253,\n  155,\n  3161,\n  33,\n  0,\n  34,\n  0,\n  122,\n  2013,\n  3297,\n  3297,\n  3297,\n  1880,\n  3442,\n  3442,\n  3442,\n  1552,\n  1552,\n  1552,\n  26,\n  322,\n  31,\n  525,\n  313,\n  2528,\n  2528,\n  2528,\n  1464,\n  2485,\n  2485,\n  2485,\n  2177,\n  25,\n  0,\n  4803,\n  4803,\n  4803,\n  28,\n  1,\n  35,\n  2289,\n  2289,\n  2289,\n  574,\n  36,\n  1831,\n  55,\n  26,\n  2240,\n  3,\n  408,\n  22,\n  31,\n  1172,\n  24,\n  33,\n  31,\n  136,\n  1057,\n  0,\n  2228,\n  33,\n  28,\n  2,\n  4391,\n  4391,\n  4391,\n  32,\n  50,\n  31,\n  64,\n  1048,\n  4149,\n  4149,\n  4149,\n  0,\n  36,\n  40,\n  31,\n  61,\n  1524,\n  1524,\n  1524,\n  332,\n  1904,\n  36,\n  28,\n  3,\n  3621,\n  3621,\n  3621,\n  805,\n  86,\n  28,\n  498,\n  2900,\n  2900,\n  2900,\n  4963,\n  4963,\n  4963,\n  273,\n  2557,\n  27,\n  89,\n  51,\n  37,\n  62,\n  682,\n  1934,\n  160,\n  1,\n  33,\n  264,\n  3985,\n  3985,\n  3985,\n  47,\n  303,\n  970,\n  970,\n  970,\n  2249,\n  0,\n  59,\n  31,\n  22,\n  121,\n  4357,\n  4357,\n  4357,\n  419,\n  2803,\n  1,\n  26,\n  2,\n  89,\n  47,\n  124,\n  160,\n  38,\n  720,\n  720,\n  720,\n  47,\n  2644,\n  2927,\n  2927,\n  2927,\n  457,\n  365,\n  365,\n  365,\n  1385,\n  369,\n  1871,\n  288,\n  624,\n  315,\n  1090,\n  29,\n  2,\n  83,\n  1336,\n  488,\n  85,\n  75,\n  15,\n  0,\n  24,\n  461,\n  897,\n  21,\n  29,\n  62,\n  377,\n  194,\n  700,\n  4974,\n  4974,\n  4974,\n  102,\n  104,\n  789,\n  1186,\n  1186,\n  1186,\n  2681,\n  20,\n  443,\n  443,\n  443,\n  30,\n  100,\n  148,\n  1569,\n  1569,\n  1569,\n  672,\n  3748,\n  3748,\n  3748,\n  62,\n  62,\n  62,\n  24,\n  367,\n  313,\n  3783,\n  3783,\n  3783,\n  32,\n  0,\n  1,\n  108,\n  31,\n  140,\n  4,\n  6,\n  366,\n  80,\n  24,\n  33,\n  62,\n  569,\n  1,\n  281,\n  6,\n  454,\n  4045,\n  4045,\n  4045,\n  2300,\n  4433,\n  4433,\n  4433,\n  964,\n  180,\n  150,\n  37,\n  63,\n  3827,\n  3827,\n  3827,\n  2074,\n  2,\n  34,\n  26,\n  446,\n  852,\n  155,\n  243,\n  90,\n  1309,\n  2283,\n  170,\n  71,\n  94,\n  2342,\n  2342,\n  2342,\n  3116,\n  3116,\n  3116,\n  347,\n  780,\n  780,\n  780,\n  130,\n  836,\n  836,\n  836,\n  455,\n  3283,\n  3283,\n  3283,\n  111,\n  2,\n  3424,\n  0,\n  0,\n  22,\n  0,\n  526,\n  20,\n  734,\n  68,\n  302,\n  94,\n  107,\n  1031,\n  1031,\n  1031,\n  2071,\n  590,\n  4133,\n  4133,\n  4133,\n  890,\n  67,\n  22,\n  21,\n  2954,\n  2885,\n  2308,\n  37,\n  40,\n  135,\n  34,\n  1,\n  160,\n  29,\n  1292,\n  1292,\n  1292,\n  150,\n  4550,\n  4550,\n  4550,\n  20,\n  1145,\n  1,\n  1,\n  2728,\n  138,\n  42,\n  30,\n  1544,\n  2451,\n  2451,\n  2451,\n  1352,\n  1352,\n  1352,\n  121,\n  32,\n  2266,\n  3377,\n  3377,\n  3377,\n  65,\n  310,\n  33,\n  156,\n  61,\n  34,\n  41,\n  26,\n  31,\n  3679,\n  2,\n  1307,\n  120,\n  37,\n  41,\n  1803,\n  1803,\n  1803,\n  30,\n  196,\n  26,\n  2,\n  2630,\n  2630,\n  2630,\n  958,\n  811,\n  113,\n  20,\n  36,\n  97,\n  394,\n  907,\n  1122,\n  59,\n  227,\n  4401,\n  4401,\n  4401,\n  4975,\n  4975,\n  4975,\n  4129,\n  4129,\n  4129,\n  4386,\n  4386,\n  4386,\n  2039,\n  122,\n  37,\n  0,\n  3047,\n  3047,\n  3047,\n  2448,\n  2448,\n  2448,\n  4003,\n  125,\n  138,\n  2542,\n  2542,\n  2542,\n  37,\n  0,\n  3068,\n  32,\n  128,\n  128,\n  128,\n  538,\n  178,\n  0,\n  1767,\n  1767,\n  1767,\n  2569,\n  2569,\n  2569,\n  3057,\n  3770,\n  3770,\n  3770,\n  852,\n  0,\n  1564,\n  30,\n  52,\n  776,\n  69,\n  4562,\n  4562,\n  4562,\n  3517,\n  3517,\n  3517,\n  45,\n  23,\n  1,\n  607,\n  0,\n  4924,\n  4924,\n  4924,\n  0,\n  1496,\n  119,\n  471,\n  43,\n  779,\n  1124,\n  1124,\n  1124,\n  2487,\n  4511,\n  4511,\n  4511,\n  30,\n  392,\n  35,\n  126,\n  19,\n  43,\n  86,\n  36,\n  2,\n  1944,\n  53,\n  89,\n  89,\n  89,\n  124,\n  4,\n  4487,\n  4487,\n  4487,\n  412,\n  94,\n  78,\n  116,\n  2343,\n  2343,\n  2343,\n  851,\n  53,\n  1596,\n  1596,\n  1596,\n  401,\n  401,\n  401,\n  2194,\n  33,\n  471,\n  158,\n  26,\n  125,\n  1034,\n  9,\n  32,\n  45,\n  425,\n  60,\n  4580,\n  4580,\n  4580,\n  53,\n  21,\n  3008,\n  3008,\n  3008,\n  2275,\n  2275,\n  2275,\n  30,\n  38,\n  25,\n  148,\n  148,\n  148,\n  171,\n  3031,\n  3031,\n  3031,\n  480,\n  66,\n  236,\n  4546,\n  4546,\n  4546,\n  39,\n  4507,\n  4507,\n  4507,\n  31,\n  0,\n  1140,\n  1140,\n  1140,\n  2609,\n  3,\n  207,\n  60,\n  31,\n  3974,\n  50,\n  58,\n  479,\n  479,\n  479,\n  68,\n  244,\n  1,\n  91,\n  0,\n  262,\n  2366,\n  2366,\n  2366,\n  54,\n  84,\n  132,\n  30,\n  20,\n  0,\n  71,\n  451,\n  1900,\n  1865,\n  1247,\n  1247,\n  1247,\n  353,\n  353,\n  353,\n  2439,\n  1,\n  630,\n  4191,\n  4191,\n  4191,\n  367,\n  4893,\n  4893,\n  4893,\n  44,\n  20,\n  4952,\n  4952,\n  4952,\n  50,\n  1739,\n  23,\n  2989,\n  2989,\n  2989,\n  242,\n  0,\n  732,\n  10,\n  2258,\n  1,\n  128,\n  35,\n  1020,\n  1020,\n  1020,\n  748,\n  57,\n  69,\n  367,\n  108,\n  534,\n  1519,\n  2,\n  73,\n  2699,\n  219,\n  694,\n  694,\n  694,\n  7,\n  2065,\n  3492,\n  3492,\n  3492,\n  2381,\n  228,\n  873,\n  4220,\n  4220,\n  4220,\n  1464,\n  0,\n  830,\n  20,\n  4285,\n  4285,\n  4285,\n  1001,\n  4353,\n  4353,\n  4353,\n  380,\n  439,\n  492,\n  719,\n  802,\n  81,\n  333,\n  900,\n  896,\n  3391,\n  26,\n  4554,\n  4554,\n  4554,\n  4566,\n  4566,\n  4566,\n  377,\n  513,\n  0,\n  121,\n  88,\n  2,\n  1438,\n  3819,\n  3819,\n  3819,\n  249,\n  4834,\n  4834,\n  4834,\n  108,\n  102,\n  3659,\n  3659,\n  3659,\n  3604,\n  3604,\n  3604,\n  182,\n  447,\n  520,\n  1542,\n  1542,\n  1542,\n  4479,\n  4479,\n  4479,\n  5,\n  21,\n  137,\n  812,\n  812,\n  812,\n  23,\n  84,\n  45,\n  1,\n  2305,\n  60,\n  3100,\n  3100,\n  3100,\n  0,\n  411,\n  3149,\n  54,\n  29,\n  366,\n  43,\n  0,\n  3464,\n  3049,\n  3049,\n  3049,\n  498,\n  4567,\n  4567,\n  4567,\n  519,\n  22,\n  50,\n  544,\n  218,\n  139,\n  3105,\n  366,\n  148,\n  4705,\n  4705,\n  4705,\n  100,\n  839,\n  4576,\n  4576,\n  4576,\n  166,\n  1181,\n  516,\n  378,\n  2065,\n  30,\n  3512,\n  3512,\n  3512,\n  1378,\n  27,\n  3799,\n  3799,\n  3799,\n  29,\n  0,\n  0,\n  365,\n  2012,\n  722,\n  37,\n  588,\n  876,\n  3721,\n  3721,\n  3721,\n  1668,\n  3315,\n  3315,\n  3315,\n  112,\n  428,\n  129,\n  4150,\n  4150,\n  4150,\n  422,\n  4378,\n  3584,\n  505,\n  2,\n  7,\n  477,\n  191,\n  4829,\n  4829,\n  4829,\n  852,\n  108,\n  834,\n  58,\n  366,\n  799,\n  4932,\n  4932,\n  4932,\n  0,\n  32,\n  10,\n  0,\n  172,\n  2315,\n  68,\n  61,\n  84,\n  365,\n  57,\n  163,\n  35,\n  4623,\n  4623,\n  4623,\n  74,\n  291,\n  27,\n  357,\n  2,\n  2749,\n  2749,\n  2749,\n  1,\n  30,\n  145,\n  1638,\n  1,\n  4297,\n  4297,\n  4297,\n  4641,\n  4641,\n  4641,\n  1793,\n  1605,\n  1605,\n  1605,\n  574,\n  39,\n  3297,\n  3297,\n  3297,\n  35,\n  582,\n  57,\n  944,\n  944,\n  944,\n  366,\n  2122,\n  2122,\n  2122,\n  24,\n  2003,\n  280,\n  40,\n  4,\n  28,\n  938,\n  29,\n  81,\n  343,\n  361,\n  361,\n  361,\n  1165,\n  1165,\n  1165,\n  2,\n  1953,\n  3835,\n  3835,\n  3835,\n  240,\n  0,\n  3889,\n  3889,\n  3889,\n  209,\n  2671,\n  20,\n  509,\n  20,\n  366,\n  506,\n  58,\n  36,\n  4125,\n  4125,\n  4125,\n  142,\n  1903,\n  51,\n  72,\n  1644,\n  1602,\n  1512,\n  1512,\n  1512,\n  94,\n  180,\n  4103,\n  121,\n  356,\n  1,\n  1258,\n  1258,\n  1258,\n  108,\n  4557,\n  4557,\n  4557,\n  3645,\n  97,\n  3043,\n  3043,\n  3043,\n  0,\n  1614,\n  58,\n  3431,\n  3425,\n  196,\n  464,\n  212,\n  809,\n  82,\n  4261,\n  4261,\n  4261,\n  1206,\n  1206,\n  1206,\n  140,\n  14,\n  0,\n  196,\n  4,\n  179,\n  143,\n  143,\n  143,\n  4351,\n  4959,\n  4959,\n  4959,\n  28,\n  29,\n  116,\n  2936,\n  4112,\n  4112,\n  4112,\n  870,\n  112,\n  112,\n  112,\n  71,\n  4190,\n  4190,\n  4190,\n  572,\n  341,\n  23,\n  4537,\n  4537,\n  4537,\n  1953,\n  213,\n  31,\n  173,\n  0,\n  3389,\n  292,\n  1,\n  152,\n  31,\n  235,\n  2990,\n  2990,\n  2990,\n  4897,\n  4897,\n  4897,\n  856,\n  366,\n  20,\n  536,\n  161,\n  187,\n  20,\n  500,\n  500,\n  500,\n  25,\n  34,\n  1163,\n  4620,\n  4620,\n  4620,\n  21,\n  2998,\n  96,\n  296,\n  296,\n  296,\n  787,\n  11,\n  1,\n  95,\n  2725,\n  2725,\n  2725,\n  138,\n  3756,\n  3756,\n  3756,\n  38,\n  124,\n  217,\n  3300,\n  3300,\n  3300,\n  4096,\n  4096,\n  4096,\n  2419,\n  2419,\n  2419,\n  249,\n  0,\n  186,\n  26,\n  1,\n  5,\n  7,\n  1492,\n  1492,\n  1492,\n  2664,\n  2664,\n  2664,\n  90,\n  962,\n  2411,\n  32,\n  34,\n  0,\n  772,\n  1673,\n  2500,\n  2500,\n  2500,\n  4097,\n  4097,\n  4097,\n  120,\n  343,\n  961,\n  1648,\n  26,\n  47,\n  311,\n  21,\n  105,\n  26,\n  297,\n  297,\n  297,\n  223,\n  1312,\n  518,\n  120,\n  1655,\n  1655,\n  1655,\n  1462,\n  21,\n  2332,\n  2332,\n  2332,\n  1564,\n  1564,\n  1564,\n  1,\n  10,\n  56,\n  1951,\n  1951,\n  1951,\n  2326,\n  2326,\n  2326,\n  487,\n  1976,\n  1976,\n  1976,\n  123,\n  121,\n  98,\n  2592,\n  2592,\n  2592,\n  345,\n  80,\n  1745,\n  1745,\n  1745,\n  25,\n  1594,\n  98,\n  2894,\n  253,\n  3907,\n  3907,\n  3907,\n  81,\n  29,\n  678,\n  4653,\n  4653,\n  4653,\n  22,\n  34,\n  389,\n  24,\n  963,\n  148,\n  22,\n  3786,\n  3786,\n  3786,\n  2629,\n  2629,\n  2629,\n  37,\n  45,\n  22,\n  31,\n  28,\n  27,\n  4185,\n  4185,\n  4185,\n  1,\n  4341,\n  4341,\n  4341,\n  489,\n  605,\n  81,\n  2,\n  1083,\n  3,\n  365,\n  31,\n  1458,\n  1458,\n  1458,\n  111,\n  1620,\n  453,\n  2841,\n  2841,\n  2841,\n  168,\n  219,\n  2439,\n  700,\n  700,\n  700,\n  1,\n  49,\n  4851,\n  4851,\n  4851,\n  139,\n  0,\n  2649,\n  2649,\n  2649,\n  4199,\n  4199,\n  4199,\n  85,\n  4,\n  645,\n  29,\n  305,\n  264,\n  112,\n  27,\n  2799,\n  262,\n  171,\n  38,\n  366,\n  1,\n  0,\n  78,\n  50,\n  595,\n  43,\n  116,\n  470,\n  2744,\n  2744,\n  2744,\n  1298,\n  4651,\n  4651,\n  4651,\n  282,\n  2049,\n  107,\n  69,\n  2422,\n  131,\n  130,\n  73,\n  137,\n  729,\n  2458,\n  40,\n  8,\n  559,\n  3655,\n  3655,\n  3655,\n  3497,\n  154,\n  327,\n  94,\n  2391,\n  2391,\n  2391,\n  475,\n  2432,\n  128,\n  329,\n  2449,\n  368,\n  3916,\n  3916,\n  3916,\n  3620,\n  3620,\n  3620,\n  29,\n  0,\n  949,\n  137,\n  66,\n  581,\n  3609,\n  55,\n  1310,\n  160,\n  175,\n  2121,\n  2121,\n  2121,\n  57,\n  2894,\n  2894,\n  2894,\n  2550,\n  2550,\n  2550,\n  389,\n  33,\n  246,\n  52,\n  31,\n  299,\n  513,\n  1714,\n  21,\n  108,\n  210,\n  1684,\n  1684,\n  1684,\n  20,\n  36,\n  857,\n  4210,\n  78,\n  498,\n  344,\n  1518,\n  271,\n  550,\n  23,\n  4621,\n  4621,\n  4621,\n  375,\n  364,\n  4996,\n  4996,\n  4996,\n  1086,\n  3636,\n  3636,\n  3636,\n  516,\n  3443,\n  3443,\n  3443,\n  37,\n  123,\n  24,\n  65,\n  600,\n  22,\n  92,\n  0,\n  369,\n  57,\n  31,\n  0,\n  125,\n  4,\n  49,\n  158,\n  93,\n  37,\n  516,\n  3174,\n  38,\n  2187,\n  2187,\n  2187,\n  4765,\n  4765,\n  4765,\n  188,\n  1,\n  2,\n  1385,\n  726,\n  726,\n  726,\n  171,\n  4640,\n  4640,\n  4640,\n  496,\n  424,\n  594,\n  29,\n  1016,\n  1778,\n  2867,\n  2867,\n  2867,\n  804,\n  6,\n  308,\n  3611,\n  3611,\n  3611,\n  789,\n  789,\n  789,\n  2786,\n  2786,\n  2786,\n  641,\n  138,\n  1206,\n  317,\n  219,\n  47,\n  14,\n  3227,\n  3227,\n  3227,\n  314,\n  3149,\n  2757,\n  30,\n  59,\n  16,\n  3295,\n  3295,\n  3295,\n  367,\n  2315,\n  46,\n  550,\n  1035,\n  1035,\n  1035,\n  218,\n  3987,\n  3987,\n  3987,\n  67,\n  1098,\n  3817,\n  3817,\n  3817,\n  2517,\n  573,\n  185,\n  133,\n  244,\n  244,\n  244,\n  1785,\n  102,\n  367,\n  30,\n  147,\n  248,\n  1191,\n  1191,\n  1191,\n  89,\n  0,\n  4379,\n  4379,\n  4379,\n  59,\n  59,\n  59,\n  235,\n  30,\n  3991,\n  116,\n  302,\n  1,\n  316,\n  20,\n  1016,\n  701,\n  701,\n  701,\n  1096,\n  3992,\n  3992,\n  3992,\n  0,\n  317,\n  1,\n  297,\n  297,\n  297,\n  31,\n  3607,\n  3607,\n  3607,\n  21,\n  153,\n  732,\n  4091,\n  4091,\n  4091,\n  21,\n  0,\n  27,\n  1,\n  54,\n  292,\n  150,\n  8,\n  253,\n  69,\n  1,\n  3565,\n  3565,\n  3565,\n  1796,\n  1796,\n  1796,\n  512,\n  2996,\n  86,\n  287,\n  321,\n  2529,\n  3267,\n  3267,\n  3267,\n  2898,\n  2898,\n  2898,\n  38,\n  40,\n  125,\n  388,\n  2251,\n  2251,\n  2251,\n  1108,\n  69,\n  132,\n  2672,\n  0,\n  3654,\n  3654,\n  3654,\n  3858,\n  3858,\n  3858,\n  287,\n  4488,\n  4488,\n  4488,\n  113,\n  141,\n  1,\n  31,\n  2259,\n  2259,\n  2259,\n  51,\n  63,\n  3235,\n  3235,\n  3235,\n  1,\n  4137,\n  4137,\n  4137,\n  2919,\n  2610,\n  2610,\n  2610,\n  2816,\n  2816,\n  2816,\n  32,\n  1,\n  4,\n  84,\n  1594,\n  3614,\n  3614,\n  3614,\n  30,\n  32,\n  3224,\n  3224,\n  3224,\n  55,\n  2443,\n  2443,\n  2443,\n  54,\n  1294,\n  1294,\n  1294,\n  221,\n  28,\n  146,\n  317,\n  317,\n  317,\n  1783,\n  4355,\n  4355,\n  4355,\n  914,\n  126,\n  151,\n  168,\n  345,\n  692,\n  637,\n  637,\n  637,\n  2986,\n  2986,\n  2986,\n  230,\n  338,\n  43,\n  269,\n  4350,\n  4350,\n  4350,\n  23,\n  226,\n  0,\n  120,\n  23,\n  0,\n  24,\n  20,\n  505,\n  31,\n  4371,\n  4371,\n  4371,\n  1,\n  61,\n  3117,\n  3117,\n  3117,\n  394,\n  973,\n  973,\n  973,\n  213,\n  4140,\n  4140,\n  4140,\n  30,\n  85,\n  2003,\n  636,\n  31,\n  390,\n  537,\n  52,\n  198,\n  254,\n  1,\n  189,\n  4641,\n  4641,\n  4641,\n  4273,\n  4273,\n  4273,\n  299,\n  139,\n  1098,\n  128,\n  128,\n  128,\n  685,\n  6,\n  22,\n  0,\n  52,\n  2069,\n  2069,\n  2069,\n  100,\n  4729,\n  4729,\n  4729,\n  620,\n  554,\n  1399,\n  96,\n  209,\n  209,\n  209,\n  63,\n  1,\n  207,\n  289,\n  988,\n  358,\n  1,\n  25,\n  679,\n  679,\n  679,\n  20,\n  1,\n  28,\n  35,\n  1037,\n  1379,\n  2180,\n  32,\n  365,\n  22,\n  22,\n  3968,\n  3968,\n  3968,\n  62,\n  665,\n  206,\n  94,\n  4670,\n  4670,\n  4670,\n  98,\n  212,\n  2947,\n  2,\n  38,\n  38,\n  38,\n  668,\n  0,\n  418,\n  2000,\n  2000,\n  2000,\n  4013,\n  4013,\n  4013,\n  337,\n  4417,\n  4417,\n  4417,\n  79,\n  1415,\n  1415,\n  1415,\n  3927,\n  3927,\n  3927,\n  2168,\n  2168,\n  2168,\n  20,\n  30,\n  96,\n  580,\n  1100,\n  221,\n  4040,\n  4040,\n  4040,\n  0,\n  2577,\n  2101,\n  2,\n  249,\n  1104,\n  488,\n  95,\n  0,\n  2042,\n  43,\n  0,\n  36,\n  4404,\n  4404,\n  4404,\n  44,\n  1,\n  653,\n  550,\n  550,\n  550,\n  37,\n  2898,\n  2898,\n  2898,\n  1861,\n  1861,\n  1861,\n  3287,\n  196,\n  35,\n  104,\n  30,\n  3653,\n  4015,\n  4015,\n  4015,\n  2601,\n  800,\n  49,\n  140,\n  106,\n  28,\n  54,\n  228,\n  44,\n  1844,\n  33,\n  35,\n  0,\n  135,\n  2,\n  96,\n  713,\n  5,\n  94,\n  3807,\n  3807,\n  3807,\n  26,\n  2175,\n  29,\n  41,\n  4600,\n  4600,\n  4600,\n  110,\n  358,\n  21,\n  53,\n  0,\n  104,\n  4332,\n  4332,\n  4332,\n  24,\n  42,\n  341,\n  21,\n  624,\n  918,\n  3,\n  22,\n  21,\n  42,\n  322,\n  322,\n  322,\n  1867,\n  0,\n  922,\n  922,\n  922,\n  3750,\n  3750,\n  3750,\n  452,\n  452,\n  452,\n  1675,\n  0,\n  27,\n  608,\n  2818,\n  575,\n  575,\n  575,\n  0,\n  0,\n  1387,\n  1387,\n  1387,\n  175,\n  121,\n  0,\n  4361,\n  4361,\n  4361,\n  749,\n  368,\n  366,\n  2602,\n  2602,\n  2602,\n  3232,\n  4705,\n  4705,\n  4705,\n  3296,\n  0,\n  1199,\n  21,\n  1768,\n  1768,\n  1768,\n  1,\n  3796,\n  3796,\n  3796,\n  156,\n  2577,\n  235,\n  20,\n  4052,\n  4052,\n  4052,\n  0,\n  4,\n  249,\n  77,\n  77,\n  77,\n  415,\n  115,\n  0,\n  281,\n  1,\n  2095,\n  371,\n  355,\n  3752,\n  3752,\n  3752,\n  26,\n  185,\n  342,\n  27,\n  6,\n  32,\n  1,\n  365,\n  37,\n  0,\n  0,\n  5,\n  2379,\n  2379,\n  2379,\n  0,\n  233,\n  4,\n  3774,\n  3774,\n  3774,\n  139,\n  680,\n  3366,\n  96,\n  96,\n  96,\n  1057,\n  230,\n  4636,\n  4636,\n  4636,\n  1784,\n  31,\n  3263,\n  3263,\n  3263,\n  4568,\n  4568,\n  4568,\n  1946,\n  1356,\n  4785,\n  4785,\n  4785,\n  120,\n  31,\n  48,\n  244,\n  1466,\n  354,\n  0,\n  1436,\n  41,\n  29,\n  3966,\n  3966,\n  3966,\n  4359,\n  4359,\n  4359,\n  49,\n  365,\n  4552,\n  4552,\n  4552,\n  31,\n  3,\n  30,\n  294,\n  49,\n  1234,\n  38,\n  820,\n  1481,\n  1481,\n  1481,\n  465,\n  79,\n  770,\n  2264,\n  2264,\n  2264,\n  21,\n  40,\n  309,\n  25,\n  100,\n  3014,\n  3014,\n  3014,\n  80,\n  34,\n  4668,\n  4668,\n  4668,\n  140,\n  34,\n  74,\n  31,\n  149,\n  48,\n  3710,\n  152,\n  1,\n  2157,\n  445,\n  30,\n  2061,\n  701,\n  282,\n  0,\n  206,\n  2,\n  0,\n  804,\n  28,\n  2987,\n  2987,\n  2987,\n  0,\n  34,\n  4704,\n  4704,\n  4704,\n  0,\n  147,\n  2874,\n  1,\n  710,\n  3700,\n  396,\n  40,\n  50,\n  163,\n  1766,\n  75,\n  824,\n  1,\n  31,\n  85,\n  51,\n  3339,\n  3023,\n  1099,\n  209,\n  60,\n  40,\n  2,\n  4480,\n  4480,\n  4480,\n  93,\n  2262,\n  2262,\n  2262,\n  33,\n  0,\n  71,\n  32,\n  1571,\n  2258,\n  11,\n  32,\n  31,\n  25,\n  1800,\n  267,\n  445,\n  0,\n  54,\n  337,\n  28,\n  1,\n  20,\n  91,\n  180,\n  53,\n  33,\n  23,\n  24,\n  478,\n  1,\n  4783,\n  4783,\n  4783,\n  23,\n  22,\n  12,\n  523,\n  3331,\n  3331,\n  3331,\n  33,\n  4307,\n  4307,\n  4307,\n  26,\n  3442,\n  3442,\n  3442,\n  2,\n  214,\n  24,\n  35,\n  80,\n  105,\n  0,\n  13,\n  104,\n  1,\n  2241,\n  42,\n  2585,\n  2585,\n  2585,\n  0,\n  2302,\n  145,\n  23,\n  96,\n  0,\n  33,\n  27,\n  32,\n  1836,\n  0,\n  369,\n  287,\n  396,\n  581,\n  148,\n  199,\n  40,\n  47,\n  23,\n  0,\n  70,\n  3,\n  2494,\n  2494,\n  2494,\n  3199,\n  1,\n  31,\n  0,\n  240,\n  87,\n  1468,\n  2,\n  3347,\n  3347,\n  3347,\n  204,\n  20,\n  1076,\n  21,\n  35,\n  4288,\n  4288,\n  4288,\n  33,\n  100,\n  190,\n  2774,\n  179,\n  1,\n  22,\n  57,\n  2004,\n  2004,\n  2004,\n  114,\n  2,\n  3636,\n  3636,\n  3636,\n  20,\n  1,\n  91,\n  3824,\n  3824,\n  3824,\n  25,\n  350,\n  3362,\n  3362,\n  3362,\n  22,\n  3312,\n  4797,\n  4797,\n  4797,\n  2184,\n  981,\n  3516,\n  3516,\n  3516,\n  279,\n  31,\n  32,\n  25,\n  125,\n  68,\n  0,\n  1219,\n  113,\n  34,\n  25,\n  0,\n  0,\n  3203,\n  2082,\n  166,\n  4881,\n  4881,\n  4881,\n  4016,\n  4016,\n  4016,\n  59,\n  533,\n  1451,\n  1451,\n  1451,\n  4160,\n  4160,\n  4160,\n  27,\n  97,\n  32,\n  4058,\n  4058,\n  4058,\n  414,\n  49,\n  421,\n  89,\n  31,\n  74,\n  911,\n  3898,\n  3898,\n  3898,\n  3423,\n  3423,\n  3423,\n  1,\n  39,\n  28,\n  1901,\n  197,\n  86,\n  47,\n  2359,\n  2359,\n  2359,\n  4159,\n  4159,\n  4159,\n  26,\n  35,\n  25,\n  30,\n  410,\n  31,\n  68,\n  1920,\n  1920,\n  1920,\n  22,\n  866,\n  22,\n  4865,\n  4865,\n  4865,\n  2776,\n  3256,\n  3256,\n  3256,\n  32,\n  30,\n  64,\n  577,\n  31,\n  1,\n  1123,\n  1123,\n  1123,\n  23,\n  3415,\n  3415,\n  3415,\n  1139,\n  1139,\n  1139,\n  0,\n  4792,\n  4792,\n  4792,\n  4822,\n  4822,\n  4822,\n  805,\n  95,\n  1369,\n  1369,\n  1369,\n  3957,\n  3957,\n  3957,\n  27,\n  61,\n  46,\n  1080,\n  1080,\n  1080,\n  4243,\n  4243,\n  4243,\n  870,\n  3,\n  98,\n  98,\n  98,\n  3993,\n  3993,\n  3993,\n  1273,\n  1273,\n  1273,\n  0,\n  1939,\n  25,\n  4516,\n  4516,\n  4516,\n  140,\n  1,\n  209,\n  4384,\n  4384,\n  4384,\n  90,\n  31,\n  1545,\n  25,\n  3,\n  1,\n  27,\n  2198,\n  37,\n  1889,\n  1,\n  115,\n  443,\n  992,\n  276,\n  812,\n  5,\n  29,\n  300,\n  43,\n  43,\n  43,\n  1036,\n  134,\n  3152,\n  3152,\n  3152,\n  3,\n  365,\n  884,\n  3764,\n  3764,\n  3764,\n  31,\n  86,\n  547,\n  2194,\n  43,\n  2993,\n  2993,\n  2993,\n  70,\n  361,\n  1232,\n  528,\n  0,\n  867,\n  95,\n  3212,\n  669,\n  705,\n  4522,\n  4522,\n  4522,\n  1918,\n  374,\n  21,\n  134,\n  1,\n  237,\n  3107,\n  3107,\n  3107,\n  0,\n  128,\n  107,\n  286,\n  126,\n  0,\n  18,\n  61,\n  45,\n  45,\n  45,\n  232,\n  2077,\n  2077,\n  2077,\n  178,\n  2675,\n  2823,\n  2823,\n  2823,\n  1105,\n  0,\n  76,\n  22,\n  39,\n  915,\n  36,\n  6,\n  10,\n  959,\n  0,\n  37,\n  3820,\n  2008,\n  10,\n  60,\n  23,\n  209,\n  1076,\n  0,\n  4336,\n  10,\n  4696,\n  4696,\n  4696,\n  238,\n  115,\n  3787,\n  21,\n  77,\n  0,\n  4849,\n  4523,\n  4523,\n  4523,\n  3811,\n  3811,\n  3811,\n  38,\n  0,\n  31,\n  3894,\n  3894,\n  3894,\n  299,\n  511,\n  1938,\n  1938,\n  1938,\n  4818,\n  4818,\n  4818,\n  8,\n  1353,\n  1353,\n  1353,\n  740,\n  2669,\n  2669,\n  2669,\n  102,\n  264,\n  514,\n  4359,\n  4359,\n  4359,\n  148,\n  29,\n  2490,\n  2490,\n  2490,\n  54,\n  31,\n  1,\n  38,\n  51,\n  32,\n  1602,\n  25,\n  885,\n  148,\n  3639,\n  3639,\n  3639,\n  135,\n  135,\n  135,\n  231,\n  3,\n  182,\n  1374,\n  1374,\n  1374,\n  2692,\n  2692,\n  2692,\n  1213,\n  1213,\n  1213,\n  30,\n  53,\n  3905,\n  3905,\n  3905,\n  462,\n  34,\n  3,\n  366,\n  366,\n  366,\n  3839,\n  3839,\n  3839,\n  31,\n  6,\n  0,\n  4225,\n  4225,\n  4225,\n  2726,\n  1946,\n  67,\n  258,\n  4412,\n  4412,\n  4412,\n  3482,\n  3482,\n  3482,\n  365,\n  3278,\n  3278,\n  3278,\n  76,\n  55,\n  1997,\n  1997,\n  1997,\n  365,\n  565,\n  125,\n  841,\n  841,\n  841,\n  45,\n  3404,\n  3404,\n  3404,\n  184,\n  2344,\n  4511,\n  4511,\n  4511,\n  223,\n  56,\n  2,\n  33,\n  365,\n  31,\n  2675,\n  3,\n  71,\n  2741,\n  2741,\n  2741,\n  0,\n  4935,\n  4935,\n  4935,\n  21,\n  690,\n  56,\n  3709,\n  3709,\n  3709,\n  481,\n  481,\n  481,\n  55,\n  162,\n  361,\n  1107,\n  2999,\n  2999,\n  2999,\n  106,\n  16,\n  38,\n  559,\n  1,\n  24,\n  2556,\n  905,\n  31,\n  106,\n  387,\n  192,\n  8,\n  4101,\n  3479,\n  3479,\n  3479,\n  101,\n  0,\n  230,\n  0,\n  58,\n  2424,\n  2424,\n  2424,\n  72,\n  3429,\n  3429,\n  3429,\n  554,\n  52,\n  70,\n  0,\n  28,\n  169,\n  4193,\n  4193,\n  4193,\n  3,\n  36,\n  248,\n  9,\n  4193,\n  4193,\n  4193,\n  4526,\n  4526,\n  4526,\n  0,\n  43,\n  228,\n  524,\n  144,\n  144,\n  144,\n  650,\n  741,\n  31,\n  567,\n  30,\n  368,\n  169,\n  4459,\n  40,\n  184,\n  2241,\n  1260,\n  793,\n  90,\n  1160,\n  0,\n  47,\n  345,\n  514,\n  62,\n  1262,\n  1495,\n  3475,\n  3475,\n  3475,\n  3075,\n  221,\n  90,\n  25,\n  51,\n  55,\n  38,\n  746,\n  39,\n  869,\n  24,\n  33,\n  0,\n  595,\n  3883,\n  3883,\n  3883,\n  71,\n  1256,\n  1256,\n  1256,\n  238,\n  293,\n  528,\n  2,\n  368,\n  75,\n  1146,\n  4726,\n  4726,\n  4726,\n  163,\n  106,\n  452,\n  3873,\n  3873,\n  3873,\n  46,\n  25,\n  184,\n  26,\n  1363,\n  1996,\n  78,\n  30,\n  641,\n  380,\n  62,\n  733,\n  235,\n  53,\n  0,\n  90,\n  163,\n  145,\n  52,\n  24,\n  2266,\n  128,\n  25,\n  98,\n  206,\n  834,\n  239,\n  372,\n  34,\n  164,\n  537,\n  88,\n  151,\n  0,\n  1639,\n  1639,\n  1639,\n  27,\n  20,\n  60,\n  4560,\n  4560,\n  4560,\n  78,\n  1,\n  0,\n  40,\n  0,\n  44,\n  32,\n  413,\n  22,\n  158,\n  115,\n  21,\n  1504,\n  1504,\n  1504,\n  546,\n  546,\n  546,\n  471,\n  180,\n  180,\n  180,\n  0,\n  2433,\n  40,\n  3850,\n  3850,\n  3850,\n  4440,\n  4440,\n  4440,\n  1036,\n  20,\n  60,\n  3332,\n  3332,\n  3332,\n  1151,\n  1151,\n  1151,\n  115,\n  24,\n  46,\n  63,\n  2948,\n  105,\n  0,\n  610,\n  229,\n  229,\n  229,\n  0,\n  88,\n  169,\n  123,\n  407,\n  136,\n  862,\n  2905,\n  2905,\n  2905,\n  0,\n  480,\n  391,\n  30,\n  5,\n  190,\n  17,\n  266,\n  52,\n  76,\n  196,\n  367,\n  28,\n  366,\n  2,\n  60,\n  1,\n  2270,\n  259,\n  135,\n  1436,\n  365,\n  55,\n  338,\n  0,\n  70,\n  580,\n  46,\n  532,\n  29,\n  96,\n  91,\n  91,\n  31,\n  22,\n  71,\n  71,\n  71,\n  40,\n  4145,\n  4145,\n  4145,\n  22,\n  365,\n  184,\n  1360,\n  176,\n  1,\n  122,\n  991,\n  80,\n  4386,\n  4386,\n  4386,\n  3278,\n  58,\n  181,\n  21,\n  832,\n  37,\n  4283,\n  4283,\n  4283,\n  156,\n  3153,\n  34,\n  125,\n  276,\n  33,\n  3869,\n  3869,\n  3869,\n  496,\n  318,\n  88,\n  1370,\n  0,\n  4601,\n  4601,\n  4601,\n  75,\n  65,\n  3175,\n  3175,\n  3175,\n  58,\n  525,\n  1483,\n  365,\n  565,\n  1307,\n  184,\n  26,\n  4640,\n  4640,\n  4640,\n  4333,\n  4333,\n  4333,\n  3,\n  4645,\n  4645,\n  4645,\n  1844,\n  434,\n  1659,\n  1659,\n  1659,\n  1,\n  952,\n  952,\n  952,\n  2923,\n  51,\n  3579,\n  3579,\n  3579,\n  1240,\n  28,\n  23,\n  1871,\n  49,\n  874,\n  366,\n  53,\n  123,\n  0,\n  1,\n  3816,\n  25,\n  36,\n  888,\n  3099,\n  41,\n  597,\n  1518,\n  1518,\n  1518,\n  562,\n  0,\n  28,\n  21,\n  3954,\n  3954,\n  3954,\n  148,\n  188,\n  30,\n  54,\n  520,\n  53,\n  2320,\n  3894,\n  3894,\n  3894,\n  40,\n  8,\n  104,\n  650,\n  4187,\n  4187,\n  4187,\n  2961,\n  2961,\n  2961,\n  48,\n  1276,\n  34,\n  572,\n  796,\n  23,\n  21,\n  0,\n  0,\n  4815,\n  4815,\n  4815,\n  27,\n  174,\n  4671,\n  4671,\n  4671,\n  145,\n  356,\n  2761,\n  2145,\n  149,\n  2522,\n  127,\n  3553,\n  3553,\n  3553,\n  48,\n  22,\n  1515,\n  71,\n  1449,\n  206,\n  0,\n  1001,\n  69,\n  24,\n  21,\n  226,\n  53,\n  4804,\n  4804,\n  4804,\n  4439,\n  4439,\n  4439,\n  56,\n  0,\n  42,\n  509,\n  0,\n  201,\n  1992,\n  72,\n  25,\n  2,\n  0,\n  588,\n  588,\n  588,\n  1360,\n  1022,\n  938,\n  938,\n  938,\n  1728,\n  179,\n  654,\n  32,\n  2256,\n  1002,\n  65,\n  1065,\n  1065,\n  1065,\n  118,\n  440,\n  151,\n  1,\n  3964,\n  3964,\n  3964,\n  205,\n  1067,\n  7,\n  243,\n  27,\n  4637,\n  4637,\n  4637,\n  328,\n  3577,\n  3577,\n  3577,\n  165,\n  950,\n  137,\n  50,\n  860,\n  225,\n  3897,\n  554,\n  931,\n  365,\n  23,\n  852,\n  3169,\n  2,\n  186,\n  24,\n  3976,\n  3976,\n  3976,\n  3980,\n  3980,\n  3980,\n  0,\n  2,\n  4129,\n  4129,\n  4129,\n  1426,\n  36,\n  0,\n  4569,\n  4569,\n  4569,\n  2809,\n  3549,\n  3549,\n  3549,\n  45,\n  365,\n  883,\n  883,\n  883,\n  677,\n  23,\n  368,\n  365,\n  196,\n  1621,\n  1334,\n  3880,\n  1419,\n  1,\n  2,\n  1297,\n  1772,\n  1951,\n  206,\n  33,\n  3461,\n  1,\n  26,\n  57,\n  4237,\n  3717,\n  3717,\n  3717,\n  22,\n  20,\n  3967,\n  3967,\n  3967,\n  29,\n  3132,\n  3132,\n  3132,\n  33,\n  1,\n  3764,\n  93,\n  97,\n  16,\n  983,\n  983,\n  983,\n  3967,\n  3967,\n  3967,\n  1380,\n  20,\n  937,\n  1,\n  3882,\n  3882,\n  3882,\n  36,\n  54,\n  0,\n  21,\n  29,\n  55,\n  2822,\n  2822,\n  2822,\n  120,\n  365,\n  20,\n  44,\n  97,\n  132,\n  220,\n  149,\n  3045,\n  2124,\n  2124,\n  2124,\n  22,\n  4993,\n  4993,\n  4993,\n  983,\n  365,\n  106,\n  0,\n  182,\n  4144,\n  4144,\n  4144,\n  4046,\n  4046,\n  4046,\n  1038,\n  0,\n  143,\n  100,\n  1470,\n  1470,\n  1470,\n  880,\n  17,\n  1749,\n  74,\n  1,\n  110,\n  0,\n  20,\n  216,\n  261,\n  153,\n  26,\n  877,\n  3910,\n  58,\n  293,\n  2401,\n  2401,\n  2401,\n  0,\n  611,\n  115,\n  100,\n  847,\n  304,\n  113,\n  22,\n  255,\n  2497,\n  97,\n  992,\n  34,\n  31,\n  0,\n  52,\n  1727,\n  1727,\n  1727,\n  37,\n  3513,\n  3513,\n  3513,\n  4885,\n  4885,\n  4885,\n  31,\n  25,\n  632,\n  632,\n  632,\n  3965,\n  3965,\n  3965,\n  1045,\n  265,\n  265,\n  265,\n  4688,\n  4688,\n  4688,\n  3430,\n  705,\n  2367,\n  285,\n  0,\n  2532,\n  2532,\n  2532,\n  614,\n  494,\n  2312,\n  2312,\n  2312,\n  303,\n  303,\n  303,\n  74,\n  40,\n  3184,\n  3184,\n  3184,\n  4974,\n  4974,\n  4974,\n  612,\n  378,\n  4058,\n  4058,\n  4058,\n  358,\n  1,\n  84,\n  795,\n  4577,\n  4577,\n  4577,\n  727,\n  174,\n  2312,\n  0,\n  4045,\n  4045,\n  4045,\n  2182,\n  4823,\n  4823,\n  4823,\n  54,\n  368,\n  2381,\n  56,\n  60,\n  2739,\n  2739,\n  2739,\n  0,\n  3004,\n  3004,\n  3004,\n  98,\n  8,\n  37,\n  367,\n  367,\n  50,\n  102,\n  70,\n  53,\n  3788,\n  3788,\n  3788,\n  697,\n  201,\n  0,\n  4874,\n  4874,\n  4874,\n  126,\n  126,\n  126,\n  88,\n  1036,\n  1036,\n  1036,\n  1732,\n  8,\n  244,\n  4822,\n  4822,\n  4822,\n  31,\n  305,\n  1,\n  206,\n  1,\n  74,\n  0,\n  58,\n  4070,\n  4070,\n  4070,\n  2922,\n  2922,\n  2922,\n  1,\n  1305,\n  1305,\n  1305,\n  24,\n  28,\n  0,\n  34,\n  38,\n  130,\n  40,\n  0,\n  26,\n  2573,\n  2573,\n  2573,\n  44,\n  2200,\n  253,\n  253,\n  253,\n  346,\n  76,\n  4306,\n  4306,\n  4306,\n  83,\n  671,\n  0,\n  266,\n  1,\n  931,\n  229,\n  2369,\n  2369,\n  2369,\n  195,\n  38,\n  65,\n  28,\n  39,\n  2782,\n  42,\n  46,\n  924,\n  116,\n  3188,\n  3188,\n  3188,\n  1,\n  37,\n  37,\n  37,\n  4910,\n  4910,\n  4910,\n  26,\n  0,\n  70,\n  112,\n  784,\n  163,\n  411,\n  2,\n  3158,\n  3158,\n  3158,\n  2375,\n  4249,\n  4249,\n  4249,\n  33,\n  65,\n  39,\n  31,\n  454,\n  230,\n  0,\n  74,\n  597,\n  139,\n  26,\n  3249,\n  3249,\n  3249,\n  2464,\n  92,\n  38,\n  33,\n  4627,\n  2122,\n  2122,\n  2122,\n  25,\n  0,\n  386,\n  8,\n  344,\n  1000,\n  1000,\n  1000,\n  622,\n  1962,\n  101,\n  2,\n  1365,\n  1365,\n  1365,\n  330,\n  46,\n  401,\n  36,\n  1,\n  21,\n  3607,\n  3607,\n  3607,\n  70,\n  29,\n  45,\n  199,\n  26,\n  21,\n  20,\n  31,\n  1,\n  1947,\n  53,\n  31,\n  4842,\n  4842,\n  4842,\n  28,\n  71,\n  23,\n  42,\n  31,\n  474,\n  1077,\n  188,\n  201,\n  217,\n  33,\n  0,\n  29,\n  34,\n  0,\n  3,\n  3990,\n  3990,\n  3990,\n  39,\n  25,\n  24,\n  64,\n  47,\n  31,\n  4361,\n  4361,\n  4361,\n  76,\n  55,\n  40,\n  29,\n  4306,\n  4306,\n  4306,\n  32,\n  49,\n  235,\n  1762,\n  1762,\n  1762,\n  38,\n  335,\n  4,\n  3961,\n  3961,\n  3961,\n  73,\n  396,\n  553,\n  0,\n  44,\n  25,\n  2518,\n  43,\n  30,\n  0,\n  33,\n  0,\n  35,\n  159,\n  159,\n  159,\n  2825,\n  2825,\n  2825,\n  40,\n  3895,\n  29,\n  74,\n  0,\n  723,\n  189,\n  642,\n  642,\n  642,\n  30,\n  481,\n  51,\n  64,\n  68,\n  1157,\n  1157,\n  1157,\n  288,\n  38,\n  21,\n  31,\n  440,\n  256,\n  170,\n  3,\n  0,\n  4871,\n  4871,\n  4871,\n  29,\n  37,\n  26,\n  1337,\n  298,\n  393,\n  2436,\n  2436,\n  2436,\n  2,\n  1571,\n  1571,\n  1571,\n  27,\n  291,\n  27,\n  39,\n  400,\n  278,\n  25,\n  4068,\n  28,\n  1290,\n  1290,\n  1290,\n  54,\n  919,\n  319,\n  808,\n  2,\n  35,\n  4338,\n  4338,\n  4338,\n  594,\n  668,\n  32,\n  3975,\n  3975,\n  3975,\n  480,\n  179,\n  0,\n  95,\n  395,\n  4359,\n  4359,\n  4359,\n  897,\n  4646,\n  4646,\n  4646,\n  1466,\n  1466,\n  1466,\n  687,\n  35,\n  33,\n  336,\n  109,\n  195,\n  45,\n  174,\n  4713,\n  4713,\n  4713,\n  59,\n  525,\n  274,\n  2,\n  29,\n  26,\n  692,\n  692,\n  692,\n  34,\n  62,\n  4707,\n  4707,\n  4707,\n  1,\n  1,\n  28,\n  427,\n  873,\n  873,\n  873,\n  33,\n  36,\n  59,\n  174,\n  2825,\n  2825,\n  2825,\n  33,\n  45,\n  43,\n  1735,\n  0,\n  27,\n  182,\n  25,\n  42,\n  0,\n  90,\n  0,\n  0,\n  0,\n  29,\n  3170,\n  4125,\n  4125,\n  4125,\n  231,\n  4346,\n  4346,\n  4346,\n  32,\n  242,\n  28,\n  33,\n  3609,\n  141,\n  1,\n  44,\n  34,\n  28,\n  3658,\n  3658,\n  3658,\n  310,\n  2717,\n  4967,\n  4967,\n  4967,\n  353,\n  293,\n  1157,\n  100,\n  4072,\n  4072,\n  4072,\n  4594,\n  156,\n  31,\n  0,\n  37,\n  298,\n  1773,\n  1773,\n  1773,\n  22,\n  2130,\n  96,\n  1724,\n  37,\n  34,\n  245,\n  35,\n  256,\n  33,\n  34,\n  263,\n  525,\n  38,\n  731,\n  1,\n  36,\n  53,\n  29,\n  76,\n  20,\n  894,\n  561,\n  32,\n  389,\n  61,\n  29,\n  33,\n  24,\n  38,\n  2494,\n  29,\n  4158,\n  4158,\n  4158,\n  28,\n  40,\n  418,\n  3054,\n  3054,\n  3054,\n  29,\n  56,\n  25,\n  34,\n  780,\n  780,\n  780,\n  1,\n  2474,\n  2474,\n  2474,\n  3531,\n  3531,\n  3531,\n  0,\n  269,\n  939,\n  26,\n  148,\n  40,\n  47,\n  79,\n  945,\n  45,\n  44,\n  64,\n  156,\n  648,\n  1,\n  403,\n  94,\n  27,\n  4400,\n  4400,\n  4400,\n  24,\n  33,\n  21,\n  30,\n  204,\n  33,\n  2049,\n  736,\n  1415,\n  37,\n  28,\n  2571,\n  2571,\n  2571,\n  30,\n  2505,\n  0,\n  77,\n  1,\n  1,\n  0,\n  24,\n  0,\n  71,\n  4184,\n  1103,\n  818,\n  553,\n  2553,\n  914,\n  230,\n  4795,\n  4795,\n  4795,\n  86,\n  359,\n  163,\n  389,\n  20,\n  0,\n  2302,\n  2302,\n  2302,\n  88,\n  29,\n  36,\n  4031,\n  4031,\n  4031,\n  3164,\n  688,\n  207,\n  71,\n  1,\n  0,\n  4339,\n  4339,\n  4339,\n  3326,\n  258,\n  30,\n  1395,\n  28,\n  1570,\n  2574,\n  33,\n  432,\n  2819,\n  2819,\n  2819,\n  1,\n  3348,\n  26,\n  396,\n  20,\n  1554,\n  20,\n  0,\n  1379,\n  27,\n  3083,\n  3083,\n  3083,\n  3028,\n  3028,\n  3028,\n  4385,\n  4385,\n  4385,\n  134,\n  101,\n  53,\n  24,\n  205,\n  59,\n  22,\n  205,\n  22,\n  1,\n  45,\n  1395,\n  413,\n  118,\n  1973,\n  1973,\n  1973,\n  122,\n  4141,\n  562,\n  149,\n  2151,\n  2151,\n  2151,\n  2936,\n  2936,\n  2936,\n  845,\n  845,\n  845,\n  1203,\n  1098,\n  1098,\n  1098,\n  44,\n  1536,\n  1536,\n  1536,\n  4879,\n  4879,\n  4879,\n  34,\n  31,\n  615,\n  36,\n  2,\n  92,\n  0,\n  92,\n  92,\n  69,\n  103,\n  1206,\n  1206,\n  1206,\n  1,\n  4309,\n  4309,\n  4309,\n  41,\n  731,\n  20,\n  34,\n  2940,\n  183,\n  4299,\n  2205,\n  2205,\n  2205,\n  16,\n  71,\n  699,\n  53,\n  67,\n  2572,\n  2572,\n  2572,\n  776,\n  0,\n  99,\n  80,\n  369,\n  2,\n  2922,\n  2922,\n  2922,\n  38,\n  60,\n  951,\n  951,\n  951,\n  21,\n  4811,\n  4811,\n  4811,\n  2,\n  2993,\n  2993,\n  2993,\n  24,\n  4343,\n  4343,\n  4343,\n  82,\n  297,\n  44,\n  1268,\n  2536,\n  2536,\n  2536,\n  21,\n  3606,\n  3606,\n  3606,\n  0,\n  2096,\n  0,\n  673,\n  47,\n  342,\n  27,\n  42,\n  132,\n  22,\n  44,\n  127,\n  102,\n  654,\n  1810,\n  2820,\n  26,\n  630,\n  45,\n  30,\n  147,\n  4225,\n  4225,\n  4225,\n  1,\n  92,\n  2465,\n  44,\n  279,\n  322,\n  68,\n  30,\n  231,\n  3571,\n  2193,\n  3104,\n  4060,\n  4060,\n  4060,\n  31,\n  1075,\n  20,\n  32,\n  1492,\n  146,\n  1178,\n  4,\n  27,\n  314,\n  33,\n  20,\n  127,\n  64,\n  558,\n  0,\n  34,\n  1445,\n  1445,\n  1445,\n  146,\n  1,\n  70,\n  1,\n  978,\n  4289,\n  4289,\n  4289,\n  177,\n  44,\n  1,\n  54,\n  3757,\n  3757,\n  3757,\n  35,\n  35,\n  35,\n  240,\n  1,\n  269,\n  32,\n  83,\n  408,\n  21,\n  31,\n  1789,\n  41,\n  413,\n  58,\n  1096,\n  191,\n  33,\n  1203,\n  0,\n  994,\n  2,\n  443,\n  756,\n  756,\n  756,\n  1050,\n  39,\n  21,\n  153,\n  1174,\n  162,\n  357,\n  69,\n  4270,\n  4270,\n  4270,\n  32,\n  27,\n  364,\n  33,\n  0,\n  103,\n  491,\n  75,\n  72,\n  182,\n  48,\n  615,\n  615,\n  615,\n  439,\n  509,\n  84,\n  31,\n  274,\n  61,\n  392,\n  4127,\n  366,\n  1,\n  734,\n  55,\n  83,\n  22,\n  101,\n  22,\n  333,\n  0,\n  50,\n  113,\n  21,\n  404,\n  3081,\n  3081,\n  3081,\n  0,\n  27,\n  178,\n  62,\n  38,\n  374,\n  2,\n  0,\n  95,\n  1,\n  38,\n  55,\n  32,\n  35,\n  4201,\n  489,\n  489,\n  489,\n  1174,\n  987,\n  125,\n  4462,\n  4462,\n  4462,\n  822,\n  1036,\n  302,\n  178,\n  46,\n  21,\n  34,\n  171,\n  171,\n  171,\n  1538,\n  1,\n  1829,\n  1829,\n  1829,\n  21,\n  2,\n  3033,\n  3033,\n  3033,\n  68,\n  731,\n  33,\n  863,\n  4218,\n  4218,\n  4218,\n  287,\n  753,\n  55,\n  21,\n  0,\n  488,\n  61,\n  82,\n  2518,\n  54,\n  35,\n  25,\n  43,\n  367,\n  852,\n  852,\n  852,\n  26,\n  23,\n  20,\n  21,\n  168,\n  31,\n  18,\n  417,\n  235,\n  8,\n  35,\n  0,\n  295,\n  10,\n  3380,\n  3380,\n  3380,\n  3712,\n  3712,\n  3712,\n  1529,\n  1624,\n  3,\n  45,\n  323,\n  64,\n  3,\n  785,\n  1097,\n  23,\n  30,\n  3033,\n  9,\n  0,\n  76,\n  2,\n  25,\n  0,\n  65,\n  1147,\n  84,\n  218,\n  41,\n  4448,\n  91,\n  30,\n  4728,\n  4728,\n  4728,\n  35,\n  32,\n  3536,\n  3536,\n  3536,\n  0,\n  2193,\n  88,\n  371,\n  910,\n  0,\n  1,\n  999,\n  350,\n  260,\n  31,\n  20,\n  311,\n  2106,\n  0,\n  1159,\n  189,\n  1,\n  3230,\n  3230,\n  3230,\n  55,\n  145,\n  86,\n  1,\n  59,\n  379,\n  0,\n  2192,\n  21,\n  1,\n  104,\n  264,\n  1428,\n  2829,\n  2829,\n  2829,\n  91,\n  29,\n  1948,\n  1948,\n  1948,\n  1,\n  28,\n  97,\n  1209,\n  366,\n  26,\n  4846,\n  4846,\n  4846,\n  272,\n  0,\n  1401,\n  1401,\n  1401,\n  2,\n  50,\n  3654,\n  3654,\n  3654,\n  2,\n  221,\n  4929,\n  4929,\n  4929,\n  92,\n  56,\n  1,\n  1097,\n  4814,\n  4814,\n  4814,\n  148,\n  156,\n  1,\n  24,\n  270,\n  270,\n  270,\n  22,\n  29,\n  234,\n  954,\n  3444,\n  3444,\n  3444,\n  690,\n  690,\n  690,\n  79,\n  3653,\n  30,\n  2560,\n  2560,\n  2560,\n  1126,\n  476,\n  8,\n  280,\n  2196,\n  100,\n  1584,\n  1234,\n  1,\n  0,\n  22,\n  5,\n  0,\n  4,\n  2065,\n  2065,\n  2065,\n  181,\n  145,\n  0,\n  129,\n  463,\n  89,\n  839,\n  0,\n  894,\n  3322,\n  3322,\n  3322,\n  75,\n  3,\n  3862,\n  3862,\n  3862,\n  393,\n  412,\n  113,\n  653,\n  47,\n  45,\n  0,\n  0,\n  63,\n  2,\n  1570,\n  353,\n  136,\n  31,\n  118,\n  134,\n  1823,\n  431,\n  89,\n  2,\n  74,\n  733,\n  733,\n  733,\n  440,\n  20,\n  35,\n  84,\n  43,\n  33,\n  828,\n  16,\n  821,\n  202,\n  121,\n  1327,\n  1327,\n  1327,\n  645,\n  6,\n  305,\n  112,\n  401,\n  26,\n  67,\n  61,\n  41,\n  450,\n  317,\n  1,\n  4121,\n  4121,\n  4121,\n  100,\n  0,\n  2014,\n  2014,\n  2014,\n  2,\n  1,\n  27,\n  31,\n  277,\n  4140,\n  4140,\n  4140,\n  118,\n  3,\n  29,\n  26,\n  3301,\n  3301,\n  3301,\n  22,\n  22,\n  1,\n  0,\n  230,\n  0,\n  875,\n  39,\n  4121,\n  4121,\n  4121,\n  910,\n  910,\n  910,\n  8,\n  0,\n  93,\n  153,\n  12,\n  11,\n  295,\n  3300,\n  3300,\n  3300,\n  2505,\n  2505,\n  2505,\n  484,\n  484,\n  484,\n  216,\n  150,\n  0,\n  35,\n  47,\n  0,\n  0,\n  0,\n  495,\n  4512,\n  64,\n  205,\n  0,\n  352,\n  274,\n  128,\n  4940,\n  4940,\n  4940,\n  367,\n  39,\n  149,\n  4781,\n  4781,\n  4781,\n  296,\n  74,\n  60,\n  44,\n  2820,\n  0,\n  0,\n  86,\n  288,\n  734,\n  119,\n  30,\n  44,\n  1,\n  135,\n  370,\n  21,\n  3702,\n  3702,\n  3702,\n  1,\n  304,\n  26,\n  58,\n  24,\n  4184,\n  4184,\n  4184,\n  1191,\n  1191,\n  1191,\n  356,\n  3656,\n  7,\n  1526,\n  1526,\n  1526,\n  2,\n  208,\n  1200,\n  21,\n  3506,\n  3506,\n  3506,\n  40,\n  63,\n  804,\n  266,\n  1161,\n  1161,\n  1161,\n  24,\n  2685,\n  31,\n  140,\n  25,\n  251,\n  3862,\n  3862,\n  3862,\n  24,\n  263,\n  61,\n  55,\n  33,\n  48,\n  108,\n  31,\n  495,\n  2017,\n  2017,\n  2017,\n  49,\n  114,\n  439,\n  1022,\n  32,\n  29,\n  475,\n  2,\n  29,\n  3268,\n  3268,\n  3268,\n  1539,\n  50,\n  268,\n  45,\n  160,\n  513,\n  0,\n  64,\n  1239,\n  342,\n  342,\n  342,\n  172,\n  4027,\n  4027,\n  4027,\n  1237,\n  1237,\n  1237,\n  210,\n  279,\n  279,\n  279,\n  6,\n  515,\n  1,\n  20,\n  0,\n  104,\n  23,\n  3,\n  32,\n  389,\n  3737,\n  3737,\n  3737,\n  1,\n  3259,\n  3259,\n  3259,\n  3830,\n  911,\n  566,\n  0,\n  54,\n  169,\n  283,\n  30,\n  304,\n  2908,\n  712,\n  31,\n  0,\n  23,\n  1,\n  0,\n  79,\n  94,\n  834,\n  170,\n  0,\n  4292,\n  4292,\n  4292,\n  0,\n  326,\n  68,\n  779,\n  25,\n  3844,\n  3844,\n  3844,\n  64,\n  5,\n  232,\n  4128,\n  4128,\n  4128,\n  4162,\n  4162,\n  4162,\n  109,\n  728,\n  235,\n  406,\n  164,\n  41,\n  3091,\n  4577,\n  4577,\n  4577,\n  23,\n  1,\n  267,\n  161,\n  510,\n  55,\n  1151,\n  136,\n  0,\n  44,\n  683,\n  9,\n  356,\n  38,\n  4028,\n  4028,\n  4028,\n  3374,\n  3374,\n  3374,\n  2995,\n  407,\n  39,\n  31,\n  236,\n  895,\n  196,\n  3275,\n  3275,\n  3275,\n  1656,\n  338,\n  2142,\n  2662,\n  4013,\n  4013,\n  4013,\n  666,\n  0,\n  67,\n  184,\n  182,\n  397,\n  450,\n  450,\n  450,\n  578,\n  3938,\n  1373,\n  544,\n  578,\n  372,\n  48,\n  0,\n  48,\n  2424,\n  590,\n  919,\n  13,\n  0,\n  859,\n  2800,\n  2800,\n  2800,\n  60,\n  79,\n  0,\n  549,\n  0,\n  4138,\n  4138,\n  4138,\n  2380,\n  2380,\n  2380,\n  10,\n  4534,\n  4534,\n  4534,\n  3872,\n  3872,\n  3872,\n  30,\n  147,\n  802,\n  48,\n  2661,\n  2661,\n  2661,\n  4072,\n  1613,\n  44,\n  560,\n  24,\n  169,\n  35,\n  4281,\n  4281,\n  4281,\n  309,\n  468,\n  3268,\n  3268,\n  3268,\n  148,\n  0,\n  124,\n  318,\n  60,\n  179,\n  62,\n  1,\n  29,\n  30,\n  50,\n  3368,\n  22,\n  738,\n  216,\n  367,\n  367,\n  367,\n  1877,\n  107,\n  224,\n  111,\n  1,\n  22,\n  2402,\n  3,\n  21,\n  39,\n  0,\n  278,\n  366,\n  602,\n  3343,\n  3343,\n  3343,\n  32,\n  189,\n  205,\n  48,\n  22,\n  2709,\n  160,\n  2728,\n  4991,\n  4991,\n  4991,\n  3232,\n  3232,\n  3232,\n  189,\n  0,\n  23,\n  595,\n  606,\n  1218,\n  1218,\n  1218,\n  38,\n  214,\n  1219,\n  1219,\n  1219,\n  1319,\n  590,\n  590,\n  590,\n  233,\n  4131,\n  4131,\n  4131,\n  940,\n  622,\n  588,\n  1698,\n  4700,\n  4700,\n  4700,\n  110,\n  3813,\n  3813,\n  3813,\n  26,\n  0,\n  4,\n  1116,\n  37,\n  3129,\n  3129,\n  3129,\n  0,\n  95,\n  95,\n  95,\n  33,\n  308,\n  413,\n  69,\n  49,\n  908,\n  220,\n  577,\n  577,\n  577,\n  366,\n  3092,\n  3092,\n  3092,\n  1,\n  64,\n  9,\n  1,\n  4405,\n  4405,\n  4405,\n  97,\n  218,\n  0,\n  29,\n  1,\n  50,\n  1,\n  94,\n  3539,\n  77,\n  1661,\n  20,\n  110,\n  0,\n  1304,\n  257,\n  815,\n  211,\n  23,\n  1,\n  91,\n  688,\n  45,\n  230,\n  864,\n  0,\n  2218,\n  2218,\n  2218,\n  106,\n  2,\n  2696,\n  2696,\n  2696,\n  202,\n  397,\n  2798,\n  1317,\n  30,\n  382,\n  2728,\n  4334,\n  4334,\n  4334,\n  3914,\n  3914,\n  3914,\n  32,\n  32,\n  4834,\n  4834,\n  4834,\n  4833,\n  4833,\n  4833,\n  1598,\n  1598,\n  1598,\n  473,\n  1,\n  2,\n  438,\n  4213,\n  4213,\n  4213,\n  3221,\n  3221,\n  3221,\n  26,\n  103,\n  135,\n  0,\n  3834,\n  3834,\n  3834,\n  3861,\n  3861,\n  3861,\n  84,\n  82,\n  82,\n  82,\n  598,\n  2559,\n  21,\n  28,\n  367,\n  367,\n  367,\n  1,\n  78,\n  895,\n  33,\n  236,\n  123,\n  907,\n  4018,\n  4018,\n  4018,\n  352,\n  352,\n  352,\n  380,\n  575,\n  1638,\n  1638,\n  1638,\n  666,\n  2944,\n  115,\n  2029,\n  2029,\n  2029,\n  857,\n  178,\n  45,\n  27,\n  96,\n  282,\n  582,\n  176,\n  44,\n  1,\n  368,\n  4880,\n  4880,\n  4880,\n  1622,\n  2064,\n  0,\n  1,\n  237,\n  30,\n  101,\n  0,\n  204,\n  248,\n  248,\n  248,\n  82,\n  1290,\n  1290,\n  1290,\n  489,\n  47,\n  56,\n  31,\n  31,\n  210,\n  1159,\n  1664,\n  1664,\n  1664,\n  30,\n  1185,\n  1074,\n  1074,\n  1074,\n  367,\n  1024,\n  45,\n  4995,\n  4995,\n  4995,\n  548,\n  548,\n  548,\n  5,\n  322,\n  1197,\n  581,\n  46,\n  2134,\n  2134,\n  2134,\n  211,\n  622,\n  0,\n  49,\n  31,\n  1550,\n  239,\n  129,\n  2,\n  20,\n  991,\n  0,\n  576,\n  576,\n  576,\n  337,\n  4329,\n  4329,\n  4329,\n  57,\n  2733,\n  41,\n  46,\n  4367,\n  4367,\n  4367,\n  4635,\n  4635,\n  4635,\n  0,\n  868,\n  868,\n  868,\n  863,\n  25,\n  113,\n  125,\n  56,\n  32,\n  367,\n  0,\n  883,\n  2770,\n  2770,\n  2770,\n  3852,\n  46,\n  24,\n  28,\n  32,\n  926,\n  112,\n  3834,\n  0,\n  67,\n  0,\n  1650,\n  1650,\n  1650,\n  0,\n  474,\n  474,\n  474,\n  1,\n  369,\n  104,\n  47,\n  253,\n  253,\n  253,\n  1373,\n  2020,\n  2020,\n  2020,\n  0,\n  313,\n  1050,\n  1352,\n  1352,\n  1352,\n  2316,\n  2316,\n  2316,\n  0,\n  4286,\n  4286,\n  4286,\n  1004,\n  1348,\n  73,\n  292,\n  0,\n  966,\n  63,\n  176,\n  176,\n  176,\n  3331,\n  3331,\n  3331,\n  286,\n  3477,\n  21,\n  4172,\n  4172,\n  4172,\n  2,\n  659,\n  41,\n  718,\n  718,\n  718,\n  67,\n  28,\n  977,\n  42,\n  50,\n  32,\n  61,\n  4299,\n  4299,\n  4299,\n  262,\n  70,\n  54,\n  1364,\n  1364,\n  1364,\n  1,\n  1,\n  333,\n  107,\n  0,\n  189,\n  50,\n  287,\n  1659,\n  0,\n  3114,\n  3114,\n  3114,\n  732,\n  90,\n  3449,\n  3449,\n  3449,\n  2126,\n  2126,\n  2126,\n  522,\n  942,\n  307,\n  29,\n  1472,\n  1278,\n  2421,\n  1617,\n  109,\n  281,\n  42,\n  50,\n  2509,\n  2509,\n  2509,\n  367,\n  0,\n  1998,\n  1998,\n  1998,\n  4015,\n  4015,\n  4015,\n  142,\n  69,\n  9,\n  244,\n  2246,\n  2607,\n  72,\n  2521,\n  2521,\n  2521,\n  3119,\n  3119,\n  3119,\n  1,\n  452,\n  225,\n  0,\n  38,\n  3976,\n  74,\n  0,\n  93,\n  4565,\n  4565,\n  4565,\n  78,\n  32,\n  62,\n  2849,\n  2849,\n  2849,\n  63,\n  314,\n  12,\n  0,\n  362,\n  562,\n  34,\n  931,\n  275,\n  52,\n  155,\n  281,\n  4391,\n  4391,\n  4391,\n  276,\n  120,\n  120,\n  120,\n  1764,\n  44,\n  34,\n  3615,\n  1,\n  29,\n  53,\n  90,\n  369,\n  22,\n  26,\n  2543,\n  2543,\n  2543,\n  226,\n  29,\n  331,\n  95,\n  337,\n  635,\n  197,\n  0,\n  35,\n  1404,\n  1134,\n  0,\n  54,\n  118,\n  985,\n  1570,\n  28,\n  370,\n  163,\n  3936,\n  975,\n  975,\n  975,\n  238,\n  300,\n  51,\n  246,\n  22,\n  652,\n  365,\n  73,\n  117,\n  117,\n  117,\n  497,\n  269,\n  1995,\n  2024,\n  2856,\n  53,\n  22,\n  82,\n  189,\n  1,\n  48,\n  152,\n  4032,\n  4032,\n  4032,\n  28,\n  1147,\n  1147,\n  1147,\n  90,\n  2539,\n  0,\n  3285,\n  3285,\n  3285,\n  586,\n  15,\n  2737,\n  4276,\n  4276,\n  4276,\n  98,\n  86,\n  2958,\n  2106,\n  3483,\n  3634,\n  0,\n  4382,\n  1294,\n  1294,\n  1294,\n  57,\n  559,\n  559,\n  559,\n  61,\n  202,\n  2745,\n  27,\n  700,\n  700,\n  700,\n  115,\n  0,\n  1,\n  1823,\n  1,\n  4204,\n  178,\n  2355,\n  27,\n  1,\n  236,\n  28,\n  284,\n  197,\n  0,\n  8,\n  171,\n  749,\n  157,\n  37,\n  590,\n  457,\n  1224,\n  2576,\n  687,\n  687,\n  687,\n  33,\n  829,\n  202,\n  2139,\n  24,\n  1328,\n  1328,\n  1328,\n  0,\n  1,\n  31,\n  31,\n  0,\n  76,\n  0,\n  257,\n  28,\n  101,\n  2142,\n  2142,\n  2142,\n  1766,\n  306,\n  30,\n  42,\n  0,\n  1285,\n  1,\n  216,\n  2360,\n  2360,\n  2360,\n  20,\n  82,\n  46,\n  37,\n  335,\n  408,\n  1462,\n  1462,\n  1462,\n  4342,\n  4342,\n  4342,\n  22,\n  468,\n  1,\n  4007,\n  4007,\n  4007,\n  1097,\n  1,\n  3655,\n  42,\n  2150,\n  1809,\n  1809,\n  1809,\n  0,\n  1,\n  1793,\n  1793,\n  1793,\n  335,\n  223,\n  1253,\n  306,\n  1766,\n  4052,\n  1,\n  2001,\n  2001,\n  2001,\n  1562,\n  1562,\n  1562,\n  611,\n  28,\n  4355,\n  1521,\n  196,\n  0,\n  1732,\n  5,\n  2574,\n  2574,\n  2574,\n  173,\n  40,\n  623,\n  1313,\n  430,\n  88,\n  1,\n  769,\n  769,\n  769,\n  0,\n  345,\n  4768,\n  4768,\n  4768,\n  1,\n  385,\n  1176,\n  1176,\n  1176,\n  26,\n  30,\n  79,\n  129,\n  4,\n  44,\n  224,\n  641,\n  0,\n  355,\n  82,\n  142,\n  24,\n  122,\n  621,\n  1709,\n  3657,\n  3657,\n  3657,\n  154,\n  0,\n  3704,\n  0,\n  424,\n  280,\n  280,\n  280,\n  3610,\n  3610,\n  3610,\n  31,\n  1,\n  32,\n  335,\n  1,\n  20,\n  0,\n  0,\n  3,\n  1,\n  4678,\n  4678,\n  4678,\n  27,\n  109,\n  121,\n  2231,\n  701,\n  814,\n  814,\n  814,\n  36,\n  304,\n  691,\n  210,\n  1,\n  1842,\n  1,\n  0,\n  31,\n  0,\n  95,\n  1464,\n  1464,\n  1464,\n  5,\n  281,\n  0,\n  49,\n  4073,\n  4073,\n  4073,\n  4411,\n  4411,\n  4411,\n  640,\n  640,\n  640,\n  0,\n  55,\n  67,\n  55,\n  3906,\n  3906,\n  3906,\n  31,\n  2,\n  1,\n  60,\n  31,\n  6,\n  31,\n  1475,\n  226,\n  2931,\n  670,\n  670,\n  670,\n  373,\n  373,\n  373,\n  331,\n  0,\n  1476,\n  3,\n  1578,\n  519,\n  2,\n  183,\n  69,\n  294,\n  2057,\n  2057,\n  2057,\n  0,\n  102,\n  62,\n  41,\n  4278,\n  4278,\n  4278,\n  3612,\n  3612,\n  3612,\n  53,\n  1,\n  26,\n  31,\n  1680,\n  329,\n  32,\n  311,\n  40,\n  30,\n  37,\n  31,\n  46,\n  4788,\n  3210,\n  3210,\n  3210,\n  20,\n  49,\n  1134,\n  3771,\n  3771,\n  3771,\n  683,\n  0,\n  0,\n  1088,\n  25,\n  29,\n  2912,\n  2912,\n  2912,\n  0,\n  1,\n  177,\n  0,\n  3668,\n  3668,\n  3668,\n  294,\n  40,\n  33,\n  30,\n  1,\n  4705,\n  4705,\n  4705,\n  0,\n  0,\n  357,\n  103,\n  11,\n  298,\n  4784,\n  4784,\n  4784,\n  26,\n  1,\n  4382,\n  4382,\n  4382,\n  167,\n  22,\n  0,\n  3061,\n  3061,\n  3061,\n  119,\n  531,\n  367,\n  201,\n  30,\n  0,\n  177,\n  31,\n  0,\n  58,\n  29,\n  4,\n  155,\n  4095,\n  4095,\n  4095,\n  682,\n  55,\n  2256,\n  2256,\n  2256,\n  101,\n  693,\n  20,\n  240,\n  31,\n  41,\n  4494,\n  4494,\n  4494,\n  769,\n  4,\n  800,\n  25,\n  752,\n  1,\n  238,\n  24,\n  32,\n  53,\n  0,\n  0,\n  28,\n  1,\n  2109,\n  46,\n  200,\n  168,\n  398,\n  87,\n  3297,\n  351,\n  0,\n  67,\n  338,\n  2249,\n  1190,\n  24,\n  340,\n  340,\n  340,\n  3117,\n  3117,\n  3117,\n  229,\n  408,\n  31,\n  1887,\n  1887,\n  1887,\n  574,\n  574,\n  574,\n  2,\n  2563,\n  2563,\n  2563,\n  24,\n  378,\n  53,\n  3754,\n  3754,\n  3754,\n  0,\n  47,\n  50,\n  2151,\n  85,\n  4019,\n  4019,\n  4019,\n  4390,\n  4390,\n  4390,\n  946,\n  18,\n  2830,\n  374,\n  410,\n  410,\n  410,\n  1,\n  1081,\n  54,\n  1,\n  3274,\n  82,\n  375,\n  945,\n  139,\n  0,\n  3273,\n  3273,\n  3273,\n  2219,\n  2219,\n  2219,\n  4753,\n  4753,\n  4753,\n  354,\n  28,\n  395,\n  25,\n  332,\n  63,\n  0,\n  2,\n  3285,\n  29,\n  0,\n  49,\n  106,\n  75,\n  30,\n  0,\n  4100,\n  4100,\n  4100,\n  1,\n  1,\n  327,\n  15,\n  31,\n  27,\n  1,\n  1876,\n  31,\n  1153,\n  30,\n  46,\n  308,\n  1545,\n  1545,\n  1545,\n  21,\n  180,\n  3,\n  22,\n  119,\n  174,\n  202,\n  700,\n  27,\n  31,\n  4163,\n  4163,\n  4163,\n  2200,\n  2200,\n  2200,\n  1,\n  140,\n  31,\n  55,\n  20,\n  47,\n  36,\n  253,\n  0,\n  168,\n  27,\n  31,\n  1,\n  200,\n  1903,\n  1903,\n  1903,\n  437,\n  27,\n  601,\n  1,\n  32,\n  51,\n  983,\n  1,\n  3472,\n  3472,\n  3472,\n  91,\n  35,\n  37,\n  1173,\n  1173,\n  1173,\n  1,\n  59,\n  20,\n  0,\n  1,\n  4090,\n  4090,\n  4090,\n  77,\n  530,\n  2556,\n  1807,\n  1807,\n  1807,\n  3184,\n  3184,\n  3184,\n  10,\n  23,\n  1630,\n  62,\n  34,\n  7,\n  55,\n  0,\n  1572,\n  0,\n  28,\n  2,\n  35,\n  84,\n  1,\n  79,\n  1769,\n  1769,\n  1769,\n  92,\n  3086,\n  3086,\n  3086,\n  419,\n  10,\n  4877,\n  4877,\n  4877,\n  1857,\n  4504,\n  4504,\n  4504,\n  34,\n  0,\n  4010,\n  4010,\n  4010,\n  37,\n  24,\n  40,\n  0,\n  135,\n  437,\n  0,\n  0,\n  0,\n  3784,\n  3784,\n  3784,\n  31,\n  20,\n  78,\n  1,\n  31,\n  32,\n  0,\n  92,\n  60,\n  268,\n  140,\n  480,\n  2962,\n  2962,\n  2962,\n  23,\n  58,\n  44,\n  1582,\n  1582,\n  1582,\n  665,\n  22,\n  0,\n  44,\n  28,\n  87,\n  489,\n  3,\n  2917,\n  90,\n  418,\n  32,\n  24,\n  3291,\n  562,\n  93,\n  3792,\n  3792,\n  3792,\n  90,\n  3046,\n  31,\n  1,\n  1832,\n  1832,\n  1832,\n  22,\n  4068,\n  4042,\n  4042,\n  4042,\n  257,\n  20,\n  22,\n  0,\n  345,\n  440,\n  421,\n  68,\n  0,\n  3795,\n  4038,\n  4038,\n  4038,\n  31,\n  1090,\n  98,\n  25,\n  25,\n  25,\n  2383,\n  65,\n  98,\n  358,\n  2269,\n  2269,\n  2269,\n  42,\n  173,\n  59,\n  0,\n  143,\n  0,\n  2303,\n  3988,\n  3988,\n  3988,\n  767,\n  176,\n  1,\n  746,\n  827,\n  33,\n  730,\n  197,\n  269,\n  47,\n  24,\n  1,\n  1498,\n  1498,\n  1498,\n  2683,\n  6,\n  51,\n  0,\n  440,\n  4515,\n  4515,\n  4515,\n  30,\n  1586,\n  33,\n  597,\n  52,\n  1079,\n  915,\n  915,\n  915,\n  21,\n  79,\n  106,\n  62,\n  611,\n  102,\n  2924,\n  132,\n  2981,\n  2981,\n  2981,\n  2716,\n  2716,\n  2716,\n  51,\n  2954,\n  78,\n  24,\n  61,\n  532,\n  660,\n  1523,\n  1523,\n  1523,\n  2484,\n  0,\n  95,\n  233,\n  25,\n  16,\n  1485,\n  28,\n  181,\n  3127,\n  31,\n  0,\n  1,\n  1244,\n  49,\n  59,\n  4,\n  255,\n  155,\n  30,\n  0,\n  2576,\n  171,\n  3840,\n  3840,\n  3840,\n  484,\n  3443,\n  3443,\n  3443,\n  61,\n  4808,\n  4808,\n  4808,\n  67,\n  2016,\n  2016,\n  2016,\n  4513,\n  4513,\n  4513,\n  3472,\n  3472,\n  3472,\n  57,\n  2,\n  22,\n  45,\n  127,\n  34,\n  30,\n  1,\n  619,\n  142,\n  0,\n  118,\n  507,\n  1636,\n  1069,\n  634,\n  46,\n  2991,\n  3,\n  1590,\n  61,\n  466,\n  741,\n  1837,\n  1837,\n  1837,\n  36,\n  3638,\n  24,\n  4633,\n  4633,\n  4633,\n  103,\n  21,\n  437,\n  20,\n  23,\n  513,\n  565,\n  58,\n  991,\n  112,\n  3795,\n  3795,\n  3795,\n  1846,\n  1846,\n  1846,\n  481,\n  60,\n  559,\n  27,\n  204,\n  2758,\n  2758,\n  2758,\n  32,\n  1346,\n  255,\n  1,\n  258,\n  68,\n  238,\n  28,\n  0,\n  370,\n  72,\n  1505,\n  1505,\n  1505,\n  1371,\n  61,\n  1,\n  61,\n  809,\n  463,\n  1140,\n  505,\n  3468,\n  741,\n  100,\n  357,\n  357,\n  357,\n  1,\n  1,\n  149,\n  2597,\n  2597,\n  2597,\n  486,\n  486,\n  486,\n  67,\n  211,\n  2251,\n  761,\n  14,\n  0,\n  664,\n  4,\n  213,\n  258,\n  476,\n  65,\n  4958,\n  4958,\n  4958,\n  851,\n  91,\n  20,\n  841,\n  841,\n  841,\n  41,\n  1581,\n  1581,\n  1581,\n  23,\n  2477,\n  143,\n  174,\n  127,\n  52,\n  73,\n  107,\n  59,\n  1446,\n  1446,\n  1446,\n  261,\n  1,\n  24,\n  489,\n  1,\n  458,\n  58,\n  305,\n  45,\n  397,\n  1,\n  26,\n  4004,\n  4004,\n  4004,\n  465,\n  1,\n  4687,\n  4687,\n  4687,\n  4210,\n  4210,\n  4210,\n  433,\n  3750,\n  3750,\n  3750,\n  97,\n  31,\n  89,\n  112,\n  0,\n  1526,\n  1526,\n  1526,\n  564,\n  28,\n  564,\n  1200,\n  25,\n  21,\n  1933,\n  1933,\n  1933,\n  359,\n  4131,\n  4131,\n  4131,\n  320,\n  2994,\n  98,\n  4361,\n  4361,\n  4361,\n  0,\n  138,\n  191,\n  103,\n  124,\n  0,\n  67,\n  1776,\n  3321,\n  3321,\n  3321,\n  500,\n  0,\n  918,\n  1553,\n  1553,\n  1553,\n  474,\n  21,\n  0,\n  1187,\n  700,\n  95,\n  4548,\n  4548,\n  4548,\n  583,\n  583,\n  583,\n  2484,\n  2484,\n  2484,\n  58,\n  878,\n  134,\n  3548,\n  3548,\n  3548,\n  532,\n  63,\n  26,\n  130,\n  2,\n  101,\n  27,\n  23,\n  248,\n  58,\n  31,\n  0,\n  1962,\n  157,\n  52,\n  0,\n  0,\n  1,\n  376,\n  233,\n  315,\n  1337,\n  2401,\n  522,\n  57,\n  188,\n  156,\n  249,\n  350,\n  39,\n  225,\n  276,\n  92,\n  276,\n  31,\n  2,\n  37,\n  460,\n  2555,\n  2555,\n  2555,\n  4609,\n  4609,\n  4609,\n  0,\n  26,\n  366,\n  1178,\n  390,\n  57,\n  0,\n  112,\n  605,\n  645,\n  365,\n  483,\n  22,\n  221,\n  59,\n  54,\n  94,\n  23,\n  4419,\n  4419,\n  4419,\n  4585,\n  3843,\n  3843,\n  3843,\n  250,\n  250,\n  250,\n  1695,\n  1695,\n  1695,\n  611,\n  46,\n  65,\n  3,\n  1008,\n  1008,\n  1008,\n  115,\n  68,\n  0,\n  561,\n  42,\n  50,\n  3032,\n  3032,\n  3032,\n  2391,\n  0,\n  1975,\n  28,\n  1409,\n  1409,\n  1409,\n  36,\n  463,\n  206,\n  0,\n  71,\n  90,\n  0,\n  0,\n  605,\n  52,\n  78,\n  4809,\n  4809,\n  4809,\n  336,\n  38,\n  0,\n  244,\n  42,\n  493,\n  0,\n  50,\n  406,\n  406,\n  406,\n  24,\n  4433,\n  4433,\n  4433,\n  0,\n  3909,\n  3909,\n  3909,\n  4589,\n  4589,\n  4589,\n  68,\n  46,\n  1666,\n  21,\n  1,\n  2479,\n  113,\n  1,\n  230,\n  2832,\n  2832,\n  2832,\n  46,\n  1150,\n  1150,\n  1150,\n  4666,\n  4666,\n  4666,\n  32,\n  364,\n  0,\n  0,\n  178,\n  109,\n  96,\n  2,\n  2282,\n  2282,\n  2282,\n  48,\n  717,\n  3080,\n  32,\n  78,\n  1937,\n  1937,\n  1937,\n  1,\n  96,\n  186,\n  607,\n  80,\n  4985,\n  4985,\n  4985,\n  281,\n  254,\n  1,\n  168,\n  2,\n  88,\n  2476,\n  2476,\n  2476,\n  32,\n  20,\n  4782,\n  4782,\n  4782,\n  2482,\n  193,\n  698,\n  791,\n  791,\n  791,\n  243,\n  122,\n  173,\n  270,\n  980,\n  612,\n  574,\n  21,\n  1432,\n  27,\n  30,\n  23,\n  5,\n  24,\n  105,\n  3778,\n  3778,\n  3778,\n  147,\n  118,\n  1697,\n  1697,\n  1697,\n  32,\n  1466,\n  26,\n  1548,\n  1078,\n  1078,\n  1078,\n  1561,\n  3757,\n  3757,\n  3757,\n  0,\n  109,\n  252,\n  125,\n  110,\n  58,\n  216,\n  237,\n  0,\n  119,\n  1826,\n  1748,\n  0,\n  75,\n  6,\n  321,\n  61,\n  285,\n  28,\n  78,\n  587,\n  46,\n  1349,\n  328,\n  295,\n  879,\n  273,\n  71,\n  224,\n  21,\n  270,\n  27,\n  0,\n  246,\n  3173,\n  32,\n  2142,\n  129,\n  3805,\n  392,\n  290,\n  39,\n  394,\n  28,\n  0,\n  0,\n  53,\n  0,\n  32,\n  94,\n  1710,\n  0,\n  101,\n  111,\n  242,\n  1,\n  3507,\n  3507,\n  3507,\n  34,\n  1427,\n  1427,\n  1427,\n  3863,\n  3863,\n  3863,\n  1,\n  601,\n  215,\n  981,\n  981,\n  981,\n  0,\n  48,\n  0,\n  21,\n  249,\n  249,\n  249,\n  0,\n  286,\n  38,\n  1754,\n  1404,\n  1404,\n  1404,\n  3,\n  27,\n  1740,\n  1740,\n  1740,\n  323,\n  30,\n  134,\n  118,\n  202,\n  2390,\n  384,\n  365,\n  60,\n  78,\n  31,\n  73,\n  1813,\n  3616,\n  3616,\n  3616,\n  735,\n  15,\n  0,\n  3827,\n  3827,\n  3827,\n  562,\n  1821,\n  640,\n  1016,\n  0,\n  21,\n  2,\n  1,\n  0,\n  33,\n  95,\n  21,\n  1758,\n  3208,\n  1,\n  0,\n  1,\n  0,\n  587,\n  0,\n  365,\n  4456,\n  4456,\n  4456,\n  3253,\n  51,\n  247,\n  918,\n  50,\n  3298,\n  3298,\n  3298,\n  461,\n  3827,\n  1,\n  3590,\n  3590,\n  3590,\n  1,\n  1471,\n  370,\n  4839,\n  4839,\n  4839,\n  32,\n  42,\n  32,\n  356,\n  3515,\n  14,\n  4,\n  0,\n  0,\n  1042,\n  5,\n  1,\n  0,\n  14,\n  20,\n  1,\n  33,\n  727,\n  3,\n  27,\n  41,\n  146,\n  0,\n  1159,\n  1824,\n  1,\n  20,\n  1442,\n  1442,\n  1442,\n  0,\n  212,\n  2303,\n  2303,\n  2303,\n  3875,\n  636,\n  0,\n  0,\n  29,\n  1,\n  2,\n  36,\n  1402,\n  1402,\n  1402,\n  118,\n  673,\n  4732,\n  4732,\n  4732,\n  36,\n  61,\n  1064,\n  33,\n  708,\n  125,\n  3,\n  319,\n  1013,\n  1,\n  1,\n  373,\n  373,\n  373,\n  180,\n  362,\n  1,\n  21,\n  1324,\n  380,\n  123,\n  123,\n  123,\n  1,\n  106,\n  2500,\n  804,\n  646,\n  91,\n  575,\n  229,\n  309,\n  0,\n  215,\n  33,\n  3609,\n  36,\n  771,\n  38,\n  4978,\n  4978,\n  4978,\n  477,\n  30,\n  24,\n  0,\n  1457,\n  1457,\n  1457,\n  31,\n  2264,\n  0,\n  4,\n  1,\n  0,\n  885,\n  3,\n  722,\n  303,\n  539,\n  122,\n  31,\n  95,\n  36,\n  254,\n  345,\n  5,\n  0,\n  0,\n  13,\n  1,\n  34,\n  1306,\n  1468,\n  808,\n  808,\n  808,\n  0,\n  543,\n  77,\n  415,\n  4656,\n  4656,\n  4656,\n  374,\n  1189,\n  30,\n  2303,\n  2303,\n  2303,\n  214,\n  22,\n  26,\n  160,\n  25,\n  4694,\n  21,\n  25,\n  27,\n  20,\n  1,\n  406,\n  0,\n  21,\n  6,\n  30,\n  368,\n  1,\n  26,\n  4161,\n  4161,\n  4161,\n  1,\n  33,\n  835,\n  146,\n  3269,\n  3269,\n  3269,\n  0,\n  2,\n  35,\n  33,\n  0,\n  0,\n  23,\n  13,\n  0,\n  1581,\n  302,\n  4763,\n  4763,\n  4763,\n  4794,\n  4794,\n  4794,\n  24,\n  365,\n  1,\n  2,\n  266,\n  30,\n  4327,\n  4327,\n  4327,\n  29,\n  146,\n  3234,\n  35,\n  5,\n  156,\n  1,\n  1,\n  1,\n  369,\n  22,\n  641,\n  2,\n  3482,\n  3482,\n  3482,\n  25,\n  30,\n  4684,\n  4684,\n  4684,\n  2,\n  436,\n  0,\n  62,\n  48,\n  1,\n  6,\n  1,\n  0,\n  37,\n  2564,\n  2564,\n  2564,\n  0,\n  4775,\n  4775,\n  4775,\n  26,\n  1220,\n  1220,\n  1220,\n  3993,\n  3993,\n  3993,\n  2193,\n  2563,\n  0,\n  156,\n  22,\n  0,\n  3,\n  926,\n  2047,\n  2047,\n  2047,\n  364,\n  3829,\n  3829,\n  3829,\n  53,\n  27,\n  1063,\n  2056,\n  40,\n  208,\n  0,\n  2111,\n  157,\n  20,\n  266,\n  34,\n  0,\n  88,\n  819,\n  7,\n  433,\n  3895,\n  3895,\n  3895,\n  39,\n  27,\n  90,\n  3,\n  41,\n  111,\n  30,\n  2828,\n  2828,\n  2828,\n  12,\n  464,\n  729,\n  729,\n  729,\n  417,\n  408,\n  0,\n  25,\n  1514,\n  35,\n  0,\n  415,\n  35,\n  4389,\n  4389,\n  4389,\n  55,\n  99,\n  4845,\n  4845,\n  4845,\n  3980,\n  52,\n  901,\n  0,\n  408,\n  4894,\n  4894,\n  4894,\n  59,\n  756,\n  46,\n  4822,\n  4822,\n  4822,\n  35,\n  1512,\n  155,\n  58,\n  2232,\n  447,\n  1,\n  246,\n  32,\n  38,\n  514,\n  50,\n  1100,\n  0,\n  745,\n  225,\n  225,\n  225,\n  33,\n  41,\n  37,\n  47,\n  20,\n  2,\n  1097,\n  32,\n  0,\n  59,\n  31,\n  447,\n  24,\n  37,\n  58,\n  36,\n  333,\n  4429,\n  4429,\n  4429,\n  248,\n  1497,\n  477,\n  63,\n  21,\n  0,\n  34,\n  0,\n  477,\n  0,\n  30,\n  23,\n  22,\n  145,\n  4791,\n  4791,\n  4791,\n  0,\n  31,\n  3129,\n  3129,\n  3129,\n  2477,\n  2477,\n  2477,\n  2191,\n  2191,\n  2191,\n  2,\n  31,\n  79,\n  36,\n  243,\n  120,\n  54,\n  1975,\n  1975,\n  1975,\n  34,\n  948,\n  948,\n  948,\n  0,\n  1975,\n  1975,\n  1975,\n  54,\n  239,\n  44,\n  857,\n  119,\n  0,\n  222,\n  58,\n  58,\n  58,\n  483,\n  1940\n]"
  },
  {
    "path": "app/data/ufoSightings.json",
    "content": "[\n  {\n    \"year\": \"1945\",\n    \"sightings\": 6\n  },\n  {\n    \"year\": \"1946\",\n    \"sightings\": 8\n  },\n  {\n    \"year\": \"1947\",\n    \"sightings\": 34\n  },\n  {\n    \"year\": \"1948\",\n    \"sightings\": 8\n  },\n  {\n    \"year\": \"1949\",\n    \"sightings\": 15\n  },\n  {\n    \"year\": \"1950\",\n    \"sightings\": 25\n  },\n  {\n    \"year\": \"1951\",\n    \"sightings\": 20\n  },\n  {\n    \"year\": \"1952\",\n    \"sightings\": 48\n  },\n  {\n    \"year\": \"1953\",\n    \"sightings\": 34\n  },\n  {\n    \"year\": \"1954\",\n    \"sightings\": 50\n  },\n  {\n    \"year\": \"1955\",\n    \"sightings\": 31\n  },\n  {\n    \"year\": \"1956\",\n    \"sightings\": 38\n  },\n  {\n    \"year\": \"1957\",\n    \"sightings\": 67\n  },\n  {\n    \"year\": \"1958\",\n    \"sightings\": 40\n  },\n  {\n    \"year\": \"1959\",\n    \"sightings\": 47\n  },\n  {\n    \"year\": \"1960\",\n    \"sightings\": 64\n  },\n  {\n    \"year\": \"1961\",\n    \"sightings\": 39\n  },\n  {\n    \"year\": \"1962\",\n    \"sightings\": 55\n  },\n  {\n    \"year\": \"1963\",\n    \"sightings\": 75\n  },\n  {\n    \"year\": \"1964\",\n    \"sightings\": 77\n  },\n  {\n    \"year\": \"1965\",\n    \"sightings\": 167\n  },\n  {\n    \"year\": \"1966\",\n    \"sightings\": 169\n  },\n  {\n    \"year\": \"1967\",\n    \"sightings\": 178\n  },\n  {\n    \"year\": \"1968\",\n    \"sightings\": 183\n  },\n  {\n    \"year\": \"1969\",\n    \"sightings\": 138\n  },\n  {\n    \"year\": \"1970\",\n    \"sightings\": 126\n  },\n  {\n    \"year\": \"1971\",\n    \"sightings\": 110\n  },\n  {\n    \"year\": \"1972\",\n    \"sightings\": 146\n  },\n  {\n    \"year\": \"1973\",\n    \"sightings\": 209\n  },\n  {\n    \"year\": \"1974\",\n    \"sightings\": 241\n  },\n  {\n    \"year\": \"1975\",\n    \"sightings\": 279\n  },\n  {\n    \"year\": \"1976\",\n    \"sightings\": 246\n  },\n  {\n    \"year\": \"1977\",\n    \"sightings\": 239\n  },\n  {\n    \"year\": \"1978\",\n    \"sightings\": 301\n  },\n  {\n    \"year\": \"1979\",\n    \"sightings\": 221\n  },\n  {\n    \"year\": \"1980\",\n    \"sightings\": 211\n  },\n  {\n    \"year\": \"1981\",\n    \"sightings\": 146\n  },\n  {\n    \"year\": \"1982\",\n    \"sightings\": 182\n  },\n  {\n    \"year\": \"1983\",\n    \"sightings\": 132\n  },\n  {\n    \"year\": \"1984\",\n    \"sightings\": 172\n  },\n  {\n    \"year\": \"1985\",\n    \"sightings\": 192\n  },\n  {\n    \"year\": \"1986\",\n    \"sightings\": 173\n  },\n  {\n    \"year\": \"1987\",\n    \"sightings\": 193\n  },\n  {\n    \"year\": \"1988\",\n    \"sightings\": 203\n  },\n  {\n    \"year\": \"1989\",\n    \"sightings\": 220\n  },\n  {\n    \"year\": \"1990\",\n    \"sightings\": 217\n  },\n  {\n    \"year\": \"1991\",\n    \"sightings\": 210\n  },\n  {\n    \"year\": \"1992\",\n    \"sightings\": 228\n  },\n  {\n    \"year\": \"1993\",\n    \"sightings\": 285\n  },\n  {\n    \"year\": \"1994\",\n    \"sightings\": 381\n  },\n  {\n    \"year\": \"1995\",\n    \"sightings\": 1336\n  },\n  {\n    \"year\": \"1996\",\n    \"sightings\": 862\n  },\n  {\n    \"year\": \"1997\",\n    \"sightings\": 1248\n  },\n  {\n    \"year\": \"1998\",\n    \"sightings\": 1812\n  },\n  {\n    \"year\": \"1999\",\n    \"sightings\": 2906\n  },\n  {\n    \"year\": \"2000\",\n    \"sightings\": 2780\n  },\n  {\n    \"year\": \"2001\",\n    \"sightings\": 3105\n  },\n  {\n    \"year\": \"2002\",\n    \"sightings\": 3176\n  },\n  {\n    \"year\": \"2003\",\n    \"sightings\": 3896\n  },\n  {\n    \"year\": \"2004\",\n    \"sightings\": 4208\n  },\n  {\n    \"year\": \"2005\",\n    \"sightings\": 3996\n  },\n  {\n    \"year\": \"2006\",\n    \"sightings\": 3590\n  },\n  {\n    \"year\": \"2007\",\n    \"sightings\": 4195\n  },\n  {\n    \"year\": \"2008\",\n    \"sightings\": 4705\n  },\n  {\n    \"year\": \"2009\",\n    \"sightings\": 4297\n  },\n  {\n    \"year\": \"2010\",\n    \"sightings\": 2531\n  }\n]"
  },
  {
    "path": "app/helpers/format.ts",
    "content": "const percent = new Intl.NumberFormat(undefined, {\n  style: 'percent',\n  minimumFractionDigits: 2,\n  maximumFractionDigits: 2\n})\n\nconst compact = new Intl.NumberFormat(undefined, {\n  notation: 'compact'\n})\n\nconst decimal = new Intl.NumberFormat(undefined, {\n  minimumFractionDigits: 2,\n  maximumFractionDigits: 2\n})\n\nexport const formatDecimal = (number: number) => decimal.format(number)\n\nexport const formatDate = (date: Date) => date.toISOString().substring(0, 10)\n\nexport const formatPercent = (number: number) => percent.format(number)\n\nexport const formatCompact = (number: number) => compact.format(number)\n"
  },
  {
    "path": "app/next-env.d.ts",
    "content": "/// <reference types=\"next\" />\n/// <reference types=\"next/image-types/global\" />\n\n// NOTE: This file should not be edited\n// see https://nextjs.org/docs/basic-features/typescript for more information.\n"
  },
  {
    "path": "app/next.config.js",
    "content": "/* eslint-disable @typescript-eslint/no-var-requires */\n/** @type {import('next').NextConfig} */\n\nconst withMDX = require('@next/mdx')({\n  extension: /\\.mdx?$/,\n  options: {\n    remarkPlugins: [],\n    rehypePlugins: [require('@mapbox/rehype-prism')]\n    // If you use `MDXProvider`, uncomment the following line.\n    // providerImportSource: \"@mdx-js/react\",\n  }\n})\nmodule.exports = withMDX({\n  // Append the default value with md extensions\n  pageExtensions: ['ts', 'tsx', 'js', 'jsx', 'md', 'mdx'],\n  reactStrictMode: true\n})\n"
  },
  {
    "path": "app/package.json",
    "content": "{\n  \"name\": \"metrics-graphics-app\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"build\": \"next build && next export\",\n    \"start\": \"next start\",\n    \"lint\": \"next lint\"\n  },\n  \"dependencies\": {\n    \"@mapbox/rehype-prism\": \"^0.8.0\",\n    \"@mdx-js/loader\": \"^2.1.1\",\n    \"@next/mdx\": \"^12.1.6\",\n    \"classnames\": \"^2.3.1\",\n    \"metrics-graphics\": \"3.0.1\",\n    \"next\": \"^12.1.6\",\n    \"react\": \"^17.0.2\",\n    \"react-dom\": \"^17.0.2\"\n  },\n  \"devDependencies\": {\n    \"@tailwindcss/typography\": \"^0.5.2\",\n    \"@types/node\": \"^17.0.35\",\n    \"@types/react\": \"^18.0.9\",\n    \"@types/react-dom\": \"^18.0.4\",\n    \"autoprefixer\": \"^10.4.7\",\n    \"postcss\": \"^8.4.14\",\n    \"tailwindcss\": \"^3.0.24\",\n    \"typescript\": \"^4.6.4\"\n  }\n}\n"
  },
  {
    "path": "app/pages/_app.tsx",
    "content": "import '../styles/globals.css'\nimport 'metrics-graphics/dist/mg.css'\nimport type { AppProps } from 'next/app'\nimport Link from 'next/link'\nimport NavLink from '../components/NavLink'\nimport Logo from '../components/Logo'\n\nfunction MyApp({ Component, pageProps }: AppProps) {\n  return (\n    <div>\n      <header>\n        <div className=\"container mx-auto py-4 flex items-center gap-6\">\n          <Link href=\"/\">\n            <div className=\"flex items-center gap-2 cursor-pointer\">\n              <Logo />\n              <h1 className=\"text-lg font-bold\">MetricsGraphics</h1>\n            </div>\n          </Link>\n          <div className=\"flex items-center gap-4\">\n            <NavLink href=\"/line\">Lines</NavLink>\n            <NavLink href=\"/scatter\">Scatterplots</NavLink>\n            <NavLink href=\"/histogram\">Histograms</NavLink>\n            <NavLink href=\"/mg-api\">API</NavLink>\n          </div>\n        </div>\n      </header>\n      <div className=\"container mx-auto py-12\">\n        <div className=\"prose max-w-none\">\n          <Component {...pageProps} />\n        </div>\n      </div>\n    </div>\n  )\n}\n\nexport default MyApp\n"
  },
  {
    "path": "app/pages/_document.tsx",
    "content": "import Document, { Html, Head, Main, NextScript } from 'next/document'\n\nclass MyDocument extends Document {\n  render() {\n    return (\n      <Html>\n        <Head>\n          <link href=\"https://fonts.googleapis.com/css2?family=Inter&display=optional\" rel=\"stylesheet\" />\n        </Head>\n        <body>\n          <Main />\n          <NextScript />\n        </body>\n      </Html>\n    )\n  }\n}\n\nexport default MyDocument\n"
  },
  {
    "path": "app/pages/histogram.mdx",
    "content": "import Layout from '../components/Layout'\nimport ParameterTable from '../components/ParameterTable'\nimport Simple from '../components/charts/histogram/Simple'\n\n<Layout title=\"MG - Histograms\">\n\n# Histograms\n\n## API\n\nExtends the [base chart options](./mg-api). All options below are optional.\n\n<ParameterTable props={[{\n  name: 'binCount',\n  type: 'number',\n  description: 'Specifies the amount of bins. If not specified, d3 will try to define its own thresholds.'\n}]} />\n\n## Examples\n\n### Difference in UFO Sighting and Reporting Dates (in months)\n\nSemi-real data about the reported differences between the supposed sighting of a UFO and the date it was reported.\n\n<Simple>\n\n```js\nnew HistogramChart({\n  data: ufoData.map((date) => date / 30).sort(),\n  width: 600,\n  height: 200,\n  binCount: 150,\n  target: '#my-div',\n  brush: 'x',\n  yAxis: {\n    extendedTicks: true\n  },\n  tooltipFunction: (bar) => `${bar.time} months, volume ${bar.count}`\n})\n```\n\n</Simple>\n\n</Layout>\n"
  },
  {
    "path": "app/pages/index.tsx",
    "content": "import type { NextPage } from 'next'\nimport Head from 'next/head'\nimport { useEffect, useRef } from 'react'\nimport { LineChart } from 'metrics-graphics'\nimport sightings from '../data/ufoSightings.json'\n\nconst Home: NextPage = () => {\n  const chartRef = useRef(null)\n  useEffect(() => {\n    if (!chartRef.current) return\n    const lineChart = new LineChart({\n      data: [sightings],\n      markers: [{ year: 1964, label: '\"The Creeping Terror\" released' }],\n      width: 650,\n      height: 180,\n      target: chartRef.current as any,\n      xAccessor: 'year',\n      yAccessor: 'sightings',\n      area: true,\n      yScale: {\n        minValue: 0\n      },\n      xAxis: {\n        extendedTicks: true,\n        label: 'Year',\n        tickFormat: '.4r'\n      },\n      yAxis: {\n        label: 'Count'\n      }\n    })\n  }, [chartRef])\n  return (\n    <div>\n      <Head>\n        <title>MetricsGraphics</title>\n        <link rel=\"icon\" href=\"/favicon.svg\" />\n      </Head>\n\n      <p className=\"text-center mb-8 max-w-2xl mx-auto\">\n        MetricsGraphics is a library built on top of D3 that is optimized for visualizing and laying out time-series\n        data. It provides a simple way to produce common types of graphics in a principled, consistent and responsive\n        way.\n      </p>\n      <div className=\"flex justify-center\" ref={chartRef} />\n    </div>\n  )\n}\n\nexport default Home\n"
  },
  {
    "path": "app/pages/line.mdx",
    "content": "import ParameterTable from '../components/ParameterTable'\nimport Layout from '../components/Layout'\nimport Simple from '../components/charts/line/Simple'\nimport Confidence from '../components/charts/line/Confidence'\nimport Multi from '../components/charts/line/Multi'\nimport Aggregated from '../components/charts/line/Aggregated'\nimport Broken from '../components/charts/line/Broken'\nimport Active from '../components/charts/line/Active'\nimport Baseline from '../components/charts/line/Baseline'\n\n<Layout title=\"MG - Line Charts\">\n\n# Line Charts\n\n## API\n\nExtends the [base chart options](./mg-api). All options below are optional.\n\n<ParameterTable props={[{\n  name: 'area',\n  type: 'Array<Data> | boolean',\n  description: 'Specifies for which sub-array of data an area should be shown. If the chart is only one line, you can set it to true.'\n}, {\n  name: 'confidenceBand',\n  type: '[Accessor, Accessor]',\n  description: 'Two-element array specifying how to access the lower (first) and upper (second) value for the confidence band. The two elements work like accessors (either a string or a function).'\n}, {\n  name: 'voronoi',\n  type: 'Partial<IDelaunay>',\n  description: 'Custom parameters passed to the voronoi generator.'\n}, {\n  name: 'defined',\n  type: '(point: Data) => boolean',\n  description: 'Function specifying whether or not to show a given datapoint. This is mainly used to create partially defined graphs.'\n}, {\n  name: 'activeAccessor',\n  type: 'Accessor',\n  description: 'Accessor that defines whether or not a given data point should be shown as active'\n}, {\n  name: 'activePoint',\n  type: 'Partial<IPoint>',\n  description: 'Custom parameters passed to the active point generator.'\n}]} />\n\n## Examples\n\n### Simple Line Chart\n\nThis is a simple line chart. You can remove the area portion by adding `area: false` to the arguments list.\n\n<Simple>\n\n```js\nnew LineChart({\n  data: [fakeUsers.map(({ date, value }) => ({ date: new Date(date), value }))],\n  width: 600,\n  height: 200,\n  yScale: {\n    minValue: 0\n  },\n  target: '#my-div',\n  brush: 'xy',\n  area: true,\n  xAccessor: 'date',\n  yAccessor: 'value',\n  tooltipFunction: (point) => `${formatDate(point.date)}: ${formatCompact(point.value)}`\n})\n```\n\n</Simple>\n\n### Confidence Band\n\nThis is an example of a graph with a confidence band and extended x-axis ticks enabled.\n\n<Confidence>\n\n```js\nnew LineChart({\n  data: [\n    confidence.map((entry) => ({\n      ...entry,\n      date: new Date(entry.date)\n    }))\n  ],\n  xAxis: {\n    extendedTicks: true\n  },\n  yAxis: {\n    tickFormat: 'percentage'\n  },\n  width: 600,\n  height: 200,\n  target: '#my-div',\n  confidenceBand: ['l', 'u'],\n  tooltipFunction: (point) => `${formatDate(point.date)}: ${formatPercent(point.value)}`\n})\n```\n</Confidence>\n\n### Multiple Lines\n\nThis line chart contains multiple lines.\n\n<Multi>\n```js\nnew LineChart({\n  data: fakeUsers.map((fakeArray) =>\n    fakeArray.map((fakeEntry) => ({\n      ...fakeEntry,\n      date: new Date(fakeEntry.date)\n    }))\n  ),\n  width: 600,\n  height: 200,\n  target: '#my-div',\n  xAccessor: 'date',\n  yAccessor: 'value',\n  legend: ['Line 1', 'Line 2', 'Line 3'],\n  tooltipFunction: (point) => `${formatDate(point.date)}: ${formatCompact(point.value)}`\n})\n```\n</Multi>\n\n### Aggregate Rollover\n\nOne rollover for all lines.\n\n<Aggregated>\n\n```js\nnew LineChart({\n  data: fakeUsers.map((fakeArray) =>\n    fakeArray.map((fakeEntry) => ({\n      ...fakeEntry,\n      date: new Date(fakeEntry.date)\n    }))\n  ),\n  width: 600,\n  height: 200,\n  target: '#my-div',\n  xAccessor: 'date',\n  yAccessor: 'value',\n  legend: ['Line 1', 'Line 2', 'Line 3'],\n  voronoi: {\n    aggregate: true\n  },\n  tooltipFunction: (point) => `${formatDate(point.date)}: ${formatCompact(point.value)}`\n})\n```\n</Aggregated>\n\n### Broken lines (missing data points)\n\nYou can hide individual data points on a particular attribute by setting the defined accessor (which has to return true for visible points). Data points whose y-accessor values are null are also hidden.\n\n<Broken>\n\n```js\nnew LineChart({\n  data: [missing.map((e) => ({ ...e, date: new Date(e.date) }))],\n  width: 600,\n  height: 200,\n  target: '#my-div',\n  defined: (d) => !d.dead,\n  area: true,\n  tooltipFunction: (point) => `${formatDate(point.date)}: ${point.value}`\n})\n```\n\n</Broken>\n\n### Active Points\n\nThis line chart displays pre-defined active points.\n\n<Active>\n\n```js\nnew LineChart({\n  data: [\n    fakeUsers.map((entry, i) => ({\n      ...entry,\n      date: new Date(entry.date),\n      active: i % 5 === 0\n    }))\n  ],\n  width: 600,\n  height: 200,\n  target: '#my-div',\n  activeAccessor: 'active',\n  activePoint: {\n    radius: 2\n  },\n  tooltipFunction: (point) => `${formatDate(point.date)}: ${formatCompact(point.value)}`\n})\n```\n</Active>\n\n### Baseline\n\nBaselines are horizontal lines that can added at arbitrary points.\n\n<Baseline>\n\n```js\nnew LineChart({\n  data: [\n    fakeUsers.map((entry) => ({\n      ...entry,\n      date: new Date(entry.date)\n    }))\n  ],\n  baselines: [{ value: 160000000, label: 'a baseline' }],\n  width: 600,\n  height: 200,\n  target: '#my-div',\n  tooltipFunction: (point) => `${formatDate(point.date)}: ${formatCompact(point.value)}`\n})\n```\n\n</Baseline>\n\n</Layout>"
  },
  {
    "path": "app/pages/mg-api.mdx",
    "content": "import ParameterTable from '../components/ParameterTable'\nimport Layout from '../components/Layout'\n\n<Layout title=\"MG - API\">\n\n# API\n\nAll MetricsGraphics charts are classes that can be instantiated with a set of parameters (e.g. `new LineChart({ ... })`). The chart is then mounted to the given `target` (see below), which is for example the `id` of an empty `div` in your DOM or a React `ref`.\n\n## Data formats\n\nMetricsGraphics assumes that your data is either an array of objects or an array of arrays of objects. For example, your data could look like this:\n\n```js\n[{\n  date: '2020-02-01',\n  value: 10\n}, {\n  date: '2020-02-02',\n  value: 12\n}]\n```\n\n## Common Parameters\n\nAll charts inherit from an abstract chart, which has the following parameters (optional parameters marked with `?`):\n\n<ParameterTable props={[{\n  name: 'data',\n  type: 'Array<Data>',\n  description: 'Data that is to be visualized.'\n}, {\n  name: 'target',\n  type: 'string',\n  description: 'DOM node to which the graph will be mounted (compatible D3 selection or D3 selection specifier).'\n}, {\n  name: 'width',\n  type: 'number',\n  description: 'Total width of the graph.'\n}, {\n  name: 'height',\n  type: 'number',\n  description: 'Total height of the graph.'\n}, {\n  name: 'markers?',\n  type: 'Array<Data>',\n  description: 'Markers that should be added to the chart. Each marker object should be accessible through the xAccessor and contain a label field.'\n}, {\n  name: 'baselines?',\n  type: 'Array<Data>',\n  description: 'Baselines that should be added to the chart. Each baseline object should be accessible through the yAccessor and contain a label field.'\n}, {\n  name: 'xAccessor?',\n  type: 'string | Accessor',\n  default: 'date',\n  description: 'Either the name of the field that contains the x value or a function that receives a data object and returns its x value.'\n}, {\n  name: 'yAccessor?',\n  type: 'string | Accessor',\n  default: 'value',\n  description: 'Either the name of the field that contains the y value or a function that receives a data object and returns its y value.'\n}, {\n  name: 'margin?',\n  type: 'Margin',\n  default: 'top: 10, left: 60, right: 20, bottom: 40',\n  description: 'Margin around the chart for labels.'\n}, {\n  name: 'buffer?',\n  type: 'number',\n  default: '10',\n  description: 'Amount of buffer space between the axes and the actual graph.'\n}, {\n  name: 'colors?',\n  type: 'Array<string>',\n  default: 'd3.schemeCategory10',\n  description: 'Custom color scheme for the graph.'\n}, {\n  name: 'xScale?',\n  type: 'Partial<Scale>',\n  description: 'Overwrite parameters of the auto-generated x scale.'\n}, {\n  name: 'yScale?',\n  type: 'Partial<Scale>',\n  description: 'Overwrite parameters of the auto-generated y scale.'\n}, {\n  name: 'xAxis?',\n  type: 'Partial<Axis>',\n  description: 'Overwrite parameters of the auto-generated x axis.'\n}, {\n  name: 'yAxis?',\n  type: 'Partial<Axis>',\n  description: 'Overwrite parameters of the auto-generated y axis.'\n}, {\n  name: 'showTooltip?',\n  type: 'boolean',\n  default: 'true',\n  description: 'Whether or not to show a tooltip.'\n}, {\n  name: 'tooltipFunction',\n  type: 'Accessor<Data, string>',\n  description: 'Generate a custom tooltip string.'\n}, {\n  name: 'legend?',\n  type: 'Array<string>',\n  description: 'Used if data is an array of arrays. Names of the sub-arrays of data, used as legend labels.'\n}, {\n  name: 'brush?',\n  type: '\"xy\" | \"x\" | \"y\"',\n  description: 'Adds either a one- or two-dimensional brush to the chart.'\n}]} />\n\n## Common Types\n\n```ts\ntype Accessor<X = unknown, Y = unknown> = (dataObject: X) => Y\n\ntype Margin = {\n  left: number\n  right: number\n  bottom: number\n  top: number\n}\n\ntype Scale = {\n  type: 'linear' // this will be extended in the future\n  range?: [number, number]\n  domain?: [number, number]\n}\n\ntype Axis = {\n  scale: Scale\n  buffer: number\n  show?: boolean\n  orientation?: 'top' | 'bottom' | 'left' | 'right'\n  label?: string\n  labelOffset?: number\n  top?: number\n  left?: number\n  \n  // a function to format a given tick, or one of the standard types (date, number, percentage), or string for d3-format\n  tickFormat?: TextFunction | AxisFormat | string\n\n  // defaults to 3 for vertical and 6 for horizontal axes\n  tickCount?: number\n\n  compact?: boolean\n\n  // tick label prefix\n  prefix?: string\n\n  // tick label suffix\n  suffix?: string\n\n  // overwrite d3's default tick lengths\n  tickLength?: number\n\n  // draw extended tick lines\n  extendedTicks?: boolean\n}\n```\n\n</Layout>"
  },
  {
    "path": "app/pages/scatter.mdx",
    "content": "import Layout from '../components/Layout'\nimport ParameterTable from '../components/ParameterTable'\nimport Simple from '../components/charts/scatter/Simple'\nimport Categories from '../components/charts/scatter/Categories'\nimport Complex from '../components/charts/scatter/Complex'\n\n<Layout title=\"MG - Scatterplots\">\n\n# Scatterplots\n\n## API\n\nExtends the [base chart options](./mg-api). All options below are optional.\n\n<ParameterTable props={[{\n  name: 'sizeAccessor',\n  type: 'Accessor | string',\n  description: 'Specifies the size of a data point. Can be either a string (name of size field per data object) or a function (returning a number for a given data object).',\n  default: '() => 3'\n}, {\n  name: 'xRug',\n  type: 'boolean',\n  description: 'Whether or not to generate a rug for the x axis.'\n}, {\n  name: 'yRug',\n  type: 'boolean',\n  description: 'Whether or not to generate a rug for the y axis.'\n}]} />\n\n## Examples\n\n### Simple Scatterplot\n\nThis is an example scatterplot, in which we have enabled rug plots on the y-axis by setting the rug option to `true`.\n\n<Simple>\n\n```js\nnew ScatterChart({\n  data: [points1],\n  width: 500,\n  height: 200,\n  target: '#my-div',\n  xAccessor: 'x',\n  yAccessor: 'y',\n  brush: 'xy',\n  xRug: true,\n  tooltipFunction: (point) => `${formatDecimal(point.x)} - ${formatDecimal(point.y)}`\n})\n```\n\n</Simple>\n\n### Multi-Category Scatterplot\n\nThis scatterplot contains data of multiple categories.\n\n<Categories>\n\n```js\nnew ScatterChart({\n  data: points2.map((x: any) => x.values),\n  legend: points2.map((x: any) => x.key),\n  width: 500,\n  height: 200,\n  xAccessor: 'x',\n  yAccessor: 'y',\n  yRug: true,\n  target: '#my-div',\n  tooltipFunction: (point) => `${formatDecimal(point.x)} - ${formatDecimal(point.y)}`\n})\n```\n</Categories>\n\n### Scatterplot with Size and Color\n\nScatterplots have xAccessor, yAccessor and sizeAccessor.\n\n<Complex>\n\n```js\nnew ScatterChart({\n  data: points2.map((x: any) => x.values),\n  legend: points2.map((x: any) => x.key),\n  width: 500,\n  height: 200,\n  target: '#my-div',\n  xAccessor: 'x',\n  yAccessor: 'y',\n  sizeAccessor: (x: any) => Math.abs(x.w) * 3,\n  tooltipFunction: (point) => `${formatDecimal(point.x)} - ${formatDecimal(point.y)}: ${formatDecimal(point.w)}`\n})\n```\n  \n</Complex>\n\n</Layout>\n"
  },
  {
    "path": "app/postcss.config.js",
    "content": "module.exports = {\n  plugins: {\n    tailwindcss: {},\n    autoprefixer: {}\n  }\n}\n"
  },
  {
    "path": "app/styles/globals.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n.token.prolog,\n.token.doctype,\n.token.cdata {\n  @apply text-gray-700;\n}\n\n.token.comment {\n  @apply text-gray-500;\n}\n\n.token.punctuation {\n  @apply text-gray-700;\n}\n\n.token.property,\n.token.tag,\n.token.boolean,\n.token.number,\n.token.constant,\n.token.symbol,\n.token.deleted {\n  @apply text-green-500;\n}\n\n.token.selector,\n.token.attr-name,\n.token.string,\n.token.char,\n.token.builtin,\n.token.inserted {\n  @apply text-purple-500;\n}\n\n.token.operator,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string {\n  @apply text-yellow-500;\n}\n\n.token.atrule,\n.token.attr-value,\n.token.keyword {\n  @apply text-blue-500;\n}\n\n.token.function,\n.token.class-name {\n  @apply text-pink-500;\n}\n\n.token.regex,\n.token.important,\n.token.variable {\n  @apply text-yellow-500;\n}\n\ncode[class*='language-'],\npre[class*='language-'] {\n  @apply text-gray-800;\n}\n\npre::-webkit-scrollbar {\n  display: none;\n}\n\npre {\n  @apply bg-gray-50;\n  -ms-overflow-style: none; /* IE and Edge */\n  scrollbar-width: none; /* Firefox */\n}"
  },
  {
    "path": "app/tailwind.config.js",
    "content": "// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst defaultTheme = require('tailwindcss/defaultTheme')\n\nmodule.exports = {\n  content: ['./pages/**/*.{js,ts,jsx,tsx}', './components/**/*.{js,ts,jsx,tsx}'],\n  theme: {\n    extend: {\n      typography: ({ theme }) => ({\n        DEFAULT: {\n          css: {\n            pre: {\n              backgroundColor: theme('colors.indigo[50]'),\n              fontSize: '0.7rem'\n            }\n          }\n        }\n      }),\n      fontFamily: {\n        sans: ['Inter var', ...defaultTheme.fontFamily.sans]\n      }\n    }\n  },\n  plugins: [require('@tailwindcss/typography')]\n}\n"
  },
  {
    "path": "app/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"es5\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"node\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"preserve\",\n    \"incremental\": true\n  },\n  \"include\": [\"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\"],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "lib/.gitignore",
    "content": "# Dependencies\nbower_components\nnode_modules\n\n# Logs\nnpm-debug.log\n\n# IDE\n.idea\n\n# FS\n.DS_Store\n\n# Others\nother/divider.psd\nother/htaccess.txt\nbare.html\nyarn.lock\nyarn-error.log\n\n# Dist files\ndist\nbuild\n"
  },
  {
    "path": "lib/esbuild.mjs",
    "content": "import esbuild from 'esbuild'\n\nconst baseConfig = {\n  entryPoints: ['src/index.ts'],\n  bundle: true,\n  sourcemap: true,\n  target: 'esnext'\n}\n\n// esm\nesbuild.build({\n  ...baseConfig,\n  outdir: 'dist/esm',\n  splitting: true,\n  format: 'esm'\n})\n\n// cjs\nesbuild.build({\n  ...baseConfig,\n  outdir: 'dist/cjs',\n  format: 'cjs'\n})\n"
  },
  {
    "path": "lib/package.json",
    "content": "{\n  \"name\": \"metrics-graphics\",\n  \"version\": \"3.0.1\",\n  \"description\": \"A library optimized for concise, principled data graphics and layouts\",\n  \"main\": \"dist/cjs/index.js\",\n  \"module\": \"dist/esm/index.js\",\n  \"types\": \"dist/index.d.ts\",\n  \"scripts\": {\n    \"ts-types\": \"tsc --emitDeclarationOnly --outDir dist\",\n    \"build\": \"rimraf dist && concurrently \\\"node ./esbuild.mjs\\\" \\\"npm run ts-types\\\" && cp src/mg.css dist/mg.css\",\n    \"lint\": \"eslint src\",\n    \"test\": \"echo \\\"no tests set up, will do later\\\"\",\n    \"analyze\": \"source-map-explorer dist/esm/index.js\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git://github.com/metricsgraphics/metrics-graphics.git\"\n  },\n  \"files\": [\n    \"dist\"\n  ],\n  \"keywords\": [\n    \"metrics-graphics\",\n    \"metricsgraphicsjs\",\n    \"metricsgraphics\",\n    \"metricsgraphics.js\",\n    \"d3 charts\"\n  ],\n  \"author\": \"Mozilla\",\n  \"contributors\": [\n    \"Ali Almossawi\",\n    \"Hamilton Ulmer\",\n    \"William Lachance\",\n    \"Jens Ochsenmeier\"\n  ],\n  \"license\": \"MPL-2.0\",\n  \"bugs\": {\n    \"url\": \"https://github.com/metricsgraphics/metrics-graphics/issues\"\n  },\n  \"engines\": {\n    \"node\": \">=0.8.0\"\n  },\n  \"homepage\": \"http://metricsgraphicsjs.org\",\n  \"dependencies\": {\n    \"d3\": \"^7.4.4\"\n  },\n  \"devDependencies\": {\n    \"@types/d3\": \"^7.1.0\",\n    \"concurrently\": \"^7.2.0\",\n    \"deepmerge\": \"^4.2.2\",\n    \"esbuild\": \"^0.14.39\",\n    \"rimraf\": \"^3.0.2\",\n    \"source-map-explorer\": \"^2.5.2\"\n  }\n}\n"
  },
  {
    "path": "lib/src/charts/abstractChart.ts",
    "content": "import { select, extent, max, brush as d3brush, brushX, brushY } from 'd3'\nimport { randomId, makeAccessorFunction } from '../misc/utility'\nimport Scale from '../components/scale'\nimport Axis, { IAxis, AxisOrientation } from '../components/axis'\nimport Tooltip from '../components/tooltip'\nimport Legend from '../components/legend'\nimport constants from '../misc/constants'\nimport Point, { IPoint } from '../components/point'\nimport {\n  SvgD3Selection,\n  AccessorFunction,\n  Margin,\n  GenericD3Selection,\n  BrushType,\n  DomainObject,\n  Domain,\n  LegendSymbol\n} from '../misc/typings'\n\ntype TooltipFunction = (datapoint: any) => string\n\nexport interface IAbstractChart {\n  /** data that is to be visualized */\n  data: Array<any>\n\n  /** DOM node to which the graph will be mounted (D3 selection or D3 selection specifier) */\n  target: string\n\n  /** total width of the graph */\n  width: number\n\n  /** total height of the graph */\n  height: number\n\n  /** markers that should be added to the chart. Each marker object should be accessible through the xAccessor and contain a label field */\n  markers?: Array<any>\n\n  /** baselines that should be added to the chart. Each baseline object should be accessible through the yAccessor and contain a label field */\n  baselines?: Array<any>\n\n  /** either name of the field that contains the x value or function that receives a data object and returns its x value */\n  xAccessor?: string | AccessorFunction\n\n  /** either name of the field that contains the y value or function that receives a data object and returns its y value */\n  yAccessor?: string | AccessorFunction\n\n  /** margins of the visualization for labels */\n  margin?: Margin\n\n  /** amount of buffer between the axes and the graph */\n  buffer?: number\n\n  /** custom color scheme for the graph */\n  colors?: Array<string>\n\n  /** overwrite parameters of the auto-generated x scale */\n  xScale?: Partial<Scale>\n\n  /** overwrite parameters of the auto-generated y scale */\n  yScale?: Partial<Scale>\n\n  /** overwrite parameters of the auto-generated x axis */\n  xAxis?: Partial<Axis>\n\n  /** overwrite parameters of the auto-generated y axis */\n  yAxis?: Partial<Axis>\n\n  /** whether or not to show a tooltip */\n  showTooltip?: boolean\n\n  /** generate a custom tooltip string */\n  tooltipFunction?: (datapoint: any) => string\n\n  /** names of the sub-arrays of data, used as legend labels */\n  legend?: Array<string>\n\n  /** add an optional brush */\n  brush?: BrushType\n\n  /** custom domain computations */\n  computeDomains?: () => DomainObject\n}\n\n/**\n * This abstract chart class implements all functionality that is shared between all available chart types.\n */\nexport default abstract class AbstractChart {\n  id: string\n\n  // base chart fields\n  data: Array<any>\n  markers: Array<any>\n  baselines: Array<any>\n  target: SvgD3Selection\n  svg?: GenericD3Selection\n  content?: GenericD3Selection\n  container?: GenericD3Selection\n\n  // accessors\n  xAccessor: AccessorFunction\n  yAccessor: AccessorFunction\n  colors: Array<string>\n\n  // scales\n  xDomain: Domain\n  yDomain: Domain\n  xScale: Scale\n  yScale: Scale\n\n  // axes\n  xAxis?: Axis\n  xAxisParams: any\n  yAxis?: Axis\n  yAxisParams: any\n\n  // tooltip and legend stuff\n  showTooltip: boolean\n  tooltipFunction?: TooltipFunction\n  tooltip?: Tooltip\n  legend?: Array<string>\n\n  // dimensions\n  width: number\n  height: number\n\n  // margins\n  margin: Margin\n  buffer: number\n\n  // brush\n  brush?: BrushType\n  idleDelay = 350\n  idleTimeout: unknown\n\n  constructor({\n    data,\n    target,\n    markers,\n    baselines,\n    xAccessor,\n    yAccessor,\n    margin,\n    buffer,\n    width,\n    height,\n    colors,\n    xScale,\n    yScale,\n    xAxis,\n    yAxis,\n    showTooltip,\n    tooltipFunction,\n    legend,\n    brush,\n    computeDomains\n  }: IAbstractChart) {\n    // convert string accessors to functions if necessary\n    this.xAccessor = makeAccessorFunction(xAccessor ?? 'date')\n    this.yAccessor = makeAccessorFunction(yAccessor ?? 'value')\n\n    // set parameters\n    this.data = data\n    this.target = select(target)\n    this.markers = markers ?? []\n    this.baselines = baselines ?? []\n    this.legend = legend ?? this.legend\n    this.brush = brush ?? undefined\n    this.xAxisParams = xAxis ?? this.xAxisParams\n    this.yAxisParams = yAxis ?? this.yAxisParams\n    this.showTooltip = showTooltip ?? true\n    this.tooltipFunction = tooltipFunction\n\n    this.margin = margin ?? { top: 10, left: 60, right: 20, bottom: 40 }\n    this.buffer = buffer ?? 10\n\n    // set unique id for chart\n    this.id = randomId()\n\n    // compute dimensions\n    this.width = width\n    this.height = height\n\n    // normalize color and colors arguments\n    this.colors = colors ?? constants.defaultColors\n\n    // clear target\n    this.target.selectAll('*').remove()\n\n    // attach base elements to svg\n    this.mountSvg()\n\n    // set up scales\n    this.xScale = new Scale({ range: [0, this.innerWidth], ...xScale })\n    this.yScale = new Scale({ range: [this.innerHeight, 0], ...yScale })\n\n    // compute domains and set them\n    const { x, y } = computeDomains ? computeDomains() : this.computeDomains()\n    this.xDomain = x\n    this.yDomain = y\n    this.xScale.domain = x\n    this.yScale.domain = y\n\n    this.abstractRedraw()\n  }\n\n  /**\n   * Draw the abstract chart.\n   */\n  abstractRedraw(): void {\n    // if not drawn yet, abort\n    if (!this.content) return\n\n    // clear\n    this.content.selectAll('*').remove()\n\n    // set up axes if not disabled\n    this.mountXAxis(this.xAxisParams)\n    this.mountYAxis(this.yAxisParams)\n\n    // pre-attach tooltip text container\n    this.mountTooltip(this.showTooltip, this.tooltipFunction)\n\n    // set up main container\n    this.mountContainer()\n  }\n\n  /**\n   * Draw the actual chart.\n   * This is meant to be overridden by chart implementations.\n   */\n  abstract redraw(): void\n\n  mountBrush(whichBrush?: BrushType): void {\n    // if no brush is specified, there's nothing to mount\n    if (!whichBrush) return\n\n    // brush can only be mounted after content is set\n    if (!this.content || !this.container) {\n      console.error('error: content not set yet')\n      return\n    }\n\n    const brush = whichBrush === 'x' ? brushX() : whichBrush === 'y' ? brushY() : d3brush()\n    brush.on('end', ({ selection }) => {\n      // if no content is set, do nothing\n      if (!this.content) {\n        console.error('error: content is not set yet')\n        return\n      }\n      // compute domains and re-draw\n      if (selection === null) {\n        if (!this.idleTimeout) {\n          this.idleTimeout = setTimeout(() => {\n            this.idleTimeout = null\n          }, 350)\n          return\n        }\n\n        // set original domains\n        this.xScale.domain = this.xDomain\n        this.yScale.domain = this.yDomain\n      } else {\n        if (this.brush === 'x') {\n          this.xScale.domain = [selection[0], selection[1]].map(this.xScale.scaleObject.invert)\n        } else if (this.brush === 'y') {\n          this.yScale.domain = [selection[0], selection[1]].map(this.yScale.scaleObject.invert)\n        } else {\n          this.xScale.domain = [selection[0][0], selection[1][0]].map(this.xScale.scaleObject.invert)\n          this.yScale.domain = [selection[1][1], selection[0][1]].map(this.yScale.scaleObject.invert)\n        }\n        this.content.select('.brush').call((brush as any).move, null)\n      }\n\n      // re-draw abstract elements\n      this.abstractRedraw()\n\n      // re-draw specific chart\n      this.redraw()\n    })\n    this.container.append('g').classed('brush', true).call(brush)\n  }\n\n  /**\n   * Mount a new legend if necessary\n   * @param {String} symbolType symbol type (circle, square, line)\n   */\n  mountLegend(symbolType: LegendSymbol): void {\n    if (!this.legend || !this.legend.length) return\n    const legend = new Legend({\n      legend: this.legend,\n      colorScheme: this.colors,\n      symbolType\n    })\n    legend.mountTo(this.target)\n  }\n\n  /**\n   * Mount new x axis.\n   *\n   * @param xAxis object that can be used to overwrite parameters of the auto-generated x {@link Axis}.\n   */\n  mountXAxis(xAxis: Partial<IAxis>): void {\n    // axis only mountable after content is mounted\n    if (!this.content) {\n      console.error('error: content needs to be mounted first')\n      return\n    }\n\n    if (typeof xAxis?.show !== 'undefined' && !xAxis.show) return\n    this.xAxis = new Axis({\n      scale: this.xScale,\n      orientation: AxisOrientation.BOTTOM,\n      top: this.bottom,\n      left: this.left,\n      height: this.innerHeight,\n      buffer: this.buffer,\n      ...xAxis\n    })\n    if (!xAxis?.tickFormat) this.computeXAxisType()\n\n    // attach axis\n    if (this.xAxis) this.xAxis.mountTo(this.content)\n  }\n\n  /**\n   * Mount new y axis.\n   *\n   * @param yAxis object that can be used to overwrite parameters of the auto-generated y {@link Axis}.\n   */\n  mountYAxis(yAxis: Partial<IAxis>): void {\n    // axis only mountable after content is mounted\n    if (!this.content) {\n      console.error('error: content needs to be mounted first')\n      return\n    }\n\n    if (typeof yAxis?.show !== 'undefined' && !yAxis.show) return\n    this.yAxis = new Axis({\n      scale: this.yScale,\n      orientation: AxisOrientation.LEFT,\n      top: this.top,\n      left: this.left,\n      height: this.innerWidth,\n      buffer: this.buffer,\n      ...yAxis\n    })\n    if (!yAxis?.tickFormat) this.computeYAxisType()\n    if (this.yAxis) this.yAxis.mountTo(this.content)\n  }\n\n  /**\n   * Mount a new tooltip if necessary.\n   *\n   * @param showTooltip whether or not to show a tooltip.\n   * @param tooltipFunction function that receives a data object and returns the string displayed as tooltip.\n   */\n  mountTooltip(showTooltip?: boolean, tooltipFunction?: TooltipFunction): void {\n    // only mount of content is defined\n    if (!this.content) {\n      console.error('error: content is not defined yet')\n      return\n    }\n\n    if (typeof showTooltip !== 'undefined' && !showTooltip) return\n    this.tooltip = new Tooltip({\n      top: this.buffer,\n      left: this.width - 2 * this.buffer,\n      xAccessor: this.xAccessor,\n      yAccessor: this.yAccessor,\n      textFunction: tooltipFunction,\n      colors: this.colors,\n      legend: this.legend\n    })\n    this.tooltip.mountTo(this.content)\n  }\n\n  /**\n   * Mount the main container.\n   */\n  mountContainer(): void {\n    // content needs to be mounted first\n    if (!this.content) {\n      console.error('content needs to be mounted first')\n      return\n    }\n\n    const width = max(this.xScale.range)\n    const height = max(this.yScale.range)\n\n    if (!width || !height) {\n      console.error(`error: width or height is null (width: \"${width}\", height: \"${height}\")`)\n      return\n    }\n\n    this.container = this.content\n      .append('g')\n      .attr('transform', `translate(${this.left},${this.top})`)\n      .attr('clip-path', `url(#mg-plot-window-${this.id})`)\n      .append('g')\n      .attr('transform', `translate(${this.buffer},${this.buffer})`)\n    this.container\n      .append('rect')\n      .attr('x', 0)\n      .attr('y', 0)\n      .attr('opacity', 0)\n      .attr('pointer-events', 'all')\n      .attr('width', width)\n      .attr('height', height)\n  }\n\n  /**\n   * This method is called by the abstract chart constructor.\n   * Append the local svg node to the specified target, if necessary.\n   * Return existing svg node if it's already present.\n   */\n  mountSvg(): void {\n    const svg = this.target.select('svg')\n\n    // warn user if svg is not empty\n    if (!svg.empty()) {\n      console.warn('Warning: SVG is not empty. Rendering might be unnecessary.')\n    }\n\n    // clear svg\n    svg.remove()\n\n    this.svg = this.target.append('svg').classed('mg-graph', true).attr('width', this.width).attr('height', this.height)\n\n    // prepare clip path\n    this.svg.select('.mg-clip-path').remove()\n    this.svg\n      .append('defs')\n      .attr('class', 'mg-clip-path')\n      .append('clipPath')\n      .attr('id', `mg-plot-window-${this.id}`)\n      .append('svg:rect')\n      .attr('width', this.width - this.margin.left - this.margin.right)\n      .attr('height', this.height - this.margin.top - this.margin.bottom)\n\n    // set viewbox\n    this.svg.attr('viewBox', `0 0 ${this.width} ${this.height}`)\n\n    // append content\n    this.content = this.svg.append('g').classed('mg-content', true)\n  }\n\n  /**\n   * If needed, charts can implement data normalizations, which are applied when instantiating a new chart.\n   * TODO this is currently unused\n   */\n  // abstract normalizeData(): void\n\n  /**\n   * Usually, the domains of the chart's scales depend on the chart type and the passed data, so this should usually be overwritten by chart implementations.\n   * @returns domains for x and y axis as separate properties.\n   */\n  computeDomains(): DomainObject {\n    const flatData = this.data.flat()\n    const x = extent(flatData, this.xAccessor)\n    const y = extent(flatData, this.yAccessor)\n    return { x: x as [number, number], y: y as [number, number] }\n  }\n\n  /**\n   * Set tick format of the x axis.\n   */\n  computeXAxisType(): void {\n    // abort if no x axis is used\n    if (!this.xAxis) {\n      console.error('error: no x axis set')\n      return\n    }\n\n    const flatData = this.data.flat()\n    const xValue = this.xAccessor(flatData[0])\n\n    if (xValue instanceof Date) {\n      this.xAxis.tickFormat = 'date'\n    } else if (Number(xValue) === xValue) {\n      this.xAxis.tickFormat = 'number'\n    }\n  }\n\n  /**\n   * Set tick format of the y axis.\n   */\n  computeYAxisType(): void {\n    // abort if no y axis is used\n    if (!this.yAxis) {\n      console.error('error: no y axis set')\n      return\n    }\n\n    const flatData = this.data.flat()\n    const yValue = this.yAccessor(flatData[0])\n\n    if (yValue instanceof Date) {\n      this.yAxis.tickFormat = constants.axisFormat.date\n    } else if (Number(yValue) === yValue) {\n      this.yAxis.tickFormat = constants.axisFormat.number\n    }\n  }\n\n  generatePoint(args: Partial<IPoint>): Point {\n    return new Point({\n      ...args,\n      xAccessor: this.xAccessor,\n      yAccessor: this.yAccessor,\n      xScale: this.xScale,\n      yScale: this.yScale\n    })\n  }\n\n  get top(): number {\n    return this.margin.top\n  }\n\n  get left(): number {\n    return this.margin.left\n  }\n\n  get bottom(): number {\n    return this.height - this.margin.bottom\n  }\n\n  // returns the pixel location of the respective side of the plot area.\n  get plotTop(): number {\n    return this.top + this.buffer\n  }\n\n  get plotLeft(): number {\n    return this.left + this.buffer\n  }\n\n  get innerWidth(): number {\n    return this.width - this.margin.left - this.margin.right - 2 * this.buffer\n  }\n\n  get innerHeight(): number {\n    return this.height - this.margin.top - this.margin.bottom - 2 * this.buffer\n  }\n}\n"
  },
  {
    "path": "lib/src/charts/histogram.ts",
    "content": "import { max, bin } from 'd3'\nimport Delaunay from '../components/delaunay'\nimport Rect from '../components/rect'\nimport { TooltipSymbol } from '../components/tooltip'\nimport { LegendSymbol, InteractionFunction } from '../misc/typings'\nimport AbstractChart, { IAbstractChart } from './abstractChart'\n\ninterface IHistogramChart extends IAbstractChart {\n  binCount?: number\n}\n\n/**\n * Creates a new histogram graph.\n *\n * @param {Object} args argument object. See {@link AbstractChart} for general parameters.\n * @param {Number} [args.binCount] approximate number of bins that should be used for the histogram. Defaults to what d3.bin thinks is best.\n */\nexport default class HistogramChart extends AbstractChart {\n  bins: Array<any>\n  rects?: Array<Rect>\n  delaunay?: any\n  delaunayBar?: any\n  _activeBar = -1\n\n  constructor({ binCount, ...args }: IHistogramChart) {\n    super({\n      ...args,\n      computeDomains: () => {\n        // set up histogram\n        const dataBin = bin()\n        if (binCount) dataBin.thresholds(binCount)\n        const bins = dataBin(args.data)\n\n        // update domains\n        return {\n          x: [0, bins.length],\n          y: [0, max(bins, (bin: Array<any>) => +bin.length)!]\n        }\n      }\n    })\n\n    // set up histogram\n    const dataBin = bin()\n    if (binCount) dataBin.thresholds(binCount)\n    this.bins = dataBin(this.data)\n\n    this.redraw()\n  }\n\n  redraw(): void {\n    // set up histogram rects\n    this.mountRects()\n\n    // set tooltip type\n    if (this.tooltip) {\n      this.tooltip.update({ legendObject: TooltipSymbol.SQUARE })\n      this.tooltip.hide()\n    }\n\n    // generate delaunator\n    this.mountDelaunay()\n\n    // mount legend if any\n    this.mountLegend(LegendSymbol.SQUARE)\n\n    // mount brush if necessary\n    this.mountBrush(this.brush)\n  }\n\n  /**\n   * Mount the histogram rectangles.\n   */\n  mountRects(): void {\n    this.rects = this.bins.map((bin) => {\n      const rect = new Rect({\n        data: bin,\n        xScale: this.xScale,\n        yScale: this.yScale,\n        color: this.colors[0],\n        fillOpacity: 0.5,\n        strokeWidth: 0,\n        xAccessor: (bin) => bin.x0,\n        yAccessor: (bin) => bin.length,\n        widthAccessor: (bin) => this.xScale.scaleObject(bin.x1)! - this.xScale.scaleObject(bin.x0)!,\n        heightAccessor: (bin) => -bin.length\n      })\n      rect.mountTo(this.container!)\n      return rect\n    })\n  }\n\n  /**\n   * Handle move events from the delaunay triangulation.\n   *\n   * @returns handler function.\n   */\n  onPointHandler(): InteractionFunction {\n    return ([point]) => {\n      this.activeBar = point.index\n\n      // set tooltip if necessary\n      if (!this.tooltip) return\n      this.tooltip.update({ data: [point] })\n    }\n  }\n\n  /**\n   * Handle leaving the delaunay triangulation area.\n   *\n   * @returns handler function.\n   */\n  onLeaveHandler() {\n    return () => {\n      this.activeBar = -1\n      if (this.tooltip) this.tooltip.hide()\n    }\n  }\n\n  /**\n   * Mount new delaunay triangulation.\n   */\n  mountDelaunay(): void {\n    this.delaunayBar = new Rect({\n      xScale: this.xScale,\n      yScale: this.yScale,\n      xAccessor: (bin) => bin.x0,\n      yAccessor: (bin) => bin.length,\n      widthAccessor: (bin) => bin.x1 - bin.x0,\n      heightAccessor: (bin) => -bin.length\n    })\n    this.delaunay = new Delaunay({\n      points: this.bins.map((bin) => ({\n        x: (bin.x1 + bin.x0) / 2,\n        y: 0,\n        time: bin.x0,\n        count: bin.length\n      })),\n      xAccessor: (d) => d.x,\n      yAccessor: (d) => d.y,\n      xScale: this.xScale,\n      yScale: this.yScale,\n      onPoint: this.onPointHandler(),\n      onLeave: this.onLeaveHandler()\n    })\n    this.delaunay.mountTo(this.container)\n  }\n\n  get activeBar() {\n    return this._activeBar\n  }\n\n  set activeBar(i: number) {\n    // if rexts are not set yet, abort\n    if (!this.rects) {\n      console.error('error: can not set active bar, rects are empty')\n      return\n    }\n\n    // if a bar was previously set, de-set it\n    if (this._activeBar !== -1) {\n      this.rects[this._activeBar].update({ fillOpacity: 0.5 })\n    }\n\n    // set state\n    this._activeBar = i\n\n    // set point to active\n    if (i !== -1) this.rects[i].update({ fillOpacity: 1 })\n  }\n}\n"
  },
  {
    "path": "lib/src/charts/line.ts",
    "content": "import Line from '../components/line'\nimport Area from '../components/area'\nimport constants from '../misc/constants'\nimport Delaunay, { IDelaunay } from '../components/delaunay'\nimport { makeAccessorFunction } from '../misc/utility'\nimport { AccessorFunction, LegendSymbol, InteractionFunction, EmptyInteractionFunction } from '../misc/typings'\nimport { IPoint } from '../components/point'\nimport { TooltipSymbol } from '../components/tooltip'\nimport AbstractChart, { IAbstractChart } from './abstractChart'\n\ntype ConfidenceBand = [AccessorFunction | string, AccessorFunction | string]\n\ninterface ILineChart extends IAbstractChart {\n  /** specifies for which sub-array of data an area should be shown. Boolean if data is a simple array */\n  area?: Array<any> | boolean\n\n  /** array with two elements specifying how to access the lower (first) and upper (second) value for the confidence band. The two elements work like accessors and are either a string or a function */\n  confidenceBand?: ConfidenceBand\n\n  /** custom parameters passed to the voronoi generator */\n  voronoi?: Partial<IDelaunay>\n\n  /** function specifying whether or not to show a given datapoint */\n  defined?: (point: any) => boolean\n\n  /** accessor specifying for a given data point whether or not to show it as active */\n  activeAccessor?: AccessorFunction | string\n\n  /** custom parameters passed to the active point generator. See {@see Point} for a list of parameters */\n  activePoint?: Partial<IPoint>\n}\n\nexport default class LineChart extends AbstractChart {\n  delaunay?: Delaunay\n  defined?: (point: any) => boolean\n  activeAccessor?: AccessorFunction\n  activePoint?: Partial<IPoint>\n  area?: Array<any> | boolean\n  confidenceBand?: ConfidenceBand\n  delaunayParams?: Partial<IDelaunay>\n\n  // one delaunay point per line\n  delaunayPoints: Array<any> = []\n\n  constructor({ area, confidenceBand, voronoi, defined, activeAccessor, activePoint, ...args }: ILineChart) {\n    super(args)\n\n    // if data is not a 2d array, die\n    if (!Array.isArray(args.data[0])) throw new Error('data is not a 2-dimensional array.')\n\n    if (defined) this.defined = defined\n    if (activeAccessor) this.activeAccessor = makeAccessorFunction(activeAccessor)\n    this.activePoint = activePoint ?? this.activePoint\n    this.area = area ?? this.area\n    this.confidenceBand = confidenceBand ?? this.confidenceBand\n    this.delaunayParams = voronoi ?? this.delaunayParams\n\n    this.redraw()\n  }\n\n  redraw(): void {\n    this.mountLines()\n    this.mountActivePoints(this.activePoint ?? {})\n\n    // generate areas if necessary\n    this.mountAreas(this.area || false)\n\n    // set tooltip type\n    if (this.tooltip) {\n      this.tooltip.update({ legendObject: TooltipSymbol.LINE })\n      this.tooltip.hide()\n    }\n\n    // generate confidence band if necessary\n    if (this.confidenceBand) {\n      this.mountConfidenceBand(this.confidenceBand)\n    }\n\n    // add markers and baselines\n    this.mountMarkers()\n    this.mountBaselines()\n\n    // set up delaunay triangulation\n    this.mountDelaunay(this.delaunayParams ?? {})\n\n    // mount legend if any\n    this.mountLegend(LegendSymbol.LINE)\n\n    // mount brush if necessary\n    this.mountBrush(this.brush)\n  }\n\n  /**\n   * Mount lines for each array of data points.\n   */\n  mountLines(): void {\n    // abort if container is not defined yet\n    if (!this.container) {\n      console.error('error: container is not defined yet')\n      return\n    }\n\n    // compute lines and delaunay points\n    this.data.forEach((lineData, index) => {\n      const line = new Line({\n        data: lineData,\n        xAccessor: this.xAccessor,\n        yAccessor: this.yAccessor,\n        xScale: this.xScale,\n        yScale: this.yScale,\n        color: this.colors[index],\n        defined: this.defined\n      })\n      this.delaunayPoints[index] = this.generatePoint({ radius: 3 })\n      line.mountTo(this.container!)\n    })\n  }\n\n  /**\n   * If an active accessor is specified, mount active points.\n   * @param params custom parameters for point generation. See {@see Point} for a list of options.\n   */\n  mountActivePoints(params: Partial<IPoint>): void {\n    // abort if container is not defined yet\n    if (!this.container) {\n      console.error('error: container is not defined yet')\n      return\n    }\n\n    if (!this.activeAccessor) return\n    this.data.forEach((pointArray, index) => {\n      pointArray.filter(this.activeAccessor).forEach((data: any) => {\n        const point = this.generatePoint({\n          data,\n          color: this.colors[index],\n          radius: 3,\n          ...params\n        })\n        point.mountTo(this.container!)\n      })\n    })\n  }\n\n  /**\n   * Mount all specified areas.\n   *\n   * @param area specifies for which sub-array of data an area should be shown. Boolean if data is a simple array.\n   */\n  mountAreas(area: Array<any> | boolean): void {\n    if (typeof area === 'undefined') return\n\n    let areas: Array<any> = []\n    const areaGenerator = (lineData: any, index: number) =>\n      new Area({\n        data: lineData,\n        xAccessor: this.xAccessor,\n        yAccessor: this.yAccessor,\n        xScale: this.xScale,\n        yScale: this.yScale,\n        color: this.colors[index],\n        defined: this.defined\n      })\n\n    // if area is boolean and truthy, generate areas for each line\n    if (typeof area === 'boolean' && area) {\n      areas = this.data.map(areaGenerator)\n\n      // if area is array, only show areas for the truthy lines\n    } else if (Array.isArray(area)) {\n      areas = this.data.filter((lineData, index) => area[index]).map(areaGenerator)\n    }\n\n    // mount areas\n    areas.forEach((area) => area.mountTo(this.container))\n  }\n\n  /**\n   * Mount the confidence band specified by two accessors.\n   *\n   * @param lowerAccessor for the lower confidence bound. Either a string (specifying the property of the object representing the lower bound) or a function (returning the lower bound when given a data point).\n   * @param upperAccessor for the upper confidence bound. Either a string (specifying the property of the object representing the upper bound) or a function (returning the upper bound when given a data point).\n   */\n  mountConfidenceBand([lowerAccessor, upperAccessor]: ConfidenceBand): void {\n    // abort if container is not set\n    if (!this.container) {\n      console.error('error: container not defined yet')\n      return\n    }\n\n    const confidenceBandGenerator = new Area({\n      data: this.data[0], // confidence band only makes sense for one line\n      xAccessor: this.xAccessor,\n      y0Accessor: makeAccessorFunction(lowerAccessor),\n      yAccessor: makeAccessorFunction(upperAccessor),\n      xScale: this.xScale,\n      yScale: this.yScale,\n      color: '#aaa'\n    })\n    confidenceBandGenerator.mountTo(this.container)\n  }\n\n  /**\n   * Mount markers, if any.\n   */\n  mountMarkers(): void {\n    // abort if content is not set yet\n    if (!this.content) {\n      console.error('error: content container not set yet')\n      return\n    }\n\n    const markerContainer = this.content.append('g').attr('transform', `translate(${this.left},${this.top})`)\n    this.markers.forEach((marker) => {\n      const x = this.xScale.scaleObject(this.xAccessor(marker))\n      markerContainer\n        .append('line')\n        .classed('line-marker', true)\n        .attr('x1', x!)\n        .attr('x2', x!)\n        .attr('y1', this.yScale.range[0] + this.buffer)\n        .attr('y2', this.yScale.range[1] + this.buffer)\n      markerContainer.append('text').classed('text-marker', true).attr('x', x!).attr('y', 8).text(marker.label)\n    })\n  }\n\n  mountBaselines(): void {\n    // abort if content is not set yet\n    if (!this.content) {\n      console.error('error: content container not set yet')\n      return\n    }\n\n    const baselineContainer = this.content.append('g').attr('transform', `translate(${this.left},${this.top})`)\n    this.baselines.forEach((baseline) => {\n      const y = this.yScale.scaleObject(this.yAccessor(baseline))\n      baselineContainer\n        .append('line')\n        .classed('line-baseline', true)\n        .attr('x1', this.xScale.range[0] + this.buffer)\n        .attr('x2', this.xScale.range[1] + this.buffer)\n        .attr('y1', y!)\n        .attr('y2', y!)\n      baselineContainer\n        .append('text')\n        .classed('text-baseline', true)\n        .attr('x', this.xScale.range[1] + this.buffer)\n        .attr('y', y! - 2)\n        .text(baseline.label)\n    })\n  }\n\n  /**\n   * Handle incoming points from the delaunay move handler.\n   *\n   * @returns handler function.\n   */\n  onPointHandler(): InteractionFunction {\n    return (points) => {\n      // pre-hide all points\n      this.delaunayPoints.forEach((dp) => dp.dismount())\n\n      points.forEach((point) => {\n        const index = point.arrayIndex || 0\n\n        // set hover point\n        this.delaunayPoints[index].update({\n          data: point,\n          color: this.colors[index]\n        })\n        this.delaunayPoints[index].mountTo(this.container)\n      })\n\n      // set tooltip if necessary\n      if (!this.tooltip) return\n      this.tooltip.update({ data: points })\n    }\n  }\n\n  /**\n   * Handles leaving the delaunay area.\n   *\n   * @returns handler function.\n   */\n  onLeaveHandler(): EmptyInteractionFunction {\n    return () => {\n      this.delaunayPoints.forEach((dp) => dp.dismount())\n      if (this.tooltip) this.tooltip.hide()\n    }\n  }\n\n  /**\n   * Mount a new delaunay triangulation instance.\n   *\n   * @param customParameters custom parameters for {@link Delaunay}.\n   */\n  mountDelaunay(customParameters: Partial<IDelaunay>): void {\n    // abort if container is not set yet\n    if (!this.container) {\n      console.error('error: container not set yet')\n      return\n    }\n\n    this.delaunay = new Delaunay({\n      points: this.data,\n      xAccessor: this.xAccessor,\n      yAccessor: this.yAccessor,\n      xScale: this.xScale,\n      yScale: this.yScale,\n      onPoint: this.onPointHandler(),\n      onLeave: this.onLeaveHandler(),\n      defined: this.defined,\n      ...customParameters\n    })\n    this.delaunay.mountTo(this.container)\n  }\n\n  computeYAxisType(): void {\n    // abort if no y axis is used\n    if (!this.yAxis) {\n      console.error('error: no y axis set')\n      return\n    }\n\n    const flatData = this.data.flat()\n    const yValue = this.yAccessor(flatData[0])\n\n    if (yValue instanceof Date) {\n      this.yAxis.tickFormat = constants.axisFormat.date\n    } else if (Number(yValue) === yValue) {\n      this.yAxis.tickFormat = constants.axisFormat.number\n    }\n  }\n}\n"
  },
  {
    "path": "lib/src/charts/scatter.ts",
    "content": "import Delaunay from '../components/delaunay'\nimport Rug, { RugOrientation } from '../components/rug'\nimport { makeAccessorFunction } from '../misc/utility'\nimport { AccessorFunction, LegendSymbol, InteractionFunction, EmptyInteractionFunction } from '../misc/typings'\nimport Point from '../components/point'\nimport { TooltipSymbol } from '../components/tooltip'\nimport AbstractChart, { IAbstractChart } from './abstractChart'\n\ninterface IScatterChart extends IAbstractChart {\n  /** accessor specifying the size of a data point. Can be either a string (name of the size field) or a function (receiving a data point and returning its size) */\n  sizeAccessor?: string | AccessorFunction\n\n  /** whether or not to generate a rug for the x axis */\n  xRug?: boolean\n\n  /** whether or not to generate a rug for the x axis */\n  yRug?: boolean\n}\n\ninterface ActivePoint {\n  i: number\n  j: number\n}\n\nexport default class ScatterChart extends AbstractChart {\n  points?: Array<any>\n  delaunay?: Delaunay\n  delaunayPoint?: Point\n  sizeAccessor: AccessorFunction\n  showXRug: boolean\n  xRug?: Rug\n  showYRug: boolean\n  yRug?: Rug\n  _activePoint: ActivePoint = { i: -1, j: -1 }\n\n  constructor({ sizeAccessor, xRug, yRug, ...args }: IScatterChart) {\n    super(args)\n    this.showXRug = xRug ?? false\n    this.showYRug = yRug ?? false\n\n    this.sizeAccessor = sizeAccessor ? makeAccessorFunction(sizeAccessor) : () => 3\n\n    this.redraw()\n  }\n\n  redraw(): void {\n    // set up rugs if necessary\n    this.mountRugs()\n\n    // set tooltip type\n    if (this.tooltip) {\n      this.tooltip.update({ legendObject: TooltipSymbol.CIRCLE })\n      this.tooltip.hide()\n    }\n\n    // set up points\n    this.mountPoints()\n\n    // generate delaunator\n    this.mountDelaunay()\n\n    // mount legend if any\n    this.mountLegend(LegendSymbol.CIRCLE)\n\n    // mount brush if necessary\n    this.mountBrush(this.brush)\n  }\n\n  /**\n   * Mount new rugs.\n   */\n  mountRugs(): void {\n    // if content is not set yet, abort\n    if (!this.content) {\n      console.error('error: content not set yet')\n      return\n    }\n\n    if (this.showXRug) {\n      this.xRug = new Rug({\n        accessor: this.xAccessor,\n        scale: this.xScale,\n        colors: this.colors,\n        data: this.data,\n        left: this.plotLeft,\n        top: this.innerHeight + this.plotTop + this.buffer,\n        orientation: RugOrientation.HORIZONTAL // TODO how to pass tickLength etc?\n      })\n      this.xRug.mountTo(this.content)\n    }\n    if (this.showYRug) {\n      this.yRug = new Rug({\n        accessor: this.yAccessor,\n        scale: this.yScale,\n        colors: this.colors,\n        data: this.data,\n        left: this.left,\n        top: this.plotTop,\n        orientation: RugOrientation.VERTICAL\n      })\n      this.yRug.mountTo(this.content)\n    }\n  }\n\n  /**\n   * Mount scatter points.\n   */\n  mountPoints(): void {\n    // if container is not set yet, abort\n    if (!this.container) {\n      console.error('error: container not set yet')\n      return\n    }\n\n    this.points = this.data.map((pointSet, i) =>\n      pointSet.map((data: any) => {\n        const point = this.generatePoint({\n          data,\n          color: this.colors[i],\n          radius: this.sizeAccessor(data) as number,\n          fillOpacity: 0.3,\n          strokeWidth: 1\n        })\n        point.mountTo(this.container!)\n        return point\n      })\n    )\n  }\n\n  /**\n   * Handle incoming points from the delaunay triangulation.\n   *\n   * @returns handler function\n   */\n  onPointHandler(): InteractionFunction {\n    return ([point]) => {\n      this.activePoint = { i: point.arrayIndex ?? 0, j: point.index }\n\n      // set tooltip if necessary\n      if (!this.tooltip) return\n      this.tooltip.update({ data: [point] })\n    }\n  }\n\n  /**\n   * Handle leaving the delaunay area.\n   *\n   * @returns handler function\n   */\n  onLeaveHandler(): EmptyInteractionFunction {\n    return () => {\n      this.activePoint = { i: -1, j: -1 }\n      if (this.tooltip) this.tooltip.hide()\n    }\n  }\n\n  /**\n   * Mount new delaunay triangulation instance.\n   */\n  mountDelaunay(): void {\n    // if container is not set yet, abort\n    if (!this.container) {\n      console.error('error: container not set yet')\n      return\n    }\n\n    this.delaunayPoint = this.generatePoint({ radius: 3 })\n    this.delaunay = new Delaunay({\n      points: this.data,\n      xAccessor: this.xAccessor,\n      yAccessor: this.yAccessor,\n      xScale: this.xScale,\n      yScale: this.yScale,\n      nested: true,\n      onPoint: this.onPointHandler(),\n      onLeave: this.onLeaveHandler()\n    })\n    this.delaunay.mountTo(this.container)\n  }\n\n  get activePoint() {\n    return this._activePoint\n  }\n\n  set activePoint({ i, j }: ActivePoint) {\n    // abort if points are not set yet\n    if (!this.points) {\n      console.error('error: cannot set point, as points are not set')\n      return\n    }\n\n    // if a point was previously set, de-set it\n    if (this._activePoint.i !== -1 && this._activePoint.j !== -1) {\n      this.points[this._activePoint.i][this._activePoint.j].update({\n        fillOpacity: 0.3\n      })\n    }\n\n    // set state\n    this._activePoint = { i, j }\n\n    // set point to active\n    if (i !== -1 && j !== -1) this.points[i][j].update({ fillOpacity: 1 })\n  }\n}\n"
  },
  {
    "path": "lib/src/components/abstractShape.ts",
    "content": "import { SvgD3Selection } from '../misc/typings'\nimport Scale from './scale'\n\nexport interface IAbstractShape {\n  /** datapoint used to generate shape */\n  data?: any\n\n  /** scale used to compute x values */\n  xScale: Scale\n\n  /** scale used to compute y values */\n  yScale: Scale\n\n  /** color used for fill and strokes */\n  color?: string\n\n  /** opacity of the shape fill */\n  fillOpacity?: number\n\n  /** width of the stroke around the shape */\n  strokeWidth?: number\n}\n\nexport default abstract class AbstractShape {\n  data: any\n  shapeObject: any\n  xScale: Scale\n  yScale: Scale\n  color: string\n  fillOpacity = 1\n  strokeWidth = 0\n\n  constructor({ data, xScale, yScale, color, fillOpacity, strokeWidth }: IAbstractShape) {\n    this.data = data\n    this.xScale = xScale\n    this.yScale = yScale\n    this.color = color ?? 'black'\n    this.fillOpacity = fillOpacity ?? this.fillOpacity\n    this.strokeWidth = strokeWidth ?? this.strokeWidth\n  }\n\n  /**\n   * Render the shape and mount it to the given node.\n   * Implemented by classes extending AbstractShape.\n   *\n   * @param svg D3 node to mount the shape to\n   */\n  abstract mountTo(svg: SvgD3Selection): void\n\n  /**\n   * Hide the shape by setting the opacity to 0. This doesn't remove the shape.\n   */\n  hide(): void {\n    if (this.shapeObject) this.shapeObject.attr('opacity', 0)\n  }\n\n  /**\n   * Update the given parameters of the object.\n   * Implemented by classes extending AbstractShape.\n   *\n   * @param args parameters to be updated\n   */\n  abstract update(args: any): void\n\n  /**\n   * Update generic properties of the shape.\n   * This method can be used in the implementations of {@link AbstractShape#update}.\n   *\n   * @param color new color of the shape.\n   * @param fillOpacity new fill opacity of the shape.\n   * @param strokeWidth new stroke width of the shape.\n   */\n  updateGeneric({\n    color,\n    fillOpacity,\n    strokeWidth\n  }: Pick<IAbstractShape, 'color' | 'fillOpacity' | 'strokeWidth'>): void {\n    if (color) this.updateColor(color)\n    if (fillOpacity) this.updateOpacity(fillOpacity)\n    if (strokeWidth) this.updateStroke(strokeWidth)\n  }\n\n  /**\n   * Update the color of the shape.\n   *\n   * @param color new color of the shape.\n   */\n  updateColor(color: string): void {\n    this.color = color\n    this.updateProp('fill', color)\n  }\n\n  /**\n   * Update the fill opacity of the shape.\n   *\n   * @param fillOpacity new fill opacity of the shape.\n   */\n  updateOpacity(fillOpacity: number): void {\n    this.fillOpacity = fillOpacity\n    this.updateProp('fill-opacity', fillOpacity)\n  }\n\n  /**\n   * Update the stroke width of the shape.\n   *\n   * @param strokeWidth new stroke width of the shape.\n   */\n  updateStroke(strokeWidth: number): void {\n    this.strokeWidth = strokeWidth\n    this.updateProp('stroke-width', strokeWidth)\n  }\n\n  /**\n   * Update an attribute of the raw shape node.\n   *\n   * @param name attribute name\n   * @param value new value\n   */\n  updateProp(name: string, value: number | string): void {\n    if (this.shapeObject) this.shapeObject.attr(name, value)\n  }\n\n  /**\n   * Remove the shape.\n   */\n  dismount(): void {\n    if (this.shapeObject) this.shapeObject.remove()\n  }\n}\n"
  },
  {
    "path": "lib/src/components/area.ts",
    "content": "import { area, curveCatmullRom, CurveFactory } from 'd3'\nimport { AccessorFunction, DefinedFunction, SvgD3Selection } from '../misc/typings'\nimport Scale from './scale'\n\ninterface IArea {\n  /** data for which the area should be created */\n  data: Array<any>\n\n  /** x accessor function */\n  xAccessor: AccessorFunction\n\n  /** y accessor function */\n  yAccessor: AccessorFunction\n\n  /** y base accessor function (defaults to 0) */\n  y0Accessor?: AccessorFunction\n\n  /** alternative to yAccessor */\n  y1Accessor?: AccessorFunction\n\n  /** scale used to scale elements in x direction */\n  xScale: Scale\n\n  /** scale used to scale elements in y direction */\n  yScale: Scale\n\n  /** curving function. See {@link https://github.com/d3/d3-shape#curves} for available curves in d3 */\n  curve?: CurveFactory\n\n  /** color of the area */\n  color?: string\n\n  /** specifies whether or not to show a given datapoint */\n  defined?: DefinedFunction\n}\n\nexport default class Area {\n  data: Array<any>\n  areaObject?: any\n  index = 0\n  color = 'none'\n\n  constructor({ data, xAccessor, yAccessor, y0Accessor, y1Accessor, xScale, yScale, curve, color, defined }: IArea) {\n    this.data = data\n    this.color = color ?? this.color\n\n    const y0 = y0Accessor ?? ((d) => 0)\n    const y1 = y1Accessor ?? yAccessor\n\n    // set up line object\n    this.areaObject = area()\n      .defined((d) => {\n        if (y0(d) === null || y1(d) === null) return false\n        return !defined ? true : defined(d)\n      })\n      .x((d) => xScale.scaleObject(xAccessor(d)))\n      .y1((d) => yScale.scaleObject(y1(d)))\n      .y0((d) => yScale.scaleObject(y0(d)))\n      .curve(curve ?? curveCatmullRom)\n  }\n\n  /**\n   * Mount the area to a given d3 node.\n   *\n   * @param svg d3 node to mount the area to.\n   */\n  mountTo(svg: SvgD3Selection): void {\n    svg.append('path').classed('mg-area', true).attr('fill', this.color).datum(this.data).attr('d', this.areaObject)\n  }\n}\n"
  },
  {
    "path": "lib/src/components/axis.ts",
    "content": "import { axisTop, axisLeft, axisRight, axisBottom, format, timeFormat } from 'd3'\nimport constants from '../misc/constants'\nimport { GD3Selection, LineD3Selection, TextD3Selection, TextFunction } from '../misc/typings'\nimport Scale from './scale'\n\nconst DEFAULT_VERTICAL_OFFSET = 35\nconst DEFAULT_HORIZONTAL_OFFSET = 45\n\ntype NumberFormatFunction = (x: number) => string\ntype DateFormatFunction = (x: Date) => string\ntype FormatFunction = NumberFormatFunction | DateFormatFunction\n\nexport enum AxisOrientation {\n  TOP = 'top',\n  BOTTOM = 'bottom',\n  RIGHT = 'right',\n  LEFT = 'left'\n}\n\nenum AxisFormat {\n  DATE = 'date',\n  NUMBER = 'number',\n  PERCENTAGE = 'percentage'\n}\n\nexport interface IAxis {\n  /** scale of the axis */\n  scale: Scale\n\n  /** buffer used by the chart, necessary to compute margins */\n  buffer: number\n\n  /** whether or not to show the axis */\n  show?: boolean\n\n  /** orientation of the axis */\n  orientation?: AxisOrientation\n\n  /** optional label to place beside the axis */\n  label?: string\n\n  /** offset between label and axis */\n  labelOffset?: number\n\n  /** translation from the top of the chart's box to render the axis */\n  top?: number\n\n  /** translation from the left of the chart's to render the axis */\n  left?: number\n\n  /** can be 1) a function to format a given tick or a specifier, or 2) one of the available standard formatting types (date, number, percentage) or a string for d3-format */\n  tickFormat?: TextFunction | AxisFormat | string\n\n  /** number of ticks to render, defaults to 3 for vertical and 6 for horizontal axes */\n  tickCount?: number\n\n  /** whether or not to render a compact version of the axis (clamps the main axis line at the outermost ticks) */\n  compact?: boolean\n\n  /** prefix for tick labels */\n  prefix?: string\n\n  /** suffix for tick labels */\n  suffix?: string\n\n  /** overwrite d3's default tick lengths */\n  tickLength?: number\n\n  /** draw extended ticks into the graph (used to make a grid) */\n  extendedTicks?: boolean\n\n  /** if extended ticks are used, this parameter specifies the inner length of ticks */\n  height?: number\n}\n\nexport default class Axis {\n  label = ''\n  labelOffset = 0\n  top = 0\n  left = 0\n  scale: Scale\n  orientation = AxisOrientation.BOTTOM\n  axisObject: any\n  compact = false\n  extendedTicks = false\n  buffer = 0\n  height = 0\n  prefix = ''\n  suffix = ''\n\n  constructor({\n    orientation,\n    label,\n    labelOffset,\n    top,\n    left,\n    height,\n    scale,\n    tickFormat,\n    tickCount,\n    compact,\n    buffer,\n    prefix,\n    suffix,\n    tickLength,\n    extendedTicks\n  }: IAxis) {\n    this.scale = scale\n    this.label = label ?? this.label\n    this.buffer = buffer ?? this.buffer\n    this.top = top ?? this.top\n    this.left = left ?? this.left\n    this.height = height ?? this.height\n    this.orientation = orientation ?? this.orientation\n    this.compact = compact ?? this.compact\n    this.prefix = prefix ?? this.prefix\n    this.suffix = suffix ?? this.suffix\n    if (typeof tickLength !== 'undefined') this.tickLength = tickLength\n    this.extendedTicks = extendedTicks ?? this.extendedTicks\n    this.setLabelOffset(labelOffset)\n\n    this.setupAxisObject()\n\n    // set or compute tickFormat\n    if (tickFormat) this.tickFormat = tickFormat\n    this.tickCount = tickCount ?? (this.isVertical ? 3 : 6)\n  }\n\n  /**\n   * Set the label offset.\n   *\n   * @param labelOffset offset of the label.\n   */\n  setLabelOffset(labelOffset?: number): void {\n    this.labelOffset =\n      typeof labelOffset !== 'undefined'\n        ? labelOffset\n        : this.isVertical\n        ? DEFAULT_HORIZONTAL_OFFSET\n        : DEFAULT_VERTICAL_OFFSET\n  }\n\n  /**\n   * Set up the main axis object.\n   */\n  setupAxisObject(): void {\n    switch (this.orientation) {\n      case constants.axisOrientation.top:\n        this.axisObject = axisTop(this.scale.scaleObject)\n        break\n      case constants.axisOrientation.left:\n        this.axisObject = axisLeft(this.scale.scaleObject)\n        break\n      case constants.axisOrientation.right:\n        this.axisObject = axisRight(this.scale.scaleObject)\n        break\n      default:\n        this.axisObject = axisBottom(this.scale.scaleObject)\n        break\n    }\n  }\n\n  /**\n   * Get the domain object call function.\n   * @returns that mounts the domain when called.\n   */\n  domainObject() {\n    return (g: GD3Selection): LineD3Selection =>\n      g\n        .append('line')\n        .classed('domain', true)\n        .attr('x1', this.isVertical ? 0.5 : this.compact ? this.buffer : 0)\n        .attr('x2', this.isVertical ? 0.5 : this.compact ? this.scale.range[1] : this.scale.range[1] + 2 * this.buffer)\n        .attr('y1', this.isVertical ? (this.compact ? this.top + 0.5 : 0.5) : 0)\n        .attr(\n          'y2',\n          this.isVertical ? (this.compact ? this.scale.range[0] + 0.5 : this.scale.range[0] + 2 * this.buffer + 0.5) : 0\n        )\n  }\n\n  /**\n   * Get the label object call function.\n   * @returns {Function} that mounts the label when called.\n   */\n  labelObject(): (node: GD3Selection) => TextD3Selection {\n    const value = Math.abs(this.scale.range[0] - this.scale.range[1]) / 2\n    const xValue = this.isVertical ? -this.labelOffset : value\n    const yValue = this.isVertical ? value : this.labelOffset\n    return (g) =>\n      g\n        .append('text')\n        .attr('x', xValue)\n        .attr('y', yValue)\n        .attr('text-anchor', 'middle')\n        .classed('label', true)\n        .attr('transform', this.isVertical ? `rotate(${-90} ${xValue},${yValue})` : '')\n        .text(this.label)\n  }\n\n  get isVertical(): boolean {\n    return [constants.axisOrientation.left, constants.axisOrientation.right].includes(this.orientation)\n  }\n\n  get innerLeft(): number {\n    return this.isVertical ? 0 : this.buffer\n  }\n\n  get innerTop(): number {\n    return this.isVertical ? this.buffer : 0\n  }\n\n  get tickAttribute(): string {\n    return this.isVertical ? 'x1' : 'y1'\n  }\n\n  get extendedTickLength(): number {\n    const factor = this.isVertical ? 1 : -1\n    return factor * (this.height + 2 * this.buffer)\n  }\n\n  /**\n   * Mount the axis to the given d3 node.\n   * @param svg d3 node.\n   */\n  mountTo(svg: GD3Selection): void {\n    // set up axis container\n    const axisContainer = svg\n      .append('g')\n      .attr('transform', `translate(${this.left},${this.top})`)\n      .classed('mg-axis', true)\n\n    // if no extended ticks are used, draw the domain line\n    if (!this.extendedTicks) axisContainer.call(this.domainObject())\n\n    // mount axis but remove default-generated domain\n    axisContainer\n      .append('g')\n      .attr('transform', `translate(${this.innerLeft},${this.innerTop})`)\n      .call(this.axisObject)\n      .call((g) => g.select('.domain').remove())\n\n    // if necessary, make ticks longer\n    if (this.extendedTicks) {\n      axisContainer.call((g) =>\n        g.selectAll('.tick line').attr(this.tickAttribute, this.extendedTickLength).attr('opacity', 0.3)\n      )\n    }\n\n    // if necessary, add label\n    if (this.label !== '') axisContainer.call(this.labelObject())\n  }\n\n  /**\n   * Compute the time formatting function based on the time domain.\n   * @returns d3 function for formatting time.\n   */\n  diffToTimeFormat(): FormatFunction {\n    const diff = Math.abs(this.scale.domain[1] - this.scale.domain[0]) / 1000\n\n    const millisecondDiff = diff < 1\n    const secondDiff = diff < 60\n    const dayDiff = diff / (60 * 60) < 24\n    const fourDaysDiff = diff / (60 * 60) < 24 * 4\n    const manyDaysDiff = diff / (60 * 60 * 24) < 60\n    const manyMonthsDiff = diff / (60 * 60 * 24) < 365\n\n    return millisecondDiff\n      ? timeFormat('%M:%S.%L')\n      : secondDiff\n      ? timeFormat('%M:%S')\n      : dayDiff\n      ? timeFormat('%H:%M')\n      : fourDaysDiff || manyDaysDiff || manyMonthsDiff\n      ? timeFormat('%b %d')\n      : timeFormat('%Y')\n  }\n\n  /**\n   * Get the d3 number formatting function for an abstract number type.\n   *\n   * @param formatType abstract format to be converted (number, date, percentage)\n   * @returns d3 formatting function for the given abstract number type.\n   */\n  stringToFormat(formatType: AxisFormat | string): FormatFunction {\n    switch (formatType) {\n      case constants.axisFormat.number:\n        return this.isVertical ? format('~s') : format('')\n      case constants.axisFormat.date:\n        return this.diffToTimeFormat()\n      case constants.axisFormat.percentage:\n        return format('.0%')\n      default:\n        return format(formatType)\n    }\n  }\n\n  get tickFormat() {\n    return this.axisObject.tickFormat()\n  }\n\n  set tickFormat(tickFormat: FormatFunction | string) {\n    // if tickFormat is a function, apply it directly\n    const formatFunction = typeof tickFormat === 'function' ? tickFormat : this.stringToFormat(tickFormat)\n\n    this.axisObject.tickFormat((d: any) => `${this.prefix}${formatFunction(d)}${this.suffix}`)\n  }\n\n  get tickCount() {\n    return this.axisObject.ticks()\n  }\n\n  set tickCount(tickCount: number) {\n    this.axisObject.ticks(tickCount)\n  }\n\n  get tickLength() {\n    return this.axisObject.tickSize()\n  }\n\n  set tickLength(length: number) {\n    this.axisObject.tickSize(length)\n  }\n}\n"
  },
  {
    "path": "lib/src/components/delaunay.ts",
    "content": "import { Delaunay as DelaunayObject, pointer } from 'd3'\nimport {\n  AccessorFunction,\n  InteractionFunction,\n  EmptyInteractionFunction,\n  DefinedFunction,\n  GenericD3Selection\n} from '../misc/typings'\nimport Scale from './scale'\n\nexport interface IDelaunay {\n  /** raw data basis for delaunay computations, can be nested */\n  points: Array<any>\n\n  /** function to access the x value for a given data point */\n  xAccessor: AccessorFunction\n\n  /** function to access the y value for a given data point */\n  yAccessor: AccessorFunction\n\n  /** scale used to scale elements in x direction */\n  xScale: Scale\n\n  /** scale used to scale elements in y direction */\n  yScale: Scale\n\n  /** function called with the array of nearest points on mouse movement -- if aggregate is false, the array will contain at most one element */\n  onPoint?: InteractionFunction\n\n  /** function called when the delaunay area is left */\n  onLeave?: EmptyInteractionFunction\n\n  /** function called with the array of nearest points on mouse click in the delaunay area -- if aggregate is false, the array will contain at most one element */\n  onClick?: InteractionFunction\n\n  /** whether or not the points array contains sub-arrays */\n  nested?: boolean\n\n  /** if multiple points have the same x value and should be shown together, aggregate can be set to true */\n  aggregate?: boolean\n\n  /** optional function specifying whether or not to show a given datapoint */\n  defined?: DefinedFunction\n}\n\nexport default class Delaunay {\n  points?: Array<any>\n  aggregatedPoints: any\n  delaunay: any\n  xScale: Scale\n  yScale: Scale\n  xAccessor: AccessorFunction\n  yAccessor: AccessorFunction\n  aggregate = false\n  onPoint: InteractionFunction\n  onClick?: InteractionFunction\n  onLeave: EmptyInteractionFunction\n\n  constructor({\n    points,\n    xAccessor,\n    yAccessor,\n    xScale,\n    yScale,\n    onPoint,\n    onLeave,\n    onClick,\n    nested,\n    aggregate,\n    defined\n  }: IDelaunay) {\n    this.xAccessor = xAccessor\n    this.yAccessor = yAccessor\n    this.xScale = xScale\n    this.yScale = yScale\n    this.onPoint = onPoint ?? (() => null)\n    this.onLeave = onLeave ?? (() => null)\n    this.onClick = onClick ?? this.onClick\n    this.aggregate = aggregate ?? this.aggregate\n\n    // normalize passed points\n    const isNested = nested ?? (Array.isArray(points[0]) && points.length > 1)\n    this.normalizePoints({ points, nested: isNested, aggregate, defined })\n\n    // set up delaunay\n    this.mountDelaunay(isNested, this.aggregate)\n  }\n\n  /**\n   * Create a new delaunay triangulation.\n   *\n   * @param isNested whether or not the data is nested\n   * @param aggregate whether or not to aggregate points based on their x value\n   */\n  mountDelaunay(isNested: boolean, aggregate: boolean): void {\n    // if points are not set yet, stop\n    if (!this.points) {\n      console.error('error: points not defined')\n      return\n    }\n\n    this.delaunay = DelaunayObject.from(\n      this.points.map((point) => [\n        this.xAccessor(point) as number,\n        (isNested && !aggregate ? this.yAccessor(point) : 0) as number\n      ])\n    )\n  }\n\n  /**\n   * Normalize the passed data points.\n   *\n   * @param {Object} args argument object\n   * @param {Array} args.points raw data array\n   * @param {Boolean} args.isNested whether or not the points are nested\n   * @param {Boolean} args.aggregate whether or not to aggregate points based on their x value\n   * @param {Function} [args.defined] optional function specifying whether or not to show a given datapoint.\n   */\n  normalizePoints({\n    points,\n    nested,\n    aggregate,\n    defined\n  }: Pick<IDelaunay, 'points' | 'nested' | 'aggregate' | 'defined'>): void {\n    this.points = nested\n      ? points\n          .map((pointArray, arrayIndex) =>\n            pointArray\n              .filter((p: any) => !defined || defined(p))\n              .map((point: any, index: number) => ({\n                ...point,\n                index,\n                arrayIndex\n              }))\n          )\n          .flat(Infinity)\n      : points\n          .flat(Infinity)\n          .filter((p) => !defined || defined(p))\n          .map((p, index) => ({ ...p, index }))\n\n    // if points should be aggregated, hash-map them based on their x accessor value\n    if (!aggregate) return\n    this.aggregatedPoints = this.points.reduce((acc, val) => {\n      const key = JSON.stringify(this.xAccessor(val))\n      if (!acc.has(key)) {\n        acc.set(key, [val])\n      } else {\n        acc.set(key, [val, ...acc.get(key)])\n      }\n      return acc\n    }, new Map())\n  }\n\n  /**\n   * Handle raw mouse movement inside the delaunay rect.\n   * Finds the nearest data point(s) and calls onPoint.\n   *\n   * @param rawX raw x coordinate of the cursor.\n   * @param rawY raw y coordinate of the cursor.\n   */\n  gotPoint(rawX: number, rawY: number): void {\n    // if points are empty, return\n    if (!this.points) {\n      console.error('error: points are empty')\n      return\n    }\n\n    const x = this.xScale.scaleObject.invert(rawX)\n    const y = this.yScale.scaleObject.invert(rawY)\n\n    // find nearest point\n    const index = this.delaunay.find(x, y)\n\n    // if points should be aggregated, get all points with the same x value\n    if (this.aggregate) {\n      this.onPoint(this.aggregatedPoints.get(JSON.stringify(this.xAccessor(this.points[index]))))\n    } else {\n      this.onPoint([this.points[index]])\n    }\n  }\n\n  /**\n   * Handle raw mouse clicks inside the delaunay rect.\n   * Finds the nearest data point(s) and calls onClick.\n   *\n   * @param rawX raw x coordinate of the cursor.\n   * @param rawY raw y coordinate of the cursor.\n   */\n  clickedPoint(rawX: number, rawY: number): void {\n    // if points empty, abort\n    if (!this.points) {\n      console.error('error: points empty')\n      return\n    }\n\n    const x = this.xScale.scaleObject.invert(rawX)\n    const y = this.yScale.scaleObject.invert(rawY)\n\n    // find nearest point\n    const index = this.delaunay.find(x, y)\n    if (this.onClick) this.onClick({ ...this.points[index], index })\n  }\n\n  /**\n   * Mount the delaunator to a given d3 node.\n   *\n   * @param svg d3 selection to mount the delaunay elements to.\n   */\n  mountTo(svg: GenericD3Selection): void {\n    svg.on('mousemove', (event) => {\n      const coords = pointer(event)\n      this.gotPoint(coords[0], coords[1])\n    })\n    svg.on('mouseleave', () => {\n      this.onLeave()\n    })\n    svg.on('click', (event) => {\n      const coords = pointer(event)\n      this.clickedPoint(coords[0], coords[1])\n    })\n  }\n}\n"
  },
  {
    "path": "lib/src/components/legend.ts",
    "content": "import { select } from 'd3'\nimport constants from '../misc/constants'\nimport { LegendSymbol } from '../misc/typings'\n\ninterface ILegend {\n  /** array of descriptive legend strings */\n  legend: Array<string>\n\n  /** colors used for the legend -- will be darkened for better visibility */\n  colorScheme: Array<string>\n\n  /** symbol used in the legend */\n  symbolType: LegendSymbol\n}\n\nexport default class Legend {\n  legend: Array<string>\n  colorScheme: Array<string>\n  symbolType: LegendSymbol\n\n  constructor({ legend, colorScheme, symbolType }: ILegend) {\n    this.legend = legend\n    this.colorScheme = colorScheme\n    this.symbolType = symbolType\n  }\n\n  /**\n   * Darken a given color by a given amount.\n   *\n   * @see https://css-tricks.com/snippets/javascript/lighten-darken-color/\n   * @param color hex color specifier\n   * @param amount how much to darken the color\n   * @returns darkened color in hex representation.\n   */\n  darkenColor(color: string, amount: number): string {\n    // remove hash\n    color = color.slice(1)\n\n    const num = parseInt(color, 16)\n\n    const r = this.clamp((num >> 16) + amount)\n    const b = this.clamp(((num >> 8) & 0x00ff) + amount)\n    const g = this.clamp((num & 0x0000ff) + amount)\n\n    return '#' + (g | (b << 8) | (r << 16)).toString(16)\n  }\n\n  /**\n   * Clamp a number between 0 and 255.\n   *\n   * @param number number to be clamped.\n   * @returns clamped number.\n   */\n  clamp(number: number): number {\n    return number > 255 ? 255 : number < 0 ? 0 : number\n  }\n\n  /**\n   * Mount the legend to the given node.\n   *\n   * @param node d3 specifier or d3 node to mount the legend to.\n   */\n  mountTo(node: any) {\n    const symbol = constants.symbol[this.symbolType]\n\n    // create d3 selection if necessary\n    const target = typeof node === 'string' ? select(node).append('div') : node.append('div')\n    target.classed('mg-legend', true)\n\n    this.legend.forEach((item, index) => {\n      target\n        .append('span')\n        .classed('text-legend', true)\n        .style('color', this.darkenColor(this.colorScheme[index], -10))\n        .text(`${symbol} ${item}`)\n    })\n  }\n}\n"
  },
  {
    "path": "lib/src/components/line.ts",
    "content": "import { line, curveCatmullRom, CurveFactory } from 'd3'\nimport { AccessorFunction, SvgD3Selection } from '../misc/typings'\nimport Scale from './scale'\n\ninterface ILine {\n  /** array of datapoints used to create the line */\n  data: Array<any>\n\n  /** function to access the x value for a given datapoint */\n  xAccessor: AccessorFunction\n\n  /** function to access the y value for a given datapoint */\n  yAccessor: AccessorFunction\n\n  /** scale used to compute x values */\n  xScale: Scale\n\n  /** scale used to compute y values */\n  yScale: Scale\n\n  /** curving function used to draw the line. See {@link https://github.com/d3/d3-shape#curves} for curves available in d3 */\n  curve?: CurveFactory\n\n  /** color of the line */\n  color?: string\n\n  /** function specifying whether or not to show a given datapoint */\n  defined?: (datapoint: any) => boolean\n}\n\nexport default class Line {\n  lineObject?: any\n  data: Array<any>\n  color: string\n\n  constructor({ data, xAccessor, yAccessor, xScale, yScale, curve, color, defined }: ILine) {\n    // cry if no data was passed\n    if (!data) throw new Error('line needs data')\n    this.data = data\n    this.color = color ?? 'black'\n\n    // set up line object\n    this.lineObject = line()\n      .defined((d) => {\n        if (yAccessor(d) === null) return false\n        if (typeof defined === 'undefined') return true\n        return defined(d)\n      })\n      .x((d) => xScale.scaleObject(xAccessor(d)))\n      .y((d) => yScale.scaleObject(yAccessor(d)))\n      .curve(curve ?? curveCatmullRom)\n  }\n\n  /**\n   * Mount the line to the given d3 node.\n   *\n   * @param svg d3 node to mount the line to.\n   */\n  mountTo(svg: SvgD3Selection): void {\n    svg.append('path').classed('mg-line', true).attr('stroke', this.color).datum(this.data).attr('d', this.lineObject)\n  }\n}\n"
  },
  {
    "path": "lib/src/components/point.ts",
    "content": "import { AccessorFunction, SvgD3Selection } from '../misc/typings'\nimport AbstractShape, { IAbstractShape } from './abstractShape'\n\nexport interface IPoint extends IAbstractShape {\n  /** function to access the x value of the point */\n  xAccessor: AccessorFunction\n\n  /** function to access the y value of the point */\n  yAccessor: AccessorFunction\n\n  /** radius of the point */\n  radius?: number\n}\n\nexport default class Point extends AbstractShape {\n  xAccessor: AccessorFunction\n  yAccessor: AccessorFunction\n  radius = 1\n\n  constructor({ xAccessor, yAccessor, radius, ...args }: IPoint) {\n    super(args)\n    this.xAccessor = xAccessor\n    this.yAccessor = yAccessor\n    this.radius = radius ?? this.radius\n  }\n\n  get cx(): number {\n    return this.xScale.scaleObject(this.xAccessor(this.data))\n  }\n\n  get cy(): number {\n    return this.yScale.scaleObject(this.yAccessor(this.data))\n  }\n\n  /**\n   * Mount the point to the given node.\n   *\n   * @param svg d3 node to mount the point to.\n   */\n  mountTo(svg: SvgD3Selection): void {\n    this.shapeObject = svg\n      .append('circle')\n      .attr('cx', this.cx)\n      .attr('pointer-events', 'none')\n      .attr('cy', this.cy)\n      .attr('r', this.radius)\n      .attr('fill', this.color)\n      .attr('stroke', this.color)\n      .attr('fill-opacity', this.fillOpacity)\n      .attr('stroke-width', this.strokeWidth)\n  }\n\n  /**\n   * Update the point.\n   *\n   * @param data point object\n   */\n  update({ data, ...args }: IAbstractShape): void {\n    this.updateGeneric(args)\n    if (data) {\n      this.data = data\n      if (!this.shapeObject) return\n      this.shapeObject.attr('cx', this.cx).attr('cy', this.cy).attr('opacity', 1)\n    }\n  }\n}\n"
  },
  {
    "path": "lib/src/components/rect.ts",
    "content": "import { AccessorFunction, GenericD3Selection } from '../misc/typings'\nimport AbstractShape, { IAbstractShape } from './abstractShape'\n\ninterface IRect extends IAbstractShape {\n  /** function to access the x value of the rectangle */\n  xAccessor: AccessorFunction\n\n  /** function to access the y value of the rectangle */\n  yAccessor: AccessorFunction\n\n  /** function to access the width of the rectangle */\n  widthAccessor: AccessorFunction\n\n  /** function to access the height of the rectangle */\n  heightAccessor: AccessorFunction\n}\n\nexport default class Rect extends AbstractShape {\n  xAccessor: AccessorFunction\n  yAccessor: AccessorFunction\n  widthAccessor: AccessorFunction\n  heightAccessor: AccessorFunction\n\n  constructor({ xAccessor, yAccessor, widthAccessor, heightAccessor, ...args }: IRect) {\n    super(args)\n    this.xAccessor = xAccessor\n    this.yAccessor = yAccessor\n    this.widthAccessor = widthAccessor\n    this.heightAccessor = heightAccessor\n  }\n\n  get x(): number {\n    return this.xScale.scaleObject(this.xAccessor(this.data))\n  }\n\n  get y(): number {\n    return this.yScale.scaleObject(this.yAccessor(this.data))\n  }\n\n  get width(): number {\n    return Math.max(0, Math.abs(this.widthAccessor(this.data)))\n  }\n\n  get height(): number {\n    return Math.max(0, this.yScale.scaleObject(this.heightAccessor(this.data)))\n  }\n\n  /**\n   * Mount the rectangle to the given node.\n   *\n   * @param svg d3 node to mount the rectangle to.\n   */\n  mountTo(svg: GenericD3Selection): void {\n    this.shapeObject = svg\n      .append('rect')\n      .attr('x', this.x)\n      .attr('y', this.y)\n      .attr('width', this.width)\n      .attr('height', this.height)\n      .attr('pointer-events', 'none')\n      .attr('fill', this.color)\n      .attr('stroke', this.color)\n      .attr('fill-opacity', this.fillOpacity)\n      .attr('stroke-width', this.strokeWidth)\n  }\n\n  /**\n   * Update the rectangle.\n   *\n   * @param data updated data object.\n   */\n  update({ data, ...args }: Partial<IAbstractShape>): void {\n    this.updateGeneric(args)\n    if (data) {\n      this.data = data\n      if (!this.shapeObject) return\n      this.shapeObject\n        .attr('x', this.x)\n        .attr('y', this.y)\n        .attr('width', this.width)\n        .attr('height', this.height)\n        .attr('opacity', 1)\n    }\n  }\n}\n"
  },
  {
    "path": "lib/src/components/rug.ts",
    "content": "import constants from '../misc/constants'\nimport { AccessorFunction, GenericD3Selection } from '../misc/typings'\nimport Scale from './scale'\n\nexport enum RugOrientation {\n  HORIZONTAL = 'horizontal',\n  VERTICAL = 'vertical'\n}\n\ninterface IRug {\n  /** accessor used to get the rug value for a given datapoint */\n  accessor: AccessorFunction\n\n  /** scale function of the rug */\n  scale: Scale\n\n  /** data to be rugged */\n  data: Array<any>\n\n  /** length of the rug's ticks */\n  tickLength?: number\n\n  /** color scheme of the rug ticks */\n  colors?: Array<string>\n\n  /** orientation of the rug */\n  orientation?: RugOrientation\n\n  /** left margin of the rug */\n  left?: number\n\n  /** top margin of the rug */\n  top?: number\n}\n\nexport default class Rug {\n  accessor: AccessorFunction\n  scale: Scale\n  rugObject: any\n  data: Array<any>\n  left = 0\n  top = 0\n  tickLength = 5\n  colors = constants.defaultColors\n  orientation = RugOrientation.HORIZONTAL\n\n  constructor({ accessor, scale, data, tickLength, colors, orientation, left, top }: IRug) {\n    this.accessor = accessor\n    this.scale = scale\n    this.data = data\n    this.tickLength = tickLength ?? this.tickLength\n    this.colors = colors ?? this.colors\n    this.orientation = orientation ?? this.orientation\n    this.left = left ?? this.left\n    this.top = top ?? this.top\n  }\n\n  get isVertical(): boolean {\n    return this.orientation === constants.orientation.vertical\n  }\n\n  /**\n   * Mount the rug to the given node.\n   *\n   * @param svg d3 node to mount the rug to.\n   */\n  mountTo(svg: GenericD3Selection): void {\n    // add container\n    const top = this.isVertical ? this.top : this.top - this.tickLength\n    const container = svg.append('g').attr('transform', `translate(${this.left},${top})`)\n\n    // add lines\n    this.data.forEach((dataArray, i) =>\n      dataArray.forEach((datum: any) => {\n        const value = this.scale.scaleObject(this.accessor(datum))\n        container\n          .append('line')\n          .attr(this.isVertical ? 'y1' : 'x1', value!)\n          .attr(this.isVertical ? 'y2' : 'x2', value!)\n          .attr(this.isVertical ? 'x1' : 'y1', 0)\n          .attr(this.isVertical ? 'x2' : 'y2', this.tickLength)\n          .attr('stroke', this.colors[i])\n      })\n    )\n  }\n}\n"
  },
  {
    "path": "lib/src/components/scale.ts",
    "content": "import { scaleLinear, ScaleLinear } from 'd3'\nimport { Domain, Range } from '../misc/typings'\n\nenum ScaleType {\n  LINEAR = 'linear'\n}\n\ntype SupportedScale = ScaleLinear<number, number>\n\ninterface IScale {\n  /** type of scale (currently only linear) */\n  type?: ScaleType\n\n  /** scale range */\n  range?: Range\n\n  /** scale domain */\n  domain?: Domain\n\n  /** overwrites domain lower bound */\n  minValue?: number\n\n  /** overwrites domain upper bound */\n  maxValue?: number\n}\n\nexport default class Scale {\n  type: ScaleType\n  scaleObject: SupportedScale\n  minValue?: number\n  maxValue?: number\n\n  constructor({ type, range, domain, minValue, maxValue }: IScale) {\n    this.type = type ?? ScaleType.LINEAR\n    this.scaleObject = this.getScaleObject(this.type)\n\n    // set optional custom ranges and domains\n    if (range) this.range = range\n    if (domain) this.domain = domain\n\n    // set optional min and max\n    this.minValue = minValue\n    this.maxValue = maxValue\n  }\n\n  /**\n   * Get the d3 scale object for a given scale type.\n   *\n   * @param {String} type scale type\n   * @returns {Object} d3 scale type\n   */\n  getScaleObject(type: ScaleType): SupportedScale {\n    switch (type) {\n      default:\n        return scaleLinear()\n    }\n  }\n\n  get range(): Range {\n    return this.scaleObject.range()\n  }\n\n  set range(range: Range) {\n    this.scaleObject.range(range)\n  }\n\n  get domain(): Domain {\n    return this.scaleObject.domain()\n  }\n\n  set domain(domain: Domain) {\n    // fix custom domain values if necessary\n    if (typeof this.minValue !== 'undefined') domain[0] = this.minValue\n    if (typeof this.maxValue !== 'undefined') domain[1] = this.maxValue\n    this.scaleObject.domain(domain)\n  }\n}\n"
  },
  {
    "path": "lib/src/components/tooltip.ts",
    "content": "import constants from '../misc/constants'\nimport { TextFunction, AccessorFunction, GenericD3Selection } from '../misc/typings'\n\nexport enum TooltipSymbol {\n  CIRCLE = 'circle',\n  LINE = 'line',\n  SQUARE = 'square'\n}\n\ninterface ITooltip {\n  /** symbol to show in the tooltip (defaults to line) */\n  legendObject?: TooltipSymbol\n\n  /** description of the different data arrays shown in the legend */\n  legend?: Array<string>\n\n  /** array of colors for the different data arrays, defaults to schemeCategory10 */\n  colors?: Array<string>\n\n  /** custom text formatting function -- generated from accessors if not defined */\n  textFunction?: TextFunction\n\n  /** entries to show in the tooltip, usually empty when first instantiating */\n  data?: Array<any>\n\n  /** margin to the left of the tooltip */\n  left?: number\n\n  /** margin to the top of the tooltip */\n  top?: number\n\n  /** if no custom text function is specified, specifies how to get the x value from a specific data point */\n  xAccessor?: AccessorFunction\n\n  /** if no custom text function is specified, specifies how to get the y value from a specific data point */\n  yAccessor?: AccessorFunction\n}\n\nexport default class Tooltip {\n  legendObject = TooltipSymbol.LINE\n  legend: Array<string>\n  colors = constants.defaultColors\n  data: Array<any>\n  left = 0\n  top = 0\n  node: any\n  textFunction = (x: any) => 'bla'\n\n  constructor({ legendObject, legend, colors, textFunction, data, left, top, xAccessor, yAccessor }: ITooltip) {\n    this.legendObject = legendObject ?? this.legendObject\n    this.legend = legend ?? []\n    this.colors = colors ?? this.colors\n    this.setTextFunction(textFunction, xAccessor, yAccessor)\n    this.data = data ?? []\n    this.left = left ?? this.left\n    this.top = top ?? this.top\n  }\n\n  /**\n   * Sets the text function for the tooltip.\n   *\n   * @param textFunction custom text function for the tooltip text. Generated from xAccessor and yAccessor if not\n   * @param xAccessor if no custom text function is specified, this function specifies how to get the x value from a specific data point.\n   * @param yAccessor if no custom text function is specified, this function specifies how to get the y value from a specific data point.\n   */\n  setTextFunction(textFunction?: TextFunction, xAccessor?: AccessorFunction, yAccessor?: AccessorFunction): void {\n    this.textFunction =\n      textFunction || (xAccessor && yAccessor ? this.baseTextFunction(xAccessor, yAccessor) : this.textFunction)\n  }\n\n  /**\n   * If no textFunction was specified when creating the tooltip instance, this method generates a text function based on the xAccessor and yAccessor.\n   *\n   * @param xAccessor returns the x value of a given data point.\n   * @param yAccessor returns the y value of a given data point.\n   * @returns base text function used to render the tooltip for a given datapoint.\n   */\n  baseTextFunction(xAccessor: AccessorFunction, yAccessor: AccessorFunction): TextFunction {\n    return (point: any) => `${xAccessor(point)}: ${yAccessor(point)}`\n  }\n\n  /**\n   * Update the tooltip.\n   */\n  update({ data, legendObject, legend }: Pick<ITooltip, 'data' | 'legendObject' | 'legend'>): void {\n    this.data = data ?? this.data\n    this.legendObject = legendObject ?? this.legendObject\n    this.legend = legend ?? this.legend\n    this.addText()\n  }\n\n  /**\n   * Hide the tooltip (without destroying it).\n   */\n  hide(): void {\n    this.node.attr('opacity', 0)\n  }\n\n  /**\n   * Mount the tooltip to the given d3 node.\n   *\n   * @param svg d3 node to mount the tooltip to.\n   */\n  mountTo(svg: GenericD3Selection): void {\n    this.node = svg\n      .append('g')\n      .style('font-size', '0.7rem')\n      .attr('transform', `translate(${this.left},${this.top})`)\n      .attr('opacity', 0)\n    this.addText()\n  }\n\n  /**\n   * Adds the text to the tooltip.\n   * For each datapoint in the data array, one line is added to the tooltip.\n   */\n  addText(): void {\n    // first, clear existing content\n    this.node.selectAll('*').remove()\n\n    // second, add one line per data entry\n    this.node.attr('opacity', 1)\n    this.data.forEach((datum, index) => {\n      const symbol = constants.symbol[this.legendObject]\n      const realIndex = datum.arrayIndex ?? index\n      const color = this.colors[realIndex]\n      const node = this.node\n        .append('text')\n        .attr('text-anchor', 'end')\n        .attr('y', index * 12)\n\n      // category\n      node.append('tspan').classed('text-category', true).attr('fill', color).text(this.legend[realIndex])\n\n      // symbol\n      node.append('tspan').attr('dx', '6').attr('fill', color).text(symbol)\n\n      // text\n      node\n        .append('tspan')\n        .attr('dx', '6')\n        .text(`${this.textFunction(datum)}`)\n    })\n  }\n}\n"
  },
  {
    "path": "lib/src/index.ts",
    "content": "export { default as LineChart } from './charts/line'\nexport { default as ScatterChart } from './charts/scatter'\nexport { default as HistogramChart } from './charts/histogram'\n"
  },
  {
    "path": "lib/src/mg.css",
    "content": ".mg-graph .domain {\n  stroke: #b3b2b2;\n}\n\n.mg-graph .tick line {\n  stroke: #b3b2b2;\n}\n\n.mg-graph .tick text {\n  font-size: 0.7rem;\n  fill: black;\n  opacity: 0.6;\n}\n\n.mg-graph .label {\n  font-size: 0.8rem;\n  font-weight: 600;\n  opacity: 0.8;\n}\n\n.mg-graph .line-marker {\n  stroke: #ccc;\n  stroke-width: 1px;\n  stroke-dasharray: 2;\n}\n\n.mg-graph .line-baseline {\n  stroke: #ccc;\n  stroke-width: 1px;\n}\n\n.mg-graph .text-marker {\n  text-anchor: middle;\n  font-size: 0.7rem;\n  fill: black;\n}\n\n.mg-graph .text-baseline {\n  text-anchor: end;\n  font-size: 0.7rem;\n  fill: black;\n}\n\n.mg-graph .text-category {\n  font-weight: bold;\n}\n\n.mg-line {\n  stroke-width: 1;\n  fill: none;\n}\n\n.mg-area {\n  fill-opacity: 0.3;\n}\n\n.text-legend {\n  margin-right: 1em;\n  font-size: 0.7rem;\n}\n"
  },
  {
    "path": "lib/src/misc/constants.ts",
    "content": "const constants = {\n  chartType: {\n    line: 'line',\n    histogram: 'histogram',\n    bar: 'bar',\n    point: 'point'\n  },\n  axisOrientation: {\n    top: 'top',\n    bottom: 'bottom',\n    left: 'left',\n    right: 'right'\n  },\n  scaleType: {\n    categorical: 'categorical',\n    linear: 'linear',\n    log: 'log'\n  },\n  axisFormat: {\n    date: 'date',\n    number: 'number',\n    percentage: 'percentage'\n  },\n  legendObject: {\n    circle: 'circle',\n    line: 'line',\n    square: 'square'\n  },\n  symbol: {\n    line: '—',\n    circle: '•',\n    square: '■'\n  },\n  orientation: {\n    vertical: 'vertical',\n    horizontal: 'horizontal'\n  },\n  defaultColors: [\n    '#1f77b4',\n    '#ff7f0e',\n    '#2ca02c',\n    '#d62728',\n    '#9467bd',\n    '#8c564b',\n    '#e377c2',\n    '#7f7f7f',\n    '#bcbd22',\n    '#17becf'\n  ]\n}\n\nexport default constants\n"
  },
  {
    "path": "lib/src/misc/typings.ts",
    "content": "import { Selection } from 'd3'\n\nexport interface AccessorFunction<X = any, Y = any> {\n  (dataObject: X): Y\n}\n\nexport interface TextFunction {\n  (dataObject: unknown): string\n}\n\nexport interface InteractionFunction<T = any> {\n  (pointArray: Array<T>): void\n}\n\nexport interface EmptyInteractionFunction {\n  (): void\n}\n\nexport interface DefinedFunction {\n  (dataObject: unknown): boolean\n}\n\nexport interface Margin {\n  left: number\n  right: number\n  bottom: number\n  top: number\n}\n\nexport interface DomainObject {\n  x: Domain\n  y: Domain\n}\n\nexport enum LegendSymbol {\n  LINE = 'line',\n  CIRCLE = 'circle',\n  SQUARE = 'square'\n}\n\nexport type BrushType = 'xy' | 'x' | 'y'\n\nexport type Domain = number[]\nexport type Range = number[]\n\nexport type GenericD3Selection = Selection<any, any, any, any>\nexport type SvgD3Selection = Selection<SVGElement, any, Element, any>\nexport type GD3Selection = Selection<SVGGElement, any, Element, any>\nexport type LineD3Selection = Selection<SVGLineElement, any, Element, any>\nexport type TextD3Selection = Selection<SVGTextElement, any, Element, any>\n"
  },
  {
    "path": "lib/src/misc/utility.ts",
    "content": "import { AccessorFunction } from './typings'\n\n/**\n * Handle cases where the user specifies an accessor string instead of an accessor function.\n *\n * @param functionOrString accessor string/function to be made an accessor function\n * @returns accessor function\n */\nexport function makeAccessorFunction(functionOrString: AccessorFunction | string): AccessorFunction {\n  return typeof functionOrString === 'string' ? (d: any) => d[functionOrString] : functionOrString\n}\n\n/**\n * Generate a random id.\n * Used to create ids for clip paths, which need to be referenced by id.\n *\n * @returns random id string.\n */\nexport function randomId(): string {\n  return Math.random().toString(36).substring(2, 15)\n}\n"
  },
  {
    "path": "lib/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ESNext\",\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"node\",\n    \"lib\": [\"ES2020\", \"DOM\"],\n    \"strict\": true,\n    \"sourceMap\": true,\n    \"declaration\": true,\n    \"esModuleInterop\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"outDir\": \"dist\"\n  },\n  \"include\": [\"src/**/*.ts\"]\n}\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"private\": true,\n  \"workspaces\": [\n    \"lib\",\n    \"app\"\n  ],\n  \"repository\": \"github:metricsgraphics/metrics-graphics\",\n  \"contributors\": [\n    \"Ali Almossawi\",\n    \"Hamilton Ulmer\",\n    \"William Lachance\",\n    \"Jens Ochsenmeier\"\n  ],\n  \"license\": \"MPL-2.0\",\n  \"bugs\": {\n    \"url\": \"https://github.com/metricsgraphics/metrics-graphics/issues\"\n  },\n  \"homepage\": \"http://metricsgraphicsjs.org\",\n  \"dependencies\": {},\n  \"devDependencies\": {\n    \"@typescript-eslint/eslint-plugin\": \"^5.25.0\",\n    \"@typescript-eslint/parser\": \"^5.25.0\",\n    \"eslint\": \"^8.15.0\",\n    \"eslint-config-prettier\": \"^8.5.0\",\n    \"eslint-config-standard\": \"^17.0.0\",\n    \"eslint-plugin-import\": \"^2.26.0\",\n    \"eslint-plugin-n\": \"^15.2.0\",\n    \"eslint-plugin-prettier\": \"^4.0.0\",\n    \"eslint-plugin-promise\": \"^6.0.0\",\n    \"eslint-plugin-react\": \"^7.30.0\",\n    \"eslint-plugin-react-hooks\": \"^4.5.0\",\n    \"prettier\": \"^2.6.2\",\n    \"typescript\": \"^4.6.4\"\n  }\n}\n"
  }
]