diff --git a/.changeset/kind-elephants-crash.md b/.changeset/kind-elephants-crash.md
new file mode 100644
index 0000000000000000000000000000000000000000..e82e4562674e78671f37bb4ab0fbfd6471a3ad80
--- /dev/null
+++ b/.changeset/kind-elephants-crash.md
@@ -0,0 +1,5 @@
+---
+"llamaindex": patch
+---
+
+Add PapaCSVReader (thank you @swk777)
diff --git a/apps/docs/docs/api/classes/OpenAIEmbedding.md b/apps/docs/docs/api/classes/OpenAIEmbedding.md
index 1abe8d93552c2f20ba434053a0b42846748d26d5..fcf3c8b36ac17f51b983128bb3b2cb9c10c9c74b 100644
--- a/apps/docs/docs/api/classes/OpenAIEmbedding.md
+++ b/apps/docs/docs/api/classes/OpenAIEmbedding.md
@@ -100,7 +100,7 @@ ___
 
 #### Defined in
 
-[Embedding.ts:270](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/Embedding.ts#L270)
+[Embedding.ts:272](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/Embedding.ts#L272)
 
 ___
 
@@ -124,7 +124,7 @@ ___
 
 #### Defined in
 
-[Embedding.ts:286](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/Embedding.ts#L286)
+[Embedding.ts:288](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/Embedding.ts#L288)
 
 ___
 
@@ -148,7 +148,7 @@ ___
 
 #### Defined in
 
-[Embedding.ts:282](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/Embedding.ts#L282)
+[Embedding.ts:284](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/Embedding.ts#L284)
 
 ___
 
diff --git a/apps/docs/docs/api/classes/PapaCSVReader.md b/apps/docs/docs/api/classes/PapaCSVReader.md
new file mode 100644
index 0000000000000000000000000000000000000000..e9ebb2a4e69fccd2a7b880d3c5fa6e9656d8bcbb
--- /dev/null
+++ b/apps/docs/docs/api/classes/PapaCSVReader.md
@@ -0,0 +1,105 @@
+---
+id: "PapaCSVReader"
+title: "Class: PapaCSVReader"
+sidebar_label: "PapaCSVReader"
+sidebar_position: 0
+custom_edit_url: null
+---
+
+papaparse-based csv parser
+
+**`Implements`**
+
+BaseReader
+
+## Implements
+
+- [`BaseReader`](../interfaces/BaseReader.md)
+
+## Constructors
+
+### constructor
+
+• **new PapaCSVReader**(`concatRows?`, `colJoiner?`, `rowJoiner?`, `papaConfig?`)
+
+Constructs a new instance of the class.
+
+#### Parameters
+
+| Name | Type | Default value | Description |
+| :------ | :------ | :------ | :------ |
+| `concatRows?` | `boolean` | `true` | whether to concatenate all rows into one document.If set to False, a Document will be created for each row.True by default. |
+| `colJoiner?` | `string` | `", "` | - |
+| `rowJoiner?` | `string` | `"\n"` | Separator to use for joining each row.Only used when `concat_rows=True`.Set to "\n" by default. |
+| `papaConfig?` | `ParseConfig`<`any`, `undefined`\> | `undefined` | - |
+
+#### Defined in
+
+[readers/CSVReader.ts:23](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/readers/CSVReader.ts#L23)
+
+## Properties
+
+### colJoiner
+
+• `Private` **colJoiner**: `string`
+
+#### Defined in
+
+[readers/CSVReader.ts:13](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/readers/CSVReader.ts#L13)
+
+___
+
+### concatRows
+
+• `Private` **concatRows**: `boolean`
+
+#### Defined in
+
+[readers/CSVReader.ts:12](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/readers/CSVReader.ts#L12)
+
+___
+
+### papaConfig
+
+• `Private` `Optional` **papaConfig**: `ParseConfig`<`any`, `undefined`\>
+
+#### Defined in
+
+[readers/CSVReader.ts:15](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/readers/CSVReader.ts#L15)
+
+___
+
+### rowJoiner
+
+• `Private` **rowJoiner**: `string`
+
+#### Defined in
+
+[readers/CSVReader.ts:14](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/readers/CSVReader.ts#L14)
+
+## Methods
+
+### loadData
+
+â–¸ **loadData**(`file`, `fs?`): `Promise`<[`Document`](Document.md)[]\>
+
+Loads data from csv files
+
+#### Parameters
+
+| Name | Type | Default value | Description |
+| :------ | :------ | :------ | :------ |
+| `file` | `string` | `undefined` | The path to the file to load. |
+| `fs?` | [`GenericFileSystem`](../interfaces/GenericFileSystem.md) | `DEFAULT_FS` | The file system to use for reading the file. |
+
+#### Returns
+
+`Promise`<[`Document`](Document.md)[]\>
+
+#### Implementation of
+
+[BaseReader](../interfaces/BaseReader.md).[loadData](../interfaces/BaseReader.md#loaddata)
+
+#### Defined in
+
+[readers/CSVReader.ts:41](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/readers/CSVReader.ts#L41)
diff --git a/apps/docs/docs/api/classes/SimpleDirectoryReader.md b/apps/docs/docs/api/classes/SimpleDirectoryReader.md
index 1591fae56f5ca07804aadcbbaf74c5a5d6a7ed27..ad7050629839f3ff943686d680ac7ebcddd6a817 100644
--- a/apps/docs/docs/api/classes/SimpleDirectoryReader.md
+++ b/apps/docs/docs/api/classes/SimpleDirectoryReader.md
@@ -40,4 +40,4 @@ Read all of the documents in a directory. Currently supports PDF and TXT files.
 
 #### Defined in
 
-[readers/SimpleDirectoryReader.ts:37](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/readers/SimpleDirectoryReader.ts#L37)
+[readers/SimpleDirectoryReader.ts:39](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/readers/SimpleDirectoryReader.ts#L39)
diff --git a/apps/docs/docs/api/classes/TextFileReader.md b/apps/docs/docs/api/classes/TextFileReader.md
index 859d0fa28a68634ff197e6d77f10a7412d0c42d2..c8ef26677388ebc568bdc65a06a9cab3c030b9b9 100644
--- a/apps/docs/docs/api/classes/TextFileReader.md
+++ b/apps/docs/docs/api/classes/TextFileReader.md
@@ -41,4 +41,4 @@ Read a .txt file
 
 #### Defined in
 
-[readers/SimpleDirectoryReader.ts:12](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/readers/SimpleDirectoryReader.ts#L12)
+[readers/SimpleDirectoryReader.ts:13](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/readers/SimpleDirectoryReader.ts#L13)
diff --git a/apps/docs/docs/api/classes/VectorStoreIndex.md b/apps/docs/docs/api/classes/VectorStoreIndex.md
index aaa264826a471dd3844389e0897f87d2ecbe3420..5d0507779085f3e8808cad60f8738e9ae5b03586 100644
--- a/apps/docs/docs/api/classes/VectorStoreIndex.md
+++ b/apps/docs/docs/api/classes/VectorStoreIndex.md
@@ -24,7 +24,7 @@ The VectorStoreIndex, an index that stores the nodes only according to their vec
 
 | Name | Type |
 | :------ | :------ |
-| `init` | [`VectorIndexConstructorProps`](../interfaces/VectorIndexConstructorProps.md) |
+| `init` | `VectorIndexConstructorProps` |
 
 #### Overrides
 
@@ -32,7 +32,7 @@ The VectorStoreIndex, an index that stores the nodes only according to their vec
 
 #### Defined in
 
-[indices/vectorStore/VectorStoreIndex.ts:31](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/indices/vectorStore/VectorStoreIndex.ts#L31)
+[indices/vectorStore/VectorStoreIndex.ts:41](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/indices/vectorStore/VectorStoreIndex.ts#L41)
 
 ## Properties
 
@@ -116,7 +116,7 @@ ___
 
 #### Defined in
 
-[indices/vectorStore/VectorStoreIndex.ts:29](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/indices/vectorStore/VectorStoreIndex.ts#L29)
+[indices/vectorStore/VectorStoreIndex.ts:39](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/indices/vectorStore/VectorStoreIndex.ts#L39)
 
 ## Methods
 
@@ -145,7 +145,7 @@ and response synthezier if they are not provided.
 
 #### Defined in
 
-[indices/vectorStore/VectorStoreIndex.ts:216](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/indices/vectorStore/VectorStoreIndex.ts#L216)
+[indices/vectorStore/VectorStoreIndex.ts:226](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/indices/vectorStore/VectorStoreIndex.ts#L226)
 
 ___
 
@@ -171,7 +171,7 @@ Create a new retriever from the index.
 
 #### Defined in
 
-[indices/vectorStore/VectorStoreIndex.ts:212](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/indices/vectorStore/VectorStoreIndex.ts#L212)
+[indices/vectorStore/VectorStoreIndex.ts:222](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/indices/vectorStore/VectorStoreIndex.ts#L222)
 
 ___
 
@@ -196,7 +196,7 @@ ___
 
 #### Defined in
 
-[indices/vectorStore/VectorStoreIndex.ts:252](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/indices/vectorStore/VectorStoreIndex.ts#L252)
+[indices/vectorStore/VectorStoreIndex.ts:262](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/indices/vectorStore/VectorStoreIndex.ts#L262)
 
 ___
 
@@ -246,7 +246,7 @@ ___
 
 #### Defined in
 
-[indices/vectorStore/VectorStoreIndex.ts:227](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/indices/vectorStore/VectorStoreIndex.ts#L227)
+[indices/vectorStore/VectorStoreIndex.ts:237](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/indices/vectorStore/VectorStoreIndex.ts#L237)
 
 ___
 
@@ -272,7 +272,7 @@ Get embeddings for nodes and place them into the index.
 
 #### Defined in
 
-[indices/vectorStore/VectorStoreIndex.ts:143](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/indices/vectorStore/VectorStoreIndex.ts#L143)
+[indices/vectorStore/VectorStoreIndex.ts:153](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/indices/vectorStore/VectorStoreIndex.ts#L153)
 
 ___
 
@@ -297,7 +297,7 @@ High level API: split documents, get embeddings, and build index.
 
 #### Defined in
 
-[indices/vectorStore/VectorStoreIndex.ts:187](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/indices/vectorStore/VectorStoreIndex.ts#L187)
+[indices/vectorStore/VectorStoreIndex.ts:197](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/indices/vectorStore/VectorStoreIndex.ts#L197)
 
 ___
 
@@ -321,7 +321,7 @@ Get the embeddings for nodes.
 
 #### Defined in
 
-[indices/vectorStore/VectorStoreIndex.ts:114](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/indices/vectorStore/VectorStoreIndex.ts#L114)
+[indices/vectorStore/VectorStoreIndex.ts:124](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/indices/vectorStore/VectorStoreIndex.ts#L124)
 
 ___
 
@@ -336,7 +336,7 @@ This is needed to handle persistence.
 
 | Name | Type |
 | :------ | :------ |
-| `options` | [`VectorIndexOptions`](../interfaces/VectorIndexOptions.md) |
+| `options` | `VectorIndexOptions` |
 
 #### Returns
 
@@ -344,4 +344,4 @@ This is needed to handle persistence.
 
 #### Defined in
 
-[indices/vectorStore/VectorStoreIndex.ts:42](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/indices/vectorStore/VectorStoreIndex.ts#L42)
+[indices/vectorStore/VectorStoreIndex.ts:52](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/indices/vectorStore/VectorStoreIndex.ts#L52)
diff --git a/apps/docs/docs/api/interfaces/BaseIndexInit.md b/apps/docs/docs/api/interfaces/BaseIndexInit.md
index 0d25b4ba5512bb9b9244673d4c005673179978b9..e027984e385b1af3da0fdf66bb2f60dabdbcc268 100644
--- a/apps/docs/docs/api/interfaces/BaseIndexInit.md
+++ b/apps/docs/docs/api/interfaces/BaseIndexInit.md
@@ -12,12 +12,6 @@ custom_edit_url: null
 | :------ |
 | `T` |
 
-## Hierarchy
-
-- **`BaseIndexInit`**
-
-  ↳ [`VectorIndexConstructorProps`](VectorIndexConstructorProps.md)
-
 ## Properties
 
 ### docStore
diff --git a/apps/docs/docs/api/interfaces/BaseReader.md b/apps/docs/docs/api/interfaces/BaseReader.md
index 114d1ede9a14d0abfceec8210c1570761ae9d281..d290936d1020a13dc18958a5b4ebbe1a15903650 100644
--- a/apps/docs/docs/api/interfaces/BaseReader.md
+++ b/apps/docs/docs/api/interfaces/BaseReader.md
@@ -11,6 +11,7 @@ A reader takes imports data into Document objects.
 ## Implemented by
 
 - [`PDFReader`](../classes/PDFReader.md)
+- [`PapaCSVReader`](../classes/PapaCSVReader.md)
 - [`SimpleDirectoryReader`](../classes/SimpleDirectoryReader.md)
 - [`TextFileReader`](../classes/TextFileReader.md)
 
diff --git a/apps/docs/docs/api/modules.md b/apps/docs/docs/api/modules.md
index 1cb9fbca58cc7c6a986db1e18720d624bf02bc1c..68c88649aaeef4b46e196fb681f7876ffd635446 100644
--- a/apps/docs/docs/api/modules.md
+++ b/apps/docs/docs/api/modules.md
@@ -41,6 +41,7 @@ custom_edit_url: null
 - [OpenAI](classes/OpenAI.md)
 - [OpenAIEmbedding](classes/OpenAIEmbedding.md)
 - [PDFReader](classes/PDFReader.md)
+- [PapaCSVReader](classes/PapaCSVReader.md)
 - [Refine](classes/Refine.md)
 - [Response](classes/Response.md)
 - [ResponseSynthesizer](classes/ResponseSynthesizer.md)
@@ -92,8 +93,6 @@ custom_edit_url: null
 - [StructuredOutput](interfaces/StructuredOutput.md)
 - [SubQuestion](interfaces/SubQuestion.md)
 - [ToolMetadata](interfaces/ToolMetadata.md)
-- [VectorIndexConstructorProps](interfaces/VectorIndexConstructorProps.md)
-- [VectorIndexOptions](interfaces/VectorIndexOptions.md)
 - [VectorStore](interfaces/VectorStore.md)
 - [VectorStoreInfo](interfaces/VectorStoreInfo.md)
 - [VectorStoreQuery](interfaces/VectorStoreQuery.md)
@@ -178,7 +177,7 @@ ___
 
 #### Defined in
 
-[readers/SimpleDirectoryReader.ts:26](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/readers/SimpleDirectoryReader.ts#L26)
+[readers/SimpleDirectoryReader.ts:28](https://github.com/run-llama/LlamaIndexTS/blob/main/packages/core/src/readers/SimpleDirectoryReader.ts#L28)
 
 ___
 
diff --git a/apps/simple/csv.ts b/apps/simple/csv.ts
new file mode 100644
index 0000000000000000000000000000000000000000..d1c413ce97ea06dcc8e824d472e69a8e2c5775ef
--- /dev/null
+++ b/apps/simple/csv.ts
@@ -0,0 +1,52 @@
+import {
+  CompactAndRefine,
+  OpenAI,
+  PapaCSVReader,
+  ResponseSynthesizer,
+  serviceContextFromDefaults,
+  SimplePrompt,
+  VectorStoreIndex,
+} from "llamaindex";
+
+async function main() {
+  // Load CSV
+  const reader = new PapaCSVReader();
+  const path = "data/titanic_train.csv";
+  const documents = await reader.loadData(path);
+
+  const serviceContext = serviceContextFromDefaults({
+    llm: new OpenAI({ model: "gpt-4" }),
+  });
+
+  // Split text and create embeddings. Store them in a VectorStoreIndex
+  const index = await VectorStoreIndex.fromDocuments(documents, {
+    serviceContext,
+  });
+
+  const csvPrompt: SimplePrompt = (input) => {
+    const { context = "", query = "" } = input;
+
+    return `The following CSV file is loaded from ${path}
+\`\`\`csv
+${context}
+\`\`\`
+Given the CSV file, generate me Typescript code to answer the question: ${query}. You can use built in NodeJS functions but avoid using third party libraries.
+`;
+  };
+
+  const responseSynthesizer = new ResponseSynthesizer({
+    responseBuilder: new CompactAndRefine(serviceContext, csvPrompt),
+  });
+
+  const queryEngine = index.asQueryEngine({ responseSynthesizer });
+
+  // Query the index
+  const response = await queryEngine.query(
+    "What is the correlation between survival and age?",
+  );
+
+  // Output response
+  console.log(response.toString());
+}
+
+main().catch(console.error);
diff --git a/apps/simple/examples/brk-2022.pdf b/apps/simple/data/brk-2022.pdf
similarity index 100%
rename from apps/simple/examples/brk-2022.pdf
rename to apps/simple/data/brk-2022.pdf
diff --git a/apps/simple/data/titanic_train.csv b/apps/simple/data/titanic_train.csv
new file mode 100644
index 0000000000000000000000000000000000000000..f7c3e9498f39d7d988ed2fe693b3cd884142e9ac
--- /dev/null
+++ b/apps/simple/data/titanic_train.csv
@@ -0,0 +1,715 @@
+survived,pclass,name,sex,age,sibsp,parch,ticket,fare,cabin,embarked
+0,3,Braund,male,22,1,0,A/5 21171,7.25,,S
+1,1,Cumings,female,38,1,0,PC 17599,71.2833,C85,C
+1,3,Heikkinen,female,26,0,0,STON/O2. 3101282,7.925,,S
+1,1,Futrelle,female,35,1,0,113803,53.1,C123,S
+0,3,Allen,male,35,0,0,373450,8.05,,S
+0,1,McCarthy,male,54,0,0,17463,51.8625,E46,S
+0,3,Palsson,male,2,3,1,349909,21.075,,S
+1,3,Johnson,female,27,0,2,347742,11.1333,,S
+1,2,Nasser,female,14,1,0,237736,30.0708,,C
+1,3,Sandstrom,female,4,1,1,PP 9549,16.7,G6,S
+1,1,Bonnell,female,58,0,0,113783,26.55,C103,S
+0,3,Saundercock,male,20,0,0,A/5. 2151,8.05,,S
+0,3,Andersson,male,39,1,5,347082,31.275,,S
+0,3,Vestrom,female,14,0,0,350406,7.8542,,S
+1,2,Hewlett,female,55,0,0,248706,16,,S
+0,3,Rice,male,2,4,1,382652,29.125,,Q
+0,3,Vander,female,31,1,0,345763,18,,S
+0,2,Fynney,male,35,0,0,239865,26,,S
+1,2,Beesley,male,34,0,0,248698,13,D56,S
+1,3,McGowan,female,15,0,0,330923,8.0292,,Q
+1,1,Sloper,male,28,0,0,113788,35.5,A6,S
+0,3,Palsson,female,8,3,1,349909,21.075,,S
+1,3,Asplund,female,38,1,5,347077,31.3875,,S
+0,1,Fortune,male,19,3,2,19950,263,C23 C25 C27,S
+0,1,Uruchurtu,male,40,0,0,PC 17601,27.7208,,C
+0,2,Wheadon,male,66,0,0,C.A. 24579,10.5,,S
+0,1,Meyer,male,28,1,0,PC 17604,82.1708,,C
+0,1,Holverson,male,42,1,0,113789,52,,S
+0,3,Cann,male,21,0,0,A./5. 2152,8.05,,S
+0,3,Vander,female,18,2,0,345764,18,,S
+1,3,Nicola-Yarred,female,14,1,0,2651,11.2417,,C
+0,3,Ahlin,female,40,1,0,7546,9.475,,S
+0,2,Turpin,female,27,1,0,11668,21,,S
+1,2,Laroche,female,3,1,2,SC/Paris 2123,41.5792,,C
+1,3,Devaney,female,19,0,0,330958,7.8792,,Q
+0,3,Arnold-Franchi,female,18,1,0,349237,17.8,,S
+0,3,Panula,male,7,4,1,3101295,39.6875,,S
+0,3,Nosworthy,male,21,0,0,A/4. 39886,7.8,,S
+1,1,Harper,female,49,1,0,PC 17572,76.7292,D33,C
+1,2,Faunthorpe,female,29,1,0,2926,26,,S
+0,1,Ostby,male,65,0,1,113509,61.9792,B30,C
+1,2,Rugg,female,21,0,0,C.A. 31026,10.5,,S
+0,3,Novel,male,28.5,0,0,2697,7.2292,,C
+1,2,West,female,5,1,2,C.A. 34651,27.75,,S
+0,3,Goodwin,male,11,5,2,CA 2144,46.9,,S
+0,3,Sirayanian,male,22,0,0,2669,7.2292,,C
+1,1,Icard,female,38,0,0,113572,80,B28,
+0,1,Harris,male,45,1,0,36973,83.475,C83,S
+0,3,Skoog,male,4,3,2,347088,27.9,,S
+1,2,Nye,female,29,0,0,C.A. 29395,10.5,F33,S
+0,3,Crease,male,19,0,0,S.P. 3464,8.1583,,S
+1,3,Andersson,female,17,4,2,3101281,7.925,,S
+0,3,Kink,male,26,2,0,315151,8.6625,,S
+0,2,Jenkin,male,32,0,0,C.A. 33111,10.5,,S
+0,3,Goodwin,female,16,5,2,CA 2144,46.9,,S
+0,2,Hood,male,21,0,0,S.O.C. 14879,73.5,,S
+0,3,Chronopoulos,male,26,1,0,2680,14.4542,,C
+1,3,Bing,male,32,0,0,1601,56.4958,,S
+0,3,Moen,male,25,0,0,348123,7.65,F G73,S
+1,2,Caldwell,male,0.83,0,2,248738,29,,S
+1,3,Dowdell,female,30,0,0,364516,12.475,,S
+0,3,Waelens,male,22,0,0,345767,9,,S
+1,3,Sheerlinck,male,29,0,0,345779,9.5,,S
+0,1,Carrau,male,28,0,0,113059,47.1,,S
+1,2,Ilett,female,17,0,0,SO/C 14885,10.5,,S
+1,3,Backstrom,female,33,3,0,3101278,15.85,,S
+0,3,Ford,male,16,1,3,W./C. 6608,34.375,,S
+1,1,Fortune,female,23,3,2,19950,263,C23 C25 C27,S
+0,3,Celotti,male,24,0,0,343275,8.05,,S
+0,3,Christmann,male,29,0,0,343276,8.05,,S
+0,3,Andreasson,male,20,0,0,347466,7.8542,,S
+0,1,Chaffee,male,46,1,0,W.E.P. 5734,61.175,E31,S
+0,3,Dean,male,26,1,2,C.A. 2315,20.575,,S
+0,3,Coxon,male,59,0,0,364500,7.25,,S
+0,1,Goldschmidt,male,71,0,0,PC 17754,34.6542,A5,C
+1,1,Greenfield,male,23,0,1,PC 17759,63.3583,D10 D12,C
+1,2,Doling,female,34,0,1,231919,23,,S
+0,2,Kantor,male,34,1,0,244367,26,,S
+0,3,Petranec,female,28,0,0,349245,7.8958,,S
+0,1,White,male,21,0,1,35281,77.2875,D26,S
+0,3,Johansson,male,33,0,0,7540,8.6542,,S
+0,3,Gustafsson,male,37,2,0,3101276,7.925,,S
+0,3,Mionoff,male,28,0,0,349207,7.8958,,S
+1,3,Salkjelsvik,female,21,0,0,343120,7.65,,S
+0,3,Rekic,male,38,0,0,349249,7.8958,,S
+0,1,Porter,male,47,0,0,110465,52,C110,S
+0,3,Zabour,female,14.5,1,0,2665,14.4542,,C
+0,3,Barton,male,22,0,0,324669,8.05,,S
+0,3,Jussila,female,20,1,0,4136,9.825,,S
+0,3,Attalah,female,17,0,0,2627,14.4583,,C
+0,3,Pekoniemi,male,21,0,0,STON/O 2. 3101294,7.925,,S
+0,3,Connors,male,70.5,0,0,370369,7.75,,Q
+0,2,Turpin,male,29,1,0,11668,21,,S
+0,1,Baxter,male,24,0,1,PC 17558,247.5208,B58 B60,C
+0,3,Andersson,female,2,4,2,347082,31.275,,S
+0,2,Hickman,male,21,2,0,S.O.C. 14879,73.5,,S
+0,2,Nasser,male,32.5,1,0,237736,30.0708,,C
+1,2,Webber,female,32.5,0,0,27267,13,E101,S
+0,1,White,male,54,0,1,35281,77.2875,D26,S
+1,3,Nicola-Yarred,male,12,1,0,2651,11.2417,,C
+1,3,Madsen,male,24,0,0,C 17369,7.1417,,S
+0,3,Ekstrom,male,45,0,0,347061,6.975,,S
+0,3,Drazenoic,male,33,0,0,349241,7.8958,,C
+0,3,Coelho,male,20,0,0,SOTON/O.Q. 3101307,7.05,,S
+0,3,Robins,female,47,1,0,A/5. 3337,14.5,,S
+1,2,Weisz,female,29,1,0,228414,26,,S
+0,2,Sobey,male,25,0,0,C.A. 29178,13,,S
+0,2,Richard,male,23,0,0,SC/PARIS 2133,15.0458,,C
+1,1,Newsom,female,19,0,2,11752,26.2833,D47,S
+0,1,Futrelle,male,37,1,0,113803,53.1,C123,S
+0,3,Osen,male,16,0,0,7534,9.2167,,S
+0,1,Giglio,male,24,0,0,PC 17593,79.2,B86,C
+1,3,Nysten,female,22,0,0,347081,7.75,,S
+1,3,Hakkarainen,female,24,1,0,STON/O2. 3101279,15.85,,S
+0,3,Burke,male,19,0,0,365222,6.75,,Q
+0,2,Andrew,male,18,0,0,231945,11.5,,S
+0,2,Nicholls,male,19,1,1,C.A. 33112,36.75,,S
+1,3,Andersson,male,27,0,0,350043,7.7958,,S
+0,3,Ford,female,9,2,2,W./C. 6608,34.375,,S
+0,2,Navratil,male,36.5,0,2,230080,26,F2,S
+0,2,Byles,male,42,0,0,244310,13,,S
+0,2,Bateman,male,51,0,0,S.O.P. 1166,12.525,,S
+1,1,Pears,female,22,1,0,113776,66.6,C2,S
+0,3,Meo,male,55.5,0,0,A.5. 11206,8.05,,S
+0,3,van,male,40.5,0,2,A/5. 851,14.5,,S
+0,1,Williams,male,51,0,1,PC 17597,61.3792,,C
+1,3,Gilnagh,female,16,0,0,35851,7.7333,,Q
+0,3,Corn,male,30,0,0,SOTON/OQ 392090,8.05,,S
+0,3,Cribb,male,44,0,1,371362,16.1,,S
+1,2,Watt,female,40,0,0,C.A. 33595,15.75,,S
+0,3,Bengtsson,male,26,0,0,347068,7.775,,S
+0,3,Calic,male,17,0,0,315093,8.6625,,S
+0,3,Panula,male,1,4,1,3101295,39.6875,,S
+1,3,Goldsmith,male,9,0,2,363291,20.525,,S
+0,3,Skoog,female,45,1,4,347088,27.9,,S
+0,3,Ling,male,28,0,0,1601,56.4958,,S
+0,1,Van,male,61,0,0,111240,33.5,B19,S
+0,3,Rice,male,4,4,1,382652,29.125,,Q
+1,3,Johnson,female,1,1,1,347742,11.1333,,S
+0,3,Sivola,male,21,0,0,STON/O 2. 3101280,7.925,,S
+0,1,Smith,male,56,0,0,17764,30.6958,A7,C
+0,3,Klasen,male,18,1,1,350404,7.8542,,S
+0,1,Isham,female,50,0,0,PC 17595,28.7125,C49,C
+0,2,Hale,male,30,0,0,250653,13,,S
+0,3,Leonard,male,36,0,0,LINE,0,,S
+0,3,Asplund,male,9,4,2,347077,31.3875,,S
+1,2,Becker,male,1,2,1,230136,39,F4,S
+1,3,Kink-Heilmann,female,4,0,2,315153,22.025,,S
+1,1,Romaine,male,45,0,0,111428,26.55,,S
+0,3,Bourke,male,40,1,1,364849,15.5,,Q
+0,3,Turcin,male,36,0,0,349247,7.8958,,S
+1,2,Pinsky,female,32,0,0,234604,13,,S
+0,2,Carbines,male,19,0,0,28424,13,,S
+1,3,Andersen-Jensen,female,19,1,0,350046,7.8542,,S
+1,2,Navratil,male,3,1,1,230080,26,F2,S
+1,1,Brown,female,44,0,0,PC 17610,27.7208,B4,C
+1,1,Lurette,female,58,0,0,PC 17569,146.5208,B80,C
+0,3,Olsen,male,42,0,1,4579,8.4042,,S
+0,2,Yrois,female,24,0,0,248747,13,,S
+0,3,Vande,male,28,0,0,345770,9.5,,S
+0,3,Johanson,male,34,0,0,3101264,6.4958,,S
+0,3,Youseff,male,45.5,0,0,2628,7.225,,C
+1,3,Cohen,male,18,0,0,A/5 3540,8.05,,S
+0,3,Strom,female,2,0,1,347054,10.4625,G6,S
+0,3,Backstrom,male,32,1,0,3101278,15.85,,S
+1,3,Albimona,male,26,0,0,2699,18.7875,,C
+1,3,Carr,female,16,0,0,367231,7.75,,Q
+1,1,Blank,male,40,0,0,112277,31,A31,C
+0,3,Ali,male,24,0,0,SOTON/O.Q. 3101311,7.05,,S
+1,2,Cameron,female,35,0,0,F.C.C. 13528,21,,S
+0,3,Perkin,male,22,0,0,A/5 21174,7.25,,S
+0,2,Givard,male,30,0,0,250646,13,,S
+1,1,Newell,female,31,1,0,35273,113.275,D36,C
+1,3,Honkanen,female,27,0,0,STON/O2. 3101283,7.925,,S
+0,2,Jacobsohn,male,42,1,0,243847,27,,S
+1,1,Bazzani,female,32,0,0,11813,76.2917,D15,C
+0,2,Harris,male,30,0,0,W/C 14208,10.5,,S
+1,3,Sunderland,male,16,0,0,SOTON/OQ 392089,8.05,,S
+0,2,Bracken,male,27,0,0,220367,13,,S
+0,3,Green,male,51,0,0,21440,8.05,,S
+1,1,Hoyt,male,38,1,0,19943,90,C93,S
+0,3,Berglund,male,22,0,0,PP 4348,9.35,,S
+1,2,Mellors,male,19,0,0,SW/PP 751,10.5,,S
+0,3,Lovell,male,20.5,0,0,A/5 21173,7.25,,S
+0,2,Fahlstrom,male,18,0,0,236171,13,,S
+1,1,Harris,female,35,1,0,36973,83.475,C83,S
+0,3,Larsson,male,29,0,0,347067,7.775,,S
+0,2,Sjostedt,male,59,0,0,237442,13.5,,S
+1,3,Asplund,female,5,4,2,347077,31.3875,,S
+0,2,Leyson,male,24,0,0,C.A. 29566,10.5,,S
+0,2,Hold,male,44,1,0,26707,26,,S
+1,2,Collyer,female,8,0,2,C.A. 31921,26.25,,S
+0,2,Pengelly,male,19,0,0,28665,10.5,,S
+0,2,Hunt,male,33,0,0,SCO/W 1585,12.275,,S
+0,2,Coleridge,male,29,0,0,W./C. 14263,10.5,,S
+0,3,Maenpaa,male,22,0,0,STON/O 2. 3101275,7.125,,S
+0,3,Attalah,male,30,0,0,2694,7.225,,C
+0,1,Minahan,male,44,2,0,19928,90,C78,Q
+0,3,Lindahl,female,25,0,0,347071,7.775,,S
+1,2,Hamalainen,female,24,0,2,250649,14.5,,S
+1,1,Beckwith,male,37,1,1,11751,52.5542,D35,S
+0,2,Carter,male,54,1,0,244252,26,,S
+0,3,Strom,female,29,1,1,347054,10.4625,G6,S
+0,1,Stead,male,62,0,0,113514,26.55,C87,S
+0,3,Lobb,male,30,1,0,A/5. 3336,16.1,,S
+0,3,Rosblom,female,41,0,2,370129,20.2125,,S
+1,3,Touma,female,29,0,2,2650,15.2458,,C
+1,1,Cherry,female,30,0,0,110152,86.5,B77,S
+1,1,Ward,female,35,0,0,PC 17755,512.3292,,C
+1,2,Parrish,female,50,0,1,230433,26,,S
+1,3,Asplund,male,3,4,2,347077,31.3875,,S
+0,1,Taussig,male,52,1,1,110413,79.65,E67,S
+0,1,Harrison,male,40,0,0,112059,0,B94,S
+0,2,Reeves,male,36,0,0,C.A. 17248,10.5,,S
+0,3,Panula,male,16,4,1,3101295,39.6875,,S
+1,3,Persson,male,25,1,0,347083,7.775,,S
+1,1,Graham,female,58,0,1,PC 17582,153.4625,C125,S
+1,1,Bissette,female,35,0,0,PC 17760,135.6333,C99,S
+1,3,Tornquist,male,25,0,0,LINE,0,,S
+1,2,Mellinger,female,41,0,1,250644,19.5,,S
+0,1,Natsch,male,37,0,1,PC 17596,29.7,C118,C
+1,1,Andrews,female,63,1,0,13502,77.9583,D7,S
+0,3,Lindblom,female,45,0,0,347073,7.75,,S
+0,3,Rice,male,7,4,1,382652,29.125,,Q
+1,3,Abbott,female,35,1,1,C.A. 2673,20.25,,S
+0,3,Duane,male,65,0,0,336439,7.75,,Q
+0,3,Olsson,male,28,0,0,347464,7.8542,,S
+0,3,de,male,16,0,0,345778,9.5,,S
+1,3,Dorking,male,19,0,0,A/5. 10482,8.05,,S
+0,3,Stankovic,male,33,0,0,349239,8.6625,,C
+1,3,de,male,30,0,0,345774,9.5,,S
+0,3,Naidenoff,male,22,0,0,349206,7.8958,,S
+1,2,Hosono,male,42,0,0,237798,13,,S
+1,3,Connolly,female,22,0,0,370373,7.75,,Q
+1,1,Barber,female,26,0,0,19877,78.85,,S
+1,1,Bishop,female,19,1,0,11967,91.0792,B49,C
+0,2,Levy,male,36,0,0,SC/Paris 2163,12.875,D,C
+0,3,Haas,female,24,0,0,349236,8.85,,S
+0,3,Mineff,male,24,0,0,349233,7.8958,,S
+0,3,Hanna,male,23.5,0,0,2693,7.2292,,C
+0,1,Allison,female,2,1,2,113781,151.55,C22 C26,S
+1,1,Baxter,female,50,0,1,PC 17558,247.5208,B58 B60,C
+0,3,Johnson,male,19,0,0,LINE,0,,S
+1,1,Allison,male,0.92,1,2,113781,151.55,C22 C26,S
+1,1,Penasco,female,17,1,0,PC 17758,108.9,C65,C
+0,2,Abelson,male,30,1,0,P/PP 3381,24,,C
+1,1,Francatelli,female,30,0,0,PC 17485,56.9292,E36,C
+1,1,Hays,female,24,0,0,11767,83.1583,C54,C
+1,1,Ryerson,female,18,2,2,PC 17608,262.375,B57 B59 B63 B66,C
+0,2,Lahtinen,female,26,1,1,250651,26,,S
+0,3,Hendekovic,male,28,0,0,349243,7.8958,,S
+0,2,Hart,male,43,1,1,F.C.C. 13529,26.25,,S
+1,3,Nilsson,female,26,0,0,347470,7.8542,,S
+1,2,Kantor,female,24,1,0,244367,26,,S
+0,2,Moraweck,male,54,0,0,29011,14,,S
+1,1,Wick,female,31,0,2,36928,164.8667,C7,S
+1,1,Spedden,female,40,1,1,16966,134.5,E34,C
+0,3,Dennis,male,22,0,0,A/5 21172,7.25,,S
+0,3,Danoff,male,27,0,0,349219,7.8958,,S
+1,2,Slayter,female,30,0,0,234818,12.35,,Q
+1,2,Caldwell,female,22,1,1,248738,29,,S
+1,1,Young,female,36,0,0,PC 17760,135.6333,C32,C
+0,3,Nysveen,male,61,0,0,345364,6.2375,,S
+1,2,Ball,female,36,0,0,28551,13,D,S
+1,3,Goldsmith,female,31,1,1,363291,20.525,,S
+1,1,Hippach,female,16,0,1,111361,57.9792,B18,C
+0,1,Partner,male,45.5,0,0,113043,28.5,C124,S
+0,1,Graham,male,38,0,1,PC 17582,153.4625,C91,S
+0,3,Vander,male,16,2,0,345764,18,,S
+0,1,Pears,male,29,1,0,113776,66.6,C2,S
+1,1,Burns,female,41,0,0,16966,134.5,E40,C
+1,3,Dahl,male,45,0,0,7598,8.05,,S
+0,1,Blackwell,male,45,0,0,113784,35.5,T,S
+1,2,Navratil,male,2,1,1,230080,26,F2,S
+1,1,Fortune,female,24,3,2,19950,263,C23 C25 C27,S
+0,2,Collander,male,28,0,0,248740,13,,S
+0,2,Sedgwick,male,25,0,0,244361,13,,S
+0,2,Fox,male,36,0,0,229236,13,,S
+1,2,Brown,female,24,0,0,248733,13,F33,S
+1,2,Smith,female,40,0,0,31418,13,,S
+1,3,Coutts,male,3,1,1,C.A. 37671,15.9,,S
+0,3,Dimic,male,42,0,0,315088,8.6625,,S
+0,3,Odahl,male,23,0,0,7267,9.225,,S
+0,3,Elias,male,15,1,1,2695,7.2292,,C
+0,3,Arnold-Franchi,male,25,1,0,349237,17.8,,S
+0,3,Vanden,male,28,0,0,345783,9.5,,S
+1,1,Bowerman,female,22,0,1,113505,55,E33,S
+0,2,Funk,female,38,0,0,237671,13,,S
+0,3,Skoog,male,40,1,4,347088,27.9,,S
+0,2,del,male,29,1,0,SC/PARIS 2167,27.7208,,C
+0,3,Barbara,female,45,0,1,2691,14.4542,,C
+0,3,Asim,male,35,0,0,SOTON/O.Q. 3101310,7.05,,S
+0,3,Adahl,male,30,0,0,C 7076,7.25,,S
+1,1,Warren,female,60,1,0,110813,75.25,D37,C
+1,1,Aubart,female,24,0,0,PC 17477,69.3,B35,C
+1,1,Harder,male,25,1,0,11765,55.4417,E50,C
+0,3,Wiklund,male,18,1,0,3101267,6.4958,,S
+0,3,Beavan,male,19,0,0,323951,8.05,,S
+0,1,Ringhini,male,22,0,0,PC 17760,135.6333,,C
+0,3,Palsson,female,3,3,1,349909,21.075,,S
+1,3,Landergren,female,22,0,0,C 7077,7.25,,S
+0,1,Widener,male,27,0,2,113503,211.5,C82,C
+0,3,Betros,male,20,0,0,2648,4.0125,,C
+0,3,Gustafsson,male,19,0,0,347069,7.775,,S
+1,1,Bidois,female,42,0,0,PC 17757,227.525,,C
+1,3,Nakid,female,1,0,2,2653,15.7417,,C
+0,3,Tikkanen,male,32,0,0,STON/O 2. 3101293,7.925,,S
+1,1,Holverson,female,35,1,0,113789,52,,S
+0,2,Davies,male,18,0,0,S.O.C. 14879,73.5,,S
+0,3,Goodwin,male,1,5,2,CA 2144,46.9,,S
+1,2,Buss,female,36,0,0,27849,13,,S
+1,2,Lehmann,female,17,0,0,SC 1748,12,,C
+1,1,Carter,male,36,1,2,113760,120,B96 B98,S
+1,3,Jansson,male,21,0,0,350034,7.7958,,S
+0,3,Gustafsson,male,28,2,0,3101277,7.925,,S
+1,1,Newell,female,23,1,0,35273,113.275,D36,C
+1,3,Sandstrom,female,24,0,2,PP 9549,16.7,G6,S
+0,3,Johansson,male,22,0,0,350052,7.7958,,S
+0,3,Olsson,female,31,0,0,350407,7.8542,,S
+0,2,McKane,male,46,0,0,28403,26,,S
+0,2,Pain,male,23,0,0,244278,10.5,,S
+1,2,Trout,female,28,0,0,240929,12.65,,S
+1,3,Niskanen,male,39,0,0,STON/O 2. 3101289,7.925,,S
+0,3,Adams,male,26,0,0,341826,8.05,,S
+0,3,Jussila,female,21,1,0,4137,9.825,,S
+0,3,Hakkarainen,male,28,1,0,STON/O2. 3101279,15.85,,S
+0,3,Oreskovic,female,20,0,0,315096,8.6625,,S
+0,2,Gale,male,34,1,0,28664,21,,S
+0,3,Widegren,male,51,0,0,347064,7.75,,S
+1,2,Richards,male,3,1,1,29106,18.75,,S
+0,3,Birkeland,male,21,0,0,312992,7.775,,S
+1,1,Minahan,female,33,1,0,19928,90,C78,Q
+1,3,Sundman,male,44,0,0,STON/O 2. 3101269,7.925,,S
+1,2,Drew,female,34,1,1,28220,32.5,,S
+1,2,Silven,female,18,0,2,250652,13,,S
+0,2,Matthews,male,30,0,0,28228,13,,S
+0,3,Van,female,10,0,2,345773,24.15,,S
+0,3,Charters,male,21,0,0,A/5. 13032,7.7333,,Q
+0,3,Zimmerman,male,29,0,0,315082,7.875,,S
+0,3,Danbom,female,28,1,1,347080,14.4,,S
+0,3,Rosblom,male,18,1,1,370129,20.2125,,S
+1,2,Clarke,female,28,1,0,2003,26,,S
+1,2,Phillips,female,19,0,0,250655,26,,S
+1,3,Pickard,male,32,0,0,SOTON/O.Q. 392078,8.05,E10,S
+1,1,Bjornstrom-Steffansson,male,28,0,0,110564,26.55,C52,S
+1,2,Louch,female,42,1,0,SC/AH 3085,26,,S
+0,3,Kallio,male,17,0,0,STON/O 2. 3101274,7.125,,S
+0,1,Silvey,male,50,1,0,13507,55.9,E44,S
+1,1,Carter,female,14,1,2,113760,120,B96 B98,S
+0,3,Ford,female,21,2,2,W./C. 6608,34.375,,S
+1,2,Richards,female,24,2,3,29106,18.75,,S
+0,1,Fortune,male,64,1,4,19950,263,C23 C25 C27,S
+0,2,Kvillner,male,31,0,0,C.A. 18723,10.5,,S
+1,2,Hart,female,45,1,1,F.C.C. 13529,26.25,,S
+0,3,Hampe,male,20,0,0,345769,9.5,,S
+0,3,Petterson,male,25,1,0,347076,7.775,,S
+1,2,Reynaldo,female,28,0,0,230434,13,,S
+1,1,Dodge,male,4,0,2,33638,81.8583,A34,S
+1,2,Mellinger,female,13,0,1,250644,19.5,,S
+1,1,Seward,male,34,0,0,113794,26.55,,S
+1,3,Baclini,female,5,2,1,2666,19.2583,,C
+1,1,Peuchen,male,52,0,0,113786,30.5,C104,S
+0,2,West,male,36,1,2,C.A. 34651,27.75,,S
+0,1,Foreman,male,30,0,0,113051,27.75,C111,C
+1,1,Goldenberg,male,49,1,0,17453,89.1042,C92,C
+1,3,Jalsevac,male,29,0,0,349240,7.8958,,C
+0,1,Millet,male,65,0,0,13509,26.55,E38,S
+1,2,Toomey,female,50,0,0,F.C.C. 13531,10.5,,S
+1,1,Anderson,male,48,0,0,19952,26.55,E12,S
+0,3,Morley,male,34,0,0,364506,8.05,,S
+0,1,Gee,male,47,0,0,111320,38.5,E63,S
+0,2,Milling,male,48,0,0,234360,13,,S
+0,3,Goncalves,male,38,0,0,SOTON/O.Q. 3101306,7.05,,S
+0,1,Smart,male,56,0,0,113792,26.55,,S
+1,3,Baclini,female,0.75,2,1,2666,19.2583,,C
+0,3,Cacic,male,38,0,0,315089,8.6625,,S
+1,2,West,female,33,1,2,C.A. 34651,27.75,,S
+1,2,Jerwan,female,23,0,0,SC/AH Basle 541,13.7917,D,C
+0,3,Strandberg,female,22,0,0,7553,9.8375,,S
+0,2,Renouf,male,34,1,0,31027,21,,S
+0,3,Braund,male,29,1,0,3460,7.0458,,S
+0,3,Karlsson,male,22,0,0,350060,7.5208,,S
+1,3,Hirvonen,female,2,0,1,3101298,12.2875,,S
+0,3,Goodwin,male,9,5,2,CA 2144,46.9,,S
+0,3,Rouse,male,50,0,0,A/5 3594,8.05,,S
+1,3,Turkula,female,63,0,0,4134,9.5875,,S
+1,1,Bishop,male,25,1,0,11967,91.0792,B49,C
+1,1,Hoyt,female,35,1,0,19943,90,C93,S
+0,1,Kent,male,58,0,0,11771,29.7,B37,C
+0,3,Somerton,male,30,0,0,A.5. 18509,8.05,,S
+1,3,Coutts,male,9,1,1,C.A. 37671,15.9,,S
+0,3,Windelov,male,21,0,0,SOTON/OQ 3101317,7.25,,S
+0,1,Molson,male,55,0,0,113787,30.5,C30,S
+0,1,Artagaveytia,male,71,0,0,PC 17609,49.5042,,C
+0,3,Stanley,male,21,0,0,A/4 45380,8.05,,S
+1,1,Eustis,female,54,1,0,36947,78.2667,D20,C
+0,1,Allison,female,25,1,2,113781,151.55,C22 C26,S
+0,3,Svensson,male,24,0,0,350035,7.7958,,S
+0,3,Calic,male,17,0,0,315086,8.6625,,S
+0,3,Canavan,female,21,0,0,364846,7.75,,Q
+0,3,Laitinen,female,37,0,0,4135,9.5875,,S
+1,1,Maioni,female,16,0,0,110152,86.5,B79,S
+0,1,Penasco,male,18,1,0,PC 17758,108.9,C65,C
+1,2,Quick,female,33,0,2,26360,26,,S
+0,3,Olsen,male,28,0,0,C 4001,22.525,,S
+1,3,Lang,male,26,0,0,1601,56.4958,,S
+1,3,Daly,male,29,0,0,382651,7.75,,Q
+1,1,McGough,male,36,0,0,PC 17473,26.2875,E25,S
+1,1,Rothschild,female,54,1,0,PC 17603,59.4,,C
+0,3,Coleff,male,24,0,0,349209,7.4958,,S
+0,1,Walker,male,47,0,0,36967,34.0208,D46,S
+1,2,Lemore,female,34,0,0,C.A. 34260,10.5,F33,S
+1,2,Angle,female,36,1,0,226875,26,,S
+0,3,Pavlovic,male,32,0,0,349242,7.8958,,S
+1,1,Perreault,female,30,0,0,12749,93.5,B73,S
+0,3,Vovk,male,22,0,0,349252,7.8958,,S
+1,1,Hippach,female,44,0,1,111361,57.9792,B18,C
+0,3,Farrell,male,40.5,0,0,367232,7.75,,Q
+1,2,Ridsdale,female,50,0,0,W./C. 14258,10.5,,S
+0,3,Salonen,male,39,0,0,3101296,7.925,,S
+0,2,Hocking,male,23,2,1,29104,11.5,,S
+1,2,Quick,female,2,1,1,26360,26,,S
+0,3,Elias,male,17,1,1,2690,7.2292,,C
+0,3,Cacic,female,30,0,0,315084,8.6625,,S
+1,2,Hart,female,7,0,2,F.C.C. 13529,26.25,,S
+0,1,Butt,male,45,0,0,113050,26.55,B38,S
+1,1,LeRoy,female,30,0,0,PC 17761,106.425,,C
+1,1,Frolicher,female,22,0,2,13568,49.5,B39,C
+1,1,Crosby,female,36,0,2,WE/P 5735,71,B22,S
+0,3,Andersson,female,9,4,2,347082,31.275,,S
+0,3,Andersson,female,11,4,2,347082,31.275,,S
+1,2,Beane,male,32,1,0,2908,26,,S
+0,1,Douglas,male,50,1,0,PC 17761,106.425,C86,C
+0,1,Nicholson,male,64,0,0,693,26,,S
+1,2,Beane,female,19,1,0,2908,26,,S
+0,3,Goldsmith,male,33,1,1,363291,20.525,,S
+1,2,Davies,male,8,1,1,C.A. 33112,36.75,,S
+1,1,Thayer,male,17,0,2,17421,110.8833,C70,C
+0,2,Sharp,male,27,0,0,244358,26,,S
+1,3,Leeni,male,22,0,0,2620,7.225,,C
+1,3,Ohman,female,22,0,0,347085,7.775,,S
+0,1,Wright,male,62,0,0,113807,26.55,,S
+1,1,Duff,female,48,1,0,11755,39.6,A16,C
+1,1,Taussig,female,39,1,1,110413,79.65,E67,S
+1,3,de,female,36,1,0,345572,17.4,,S
+0,3,Sivic,male,40,0,0,349251,7.8958,,S
+0,2,Norman,male,28,0,0,218629,13.5,,S
+0,3,Davies,male,24,2,0,A/4 48871,24.15,,S
+0,3,Stoytcheff,male,19,0,0,349205,7.8958,,S
+0,3,Palsson,female,29,0,4,349909,21.075,,S
+1,3,Jonsson,male,32,0,0,350417,7.8542,,S
+1,2,Harris,male,62,0,0,S.W./PP 752,10.5,,S
+1,1,Appleton,female,53,2,0,11769,51.4792,C101,S
+1,1,Flynn,male,36,0,0,PC 17474,26.3875,E25,S
+0,3,Rush,male,16,0,0,A/4. 20589,8.05,,S
+0,3,Patchett,male,19,0,0,358585,14.5,,S
+1,2,Garside,female,34,0,0,243880,13,,S
+1,1,Silvey,female,39,1,0,13507,55.9,E44,S
+1,3,Jussila,male,32,0,0,STON/O 2. 3101286,7.925,,S
+1,2,Christy,female,25,1,1,237789,30,,S
+1,1,Thayer,female,39,1,1,17421,110.8833,C68,C
+0,2,Downton,male,54,0,0,28403,26,,S
+0,1,Ross,male,36,0,0,13049,40.125,A10,C
+1,1,Taussig,female,18,0,2,110413,79.65,E68,S
+0,2,Jarvis,male,47,0,0,237565,15,,S
+1,1,Frolicher-Stehli,male,60,1,1,13567,79.2,B41,C
+0,3,Gilinski,male,22,0,0,14973,8.05,,S
+0,3,Rintamaki,male,35,0,0,STON/O 2. 3101273,7.125,,S
+1,1,Stephenson,female,52,1,0,36947,78.2667,D20,C
+0,3,Elsbury,male,47,0,0,A/5 3902,7.25,,S
+0,2,Chapman,male,37,1,0,SC/AH 29037,26,,S
+0,3,Van,male,36,1,1,345773,24.15,,S
+0,3,Johnson,male,49,0,0,LINE,0,,S
+1,1,Duff,male,49,1,0,PC 17485,56.9292,A20,C
+1,2,Jacobsohn,female,24,2,1,243847,27,,S
+0,3,Torber,male,44,0,0,364511,8.05,,S
+1,1,Homer,male,35,0,0,111426,26.55,,C
+0,3,Lindell,male,36,1,0,349910,15.55,,S
+0,3,Karaic,male,30,0,0,349246,7.8958,,S
+1,1,Daniel,male,27,0,0,113804,30.5,,S
+1,2,Laroche,female,22,1,2,SC/Paris 2123,41.5792,,C
+1,1,Shutes,female,40,0,0,PC 17582,153.4625,C125,S
+0,3,Andersson,female,39,1,5,347082,31.275,,S
+0,3,Brocklebank,male,35,0,0,364512,8.05,,S
+1,2,Herman,female,24,1,2,220845,65,,S
+0,3,Danbom,male,34,1,1,347080,14.4,,S
+0,3,Lobb,female,26,1,0,A/5. 3336,16.1,,S
+1,2,Becker,female,4,2,1,230136,39,F4,S
+0,2,Gavey,male,26,0,0,31028,10.5,,S
+0,3,Yasbeck,male,27,1,0,2659,14.4542,,C
+1,1,Kimball,male,42,1,0,11753,52.5542,D19,S
+1,3,Nakid,male,20,1,1,2653,15.7417,,C
+0,3,Hansen,male,21,0,0,350029,7.8542,,S
+0,3,Bowen,male,21,0,0,54636,16.1,,S
+0,1,Sutton,male,61,0,0,36963,32.3208,D50,S
+0,2,Kirkland,male,57,0,0,219533,12.35,,Q
+1,1,Longley,female,21,0,0,13502,77.9583,D9,S
+0,3,Bostandyeff,male,26,0,0,349224,7.8958,,S
+1,1,Barkworth,male,80,0,0,27042,30,A23,S
+0,3,Lundahl,male,51,0,0,347743,7.0542,,S
+1,1,Stahelin-Maeglin,male,32,0,0,13214,30.5,B50,C
+0,3,Skoog,female,9,3,2,347088,27.9,,S
+1,2,Davis,female,28,0,0,237668,13,,S
+0,3,Leinonen,male,32,0,0,STON/O 2. 3101292,7.925,,S
+0,2,Collyer,male,31,1,1,C.A. 31921,26.25,,S
+0,3,Panula,female,41,0,5,3101295,39.6875,,S
+0,3,Jensen,male,20,0,0,350050,7.8542,,S
+1,1,Sagesser,female,24,0,0,PC 17477,69.3,B35,C
+0,3,Skoog,female,2,3,2,347088,27.9,,S
+1,3,Baclini,female,0.75,2,1,2666,19.2583,,C
+1,1,Harper,male,48,1,0,PC 17572,76.7292,D33,C
+0,3,Cor,male,19,0,0,349231,7.8958,,S
+1,1,Simonius-Blumer,male,56,0,0,13213,35.5,A26,C
+1,3,Stanley,female,23,0,0,CA. 2314,7.55,,S
+1,2,Doling,female,18,0,1,231919,23,,S
+0,3,Kalvik,male,21,0,0,8475,8.4333,,S
+0,3,Hegarty,female,18,0,0,365226,6.75,,Q
+0,2,Hickman,male,24,2,0,S.O.C. 14879,73.5,,S
+0,3,Bourke,female,32,1,1,364849,15.5,,Q
+0,2,Eitemiller,male,23,0,0,29751,13,,S
+0,1,Newell,male,58,0,2,35273,113.275,D48,C
+1,1,Frauenthal,male,50,2,0,PC 17611,133.65,,S
+0,3,Badt,male,40,0,0,2623,7.225,,C
+0,1,Colley,male,47,0,0,5727,25.5875,E58,S
+0,3,Coleff,male,36,0,0,349210,7.4958,,S
+1,3,Lindqvist,male,20,1,0,STON/O 2. 3101285,7.925,,S
+0,2,Hickman,male,32,2,0,S.O.C. 14879,73.5,,S
+0,2,Butler,male,25,0,0,234686,13,,S
+0,3,Cook,male,43,0,0,A/5 3536,8.05,,S
+1,2,Brown,female,40,1,1,29750,39,,S
+0,1,Davidson,male,31,1,0,F.C. 12750,52,B71,S
+0,2,Mitchell,male,70,0,0,C.A. 24580,10.5,,S
+1,2,Wilhelms,male,31,0,0,244270,13,,S
+0,3,Edvardsson,male,18,0,0,349912,7.775,,S
+0,3,Sawyer,male,24.5,0,0,342826,8.05,,S
+1,3,Turja,female,18,0,0,4138,9.8417,,S
+0,3,Goodwin,female,43,1,6,CA 2144,46.9,,S
+1,1,Cardeza,male,36,0,1,PC 17755,512.3292,B51 B53 B55,C
+1,1,Hassab,male,27,0,0,PC 17572,76.7292,D49,C
+0,3,Olsvigen,male,20,0,0,6563,9.225,,S
+0,3,Goodwin,male,14,5,2,CA 2144,46.9,,S
+0,2,Brown,male,60,1,1,29750,39,,S
+0,2,Laroche,male,25,1,2,SC/Paris 2123,41.5792,,C
+0,3,Panula,male,14,4,1,3101295,39.6875,,S
+0,3,Dakic,male,19,0,0,349228,10.1708,,S
+0,3,Fischer,male,18,0,0,350036,7.7958,,S
+1,1,Madill,female,15,0,1,24160,211.3375,B5,S
+1,1,Dick,male,31,1,0,17474,57,B20,S
+1,3,Karun,female,4,0,1,349256,13.4167,,C
+0,3,Saad,male,25,0,0,2672,7.225,,C
+0,1,Weir,male,60,0,0,113800,26.55,,S
+0,2,Chapman,male,52,0,0,248731,13.5,,S
+0,3,Kelly,male,44,0,0,363592,8.05,,S
+0,1,Thayer,male,49,1,1,17421,110.8833,C68,C
+0,3,Humblen,male,42,0,0,348121,7.65,F G63,S
+1,1,Astor,female,18,1,0,PC 17757,227.525,C62 C64,C
+1,1,Silverthorne,male,35,0,0,PC 17475,26.2875,E24,S
+0,3,Barbara,female,18,0,1,2691,14.4542,,C
+0,3,Gallagher,male,25,0,0,36864,7.7417,,Q
+0,3,Hansen,male,26,1,0,350025,7.8542,,S
+0,2,Morley,male,39,0,0,250655,26,,S
+1,2,Kelly,female,45,0,0,223596,13.5,,S
+1,1,Calderhead,male,42,0,0,PC 17476,26.2875,E24,S
+1,1,Cleaver,female,22,0,0,113781,151.55,,S
+1,1,Mayne,female,24,0,0,PC 17482,49.5042,C90,C
+1,1,Taylor,male,48,1,0,19996,52,C126,S
+0,3,Larsson,male,29,0,0,7545,9.4833,,S
+0,2,Greenberg,male,52,0,0,250647,13,,S
+0,3,Soholt,male,19,0,0,348124,7.65,F G73,S
+1,1,Endres,female,38,0,0,PC 17757,227.525,C45,C
+1,2,Troutt,female,27,0,0,34218,10.5,E101,S
+0,3,Johnson,male,33,0,0,347062,7.775,,S
+1,2,Harper,female,6,0,1,248727,33,,S
+0,3,Jensen,male,17,1,0,350048,7.0542,,S
+0,2,Gillespie,male,34,0,0,12233,13,,S
+0,2,Hodges,male,50,0,0,250643,13,,S
+1,1,Chambers,male,27,1,0,113806,53.1,E8,S
+0,3,Oreskovic,male,20,0,0,315094,8.6625,,S
+1,2,Renouf,female,30,3,0,31027,21,,S
+0,2,Bryhl,male,25,1,0,236853,26,,S
+0,3,Ilmakangas,female,25,1,0,STON/O2. 3101271,7.925,,S
+1,1,Allen,female,29,0,0,24160,211.3375,B5,S
+0,3,Hassan,male,11,0,0,2699,18.7875,,C
+0,2,Berriman,male,23,0,0,28425,13,,S
+0,2,Troupiansky,male,23,0,0,233639,13,,S
+0,3,Williams,male,28.5,0,0,54636,16.1,,S
+0,3,Ford,female,48,1,3,W./C. 6608,34.375,,S
+1,1,Lesurer,male,35,0,0,PC 17755,512.3292,B101,C
+0,1,Cavendish,male,36,1,0,19877,78.85,C46,S
+1,1,Ryerson,female,21,2,2,PC 17608,262.375,B57 B59 B63 B66,C
+0,3,McNamee,male,24,1,0,376566,16.1,,S
+1,3,Stranden,male,31,0,0,STON/O 2. 3101288,7.925,,S
+0,1,Crosby,male,70,1,1,WE/P 5735,71,B22,S
+0,3,Abbott,male,16,1,1,C.A. 2673,20.25,,S
+1,2,Sinkkonen,female,30,0,0,250648,13,,S
+0,1,Marvin,male,19,1,0,113773,53.1,D30,S
+0,3,Connaghton,male,31,0,0,335097,7.75,,Q
+1,2,Wells,female,4,1,1,29103,23,,S
+1,3,Moor,male,6,0,1,392096,12.475,E121,S
+0,3,Vande,male,33,0,0,345780,9.5,,S
+0,3,Jonkoff,male,23,0,0,349204,7.8958,,S
+1,2,Herman,female,48,1,2,220845,65,,S
+1,2,Hamalainen,male,0.67,1,1,250649,14.5,,S
+0,3,Carlsson,male,28,0,0,350042,7.7958,,S
+0,2,Bailey,male,18,0,0,29108,11.5,,S
+0,3,Theobald,male,34,0,0,363294,8.05,,S
+1,1,Rothes,female,33,0,0,110152,86.5,B77,S
+0,3,Nirva,male,41,0,0,SOTON/O2 3101272,7.125,,S
+1,3,Barah,male,20,0,0,2663,7.2292,,C
+1,1,Carter,female,36,1,2,113760,120,B96 B98,S
+0,3,Eklund,male,16,0,0,347074,7.775,,S
+1,1,Hogeboom,female,51,1,0,13502,77.9583,D11,S
+0,3,Mangan,female,30.5,0,0,364850,7.75,,Q
+0,3,Gronnestad,male,32,0,0,8471,8.3625,,S
+0,3,Lievens,male,24,0,0,345781,9.5,,S
+0,3,Jensen,male,48,0,0,350047,7.8542,,S
+0,2,Mack,female,57,0,0,S.O./P.P. 3,10.5,E77,S
+1,2,Hocking,female,54,1,3,29105,23,,S
+0,3,Myhrman,male,18,0,0,347078,7.75,,S
+1,3,Emanuel,female,5,0,0,364516,12.475,,S
+1,1,Robert,female,43,0,1,24160,211.3375,B3,S
+1,3,Ayoub,female,13,0,0,2687,7.2292,,C
+1,1,Dick,female,17,1,0,17474,57,B20,S
+0,1,Long,male,29,0,0,113501,30,D6,S
+0,3,Ali,male,25,0,0,SOTON/O.Q. 3101312,7.05,,S
+0,3,Harmer,male,25,0,0,374887,7.25,,S
+1,3,Sjoblom,female,18,0,0,3101265,7.4958,,S
+0,3,Rice,male,8,4,1,382652,29.125,,Q
+1,3,Dean,male,1,1,2,C.A. 2315,20.575,,S
+0,1,Guggenheim,male,46,0,0,PC 17593,79.2,B82 B84,C
+0,2,Gaskell,male,16,0,0,239865,26,,S
+0,3,Dantcheff,male,25,0,0,349203,7.8958,,S
+0,2,Otter,male,39,0,0,28213,13,,S
+1,1,Leader,female,49,0,0,17465,25.9292,D17,S
+1,3,Osman,female,31,0,0,349244,8.6833,,S
+0,3,Ibrahim,male,30,0,0,2685,7.2292,,C
+0,3,Van,female,30,1,1,345773,24.15,,S
+0,2,Ponesell,male,34,0,0,250647,13,,S
+1,2,Collyer,female,31,1,1,C.A. 31921,26.25,,S
+1,1,Carter,male,11,1,2,113760,120,B96 B98,S
+1,3,Thomas,male,0.42,0,1,2625,8.5167,,C
+1,3,Hedman,male,27,0,0,347089,6.975,,S
+0,3,Johansson,male,31,0,0,347063,7.775,,S
+0,1,Andrews,male,39,0,0,112050,0,A36,S
+0,3,Pettersson,female,18,0,0,347087,7.775,,S
+0,2,Meyer,male,39,0,0,248723,13,,S
+1,1,Chambers,female,33,1,0,113806,53.1,E8,S
+0,3,Alexander,male,26,0,0,3474,7.8875,,S
+0,3,Lester,male,39,0,0,A/4 48871,24.15,,S
+0,2,Slemen,male,35,0,0,28206,10.5,,S
+0,3,Andersson,female,6,4,2,347082,31.275,,S
+0,3,Tomlin,male,30.5,0,0,364499,8.05,,S
+0,3,Heininen,female,23,0,0,STON/O2. 3101290,7.925,,S
+0,2,Mallet,male,31,1,1,S.C./PARIS 2079,37.0042,,C
+0,3,Holm,male,43,0,0,C 7075,6.45,,S
+0,3,Skoog,male,10,3,2,347088,27.9,,S
+1,1,Hays,female,52,1,1,12749,93.5,B69,S
+1,3,Lulic,male,27,0,0,315098,8.6625,,S
+0,1,Reuchlin,male,38,0,0,19972,0,,S
+1,3,Moor,female,27,0,1,392096,12.475,E121,S
+0,3,Panula,male,2,4,1,3101295,39.6875,,S
+1,2,Mallet,male,1,0,2,S.C./PARIS 2079,37.0042,,C
+1,1,Stone,female,62,0,0,113572,80,B28,
+1,3,Yasbeck,female,15,1,0,2659,14.4542,,C
+1,2,Richards,male,0.83,1,1,29106,18.75,,S
+0,3,Augustsson,male,23,0,0,347468,7.8542,,S
+0,3,Allum,male,18,0,0,2223,8.3,,S
+1,1,Compton,female,39,1,1,PC 17756,83.1583,E49,C
+0,3,Pasic,male,21,0,0,315097,8.6625,,S
+1,3,Chip,male,32,0,0,1601,56.4958,,S
+0,3,Alhomaki,male,20,0,0,SOTON/O2 3101287,7.925,,S
+0,2,Mudd,male,16,0,0,S.O./P.P. 3,10.5,,S
+1,1,Serepeca,female,30,0,0,113798,31,,C
+0,3,Lemberopolous,male,34.5,0,0,2683,6.4375,,C
+0,3,Culumovic,male,17,0,0,315090,8.6625,,S
+0,3,Abbing,male,42,0,0,C.A. 5547,7.55,,S
+0,3,Markoff,male,35,0,0,349213,7.8958,,C
+0,2,Harper,male,28,0,1,248727,33,,S
+0,3,Andersson,male,4,4,2,347082,31.275,,S
+0,3,Svensson,male,74,0,0,347060,7.775,,S
+0,3,Boulos,female,9,1,1,2678,15.2458,,C
+1,1,Lines,female,16,0,1,PC 17592,39.4,D28,S
+0,2,Carter,female,44,1,0,244252,26,,S
+1,3,Aks,female,18,0,1,392091,9.35,,S
+1,1,Wick,female,45,1,1,36928,164.8667,,S
+1,1,Daly,male,51,0,0,113055,26.55,E17,S
+1,3,Baclini,female,24,0,3,2666,19.2583,,C
+0,3,Hansen,male,41,2,0,350026,14.1083,,S
+0,2,Giles,male,21,1,0,28134,11.5,,S
+1,1,Swift,female,48,0,0,17466,25.9292,D17,S
+0,2,Gill,male,24,0,0,233866,13,,S
+1,2,Bystrom,female,42,0,0,236852,13,,S
+1,2,Duran,female,27,1,0,SC/PARIS 2149,13.8583,,C
+0,1,Roebling,male,31,0,0,PC 17590,50.4958,A24,S
+1,3,Johnson,male,4,1,1,347742,11.1333,,S
+0,3,Balkic,male,26,0,0,349248,7.8958,,S
+1,1,Beckwith,female,47,1,1,11751,52.5542,D35,S
+0,1,Carlsson,male,33,0,0,695,5,B51 B53 B55,S
+0,3,Vander,male,47,0,0,345765,9,,S
+1,2,Abelson,female,28,1,0,P/PP 3381,24,,C
+1,3,Najib,female,15,0,0,2667,7.225,,C
+0,3,Gustafsson,male,20,0,0,7534,9.8458,,S
+0,3,Petroff,male,19,0,0,349212,7.8958,,S
+1,1,Potter,female,56,0,1,11767,83.1583,C50,C
+1,2,Shelley,female,25,0,1,230433,26,,S
+0,3,Markun,male,33,0,0,349257,7.8958,,S
+0,3,Dahlberg,female,22,0,0,7552,10.5167,,S
+0,2,Banfield,male,28,0,0,C.A./SOTON 34068,10.5,,S
+0,3,Sutehall,male,25,0,0,SOTON/OQ 392076,7.05,,S
+0,3,Rice,female,39,0,5,382652,29.125,,Q
+0,2,Montvila,male,27,0,0,211536,13,,S
+1,1,Graham,female,19,0,0,112053,30,B42,S
+1,1,Behr,male,26,0,0,111369,30,C148,C
+0,3,Dooley,male,32,0,0,370376,7.75,,Q
\ No newline at end of file
diff --git a/apps/simple/pdf.ts b/apps/simple/pdf.ts
index 95eef1e1f26fc2372f2ac08816398d58423acd99..afbe8f44801846ed8a517fda5cfbf3d02ad3f10f 100644
--- a/apps/simple/pdf.ts
+++ b/apps/simple/pdf.ts
@@ -3,7 +3,7 @@ import { PDFReader, VectorStoreIndex } from "llamaindex";
 async function main() {
   // Load PDF
   const reader = new PDFReader();
-  const documents = await reader.loadData("examples/brk-2022.pdf");
+  const documents = await reader.loadData("data/brk-2022.pdf");
 
   // Split text and create embeddings. Store them in a VectorStoreIndex
   const index = await VectorStoreIndex.fromDocuments(documents);
diff --git a/examples/csv.ts b/examples/csv.ts
new file mode 100644
index 0000000000000000000000000000000000000000..d1c413ce97ea06dcc8e824d472e69a8e2c5775ef
--- /dev/null
+++ b/examples/csv.ts
@@ -0,0 +1,52 @@
+import {
+  CompactAndRefine,
+  OpenAI,
+  PapaCSVReader,
+  ResponseSynthesizer,
+  serviceContextFromDefaults,
+  SimplePrompt,
+  VectorStoreIndex,
+} from "llamaindex";
+
+async function main() {
+  // Load CSV
+  const reader = new PapaCSVReader();
+  const path = "data/titanic_train.csv";
+  const documents = await reader.loadData(path);
+
+  const serviceContext = serviceContextFromDefaults({
+    llm: new OpenAI({ model: "gpt-4" }),
+  });
+
+  // Split text and create embeddings. Store them in a VectorStoreIndex
+  const index = await VectorStoreIndex.fromDocuments(documents, {
+    serviceContext,
+  });
+
+  const csvPrompt: SimplePrompt = (input) => {
+    const { context = "", query = "" } = input;
+
+    return `The following CSV file is loaded from ${path}
+\`\`\`csv
+${context}
+\`\`\`
+Given the CSV file, generate me Typescript code to answer the question: ${query}. You can use built in NodeJS functions but avoid using third party libraries.
+`;
+  };
+
+  const responseSynthesizer = new ResponseSynthesizer({
+    responseBuilder: new CompactAndRefine(serviceContext, csvPrompt),
+  });
+
+  const queryEngine = index.asQueryEngine({ responseSynthesizer });
+
+  // Query the index
+  const response = await queryEngine.query(
+    "What is the correlation between survival and age?",
+  );
+
+  // Output response
+  console.log(response.toString());
+}
+
+main().catch(console.error);
diff --git a/examples/data/brk-2022.pdf b/examples/data/brk-2022.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..876ea6a37f0fe785dffc74434e805b65a802b91f
Binary files /dev/null and b/examples/data/brk-2022.pdf differ
diff --git a/examples/data/titanic_train.csv b/examples/data/titanic_train.csv
new file mode 100644
index 0000000000000000000000000000000000000000..f7c3e9498f39d7d988ed2fe693b3cd884142e9ac
Binary files /dev/null and b/examples/data/titanic_train.csv differ
diff --git a/examples/pdf.ts b/examples/pdf.ts
index 95eef1e1f26fc2372f2ac08816398d58423acd99..afbe8f44801846ed8a517fda5cfbf3d02ad3f10f 100644
--- a/examples/pdf.ts
+++ b/examples/pdf.ts
@@ -3,7 +3,7 @@ import { PDFReader, VectorStoreIndex } from "llamaindex";
 async function main() {
   // Load PDF
   const reader = new PDFReader();
-  const documents = await reader.loadData("examples/brk-2022.pdf");
+  const documents = await reader.loadData("data/brk-2022.pdf");
 
   // Split text and create embeddings. Store them in a VectorStoreIndex
   const index = await VectorStoreIndex.fromDocuments(documents);
diff --git a/packages/core/package.json b/packages/core/package.json
index c2aabc7dbddd4e6d5ced176e8d398d30024452e9..46b2d97f2bc0f2cccc8f004369d2baac326ddbf9 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -5,6 +5,7 @@
     "@anthropic-ai/sdk": "^0.6.0",
     "lodash": "^4.17.21",
     "openai": "^4.0.0",
+    "papaparse": "^5.4.1",
     "pdf-parse": "^1.1.1",
     "replicate": "^0.16.1",
     "tiktoken-node": "^0.0.6",
@@ -14,6 +15,7 @@
   "devDependencies": {
     "@types/lodash": "^4.14.197",
     "@types/node": "^18.17.5",
+    "@types/papaparse": "^5.3.7",
     "@types/pdf-parse": "^1.1.1",
     "@types/uuid": "^9.0.2",
     "node-stdlib-browser": "^1.2.0",
diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts
index 7a9f2cbe0e9f99cda0122caf9faa06ffd9f5d140..c1949db79408b23a202a6c25cae849bf9c7c0c2a 100644
--- a/packages/core/src/index.ts
+++ b/packages/core/src/index.ts
@@ -22,6 +22,7 @@ export * from "./callbacks/CallbackManager";
 
 export * from "./readers/base";
 export * from "./readers/PDFReader";
+export * from "./readers/CSVReader";
 export * from "./readers/SimpleDirectoryReader";
 
 export * from "./storage";
diff --git a/packages/core/src/indices/BaseIndex.ts b/packages/core/src/indices/BaseIndex.ts
index 0df4f5e62370f2f673f82b00f442411a7b445db3..e1af58656aff087a9ab8a689988d43dd18f735bf 100644
--- a/packages/core/src/indices/BaseIndex.ts
+++ b/packages/core/src/indices/BaseIndex.ts
@@ -170,15 +170,3 @@ export abstract class BaseIndex<T> {
     deleteFromDocStore?: boolean,
   ): Promise<void>;
 }
-
-export interface VectorIndexOptions {
-  nodes?: BaseNode[];
-  indexStruct?: IndexDict;
-  indexId?: string;
-  serviceContext?: ServiceContext;
-  storageContext?: StorageContext;
-}
-
-export interface VectorIndexConstructorProps extends BaseIndexInit<IndexDict> {
-  vectorStore: VectorStore;
-}
diff --git a/packages/core/src/indices/vectorStore/VectorStoreIndex.ts b/packages/core/src/indices/vectorStore/VectorStoreIndex.ts
index 488dd873af24cac1039c059ae3df63f262113578..305f8e7446c517651061750d852992c2f08afccd 100644
--- a/packages/core/src/indices/vectorStore/VectorStoreIndex.ts
+++ b/packages/core/src/indices/vectorStore/VectorStoreIndex.ts
@@ -14,17 +14,27 @@ import {
 import { VectorStore } from "../../storage/vectorStore/types";
 import {
   BaseIndex,
+  BaseIndexInit,
   IndexDict,
   IndexStructType,
-  VectorIndexConstructorProps,
-  VectorIndexOptions,
 } from "../BaseIndex";
 import { VectorIndexRetriever } from "./VectorIndexRetriever";
 
+export interface VectorIndexOptions {
+  nodes?: BaseNode[];
+  indexStruct?: IndexDict;
+  indexId?: string;
+  serviceContext?: ServiceContext;
+  storageContext?: StorageContext;
+}
+
+export interface VectorIndexConstructorProps extends BaseIndexInit<IndexDict> {
+  vectorStore: VectorStore;
+}
+
 /**
  * The VectorStoreIndex, an index that stores the nodes only according to their vector embedings.
  */
-
 export class VectorStoreIndex extends BaseIndex<IndexDict> {
   vectorStore: VectorStore;
 
diff --git a/packages/core/src/readers/CSVReader.ts b/packages/core/src/readers/CSVReader.ts
new file mode 100644
index 0000000000000000000000000000000000000000..0fb5c572192e40f136744ba471e73ae7e5590143
--- /dev/null
+++ b/packages/core/src/readers/CSVReader.ts
@@ -0,0 +1,59 @@
+import { DEFAULT_FS, GenericFileSystem } from "../storage/FileSystem";
+import Papa, { ParseConfig } from "papaparse";
+import { BaseReader } from "./base";
+import { Document } from "../Node";
+
+/**
+ * papaparse-based csv parser
+ * @class CSVReader
+ * @implements BaseReader
+ */
+export class PapaCSVReader implements BaseReader {
+  private concatRows: boolean;
+  private colJoiner: string;
+  private rowJoiner: string;
+  private papaConfig?: ParseConfig;
+
+  /**
+   * Constructs a new instance of the class.
+   * @param {boolean} [concatRows=true] - whether to concatenate all rows into one document.If set to False, a Document will be created for each row.True by default.
+   * @param {string} [colJoiner=', '] - Separator to use for joining cols per row. Set to ", " by default.
+   * @param {string} [rowJoiner='\n'] - Separator to use for joining each row.Only used when `concat_rows=True`.Set to "\n" by default.
+   */
+  constructor(
+    concatRows: boolean = true,
+    colJoiner: string = ", ",
+    rowJoiner: string = "\n",
+    papaConfig?: ParseConfig
+  ) {
+    this.concatRows = concatRows;
+    this.colJoiner = colJoiner;
+    this.rowJoiner = rowJoiner;
+    this.papaConfig = papaConfig;
+  }
+
+  /**
+   * Loads data from csv files
+   * @param {string} file - The path to the file to load.
+   * @param {GenericFileSystem} [fs=DEFAULT_FS] - The file system to use for reading the file.
+   * @returns {Promise<Document[]>}
+   */
+  async loadData(
+    file: string,
+    fs: GenericFileSystem = DEFAULT_FS
+  ): Promise<Document[]> {
+    const fileContent: string = await fs.readFile(file, "utf-8");
+    const result = Papa.parse(fileContent, this.papaConfig);
+    const textList = result.data.map((row: any) => {
+      // Compatible with header row mode
+      const rowValues = Object.values(row).map((value) => String(value));
+      return rowValues.join(this.colJoiner);
+    });
+
+    if (this.concatRows) {
+      return [new Document({ text: textList.join(this.rowJoiner) })];
+    } else {
+      return textList.map((text) => new Document({ text }));
+    }
+  }
+}
diff --git a/packages/core/src/readers/SimpleDirectoryReader.ts b/packages/core/src/readers/SimpleDirectoryReader.ts
index 70b9ea686920521eb97ad0515e0ddcd44f85faff..37b528ea07580f3d5c240d12e22c86d0af0effc4 100644
--- a/packages/core/src/readers/SimpleDirectoryReader.ts
+++ b/packages/core/src/readers/SimpleDirectoryReader.ts
@@ -4,6 +4,7 @@ import { BaseReader } from "./base";
 import { CompleteFileSystem, walk } from "../storage/FileSystem";
 import { DEFAULT_FS } from "../storage/constants";
 import { PDFReader } from "./PDFReader";
+import { PapaCSVReader } from "./CSVReader";
 
 /**
  * Read a .txt file
@@ -21,6 +22,7 @@ export class TextFileReader implements BaseReader {
 const FILE_EXT_TO_READER: Record<string, BaseReader> = {
   txt: new TextFileReader(),
   pdf: new PDFReader(),
+  csv: new PapaCSVReader(),
 };
 
 export type SimpleDirectoryReaderLoadDataProps = {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index c36ced255a5c2dadac4f41c5a16de7a25aa97ab7..f11a3e687e8b96d2a2563ec00c66c0a3838d1256 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -17,7 +17,7 @@ importers:
     devDependencies:
       '@turbo/gen':
         specifier: ^1.10.12
-        version: 1.10.12(@types/node@20.5.0)(typescript@5.1.6)
+        version: 1.10.12(@types/node@18.17.5)(typescript@4.9.5)
       '@types/jest':
         specifier: ^29.5.3
         version: 29.5.3
@@ -32,16 +32,16 @@ importers:
         version: 8.0.3
       jest:
         specifier: ^29.6.2
-        version: 29.6.2(@types/node@20.5.0)
+        version: 29.6.2(@types/node@18.17.5)
       prettier:
         specifier: ^3.0.2
         version: 3.0.2
       prettier-plugin-organize-imports:
         specifier: ^3.2.3
-        version: 3.2.3(prettier@3.0.2)(typescript@5.1.6)
+        version: 3.2.3(prettier@3.0.2)(typescript@4.9.5)
       ts-jest:
         specifier: ^29.1.1
-        version: 29.1.1(@babel/core@7.22.10)(jest@29.6.2)(typescript@5.1.6)
+        version: 29.1.1(@babel/core@7.22.10)(jest@29.6.2)(typescript@4.9.5)
       turbo:
         specifier: ^1.10.12
         version: 1.10.12
@@ -122,6 +122,9 @@ importers:
       openai:
         specifier: ^4.0.0
         version: 4.0.0
+      papaparse:
+        specifier: ^5.4.1
+        version: 5.4.1
       pdf-parse:
         specifier: ^1.1.1
         version: 1.1.1
@@ -144,6 +147,9 @@ importers:
       '@types/node':
         specifier: ^18.17.5
         version: 18.17.5
+      '@types/papaparse':
+        specifier: ^5.3.7
+        version: 5.3.7
       '@types/pdf-parse':
         specifier: ^1.1.1
         version: 1.1.1
@@ -155,22 +161,22 @@ importers:
         version: 1.2.0
       tsup:
         specifier: ^7.2.0
-        version: 7.2.0(typescript@5.1.6)
+        version: 7.2.0(typescript@4.9.5)
 
   packages/eslint-config-custom:
     dependencies:
       eslint-config-next:
         specifier: ^13.4.1
-        version: 13.4.1(eslint@8.47.0)(typescript@5.1.6)
+        version: 13.4.1(eslint@7.32.0)(typescript@4.9.5)
       eslint-config-prettier:
         specifier: ^8.3.0
-        version: 8.8.0(eslint@8.47.0)
+        version: 8.8.0(eslint@7.32.0)
       eslint-config-turbo:
         specifier: ^1.9.3
-        version: 1.9.3(eslint@8.47.0)
+        version: 1.9.3(eslint@7.32.0)
       eslint-plugin-react:
         specifier: 7.28.0
-        version: 7.28.0(eslint@8.47.0)
+        version: 7.28.0(eslint@7.32.0)
     devDependencies:
       next:
         specifier: ^13.4.10
@@ -3179,21 +3185,6 @@ packages:
     dev: true
     optional: true
 
-  /@eslint-community/eslint-utils@4.4.0(eslint@8.47.0):
-    resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
-    engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-    peerDependencies:
-      eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
-    dependencies:
-      eslint: 8.47.0
-      eslint-visitor-keys: 3.4.3
-    dev: false
-
-  /@eslint-community/regexpp@4.6.2:
-    resolution: {integrity: sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==}
-    engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
-    dev: false
-
   /@eslint/eslintrc@0.4.3:
     resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==}
     engines: {node: ^10.12.0 || >=12.0.0}
@@ -3210,28 +3201,6 @@ packages:
     transitivePeerDependencies:
       - supports-color
 
-  /@eslint/eslintrc@2.1.2:
-    resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==}
-    engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-    dependencies:
-      ajv: 6.12.6
-      debug: 4.3.4
-      espree: 9.6.1
-      globals: 13.21.0
-      ignore: 5.2.4
-      import-fresh: 3.3.0
-      js-yaml: 4.1.0
-      minimatch: 3.1.2
-      strip-json-comments: 3.1.1
-    transitivePeerDependencies:
-      - supports-color
-    dev: false
-
-  /@eslint/js@8.47.0:
-    resolution: {integrity: sha512-P6omY1zv5MItm93kLM8s2vr1HICJH8v0dvddDhysbIuZ+vcjOHg5Zbkf1mTkcmi2JA9oBG2anOkRnW8WJTS8Og==}
-    engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-    dev: false
-
   /@hapi/hoek@9.3.0:
     resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==}
 
@@ -3240,17 +3209,6 @@ packages:
     dependencies:
       '@hapi/hoek': 9.3.0
 
-  /@humanwhocodes/config-array@0.11.10:
-    resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==}
-    engines: {node: '>=10.10.0'}
-    dependencies:
-      '@humanwhocodes/object-schema': 1.2.1
-      debug: 4.3.4
-      minimatch: 3.1.2
-    transitivePeerDependencies:
-      - supports-color
-    dev: false
-
   /@humanwhocodes/config-array@0.5.0:
     resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==}
     engines: {node: '>=10.10.0'}
@@ -3261,11 +3219,6 @@ packages:
     transitivePeerDependencies:
       - supports-color
 
-  /@humanwhocodes/module-importer@1.0.1:
-    resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
-    engines: {node: '>=12.22'}
-    dev: false
-
   /@humanwhocodes/object-schema@1.2.1:
     resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
 
@@ -3290,7 +3243,7 @@ packages:
     engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
     dependencies:
       '@jest/types': 29.6.1
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
       chalk: 4.1.2
       jest-message-util: 29.6.2
       jest-util: 29.6.2
@@ -3311,14 +3264,14 @@ packages:
       '@jest/test-result': 29.6.2
       '@jest/transform': 29.6.2
       '@jest/types': 29.6.1
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
       ansi-escapes: 4.3.2
       chalk: 4.1.2
       ci-info: 3.8.0
       exit: 0.1.2
       graceful-fs: 4.2.11
       jest-changed-files: 29.5.0
-      jest-config: 29.6.2(@types/node@20.5.0)
+      jest-config: 29.6.2(@types/node@18.17.5)
       jest-haste-map: 29.6.2
       jest-message-util: 29.6.2
       jest-regex-util: 29.4.3
@@ -3346,7 +3299,7 @@ packages:
     dependencies:
       '@jest/fake-timers': 29.6.2
       '@jest/types': 29.6.1
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
       jest-mock: 29.6.2
     dev: true
 
@@ -3373,7 +3326,7 @@ packages:
     dependencies:
       '@jest/types': 29.6.1
       '@sinonjs/fake-timers': 10.3.0
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
       jest-message-util: 29.6.2
       jest-mock: 29.6.2
       jest-util: 29.6.2
@@ -3406,7 +3359,7 @@ packages:
       '@jest/transform': 29.6.2
       '@jest/types': 29.6.1
       '@jridgewell/trace-mapping': 0.3.19
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
       chalk: 4.1.2
       collect-v8-coverage: 1.0.2
       exit: 0.1.2
@@ -3493,7 +3446,7 @@ packages:
       '@jest/schemas': 29.6.0
       '@types/istanbul-lib-coverage': 2.0.4
       '@types/istanbul-reports': 3.0.1
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
       '@types/yargs': 17.0.24
       chalk: 4.1.2
 
@@ -3961,7 +3914,7 @@ packages:
     resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==}
     dev: true
 
-  /@turbo/gen@1.10.12(@types/node@20.5.0)(typescript@5.1.6):
+  /@turbo/gen@1.10.12(@types/node@18.17.5)(typescript@4.9.5):
     resolution: {integrity: sha512-noop5+3MBFsgPQ7O2vQpS6YYiah+ZrOioa4cDDpZceUVsKVXvUHFmC2nEVyKSJZhO/8SLvbDE/esB/MGw5b2tw==}
     hasBin: true
     dependencies:
@@ -3973,7 +3926,7 @@ packages:
       node-plop: 0.26.3
       proxy-agent: 6.3.0
       semver: 7.5.4
-      ts-node: 10.9.1(@types/node@20.5.0)(typescript@5.1.6)
+      ts-node: 10.9.1(@types/node@18.17.5)(typescript@4.9.5)
       update-check: 1.5.4
       validate-npm-package-name: 5.0.0
     transitivePeerDependencies:
@@ -4017,26 +3970,26 @@ packages:
     resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==}
     dependencies:
       '@types/connect': 3.4.35
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
     dev: false
 
   /@types/bonjour@3.5.10:
     resolution: {integrity: sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==}
     dependencies:
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
     dev: false
 
   /@types/connect-history-api-fallback@1.5.0:
     resolution: {integrity: sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig==}
     dependencies:
       '@types/express-serve-static-core': 4.17.35
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
     dev: false
 
   /@types/connect@3.4.35:
     resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==}
     dependencies:
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
     dev: false
 
   /@types/eslint-scope@3.7.4:
@@ -4057,7 +4010,7 @@ packages:
   /@types/express-serve-static-core@4.17.35:
     resolution: {integrity: sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==}
     dependencies:
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
       '@types/qs': 6.9.7
       '@types/range-parser': 1.2.4
       '@types/send': 0.17.1
@@ -4076,13 +4029,13 @@ packages:
     resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==}
     dependencies:
       '@types/minimatch': 5.1.2
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
     dev: true
 
   /@types/graceful-fs@4.1.6:
     resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==}
     dependencies:
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
     dev: true
 
   /@types/hast@2.3.5:
@@ -4105,7 +4058,7 @@ packages:
   /@types/http-proxy@1.17.11:
     resolution: {integrity: sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==}
     dependencies:
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
     dev: false
 
   /@types/inquirer@6.5.0:
@@ -4151,7 +4104,7 @@ packages:
   /@types/keyv@3.1.4:
     resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==}
     dependencies:
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
     dev: false
 
   /@types/lodash@4.14.197:
@@ -4202,13 +4155,16 @@ packages:
     resolution: {integrity: sha512-WZ/6I1GL0DNAo4bb01lGGKTHH8BHJyECepf11kWONg3OJoHq2WYOm16Es1V54Er7NTUXsbDCpKRKdmBc4X2xhA==}
     dev: true
 
-  /@types/node@20.5.0:
-    resolution: {integrity: sha512-Mgq7eCtoTjT89FqNoTzzXg2XvCi5VMhRV6+I2aYanc6kQCBImeNaAYRs/DyoVqk1YEUJK5gN9VO7HRIdz4Wo3Q==}
-
   /@types/normalize-package-data@2.4.1:
     resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==}
     dev: false
 
+  /@types/papaparse@5.3.7:
+    resolution: {integrity: sha512-f2HKmlnPdCvS0WI33WtCs5GD7X1cxzzS/aduaxSu3I7TbhWlENjSPs6z5TaB9K0J+BH1jbmqTaM+ja5puis4wg==}
+    dependencies:
+      '@types/node': 18.17.5
+    dev: true
+
   /@types/parse-json@4.0.0:
     resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==}
     dev: false
@@ -4262,7 +4218,7 @@ packages:
   /@types/responselike@1.0.0:
     resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==}
     dependencies:
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
     dev: false
 
   /@types/retry@0.12.0:
@@ -4272,7 +4228,7 @@ packages:
   /@types/sax@1.2.4:
     resolution: {integrity: sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw==}
     dependencies:
-      '@types/node': 17.0.45
+      '@types/node': 18.17.5
     dev: false
 
   /@types/scheduler@0.16.3:
@@ -4286,7 +4242,7 @@ packages:
     resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==}
     dependencies:
       '@types/mime': 1.3.2
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
     dev: false
 
   /@types/serve-index@1.9.1:
@@ -4300,13 +4256,13 @@ packages:
     dependencies:
       '@types/http-errors': 2.0.1
       '@types/mime': 3.0.1
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
     dev: false
 
   /@types/sockjs@0.3.33:
     resolution: {integrity: sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==}
     dependencies:
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
     dev: false
 
   /@types/stack-utils@2.0.1:
@@ -4316,7 +4272,7 @@ packages:
   /@types/through@0.0.30:
     resolution: {integrity: sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==}
     dependencies:
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
     dev: true
 
   /@types/unist@2.0.7:
@@ -4330,7 +4286,7 @@ packages:
   /@types/ws@8.5.5:
     resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==}
     dependencies:
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
     dev: false
 
   /@types/yargs-parser@21.0.0:
@@ -4341,7 +4297,7 @@ packages:
     dependencies:
       '@types/yargs-parser': 21.0.0
 
-  /@typescript-eslint/parser@5.59.2(eslint@8.47.0)(typescript@5.1.6):
+  /@typescript-eslint/parser@5.59.2(eslint@7.32.0)(typescript@4.9.5):
     resolution: {integrity: sha512-uq0sKyw6ao1iFOZZGk9F8Nro/8+gfB5ezl1cA06SrqbgJAt0SRoFhb9pXaHvkrxUpZaoLxt8KlovHNk8Gp6/HQ==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
     peerDependencies:
@@ -4353,10 +4309,10 @@ packages:
     dependencies:
       '@typescript-eslint/scope-manager': 5.59.2
       '@typescript-eslint/types': 5.59.2
-      '@typescript-eslint/typescript-estree': 5.59.2(typescript@5.1.6)
+      '@typescript-eslint/typescript-estree': 5.59.2(typescript@4.9.5)
       debug: 4.3.4
-      eslint: 8.47.0
-      typescript: 5.1.6
+      eslint: 7.32.0
+      typescript: 4.9.5
     transitivePeerDependencies:
       - supports-color
     dev: false
@@ -4374,7 +4330,7 @@ packages:
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
     dev: false
 
-  /@typescript-eslint/typescript-estree@5.59.2(typescript@5.1.6):
+  /@typescript-eslint/typescript-estree@5.59.2(typescript@4.9.5):
     resolution: {integrity: sha512-+j4SmbwVmZsQ9jEyBMgpuBD0rKwi9RxRpjX71Brr73RsYnEr3Lt5QZ624Bxphp8HUkSKfqGnPJp1kA5nl0Sh7Q==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
     peerDependencies:
@@ -4389,8 +4345,8 @@ packages:
       globby: 11.1.0
       is-glob: 4.0.3
       semver: 7.5.4
-      tsutils: 3.21.0(typescript@5.1.6)
-      typescript: 5.1.6
+      tsutils: 3.21.0(typescript@4.9.5)
+      typescript: 4.9.5
     transitivePeerDependencies:
       - supports-color
     dev: false
@@ -4529,14 +4485,6 @@ packages:
     dependencies:
       acorn: 7.4.1
 
-  /acorn-jsx@5.3.2(acorn@8.10.0):
-    resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
-    peerDependencies:
-      acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
-    dependencies:
-      acorn: 8.10.0
-    dev: false
-
   /acorn-walk@8.2.0:
     resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==}
     engines: {node: '>=0.4.0'}
@@ -6832,7 +6780,7 @@ packages:
       source-map: 0.6.1
     dev: true
 
-  /eslint-config-next@13.4.1(eslint@8.47.0)(typescript@5.1.6):
+  /eslint-config-next@13.4.1(eslint@7.32.0)(typescript@4.9.5):
     resolution: {integrity: sha512-ajuxjCkW1hvirr0EQZb3/B/bFH52Z7CT89uCtTcICFL9l30i5c8hN4p0LXvTjdOXNPV5fEDcxBgGHgXdzTj1/A==}
     peerDependencies:
       eslint: ^7.23.0 || ^8.0.0
@@ -6843,36 +6791,36 @@ packages:
     dependencies:
       '@next/eslint-plugin-next': 13.4.1
       '@rushstack/eslint-patch': 1.2.0
-      '@typescript-eslint/parser': 5.59.2(eslint@8.47.0)(typescript@5.1.6)
-      eslint: 8.47.0
+      '@typescript-eslint/parser': 5.59.2(eslint@7.32.0)(typescript@4.9.5)
+      eslint: 7.32.0
       eslint-import-resolver-node: 0.3.7
-      eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.47.0)
-      eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-typescript@3.5.5)(eslint@8.47.0)
-      eslint-plugin-jsx-a11y: 6.7.1(eslint@8.47.0)
-      eslint-plugin-react: 7.32.2(eslint@8.47.0)
-      eslint-plugin-react-hooks: 4.6.0(eslint@8.47.0)
-      typescript: 5.1.6
+      eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@7.32.0)
+      eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-typescript@3.5.5)(eslint@7.32.0)
+      eslint-plugin-jsx-a11y: 6.7.1(eslint@7.32.0)
+      eslint-plugin-react: 7.32.2(eslint@7.32.0)
+      eslint-plugin-react-hooks: 4.6.0(eslint@7.32.0)
+      typescript: 4.9.5
     transitivePeerDependencies:
       - eslint-import-resolver-webpack
       - supports-color
     dev: false
 
-  /eslint-config-prettier@8.8.0(eslint@8.47.0):
+  /eslint-config-prettier@8.8.0(eslint@7.32.0):
     resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==}
     hasBin: true
     peerDependencies:
       eslint: '>=7.0.0'
     dependencies:
-      eslint: 8.47.0
+      eslint: 7.32.0
     dev: false
 
-  /eslint-config-turbo@1.9.3(eslint@8.47.0):
+  /eslint-config-turbo@1.9.3(eslint@7.32.0):
     resolution: {integrity: sha512-QG6jxFQkrGSpQqlFKefPdtgUfr20EbU0s4tGGIuGFOcPuJEdsY6VYZpZUxNJvmMcTGqPgMyOPjAFBKhy/DPHLA==}
     peerDependencies:
       eslint: '>6.6.0'
     dependencies:
-      eslint: 8.47.0
-      eslint-plugin-turbo: 1.9.3(eslint@8.47.0)
+      eslint: 7.32.0
+      eslint-plugin-turbo: 1.9.3(eslint@7.32.0)
     dev: false
 
   /eslint-import-resolver-node@0.3.7:
@@ -6885,7 +6833,7 @@ packages:
       - supports-color
     dev: false
 
-  /eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.47.0):
+  /eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@7.32.0):
     resolution: {integrity: sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==}
     engines: {node: ^14.18.0 || >=16.0.0}
     peerDependencies:
@@ -6894,9 +6842,9 @@ packages:
     dependencies:
       debug: 4.3.4
       enhanced-resolve: 5.13.0
-      eslint: 8.47.0
-      eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.47.0)
-      eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-typescript@3.5.5)(eslint@8.47.0)
+      eslint: 7.32.0
+      eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@7.32.0)
+      eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-typescript@3.5.5)(eslint@7.32.0)
       get-tsconfig: 4.5.0
       globby: 13.1.4
       is-core-module: 2.12.0
@@ -6909,7 +6857,7 @@ packages:
       - supports-color
     dev: false
 
-  /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.47.0):
+  /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@7.32.0):
     resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
     engines: {node: '>=4'}
     peerDependencies:
@@ -6930,16 +6878,16 @@ packages:
       eslint-import-resolver-webpack:
         optional: true
     dependencies:
-      '@typescript-eslint/parser': 5.59.2(eslint@8.47.0)(typescript@5.1.6)
+      '@typescript-eslint/parser': 5.59.2(eslint@7.32.0)(typescript@4.9.5)
       debug: 3.2.7
-      eslint: 8.47.0
+      eslint: 7.32.0
       eslint-import-resolver-node: 0.3.7
-      eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.47.0)
+      eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@7.32.0)
     transitivePeerDependencies:
       - supports-color
     dev: false
 
-  /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-typescript@3.5.5)(eslint@8.47.0):
+  /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-typescript@3.5.5)(eslint@7.32.0):
     resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==}
     engines: {node: '>=4'}
     peerDependencies:
@@ -6949,15 +6897,15 @@ packages:
       '@typescript-eslint/parser':
         optional: true
     dependencies:
-      '@typescript-eslint/parser': 5.59.2(eslint@8.47.0)(typescript@5.1.6)
+      '@typescript-eslint/parser': 5.59.2(eslint@7.32.0)(typescript@4.9.5)
       array-includes: 3.1.6
       array.prototype.flat: 1.3.1
       array.prototype.flatmap: 1.3.1
       debug: 3.2.7
       doctrine: 2.1.0
-      eslint: 8.47.0
+      eslint: 7.32.0
       eslint-import-resolver-node: 0.3.7
-      eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.47.0)
+      eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@7.32.0)
       has: 1.0.3
       is-core-module: 2.12.0
       is-glob: 4.0.3
@@ -6972,7 +6920,7 @@ packages:
       - supports-color
     dev: false
 
-  /eslint-plugin-jsx-a11y@6.7.1(eslint@8.47.0):
+  /eslint-plugin-jsx-a11y@6.7.1(eslint@7.32.0):
     resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==}
     engines: {node: '>=4.0'}
     peerDependencies:
@@ -6987,7 +6935,7 @@ packages:
       axobject-query: 3.1.1
       damerau-levenshtein: 1.0.8
       emoji-regex: 9.2.2
-      eslint: 8.47.0
+      eslint: 7.32.0
       has: 1.0.3
       jsx-ast-utils: 3.3.3
       language-tags: 1.0.5
@@ -6997,16 +6945,16 @@ packages:
       semver: 6.3.0
     dev: false
 
-  /eslint-plugin-react-hooks@4.6.0(eslint@8.47.0):
+  /eslint-plugin-react-hooks@4.6.0(eslint@7.32.0):
     resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==}
     engines: {node: '>=10'}
     peerDependencies:
       eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
     dependencies:
-      eslint: 8.47.0
+      eslint: 7.32.0
     dev: false
 
-  /eslint-plugin-react@7.28.0(eslint@8.47.0):
+  /eslint-plugin-react@7.28.0(eslint@7.32.0):
     resolution: {integrity: sha512-IOlFIRHzWfEQQKcAD4iyYDndHwTQiCMcJVJjxempf203jnNLUnW34AXLrV33+nEXoifJE2ZEGmcjKPL8957eSw==}
     engines: {node: '>=4'}
     peerDependencies:
@@ -7015,7 +6963,7 @@ packages:
       array-includes: 3.1.6
       array.prototype.flatmap: 1.3.1
       doctrine: 2.1.0
-      eslint: 8.47.0
+      eslint: 7.32.0
       estraverse: 5.3.0
       jsx-ast-utils: 3.3.3
       minimatch: 3.1.2
@@ -7029,7 +6977,7 @@ packages:
       string.prototype.matchall: 4.0.8
     dev: false
 
-  /eslint-plugin-react@7.32.2(eslint@8.47.0):
+  /eslint-plugin-react@7.32.2(eslint@7.32.0):
     resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==}
     engines: {node: '>=4'}
     peerDependencies:
@@ -7039,7 +6987,7 @@ packages:
       array.prototype.flatmap: 1.3.1
       array.prototype.tosorted: 1.1.1
       doctrine: 2.1.0
-      eslint: 8.47.0
+      eslint: 7.32.0
       estraverse: 5.3.0
       jsx-ast-utils: 3.3.3
       minimatch: 3.1.2
@@ -7053,12 +7001,12 @@ packages:
       string.prototype.matchall: 4.0.8
     dev: false
 
-  /eslint-plugin-turbo@1.9.3(eslint@8.47.0):
+  /eslint-plugin-turbo@1.9.3(eslint@7.32.0):
     resolution: {integrity: sha512-ZsRtksdzk3v+z5/I/K4E50E4lfZ7oYmLX395gkrUMBz4/spJlYbr+GC8hP9oVNLj9s5Pvnm9rLv/zoj5PVYaVw==}
     peerDependencies:
       eslint: '>6.6.0'
     dependencies:
-      eslint: 8.47.0
+      eslint: 7.32.0
     dev: false
 
   /eslint-scope@5.1.1:
@@ -7068,14 +7016,6 @@ packages:
       esrecurse: 4.3.0
       estraverse: 4.3.0
 
-  /eslint-scope@7.2.2:
-    resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
-    engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-    dependencies:
-      esrecurse: 4.3.0
-      estraverse: 5.3.0
-    dev: false
-
   /eslint-utils@2.1.0:
     resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==}
     engines: {node: '>=6'}
@@ -7095,11 +7035,6 @@ packages:
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
     dev: false
 
-  /eslint-visitor-keys@3.4.3:
-    resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
-    engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-    dev: false
-
   /eslint@7.32.0:
     resolution: {integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==}
     engines: {node: ^10.12.0 || >=12.0.0}
@@ -7148,52 +7083,6 @@ packages:
     transitivePeerDependencies:
       - supports-color
 
-  /eslint@8.47.0:
-    resolution: {integrity: sha512-spUQWrdPt+pRVP1TTJLmfRNJJHHZryFmptzcafwSvHsceV81djHOdnEeDmkdotZyLNjDhrOasNK8nikkoG1O8Q==}
-    engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-    hasBin: true
-    dependencies:
-      '@eslint-community/eslint-utils': 4.4.0(eslint@8.47.0)
-      '@eslint-community/regexpp': 4.6.2
-      '@eslint/eslintrc': 2.1.2
-      '@eslint/js': 8.47.0
-      '@humanwhocodes/config-array': 0.11.10
-      '@humanwhocodes/module-importer': 1.0.1
-      '@nodelib/fs.walk': 1.2.8
-      ajv: 6.12.6
-      chalk: 4.1.2
-      cross-spawn: 7.0.3
-      debug: 4.3.4
-      doctrine: 3.0.0
-      escape-string-regexp: 4.0.0
-      eslint-scope: 7.2.2
-      eslint-visitor-keys: 3.4.3
-      espree: 9.6.1
-      esquery: 1.5.0
-      esutils: 2.0.3
-      fast-deep-equal: 3.1.3
-      file-entry-cache: 6.0.1
-      find-up: 5.0.0
-      glob-parent: 6.0.2
-      globals: 13.21.0
-      graphemer: 1.4.0
-      ignore: 5.2.4
-      imurmurhash: 0.1.4
-      is-glob: 4.0.3
-      is-path-inside: 3.0.3
-      js-yaml: 4.1.0
-      json-stable-stringify-without-jsonify: 1.0.1
-      levn: 0.4.1
-      lodash.merge: 4.6.2
-      minimatch: 3.1.2
-      natural-compare: 1.4.0
-      optionator: 0.9.3
-      strip-ansi: 6.0.1
-      text-table: 0.2.0
-    transitivePeerDependencies:
-      - supports-color
-    dev: false
-
   /espree@7.3.1:
     resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==}
     engines: {node: ^10.12.0 || >=12.0.0}
@@ -7202,15 +7091,6 @@ packages:
       acorn-jsx: 5.3.2(acorn@7.4.1)
       eslint-visitor-keys: 1.3.0
 
-  /espree@9.6.1:
-    resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
-    engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-    dependencies:
-      acorn: 8.10.0
-      acorn-jsx: 5.3.2(acorn@8.10.0)
-      eslint-visitor-keys: 3.4.3
-    dev: false
-
   /esprima@4.0.1:
     resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
     engines: {node: '>=4'}
@@ -7254,7 +7134,7 @@ packages:
     resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==}
     engines: {node: '>= 0.8'}
     dependencies:
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
       require-like: 0.1.2
     dev: false
 
@@ -7317,7 +7197,7 @@ packages:
     engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
     dependencies:
       '@jest/expect-utils': 29.6.2
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
       jest-get-type: 29.4.3
       jest-matcher-utils: 29.6.2
       jest-message-util: 29.6.2
@@ -7967,10 +7847,6 @@ packages:
     resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==}
     dev: false
 
-  /graphemer@1.4.0:
-    resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
-    dev: false
-
   /gray-matter@4.0.3:
     resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==}
     engines: {node: '>=6.0'}
@@ -8996,7 +8872,7 @@ packages:
       '@jest/expect': 29.6.2
       '@jest/test-result': 29.6.2
       '@jest/types': 29.6.1
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
       chalk: 4.1.2
       co: 4.6.0
       dedent: 1.5.1
@@ -9017,7 +8893,7 @@ packages:
       - supports-color
     dev: true
 
-  /jest-cli@29.6.2(@types/node@20.5.0):
+  /jest-cli@29.6.2(@types/node@18.17.5):
     resolution: {integrity: sha512-TT6O247v6dCEX2UGHGyflMpxhnrL0DNqP2fRTKYm3nJJpCTfXX3GCMQPGFjXDoj0i5/Blp3jriKXFgdfmbYB6Q==}
     engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
     hasBin: true
@@ -9034,7 +8910,7 @@ packages:
       exit: 0.1.2
       graceful-fs: 4.2.11
       import-local: 3.1.0
-      jest-config: 29.6.2(@types/node@20.5.0)
+      jest-config: 29.6.2(@types/node@18.17.5)
       jest-util: 29.6.2
       jest-validate: 29.6.2
       prompts: 2.4.2
@@ -9046,7 +8922,7 @@ packages:
       - ts-node
     dev: true
 
-  /jest-config@29.6.2(@types/node@20.5.0):
+  /jest-config@29.6.2(@types/node@18.17.5):
     resolution: {integrity: sha512-VxwFOC8gkiJbuodG9CPtMRjBUNZEHxwfQXmIudSTzFWxaci3Qub1ddTRbFNQlD/zUeaifLndh/eDccFX4wCMQw==}
     engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
     peerDependencies:
@@ -9061,7 +8937,7 @@ packages:
       '@babel/core': 7.22.10
       '@jest/test-sequencer': 29.6.2
       '@jest/types': 29.6.1
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
       babel-jest: 29.6.2(@babel/core@7.22.10)
       chalk: 4.1.2
       ci-info: 3.8.0
@@ -9121,7 +8997,7 @@ packages:
       '@jest/environment': 29.6.2
       '@jest/fake-timers': 29.6.2
       '@jest/types': 29.6.1
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
       jest-mock: 29.6.2
       jest-util: 29.6.2
     dev: true
@@ -9137,7 +9013,7 @@ packages:
     dependencies:
       '@jest/types': 29.6.1
       '@types/graceful-fs': 4.1.6
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
       anymatch: 3.1.3
       fb-watchman: 2.0.2
       graceful-fs: 4.2.11
@@ -9188,7 +9064,7 @@ packages:
     engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
     dependencies:
       '@jest/types': 29.6.1
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
       jest-util: 29.6.2
     dev: true
 
@@ -9243,7 +9119,7 @@ packages:
       '@jest/test-result': 29.6.2
       '@jest/transform': 29.6.2
       '@jest/types': 29.6.1
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
       chalk: 4.1.2
       emittery: 0.13.1
       graceful-fs: 4.2.11
@@ -9274,7 +9150,7 @@ packages:
       '@jest/test-result': 29.6.2
       '@jest/transform': 29.6.2
       '@jest/types': 29.6.1
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
       chalk: 4.1.2
       cjs-module-lexer: 1.2.3
       collect-v8-coverage: 1.0.2
@@ -9326,7 +9202,7 @@ packages:
     engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
     dependencies:
       '@jest/types': 29.6.1
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
       chalk: 4.1.2
       ci-info: 3.8.0
       graceful-fs: 4.2.11
@@ -9350,7 +9226,7 @@ packages:
     dependencies:
       '@jest/test-result': 29.6.2
       '@jest/types': 29.6.1
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
       ansi-escapes: 4.3.2
       chalk: 4.1.2
       emittery: 0.13.1
@@ -9362,7 +9238,7 @@ packages:
     resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
     engines: {node: '>= 10.13.0'}
     dependencies:
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
       merge-stream: 2.0.0
       supports-color: 8.1.1
 
@@ -9370,12 +9246,12 @@ packages:
     resolution: {integrity: sha512-l3ccBOabTdkng8I/ORCkADz4eSMKejTYv1vB/Z83UiubqhC1oQ5Li6dWCyqOIvSifGjUBxuvxvlm6KGK2DtuAQ==}
     engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
     dependencies:
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
       jest-util: 29.6.2
       merge-stream: 2.0.0
       supports-color: 8.1.1
 
-  /jest@29.6.2(@types/node@20.5.0):
+  /jest@29.6.2(@types/node@18.17.5):
     resolution: {integrity: sha512-8eQg2mqFbaP7CwfsTpCxQ+sHzw1WuNWL5UUvjnWP4hx2riGz9fPSzYOaU5q8/GqWn1TfgZIVTqYJygbGbWAANg==}
     engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
     hasBin: true
@@ -9388,7 +9264,7 @@ packages:
       '@jest/core': 29.6.2
       '@jest/types': 29.6.1
       import-local: 3.1.0
-      jest-cli: 29.6.2(@types/node@20.5.0)
+      jest-cli: 29.6.2(@types/node@18.17.5)
     transitivePeerDependencies:
       - '@types/node'
       - babel-plugin-macros
@@ -10517,6 +10393,10 @@ packages:
     resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}
     dev: true
 
+  /papaparse@5.4.1:
+    resolution: {integrity: sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw==}
+    dev: false
+
   /param-case@2.1.1:
     resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==}
     dependencies:
@@ -11173,7 +11053,7 @@ packages:
     engines: {node: '>=4'}
     dev: false
 
-  /prettier-plugin-organize-imports@3.2.3(prettier@3.0.2)(typescript@5.1.6):
+  /prettier-plugin-organize-imports@3.2.3(prettier@3.0.2)(typescript@4.9.5):
     resolution: {integrity: sha512-KFvk8C/zGyvUaE3RvxN2MhCLwzV6OBbFSkwZ2OamCrs9ZY4i5L77jQ/w4UmUr+lqX8qbaqVq6bZZkApn+IgJSg==}
     peerDependencies:
       '@volar/vue-language-plugin-pug': ^1.0.4
@@ -11187,7 +11067,7 @@ packages:
         optional: true
     dependencies:
       prettier: 3.0.2
-      typescript: 5.1.6
+      typescript: 4.9.5
     dev: true
 
   /prettier@2.8.8:
@@ -12996,7 +12876,7 @@ packages:
     resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
     dev: true
 
-  /ts-jest@29.1.1(@babel/core@7.22.10)(jest@29.6.2)(typescript@5.1.6):
+  /ts-jest@29.1.1(@babel/core@7.22.10)(jest@29.6.2)(typescript@4.9.5):
     resolution: {integrity: sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==}
     engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
     hasBin: true
@@ -13020,17 +12900,17 @@ packages:
       '@babel/core': 7.22.10
       bs-logger: 0.2.6
       fast-json-stable-stringify: 2.1.0
-      jest: 29.6.2(@types/node@20.5.0)
+      jest: 29.6.2(@types/node@18.17.5)
       jest-util: 29.6.2
       json5: 2.2.3
       lodash.memoize: 4.1.2
       make-error: 1.3.6
       semver: 7.5.4
-      typescript: 5.1.6
+      typescript: 4.9.5
       yargs-parser: 21.1.1
     dev: true
 
-  /ts-node@10.9.1(@types/node@20.5.0)(typescript@5.1.6):
+  /ts-node@10.9.1(@types/node@18.17.5)(typescript@4.9.5):
     resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==}
     hasBin: true
     peerDependencies:
@@ -13049,14 +12929,14 @@ packages:
       '@tsconfig/node12': 1.0.11
       '@tsconfig/node14': 1.0.3
       '@tsconfig/node16': 1.0.4
-      '@types/node': 20.5.0
+      '@types/node': 18.17.5
       acorn: 8.10.0
       acorn-walk: 8.2.0
       arg: 4.1.3
       create-require: 1.1.1
       diff: 4.0.2
       make-error: 1.3.6
-      typescript: 5.1.6
+      typescript: 4.9.5
       v8-compile-cache-lib: 3.0.1
       yn: 3.1.1
     dev: true
@@ -13076,7 +12956,7 @@ packages:
   /tslib@2.6.1:
     resolution: {integrity: sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==}
 
-  /tsup@7.2.0(typescript@5.1.6):
+  /tsup@7.2.0(typescript@4.9.5):
     resolution: {integrity: sha512-vDHlczXbgUvY3rWvqFEbSqmC1L7woozbzngMqTtL2PGBODTtWlRwGDDawhvWzr5c1QjKe4OAKqJGfE1xeXUvtQ==}
     engines: {node: '>=16.14'}
     hasBin: true
@@ -13106,20 +12986,20 @@ packages:
       source-map: 0.8.0-beta.0
       sucrase: 3.34.0
       tree-kill: 1.2.2
-      typescript: 5.1.6
+      typescript: 4.9.5
     transitivePeerDependencies:
       - supports-color
       - ts-node
     dev: true
 
-  /tsutils@3.21.0(typescript@5.1.6):
+  /tsutils@3.21.0(typescript@4.9.5):
     resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
     engines: {node: '>= 6'}
     peerDependencies:
       typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
     dependencies:
       tslib: 1.14.1
-      typescript: 5.1.6
+      typescript: 4.9.5
     dev: false
 
   /tty-browserify@0.0.1:
@@ -13291,11 +13171,6 @@ packages:
     engines: {node: '>=4.2.0'}
     hasBin: true
 
-  /typescript@5.1.6:
-    resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==}
-    engines: {node: '>=14.17'}
-    hasBin: true
-
   /ua-parser-js@1.0.35:
     resolution: {integrity: sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA==}
     dev: false