Ver código fonte

Initial commit

Michael Zitzmann 5 anos atrás
commit
333ab147b3
47 arquivos alterados com 3359 adições e 0 exclusões
  1. 11 0
      .babelrc
  2. 33 0
      .eslintrc.json
  3. 4 0
      .gitignore
  4. 3 0
      .stylelintrc.json
  5. 128 0
      README.md
  6. BIN
      assets/fonts/SourceCodePro-Bold.otf
  7. BIN
      assets/fonts/SourceSansPro-Bold.otf
  8. BIN
      assets/fonts/SourceSansPro-Light.otf
  9. BIN
      assets/fonts/SourceSansPro-Regular.otf
  10. BIN
      assets/fonts/fontello.eot
  11. 20 0
      assets/fonts/fontello.svg
  12. BIN
      assets/fonts/fontello.ttf
  13. BIN
      assets/fonts/fontello.woff
  14. BIN
      assets/fonts/fontello.woff2
  15. BIN
      assets/fonts/sourcecodepro-bold-webfont.woff
  16. BIN
      assets/fonts/sourcecodepro-bold-webfont.woff2
  17. BIN
      assets/fonts/sourcesanspro-bold-webfont.woff
  18. BIN
      assets/fonts/sourcesanspro-bold-webfont.woff2
  19. BIN
      assets/fonts/sourcesanspro-light-webfont.woff
  20. BIN
      assets/fonts/sourcesanspro-light-webfont.woff2
  21. BIN
      assets/fonts/sourcesanspro-regular-webfont.woff
  22. BIN
      assets/fonts/sourcesanspro-regular-webfont.woff2
  23. BIN
      assets/img/BMJV_Web_Master_de_WBZ.png
  24. BIN
      assets/img/HardingCenter_Logo_de_RGB.png
  25. BIN
      assets/img/mpib.png
  26. 0 0
      assets/js/blob-stream.min.js
  27. 0 0
      assets/js/pdfkit.min.js
  28. 153 0
      bin/preprocess.js
  29. 38 0
      build.json
  30. 512 0
      data/data.tsv
  31. BIN
      data/raw/RA_ExpFB_Renditedaten.xlsx
  32. 50 0
      data/sampling-info.md
  33. 51 0
      package.json
  34. 76 0
      rollup.config.js
  35. 633 0
      src/css/styles.css
  36. 15 0
      src/html/main.html
  37. 26 0
      src/js/components/config_visual.json
  38. 92 0
      src/js/components/sampler-controls.riot
  39. 47 0
      src/js/components/sampler-textual.riot
  40. 316 0
      src/js/components/sampler-visual.riot
  41. 436 0
      src/js/components/sampling-app.riot
  42. 92 0
      src/js/components/sampling-header.riot
  43. 12 0
      src/js/d3custom.js
  44. 13 0
      src/js/main.js
  45. 89 0
      src/js/options.json
  46. 403 0
      src/js/pdfExport.js
  47. 106 0
      src/js/sampler.js

+ 11 - 0
.babelrc

@@ -0,0 +1,11 @@
+{
+    presets: [
+        [
+            "@babel/preset-env", {
+                "targets": {
+                    "browsers": "last 2 versions, ios >= 9"
+                }
+            }
+        ]
+    ],
+}

+ 33 - 0
.eslintrc.json

@@ -0,0 +1,33 @@
+{
+    "env": {
+        "browser": true,
+        "es6": true
+    },
+    "globals": {
+        "ENV": true,
+        "process": true
+    },
+    "extends": "eslint:recommended",
+    "parser": "babel-eslint",
+    "parserOptions": {
+        "sourceType": "module"
+    },
+    "rules": {
+        "indent": [
+            "error", 4,
+            { "SwitchCase": 1 }
+        ],
+        "linebreak-style": [
+            "error",
+            "unix"
+        ],
+        "quotes": [
+            "error",
+            "single"
+        ],
+        "semi": [
+            "error",
+            "always"
+        ]
+    }
+}

+ 4 - 0
.gitignore

@@ -0,0 +1,4 @@
+src/js/components/sampling-info.riot
+data/~$*.xlsx
+build/
+package-lock.json

+ 3 - 0
.stylelintrc.json

@@ -0,0 +1,3 @@
+{
+  "extends": "stylelint-config-recommended"
+}

+ 128 - 0
README.md

@@ -0,0 +1,128 @@
+# Sampling WebApp
+
+Diese WebApp in Gestalt einer interaktiven Faktenbox soll Verbrauchern ein Verständnis für die Eintrittswahrscheinlichkeit unsicherer Ereignisse vermitteln.
+
+
+## Abhängigkeiten
+
+Dieses Projekt basiert auf nodejs und npm. Alle Abhängigkeiten sind wie üblich in `package.json` definiert. Die wesentlichen Bibliotheken sind [riot] als WebApp Framework mit webcomponents und [d3js] für die Visualisierung der *Icon Arrays*. [whatwg-fetch] wird als `fetch` *Polyfill* verwendet, um beim Generieren des PDF Resourcen dynamisch zu laden.
+
+## Struktur
+
+Um einen Überblick zu geben, ist hier eine vereinfachte Darstellung der Ordnerstruktur mit kurzen Beschreibungen der wichtigsten Dateien aufgebäumt:
+
+```
+├── config.json                         // Preprocess Build Konfiguration
+├── rollup.config.js                    // Rollup Build Konfiguration
+├── assets
+│   ├── js …                            // Externe Bibliotheken für das Generieren von PDFs
+│   ├── fonts …                         // Font-Dateien
+│   ├── img …                           // Bilddateien (Logos) der umgebenden HTML Seite
+├── bin
+│   └── preprocess.js                   // Generieren von HTML, JSON und riot Dateien
+├── data
+│   ├── data.tsv                        // Definition der Daten
+│   ├── raw
+│   │   └── RA_ExpFB_Renditedaten.xlsx  // Rohdaten
+│   └── sampling-info.md                // Inhalt des Info-Textes der WebApp
+└── src
+    ├── css
+        └── styles.css                  // Layout und Styling der WebApp
+    └── html
+    │   └── main.html                   // Gerüst für HTML Datei
+    └── js
+        ├── components                  // Web components
+        │   ├── config_visual.json      // Konfiguration für die Visualisierungs-Komponente
+        │   ├── sampler-controls.riot   // Komponente für die Formularelemente eines Samplers
+        │   ├── [sampler-info.riot]     // Aus `data/sampling-info.md` generierte Komponente für zusätzliche Informationen
+        │   ├── sampler-textual.riot    // Komponente für die textuelle Representation
+        │   ├── sampler-visual.riot     // Komponente für die Visualisierung (Icon Array)
+        │   ├── sampling-app.riot       // Haupt-Komponente
+        │   └── sampling-header.riot    // Komponente für den Header mit Formularelementen und Info-Button
+        ├── d3custom.js                 // Sammlung der verwendeten d3js module
+        ├── main.js                     // Einstieg für riot-App
+        ├── options.json                // Konfiguration der WebApp
+        ├── pdfExport.js                // Erstellung des PDF-Datei (Faktenbox)
+        └── sampler.js                  // Implementierung des Samplings
+
+```
+
+## Build Prozess
+
+Alles Scripts des Build Prozesses sind in der `package.json` definiert:
+
+     "scripts": {
+        "prepare": "npm run build",
+        "build": "npm run build:preprocess && npm run build:once",
+        "build:preprocess": "node bin/preprocess.js",
+        "build:once": "rollup -c",
+        "build:dev": "NODE_ENV=development npm run build",
+        "build:prod": "NODE_ENV=production npm run build",
+        "watch": "NODE_ENV=development npm run build:preprocess && NODE_OPT=serve rollup -c --watch"
+      }, …
+
+Die Unterscheidung, ob ein *development* oder *production* Build erstellt werden soll, wird anhand der Umgebungsvariable `NODE_ENV` getroffen.
+Eine nicht ganz so standardkonforme Variable `NODE_OPT` wird benutzt, um feststellen zu können, ob der Entwicklungsserver gestartet werden soll.
+
+Der Build Prozess ist zweistufig und daher etwas komplex, da temporäre Dateien generiert werden, um das Ändern von Inhalten möglichst einfach zu halten.
+
+### Erstellen von temporären Dateien
+
+Im *Task* `build:preprocess` werden mit Hilfe eines nodejs Scripts in einem Zwischenschritt aus den *Markdown*-Dateien unter `data` Dateien generiert, die im npm Build Prozess verwendbar sind:
+
+- Aus `src/html/main.html` wird die HTML-Datei `dist/index.html` generiert, die vom Web Server ausgeliefert wird.
+- Aus `data/sampling-info.md` werden die Komponente `dist/data/sampling-info.riot` für die interaktive Visualisierung und die JSON-Datei `dist/data/sampling-info.json` zur Verwendung beim Erstellen des PDFs generiert.
+
+### Erstellen der eigentlichen WebApp
+
+Der *Task* `build:watch` ist geeignet für die Entwicklung, da geänderter Code sofort neu *transpiliert* und die WebApp vom Entwicklungsserver neu geladen wird.
+Für die Erzeugung eines *Production Build* ist das Script `build:prod` zuständig.
+
+In `rollup.config.js` ist der eigentliche Build Prozess definiert. Das Script *transpiliert* ES2015 Javascript und riot-Dateien und kopiert Ressourcen aus `assets/` nach `dist/`. Dies ist auch das Verzeichnis, dass der Entwicklungsserver ausliefert. 
+
+### Konfiguration
+
+Die Konfiguration des Build Prozesses ist in `config.json` zu finden. Dort sind Namen und Namensfragmente der Verzeichnisse und Dateien angegeben, aber auch die Dimension des zu erzeugenden *iframes*.
+
+### Deployment
+
+Nach einem Production Build kann `dist/` als statisches HTML-Verzeichnis von einem Webserver ausgeliefert werden.
+
+## Wie ändere ich Inhalte und Daten?
+
+### Labels und Texte
+
+Die meisten Texte und Textfragmente sind definiert in `src/options.json`. Dort können Titel und Labels der Buttons angepasst werden.
+Der Text, der beim Klick auf den Info-Button erscheint, ist in `data/sampling-info.md` zu finden. Aus dieser Datei werden im *Preprocess* Schritt temporäre Dateien erzeugt (`riot` für die interaktive Ansicht und `json` für das Generieren des PDF). Im eigentlichen Build Prozess werden diese in die WebApp integriert.
+
+### Daten
+
+Die Rohdaten sind in `data/data.tsv` enthalten. In `src/options.json` sind die Auswahloptionen im Objekt `investmentOptions` festgelegt. Hier sind auch die Standard-Werte der Zielvorgaben definiert:
+
+```
+"investment": {
+    "input": {
+        "value": 1000,
+            "min": 1,
+            "max": 1000000
+    },
+        "output": {
+            "value": 2000,
+            "min": 1,
+            "max": 1000000
+        },
+        "options": [
+            { "id": 0, "name": "dax", "desc": "Aktien DE (Dax)"   },
+            { "id": 1, "name": "gol", "desc": "Gold UK"           },
+            { "id": 2, "name": "fts", "desc": "Aktien DE (allg.)" },
+            { "id": 3, "name": "bon", "desc": "Bundesanleihen DE" },
+            { "id": 4, "name": "fes", "desc": "Festgeld DE"       },
+            { "id": 5, "name": "sp",  "desc": "Aktien USA (S&P)"  },
+            { "id": 6, "name": "msci",  "desc": "MSCI World"  }
+        ]
+},
+```
+
+[d3js]: https://d3js.org
+[riot]: https://riot.js.org
+[whatwg-fetch]: https://github.com/github/fetch

BIN
assets/fonts/SourceCodePro-Bold.otf


BIN
assets/fonts/SourceSansPro-Bold.otf


BIN
assets/fonts/SourceSansPro-Light.otf


BIN
assets/fonts/SourceSansPro-Regular.otf


BIN
assets/fonts/fontello.eot


+ 20 - 0
assets/fonts/fontello.svg

@@ -0,0 +1,20 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>Copyright (C) 2019 by original authors @ fontello.com</metadata>
+<defs>
+<font id="fontello" horiz-adv-x="1000" >
+<font-face font-family="fontello" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
+<missing-glyph horiz-adv-x="1000" />
+<glyph glyph-name="book" unicode="&#xe800;" d="M915 583q22-31 10-72l-154-505q-10-36-42-60t-69-25h-515q-43 0-83 30t-55 74q-14 37-1 71 0 2 1 15t3 20q0 5-2 12t-2 11q1 6 5 12t9 13 9 13q13 21 25 51t17 51q2 6 0 17t0 16q2 6 9 15t10 13q12 20 23 51t14 51q1 5-1 17t0 16q2 7 12 17t13 13q10 14 23 47t16 54q0 4-2 14t-1 15q1 4 5 10t10 13 10 11q4 7 9 17t8 20 9 20 11 18 15 13 20 6 26-3l0-1q21 5 28 5h425q41 0 64-32t10-72l-153-506q-20-66-40-85t-72-20h-485q-15 0-21-8-6-9-1-24 14-39 81-39h515q16 0 31 9t20 23l167 550q4 13 3 32 21-8 33-24z m-594-1q-2-7 1-12t11-6h339q8 0 15 6t9 12l12 36q2 7-1 12t-12 6h-339q-7 0-14-6t-9-12z m-46-143q-3-7 1-12t11-6h339q7 0 14 6t10 12l11 36q3 7-1 13t-11 5h-339q-7 0-14-5t-10-13z" horiz-adv-x="928.6" />
+
+<glyph glyph-name="download" unicode="&#xe801;" d="M714 100q0 15-10 25t-25 11-25-11-11-25 11-25 25-11 25 11 10 25z m143 0q0 15-10 25t-26 11-25-11-10-25 10-25 25-11 26 11 10 25z m72 125v-179q0-22-16-37t-38-16h-821q-23 0-38 16t-16 37v179q0 22 16 38t38 16h259l75-76q33-32 76-32t76 32l76 76h259q22 0 38-16t16-38z m-182 318q10-23-8-39l-250-250q-10-11-25-11t-25 11l-250 250q-17 16-8 39 10 21 33 21h143v250q0 15 11 25t25 11h143q14 0 25-11t10-25v-250h143q24 0 33-21z" horiz-adv-x="928.6" />
+
+<glyph glyph-name="ccw" unicode="&#xe802;" d="M857 350q0-87-34-166t-91-137-137-92-166-34q-96 0-183 41t-147 114q-4 6-4 13t5 11l76 77q6 5 14 5 9-1 13-7 41-53 100-82t126-29q58 0 110 23t92 61 61 91 22 111-22 111-61 91-92 61-110 23q-55 0-105-20t-90-57l77-77q17-16 8-38-10-23-33-23h-250q-15 0-25 11t-11 25v250q0 24 22 33 22 10 39-8l72-72q60 57 137 88t159 31q87 0 166-34t137-92 91-137 34-166z" horiz-adv-x="857.1" />
+
+<glyph glyph-name="info-circled" unicode="&#xe803;" d="M571 82v89q0 8-5 13t-12 5h-54v286q0 8-5 13t-13 5h-178q-8 0-13-5t-5-13v-89q0-8 5-13t13-5h53v-179h-53q-8 0-13-5t-5-13v-89q0-8 5-13t13-5h250q7 0 12 5t5 13z m-71 500v89q0 8-5 13t-13 5h-107q-8 0-13-5t-5-13v-89q0-8 5-13t13-5h107q8 0 13 5t5 13z m357-232q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
+
+<glyph glyph-name="cancel-circled" unicode="&#xe804;" d="M641 224q0 14-10 25l-101 101 101 101q10 11 10 25 0 15-10 26l-51 50q-10 11-25 11-15 0-25-11l-101-101-101 101q-11 11-25 11-16 0-26-11l-50-50q-11-11-11-26 0-14 11-25l101-101-101-101q-11-11-11-25 0-15 11-26l50-50q10-11 26-11 14 0 25 11l101 101 101-101q10-11 25-11 15 0 25 11l51 50q10 11 10 26z m216 126q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
+</font>
+</defs>
+</svg>

BIN
assets/fonts/fontello.ttf


BIN
assets/fonts/fontello.woff


BIN
assets/fonts/fontello.woff2


BIN
assets/fonts/sourcecodepro-bold-webfont.woff


BIN
assets/fonts/sourcecodepro-bold-webfont.woff2


BIN
assets/fonts/sourcesanspro-bold-webfont.woff


BIN
assets/fonts/sourcesanspro-bold-webfont.woff2


BIN
assets/fonts/sourcesanspro-light-webfont.woff


BIN
assets/fonts/sourcesanspro-light-webfont.woff2


BIN
assets/fonts/sourcesanspro-regular-webfont.woff


BIN
assets/fonts/sourcesanspro-regular-webfont.woff2


BIN
assets/img/BMJV_Web_Master_de_WBZ.png


BIN
assets/img/HardingCenter_Logo_de_RGB.png


BIN
assets/img/mpib.png


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
assets/js/blob-stream.min.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
assets/js/pdfkit.min.js


+ 153 - 0
bin/preprocess.js

@@ -0,0 +1,153 @@
+/**
+ * Generate html files, target-dependent
+ * Context for embedding page is loaded from markdown file
+ */
+const process = require('process');
+const path = require('path');
+const fs = require('fs');
+const posthtml = require('posthtml');
+const expressions = require('posthtml-expressions');
+const marked = require('marked');
+const config = require('../build.json');
+const options = require('../src/js/options.json');
+
+const target = process.env.NODE_ENV || 'development';
+
+// Change current directory to script location so that
+// the relative paths of the resources can be resolved
+process.chdir(path.dirname(process.argv[1]));
+
+function createOutputDirectory() {
+    fs.mkdirSync(
+        path.join(
+            '../',
+            config.path.output,
+            config.path.data
+        ),
+        { recursive: true },
+        (error) => {
+            if (error !== null) {
+                console.error('Error while creating directory', error);
+            }
+        }
+    );
+}
+
+// Load info from markdown file
+function loadFile(filepath) {
+    const content = fs.readFileSync(filepath, 'utf8');
+    return content;
+}
+
+function createHtml() {
+
+    // Create visualisation HTML
+    const visualisation = loadFile(path.join(
+        '../',
+        config.path.input,
+        config.path.html,
+        config.html.input
+    ));
+
+    posthtml(
+        expressions({
+            locals: {
+                javascript: path.join(config.path.js, `${config.main}${config[target].infix}.js`),
+                stylesheet: path.join(config.path.css, `${config.main}${config[target].infix}.css`)
+            }
+        })
+    ).process(visualisation)
+        .then((result) => {
+            fs.writeFileSync(
+                path.join(
+                    '../',
+                    config.path.output,
+                    // config.path.html,
+                    config.html.output
+                ), result.html
+            );
+        });
+}
+
+function createInfoComponent(md) {
+    var converted = `<sampling-info>${marked(md)}</sampling-info>`;
+
+    // Compile html, write file
+    posthtml().process(converted)
+        .then((result) => {
+            fs.writeFileSync(
+                path.join(
+                    '../',
+                    config.path.input,
+                    config.path.js,
+                    config.path.components,
+                    config.info.output.component
+                ), result.html
+            );
+        });
+}
+
+// Convert markdown to json for use in pdf export using marked
+// https://marked.js.org/#/USING_PRO.md#tokenizer
+// So far, only headings, paragraphs and lists are supported
+function createInfoJSON(md) {
+    var tokens = marked.lexer(md);
+    let info = [];
+
+    for (let token of tokens) {
+
+        if (token.type === 'space') {
+            continue;
+        }
+
+        if (token.type === 'html') {
+            info.push({
+                text: '',
+                type: 'pageBreak'
+            });
+        } else {  // if (token.type === 'list' || token.type === 'heading' || token.type === 'paragraph') {
+            var object = {
+                type: token.type
+            };
+
+            if (token.type === 'list') {
+                object.items = token.items.map(i => i.text);
+            } else {
+                object.text = token.text;
+            }
+
+            if (token.type === 'heading') {
+                object.depth = token.depth;
+            }
+
+            info.push(object);
+        }
+    }
+
+    fs.writeFileSync(
+        path.join(
+            '../',
+            config.path.output,
+            config.path.data,
+            config.info.output.javascript
+        ), JSON.stringify(info)
+    );
+}
+
+function createInfo () {
+    // Convert markdown to html
+    var markdown = loadFile(
+        path.join(
+            '../',
+            config.path.data,
+            config.info.input
+        )
+    );
+
+    createInfoComponent(markdown);
+    createInfoJSON(markdown);
+}
+
+createOutputDirectory();
+createInfo();
+createHtml();

+ 38 - 0
build.json

@@ -0,0 +1,38 @@
+{
+    "info": {
+        "input": "sampling-info.md",
+        "output": {
+            "component": "sampling-info.riot",
+            "javascript": "sampling-info.json"
+        }
+    },
+    "data": "data.tsv",
+    "html": {
+        "output": "index.html",
+        "input": "main.html"
+    },
+    "main": "main",
+    "path": {
+        "assets": "assets",
+        "bin": "bin",
+        "css": "css",
+        "components": "components",
+        "data": "data",
+        "fonts": "fonts",
+        "html": "html",
+        "img": "img",
+        "input": "src",
+        "js": "js",
+        "output": "dist"
+    },
+    "development": {
+        "infix": "",
+        "sourcemap": true
+    },
+    "production": {
+        "infix": ".min",
+        "sourcemap": false
+    },
+    "width": 1024,
+    "height": 650
+}

+ 512 - 0
data/data.tsv

@@ -0,0 +1,512 @@
+date_of_investment	recoll_after10	ten_dax	ten_gol	ten_fts	ten_bon	ten_fes	ten_sp	ten_msci	recoll_after20	twe_dax	twe_gol	twe_fts	twe_bon	twe_fes	twe_sp	twe_msci	recoll_after30	thi_dax	thi_gol	thi_fts	thi_bon	thi_fes	thi_sp	thi_msci
+Jun-66	1976-06	0,228423998		0,4338817515	0,7060120352		-0,9055995872		1986-06	4,7525732012		6,4954994283	2,8485126573		-1,4215909037		1996-06	8,9331878466		13,7955578374	8,4969431343		-1,2861397543	
+Jul-66	1976-07	0,2986290107		0,5863835352	0,7490996066		-0,888023379		1986-07	4,7543465973		6,8445012206	3,0475911059		-1,4238450146		1996-07	9,1409750302		14,6722545721	9,1336419609		-1,3415999038	
+Aug-66	1976-08	0,1781417901		0,6688437084	0,7431705852		-0,8551899141		1986-08	5,3543296328		8,6373240933	3,0498413165		-1,3465811951		1996-08	8,8242019872		15,9665206209	9,1282955708		-1,1919989921	
+Sep-66	1976-09	0,1250165485		0,5779969923	0,7223046681		-0,8150605495		1986-09	4,5738821396		7,5518790305	2,9553499242		-1,3427635985		1996-09	8,8172125291		15,6216212805	8,8076018011		-1,0995824493	
+Oct-66	1976-10	0,1071909197		0,3548421289	0,7016084339		-0,8340492269		1986-10	5,1801296866		7,3221408856	2,8728827425		-1,3225222849		1996-10	9,7377298965		15,0572704359	8,5005052821		-0,9985343471	
+Nov-66	1976-11	0,1915829176		0,5968758025	0,6665555318		-0,8700246749		1986-11	5,3943031873		8,3531160716	2,7054534783		-1,3241891052		1996-11	10,5206907498		17,2784496702	7,9157866201		-0,9831838875	
+Dec-66	1976-12	0,2468369015		0,5981597963	0,5670721281		-0,8510261341		1986-12	5,4954625434		8,1844002482	2,279591582		-1,3139033732		1996-12	11,044565954		17,4199343648	6,5305012905		-0,9770604146	
+Jan-67	1977-01	0,1355121275		0,6381914468	0,5160131344		-0,8998937804		1987-01	4,1139559622		7,1952895305	2,1135417124		-1,3025030488		1997-01	10,8522704753		18,9025443007	6,0111004778		-1,0139452553	
+Feb-67	1977-02	0,0394642395		0,4531243767	0,4924393769		-0,9520268699		1987-02	3,5854615772		6,1495136106	2,0350040175		-1,2814449391		1997-02	11,4398711821		18,9796332768	5,772601834		-1,0036536064	
+Mar-67	1977-03	0,0299681474		0,4445277292	0,4516451837		-0,974753816		1987-03	3,6231542393		6,1656895763	1,8821456608		-1,2667139252		1997-03	11,6894482076		19,4373684999	5,3067087614		-1,0633348773	
+Apr-67	1977-04	0,2343319662		0,5113350156	0,3918371861		-1,0024008161		1987-04	3,9517833244		5,9394067282	1,6631068013		-1,2956177202		1997-04	12,5113858084		18,7553892485	4,6654873733		-1,1472253647	
+May-67	1977-05	0,1746290786		0,572258206	0,3860806725		-1,0216158618		1987-05	3,8191898417		6,2205552148	1,6615377867		-1,3147467618		1997-05	12,8569141429		20,7964896467	4,6633074946		-1,0188303846	
+Jun-67	1977-06	0,1781169489		0,5089364976	0,3830792824		-1,0161335148		1987-06	4,42540944		6,6830236205	1,6639417688		-1,2617187633		1997-06	14,2720229591		21,9294360146	4,6610997087		-0,8958770317	
+Jul-67	1977-07	0,0862677856		0,5858880378	0,3860486417		-1,019055252		1987-07	4,380650512		7,441703805	1,6680080399		-1,2463012372		1997-07	15,8162418751		25,6935973696	4,6424642355		-0,8352942269	
+Aug-67	1977-08	-0,0826515283		0,4743585823	0,3602508105		-1,0503025695		1987-08	3,7286923306		6,9068815536	1,5893184413		-1,2122605623		1997-08	11,7411225341		20,8534422376	4,4213574705		-0,8773113324	
+Sep-67	1977-09	-0,1139737072		0,2740245595	0,3407674408		-1,0684134272		1987-09	3,4035345793		5,7597008572	1,5249443856		-1,2563965787		1997-09	12,2521460821		19,6640078949	4,2278180136		-0,8772896029	
+Oct-67	1977-10	-0,1400628736		0,262840749	0,3392452059		-1,083471123		1987-10	1,9068036302		3,8522790386	1,5231652614		-1,3739343844		1997-10	10,1210689825		17,2190354883	4,2333975631		-0,8366915756	
+Nov-67	1977-11	-0,189049794		0,2077278262	0,3586792955		-1,0625471634		1987-11	1,186613127		2,8800595661	1,5963608347		-1,4516134566		1997-11	10,3658793616		17,1566496609	4,4434372958		-0,7789150608	
+Dec-67	1977-12	-0,2636537967		0,1146836222	0,3540264472		-1,0853721153		1987-12	1,0013164133		2,6213450919	1,58999356		-1,48954072		1997-12	10,8291325138		17,5065638928	4,4298242443		-0,79089597	
+Jan-68	1978-01	-0,2938168436		0,0816264172	0,3464492701		-1,0942706873		1988-01	0,6971268005		2,1551433886	1,5387026883		-1,4377013306		1998-01	10,939350864		17,6557837609	4,2642220328		-0,7404970459	
+Feb-68	1978-02	-0,2939945075		0,029247299	0,3419270161		-1,083777734		1988-02	1,1423324752		2,6163925565	1,5384872635		-1,3762268455		1998-02	11,7685846883		18,1724156101	4,2667599893		-0,4938724818	
+Mar-68	1978-03	-0,3375950363		0,0218282665	0,3357068216		-1,0837483055		1988-03	1,0005903622		2,6190078861	1,5340454733		-1,3411138011		1998-03	12,5694339816		19,7501153481	4,2612247754		-0,3264122715	
+Apr-68	1978-04	-0,4245446807	3,0041500388	-0,0626534579	0,3164453618		-1,1028401585		1988-04	0,8578483335	9,7022569882	2,449419335	1,4659815743		-1,4129326454		1998-04	12,0241459729	5,2663752603	19,3799333373	4,0697165764		-0,4188288139	
+May-68	1978-05	-0,3879600821	2,6995299196	-0,0856621309	0,2753154079		-1,0980226081		1988-05	0,966312412	8,8642046114	2,3644188862	1,3257996487		-1,4587931628		1998-05	13,5333824821	4,4653037194	20,3497982971	3,6948593187		-0,4819448912	
+Jun-68	1978-06	-0,4376392608	2,839588859	-0,0134533323	0,275369185		-1,1131686784		1988-06	0,9139815677	8,7637823716	2,6486505569	1,3302873758		-1,430529225		1998-06	13,3376206813	4,2267062997	21,4390330225	3,6953362695		-0,5336577422	
+Jul-68	1978-07	-0,3977602193	3,1397712638	-0,0565018893	0,275261703		-1,1157225108		1988-07	1,0248487491	8,8434776167	2,4926801101	1,3301685364		-1,4325647182		1998-07	13,2509316136	4,5168443736	20,2606718171	3,6848749077		-0,426041748	
+Aug-68	1978-08	-0,3862395531	3,638679247	-0,0334554976	0,2563204358		-1,0703842605		1988-08	0,9624914345	8,7780129988	2,4906531949	1,2616814033		-1,4362709878		1998-08	10,3341670916	4,3616630352	16,5947285216	3,5034804877		-0,5483342221	
+Sep-68	1978-09	-0,3153385636	3,6481751126	-0,0088546822	0,2579116154		-1,0890234266		1988-09	1,3022425552	8,0556236836	2,7351491207	1,260204223		-1,4531440009		1998-09	9,5990989928	4,2915149542	14,864712578	3,5093185825		-0,7270040163	
+Oct-68	1978-10	-0,3706631178	4,1700065189	-0,002719313	0,257933282		-1,120520751		1988-10	1,3443831431	8,1365500623	3,0500262614	1,2605167952		-1,443138251		1998-10	9,9476997731	4,6838568585	15,7435523998	3,5175220437		-0,739499842	
+Nov-68	1978-11	-0,3606880006	3,5763081233	-0,050733914	0,2609361027		-1,1554219632		1988-11	1,354673362	8,3292029275	2,7931545309	1,2645172072		-1,4673609313		1998-11	11,2218939076	4,5292659228	17,0518006724	3,5333326948		-0,5209156886	
+Dec-68	1978-12	-0,3463118344	3,4277785336	-0,0238080844	0,2593617015		-1,1557268989		1988-12	1,5563999728	7,9714010365	3,1025541336	1,2623175731		-1,4612991192		1998-12	11,3823766127	4,2194093533	17,0683450729	3,5305711716		-0,4471308192	
+Jan-69	1979-01	-0,413342544	3,7348975068	0,0099724446	0,2559474506		-1,122832277		1989-01	1,3196635878	7,3322592121	3,2429616803	1,2573349309		-1,4085954723		1999-01	11,1129413966	3,949600081	17,5274186238	3,553397446		-0,1918439722	
+Feb-69	1979-02	-0,4166708664	4,1289997445	-0,1156472823	0,2544858679		-1,1324275581		1989-02	1,3481896844	6,8725292876	2,8616671559	1,2571505108		-1,3785663685		1999-02	10,8090153979	3,9119922548	15,7453074017	3,5638447201		-0,1613100773	
+Mar-69	1979-03	-0,454896567	3,9719733869	-0,1104221454	0,2640745021		-1,1202784077		1989-03	1,3929129629	6,8043007914	3,0745169806	1,3171141432		-1,3657152155		1999-03	10,5597245446	3,7907581231	16,0483417724	3,7372179778		-0,0157338562	
+Apr-69	1979-04	-0,4628971864	3,8765748227	-0,1336495438	0,2755615797		-1,1294819525		1989-04	1,5051428517	6,6438908384	3,2019043101	1,3763692849		-1,3621299309		1999-04	11,8939422196	3,6799990987	17,3933192894	3,9128815156		0,0300844274	
+May-69	1979-05	-0,6020502889	4,2782939	-0,1979892934	0,2711907141		-1,1666910873		1989-05	1,3187556939	6,2986643437	3,3248629399	1,3726590262		-1,3634850669		1999-05	9,9995312412	3,5300144223	16,5362760453	3,9186735369		-0,0528853546	
+Jun-69	1979-06	-0,5787795047	5,0859125495	-0,307686959	0,3036995514		-1,1358199009		1989-06	1,6233250367	6,6320641004	3,2727768813	1,5119177018		-1,2783587822		1999-06	11,2631202687	3,4662026999	16,3365032099	4,3021109623		0,0962185177	
+Jul-69	1979-07	-0,5145092878	5,3960412213	-0,2359284252	0,3258108902		-1,1232768831		1989-07	1,9708624334	6,7465812962	3,6793449351	1,6534902293		-1,2026820694		1999-07	10,9660897698	3,2812076789	16,0812797566	4,6934872625		0,3643922349	
+Aug-69	1979-08	-0,5900973343	5,6381400819	-0,1799578333	0,319543367		-1,1037042382		1989-08	1,7802043944	6,6424857183	4,0636658136	1,6472965793		-1,1527094107		1999-08	10,416852857	3,3848849647	17,1489152904	4,6856635419		0,2586945574	
+Sep-69	1979-09	-0,5627486329	6,9965482592	-0,2726350643	0,3719634022		-1,1069372934		1989-09	1,8244627374	6,6065713481	3,727469564	1,8647755776		-1,1563444588		1999-09	10,4638120688	3,6179737825	15,3114900948	5,3432645282		0,2279989589	
+Oct-69	1979-10	-0,656927351	7,9759332644	-0,3175739306	0,4049971217		-1,1404373491		1989-10	1,4246176776	6,8091716057	3,4176750721	2,0113945486		-1,1728916045		1999-10	10,948498079	4,8489858626	16,835022305	5,811743197		0,1696488722	
+Nov-69	1979-11	-0,6782788988	8,7740373964	-0,3684399885	0,4081001346		-1,1474349562		1989-11	1,56142906	8,2851591524	3,4589096906	2,0196011901		-1,1915477036		1999-11	11,3860861347	5,0000277633	16,8436824556	5,8194091046		0,3806876476	
+Dec-69	1979-12	-0,637359185	11,4963878018	-0,4468779689	0,4464668552		-1,0983890261	0,279543584	1989-12	2,3017596406	9,3966117031	3,7968627622	2,1775657604		-1,1009732078	9,865890067	1999-12	14,8265567409	5,2197571851	18,8012746731	6,3053310431		0,6689849152	34,58228632
+Jan-70	1980-01	-0,5528601578	17,6357342125	-0,3584873751	0,4586373638		-1,0711398879	0,532513953	1990-01	2,7068146608	9,504635689	4,2980799343	2,1912818835		-1,1142187633	9,983965787	2000-01	15,7043967836	5,3304797295	19,76051086	6,3356558721		0,7216472223	34,51657514
+Feb-70	1980-02	-0,5066203894	17,3473093899	-0,2587493933	0,4838064658		-1,0444818155	0,45394105	1990-02	2,8027385856	9,6720062067	4,6331289992	2,3548468551		-1,1057877864	9,102706318	2000-02	18,2999985362	5,7944719885	23,5384406485	6,8617525449		0,7631432765	33,47267364
+Mar-70	1980-03	-0,6068266606	14,1100984652	-0,3412968488	0,5387059176		-1,1231716522	0,214239071	1990-03	3,2186176737	8,9895116706	5,4202166248	2,6132950097		-1,0963584616	8,383072182	2000-03	18,2310860612	5,3702620122	23,951521114	7,6916212877		0,8294212219	35,82558236
+Apr-70	1980-04	-0,5010586734	12,8184068715	-0,3090409766	0,5387461873		-1,1167822103	0,548268913	1990-04	3,0719037431	8,3013062408	4,8692616091	2,6193974823		-1,0483040321	9,301100823	2000-04	18,8600153307	5,0657976052	23,0407090031	7,6991405305		1,0281928009	37,97379817
+May-70	1980-05	-0,3520711279	12,6062404596	-0,203124561	0,5908059845		-1,027379624	0,807619116	1990-05	3,6773517231	8,0286404262	5,3545226613	2,884261863		-0,8534459253	11,34519812	2000-05	19,9785434453	4,8711187251	23,7247835974	8,6044100795		1,4127104914	39,5823232
+Jun-70	1980-06	-0,2539667378	15,2595614787	0,0024762582	0,6552008239		-0,9826346221	0,99605895	1990-06	4,0576370014	7,7309631066	6,3235819783	3,1780686129		-0,7965445456	11,58437444	2000-06	20,2481815519	5,2631456866	25,4014176147	9,5714661486		1,5631627696	42,06253021
+Jul-70	1980-07	-0,3116267761	16,5806765165	0,1260446299	0,651808246		-0,9512081812	0,913801141	1990-07	3,7646434783	8,0226492194	6,9995282398	3,1799861202		-0,7966446366	10,89010715	2000-07	19,6182618224	5,1865429293	27,0604483588	9,5612871064		1,5907157086	38,21693519
+Aug-70	1980-08	-0,3091942865	16,006239215	-0,0199215197	0,5874355528		-0,9568641335	0,878916952	1990-08	2,9896046585	8,9344833393	5,1494064014	2,886517881		-0,9690257153	9,273248921	2000-08	20,3050425794	4,9626582643	24,9612618661	8,5919859273		1,5053994687	38,16760802
+Sep-70	1980-09	-0,2806611447	16,9219122273	-0,0399114135	0,6098851253		-0,9823691743	0,875621645	1990-09	2,124025171	8,5299187683	3,8411516763	2,9743381785		-1,1042869126	7,733281176	2000-09	19,384370317	4,7589414351	23,010362824	8,9025611624		1,2099245728	34,75061838
+Oct-70	1980-10	-0,301604509	15,9369471172	-0,0389712352	0,6503591127		-0,9817795656	0,989169273	1990-10	2,5053889026	7,914027036	4,4832206161	3,1581290847		-1,1662551658	8,804130293	2000-10	20,6351493509	4,4091137761	23,4511951905	9,5695402262		0,9393528605	34,65294323
+Nov-70	1980-11	-0,2340872889	14,9579984035	0,0033957317	0,629275373		-0,9530239178	1,040497857	1990-11	2,7137970324	7,9712031774	4,646220385	3,0777680384		-1,116993781	8,39501612	2000-11	19,0571445517	4,3252257917	22,1240464014	9,2520618365		0,9426656896	31,60478965
+Dec-70	1980-12	-0,2198985523	14,2369917685	0,0150939264	0,5419299601		-1,0197374222	0,849883568	1990-12	2,7398478649	7,8819237084	4,6699531739	2,7113306875		-1,1342270681	8,102678203	2000-12	20,0303293143	4,4712823376	22,7148489293	7,9912745359		0,5886833016	30,47082135
+Jan-71	1981-01	-0,4299365323	13,034937293	0,0366297436	0,4501253887		-1,0448898663	0,675140032	1991-01	2,1982365751	7,9536450079	4,8405821247	2,3010021065		-1,1731174417	8,020749496	2001-01	18,3158152275	4,2807726005	24,7044312006	6,6613284464		0,5053000565	29,65036329
+Feb-71	1981-02	-0,4716353117	11,2395795191	-0,1613636529	0,4501867648		-1,0954563444	0,65795473	1991-02	2,4193962457	7,1965000834	4,574148576	2,3048078826		-1,0946050541	8,842174725	2001-02	15,8548063517	4,0304882972	20,0004705681	6,6661168945		0,3145452571	26,59648518
+Mar-71	1981-03	-0,44636609	11,1540978025	-0,171789597	0,484681967		-1,09601451	0,635164702	1991-03	2,3319217997	7,1571080998	4,2521930428	2,4791787105		-1,0835919374	8,07072974	2001-03	14,588399416	4,0450695658	18,4071425076	7,2055520571		-0,0247313247	23,52179602
+Apr-71	1981-04	-0,2953237931	11,0332502819	-0,1283256936	0,4847493313		-1,1131286425	0,562987157	1991-04	2,9366481125	6,9995426243	4,4556752785	2,4891327942		-1,0877797671	7,828642069	2001-04	17,2398547561	3,9602877141	19,5067582508	7,2077117343		-0,1068329991	24,55235387
+May-71	1981-05	-0,365489615	10,1553394502	-0,0711137404	0,4985475535		-1,1247737366	0,567009671	1991-05	3,1192646983	6,6305320797	5,2151918601	2,5670084757		-1,0830995684	8,287041034	2001-05	16,3458257162	3,991330637	20,475562572	7,4815738277		0,1083006238	24,84221027
+Jun-71	1981-06	-0,2381709393	9,7791183073	0,012559704	0,5420632038		-1,1087678234	0,544314165	1991-06	2,9343069623	6,9486368535	4,843312754	2,7450686213		-1,0539574018	7,541463155	2001-06	16,4021087077	4,0286007614	20,7675775058	8,0610888935		0,1111213122	23,70212301
+Jul-71	1981-07	-0,2868336221	8,288405983	0,0604066539	0,5544073052		-1,1319620472	0,534631086	1991-07	2,6970411465	6,784742791	4,8528489187	2,815009735		-1,0589880481	8,136202689	2001-07	15,001848264	3,8259368606	20,3664549733	8,3673963188		0,0748827246	23,76388088
+Aug-71	1981-08	-0,2626361925	7,8864770837	-0,0526832851	0,5496741063		-1,1269597406	0,439481148	1991-08	3,0051993711	6,1430096282	4,6449185527	2,8148445498		-1,010772597	7,877894299	2001-08	13,6712597889	3,6698784654	17,6146445469	8,3699073949		0,0735238922	21,9498147
+Sep-71	1981-09	-0,2957164366	8,8545328009	-0,089657659	0,5076933016		-1,1964395781	0,296129663	1991-09	3,0915319764	6,1049353886	4,7041291535	2,646490895		-1,0380019647	8,243799993	2001-09	11,4739666434	4,0271992578	15,506641306	7,7900087502		-0,2974059627	19,99681522
+Oct-71	1981-10	-0,199156264	8,5835553353	-0,0434199328	0,4844943402		-1,1813340856	0,436901038	1991-10	3,4141434554	6,2555352287	4,8448706123	2,5636409503		-1,0084544558	8,82306943	2001-10	13,4634648482	3,9779257401	17,0934496692	7,5167428231		-0,1452537308	21,32484149
+Nov-71	1981-11	-0,1564237018	7,9289254295	0,1143738353	0,4645619636		-1,1423713879	0,578337108	1991-11	3,3211143503	6,2079035141	5,1937212568	2,476134257		-0,9595407217	8,248357694	2001-11	14,894547482	3,7755864079	19,9309222561	7,2606846594		0,1347214476	22,5284151
+Dec-71	1981-12	-0,3043771873	7,7174343308	0,0722423749	0,4629319683		-1,1763948823	0,342737749	1991-12	3,001156198	6,1370932183	5,165143104	2,4781161363		-1,0245235235	8,079471258	2001-12	14,2900523789	3,6601290871	20,4775582681	7,2408097783		-0,0069761892	20,56484827
+Jan-72	1982-01	-0,331558444	6,7043229784	0,0140119206	0,4135474704		-1,2179573552	0,250599185	1992-01	3,1087862751	5,589165793	5,1549979667	2,2457223784		-0,9779734114	7,545336399	2002-01	13,3365921481	3,5123954292	19,2703847779	6,4877106451		-0,0996068239	19,0869006
+Feb-72	1982-02	-0,4089465793	6,0547875008	-0,0196476149	0,3610001987		-1,2329603358	0,068579731	1992-02	2,8980590622	5,1568668529	5,075200052	2,0085112611		-1,010322493	7,019054708	2002-02	12,0084181387	3,4782519981	18,1794303223	5,7739768238		-0,2212844787	18,10237486
+Mar-72	1982-03	-0,4249246061	5,129863951	-0,0965472856	0,3844645808		-1,2529016428	0,001522185	1992-03	2,6149152686	4,9559926103	4,4803482795	2,0832210774		-1,0570181404	6,462314543	2002-03	12,4138841513	3,4413697003	17,6338570984	6,005840993		-0,1738275246	18,70656545
+Apr-72	1982-04	-0,3753214517	5,4470691484	-0,1627383065	0,4470024718		-1,2313694662	0,067250758	1992-04	2,8318962352	4,7280193258	4,227348465	2,322470349		-1,0671374631	6,463383037	2002-04	11,9318212339	3,5352375231	16,0296205615	6,7609754802		-0,2834378558	17,72126742
+May-72	1982-05	-0,4365984163	4,4280518614	-0,1528916713	0,4557459101		-1,2403453098	-0,022357156	1992-05	2,8718208396	4,0033525944	4,6038190021	2,4053225986		-1,0339402333	6,622430407	2002-05	10,8642230103	3,1333130332	15,9669813535	7,0277122881		-0,3184417688	17,35438225
+Jun-72	1982-06	-0,4507946467	3,3486269608	-0,2179877231	0,4676799155		-1,280810169	-0,067371416	1992-06	2,7970846462	3,3049242424	4,2137094248	2,4937227087		-1,052151493	6,530032955	2002-06	9,8099732848	2,5447925958	14,1225430429	7,3060951039		-0,4507142102	16,59225824
+Jul-72	1982-07	-0,5169609186	3,4411704744	-0,1784892379	0,4921052914		-1,274388859	-0,108323515	1992-07	2,1273477724	3,2054034857	3,8330005275	2,5850472738		-1,0161243498	6,421091037	2002-07	7,2320576193	2,1700991127	12,4787347102	7,5960181034		-0,6519270814	14,71890535
+Aug-72	1982-08	-0,5021558851	3,7210136207	-0,2777102693	0,4753604538		-1,2849326845	-0,03586059	1992-08	2,0085023306	2,9637987455	3,1773632679	2,4992918433		-1,0486252599	6,382388484	2002-08	7,4551353308	2,0202420612	11,499265207	7,320114633		-0,7021932074	14,26585157
+Sep-72	1982-09	-0,3895600535	4,9816365139	-0,1747941987	0,4865765031		-1,2174419053	0,00956289	1992-09	1,965221874	3,1175154185	3,0844437716	2,5231821549		-1,0073374181	6,453893906	2002-09	5,1757220557	2,2709673232	8,6118690631	7,3435673913		-0,7445156334	12,66856622
+Oct-72	1982-10	-0,3847258464	4,8204136606	-0,1366759581	0,5033756151		-1,180133676	0,109279599	1992-10	2,1281758107	3,1680011541	3,3254391816	2,6128225844		-1,0202446359	6,154322689	2002-10	6,4461597523	2,3085909935	10,332762993	7,6312372913		-0,7583773824	13,65709277
+Nov-72	1982-11	-0,3642948258	4,920916257	-0,053519156	0,589354755		-1,1779018359	0,115126194	1992-11	2,2337765997	3,2004715739	3,5891145239	2,9744543881		-1,0421029005	5,883409221	2002-11	6,8498667649	2,5378202676	11,1180148162	8,8373163972		-0,7030338586	13,69737496
+Dec-72	1982-12	-0,2368989286	5,2782245045	0,0309975496	0,6325471903		-1,1788868865	0,164285912	1992-12	2,3154822008	3,1119536682	3,5172333449	3,1667674323		-1,0247547653	5,803504712	2002-12	5,7639762388	2,6573310308	9,5558815533	9,4599020314		-0,7706680871	12,61576689
+Jan-73	1983-01	-0,3049689966	5,7184121467	0,0539632047	0,6479997752		-1,1491695043	0,215276437	1993-01	2,1937478572	2,9235840773	3,7149184137	3,1739718262		-1,0298518394	5,814834101	2003-01	5,018247321	2,9429714043	9,2608949521	9,4918857779		-0,7626355198	12,14850322
+Feb-73	1983-02	-0,1554689427	5,0005828325	0,0965187323	0,657278432		-1,1074720603	0,251397842	1993-02	2,6260169843	2,3217049677	3,8021428239	3,1717951938		-0,970653392	5,940544821	2003-02	4,6621327684	2,3311339224	8,0106150013	9,4985570867		-0,8125938165	11,79841266
+Mar-73	1983-03	-0,0298618629	3,3419372925	0,3470491991	0,6677975992		-1,0625247876	0,327067159	1993-03	2,405024806	1,7967132873	4,0063034746	3,1752967417		-0,9190287931	6,393134579	2003-03	3,9984068559	1,5376714793	7,7306200204	9,5049244291		-0,7528933441	11,73699281
+Apr-73	1983-04	0,1920133935	3,1384654046	0,3715759533	0,7193229081		-1,0188829122	0,59108284	1993-04	2,5191730238	1,6657590737	3,573633383	3,3819980699		-0,898881263	7,261852884	2003-04	5,878118946	1,1280797288	8,946336084	10,2018437376		-0,5867892147	13,82941471
+May-73	1983-05	0,2796443643	2,6561919113	0,3694753196	0,8094012446		-0,9704618943	0,579060413	1993-05	3,0342171198	1,5044303528	3,9146171004	3,8011431915		-0,8429407368	7,507828557	2003-05	6,9173086682	1,0170835021	9,7560982193	11,6838530785		-0,3914566268	14,82426431
+Jun-73	1983-06	0,4087085835	1,8070613951	0,6950927336	0,9748040036		-0,9362466829	0,641005364	1993-06	3,3006669355	1,0049431895	4,7112868478	4,601569143		-0,7908273395	7,371263329	2003-06	7,7713541122	0,5057068874	11,877032233	14,6524961631		-0,2051578558	15,01354293
+Jul-73	1983-07	0,6348424643	1,8681481997	0,7889409022	0,9731332424		-0,9433043735	0,546516465	1993-07	4,0010268991	1,1575596398	5,1872728966	4,6015591713		-0,8025264599	7,336468267	2003-07	9,3310633474	0,4452217478	12,8423559326	14,6570297507		-0,2091162788	14,94937125
+Aug-73	1983-08	0,4595120153	2,2686972595	0,8055504026	0,943652447		-0,9452407581	0,647570465	1993-08	4,4007482256	1,4718857024	6,168011487	4,4783923345		-0,7408252786	8,182251462	2003-08	9,1798041984	0,9060181022	14,0560624895	14,1950493806		-0,1444746645	16,07647578
+Sep-73	1983-09	0,5409401314	2,3490391997	0,8297903207	0,8950491089		-0,9413377083	0,625691218	1993-09	4,3873790448	1,3538539557	5,9571254867	4,2525468127		-0,7423527948	7,712055684	2003-09	8,553174946	1,2063501711	13,0331788482	13,3184790323		-0,1145729813	15,66200196
+Oct-73	1983-10	0,5841003089	2,3042045673	1,061852834	0,9287020578		-0,9517352383	0,587244594	1993-10	4,4495450277	1,5610573076	6,7712412302	4,3829453624		-0,759517918	7,890594266	2003-10	9,0880595781	1,3408211533	14,8523226862	13,770020381		-0,1212258509	16,54868087
+Nov-73	1983-11	0,96704562	2,4022709944	0,9481174087	0,8783700516		-0,888859596	1,002892089	1993-11	5,3344314489	1,8914594988	6,2223707262	4,0657705622		-0,6308216536	8,738372035	2003-11	11,0457516238	1,7088750561	14,09535882	12,5412040127		0,1468478729	19,71883196
+Dec-73	1983-12	1,0512680261	2,0366358911	1,2767306441	0,9309109203		-0,825086642	1,06556455	1993-12	6,2863187431	1,5570280693	7,8114207649	4,299179077		-0,4926411233	9,359222024	2003-12	12,1647689539	1,4185086167	16,7547749985	13,3702446269		0,4392112347	21,27573598
+Jan-74	1984-01	0,9711320087	1,264549071	1,4482573061	0,9383274296		-0,8169842627	1,074322371	1994-01	5,3983259399	0,9551178175	7,8055308223	4,3045135681		-0,4764555275	10,01321264	2004-01	11,4764350213	0,8152389312	17,7702436885	13,3919443254		0,5677849402	21,47872262
+Feb-74	1984-02	1,0608675379	0,9735736646	1,1518453851	1,0163744413		-0,8241392046	0,998036704	1994-02	5,7153137113	0,5026876989	6,9226926014	4,6593847128		-0,4180401488	9,67146057	2004-02	12,5217477155	0,3180043837	16,4686092868	14,7458249178		0,7212903211	21,51113357
+Mar-74	1984-03	1,0116833044	0,7468087887	1,3413154203	1,1615118692		-0,8461296991	1,191318311	1994-03	5,6792805067	0,2398827466	7,6561481537	5,4192933152		-0,4961045256	9,449542721	2004-03	11,5729998852	0,0253565023	17,1049968945	17,7519532987		0,5553585823	21,94654808
+Apr-74	1984-04	0,9397306885	0,6246338007	1,3670897644	1,1459081981		-0,7962679808	1,236315626	1994-04	5,7235101078	0,1636880941	8,0912544724	5,2982213174		-0,4555301092	10,00496703	2004-04	11,3757698277	-0,0321325656	17,5536934902	17,2201871263		0,7466955996	21,84776416
+May-74	1984-05	0,9556367624	0,7222358681	1,1825672525	1,2025204379		-0,7615075185	1,14087368	1994-05	5,6343828774	0,3080516916	7,2500136706	5,5722146662		-0,3665256967	10,53693168	2004-05	11,74350838	-0,0225428767	16,5911038585	18,3189169743		0,7908123346	23,09410651
+Jun-74	1984-06	1,1002545142	0,8758020674	1,3718337659	1,2291505667		-0,7748989436	1,25450197	1994-06	5,4233935802	0,4851519504	7,3018535179	5,7130901676		-0,3421815378	10,90074683	2004-06	12,5299549045	0,1805993184	17,8691405957	18,8901764482		0,8954450222	24,4462497
+Jul-74	1984-07	0,9417221008	0,8698177246	1,3024624728	1,2615465391		-0,6691532193	1,333197203	1994-07	5,8337900039	0,6916226117	7,9417272283	5,8541230069		-0,1227528466	11,95956032	2004-07	11,8893353243	0,4414487085	17,7629669004	19,4740579403		1,277896929	25,18186139
+Aug-74	1984-08	1,0669952641	0,6820759428	1,4618961538	1,264526355		-0,5356783594	1,967244836	1994-08	5,9799159238	0,4417736905	8,1787128877	5,8502320464		0,0277036438	13,88955829	2004-08	11,322938173	0,2288510005	17,288184884	19,4696321648		1,4157344149	28,21440896
+Sep-74	1984-09	1,4249806565	0,6825968036	1,6403587229	1,2693038614		-0,3904387634	2,318243773	1994-09	5,6829140818	0,5706308087	7,3804577546	5,8617400635		0,311898319	15,05233311	2004-09	12,5333496919	0,3207892018	17,5357989845	19,480639159		2,019506584	31,95877044
+Oct-74	1984-10	1,3952019681	0,5789845592	1,8608941429	1,2677460512		-0,4153349577	2,013136802	1994-10	5,6759842559	0,4642054797	8,0910402738	5,8746529505		0,2861477056	14,00421441	2004-10	12,3263598584	0,3088428696	18,912403169	19,4911818687		1,9649162065	29,7137486
+Nov-74	1984-11	1,3061917116	0,3220504854	1,8254466015	1,2017218743		-0,4247506143	2,06253308	1994-11	5,2925166251	0,1337407736	7,7587783062	5,4768479448		0,2265060456	13,55048634	2004-11	12,3416455212	0,1026909862	19,4213154211	17,8222581977		2,0768651675	31,92153821
+Dec-74	1984-12	1,3470227841	0,1815445645	1,7222786012	1,0578527646		-0,3496793828	2,197529895	1994-12	5,4272132624	0,0779841354	7,4862968111	4,713108281		0,3649834711	13,94205098	2004-12	12,641401298	0,0715794819	18,8695470466	14,7859722914		2,536328821	33,76094809
+Jan-75	1985-01	1,2211747286	0,1608489477	1,8280867726	0,9503169849		-0,3835827473	1,905339333	1995-01	4,5069733544	0,1658013929	7,0343187184	4,1496407396		0,2470416275	11,71282895	2005-01	11,3479060745	0,0995983302	18,8955654856	12,6569025742		2,1501269235	28,48598474
+Feb-75	1985-02	1,0029482238	0,1238974277	1,6082101379	0,8430881447	0,676352498	-0,4302110146	1,631759486	1995-02	4,1466828358	0,1261123188	6,6536106106	3,6251848883	2,8707506505	0,1210752687	10,78057595	2005-02	10,3687580315	0,0640397183	17,6985030332	10,7594081509	8,1980393397	1,8052503191	26,87351868
+Mar-75	1985-03	1,0389296879	0,1524483029	1,3556571589	0,8428507274	0,6301947888	-0,4884100257	1,715954149	1995-03	3,572134756	0,1739845207	5,2400108808	3,628686708	2,6762406452	0,0802883286	11,28711125	2005-03	10,232106868	0,1366878865	15,8055958192	10,7528875023	7,5511128372	1,5876628199	26,07597044
+Apr-75	1985-04	1,0711451571	0,3712516354	1,4433090242	0,8313303311	0,5931393467	-0,4841686738	1,585732524	1995-04	3,6875481581	0,346657936	5,5125579869	3,5426947116	2,4921832779	0,1334167431	11,20680235	2005-04	9,4317287808	0,2430354574	15,1252535124	10,4223985426	6,9441585089	1,4559545086	24,37189569
+May-75	1985-05	1,5693793529	0,3608686992	1,6307549316	0,797640532	0,5595731701	-0,5129331823	1,67741102	1995-05	4,3818328952	0,3607547942	5,6144469618	3,3599757514	2,3301558807	0,0901075873	11,01539978	2005-05	11,2148374938	0,2600138456	15,6870465795	9,760529946	6,416099351	1,3108699351	24,22506582
+Jun-75	1985-06	1,7555311024	0,4069332058	2,0993801866	0,7675854103	0,5111145691	-0,5003818589	1,703999816	1995-06	4,2838738566	0,427012429	6,2437399478	3,180567697	2,09723708	0,1186937424	10,84996306	2005-06	11,4241324041	0,3621217495	17,5493006245	9,1315148865	5,6953130235	1,3279820185	24,11819052
+Jul-75	1985-07	1,3287240706	0,4094916925	1,9307155511	0,7926202991	0,5024682272	-0,4680405758	1,965363109	1995-07	4,0921459224	0,4075308976	6,5437597593	3,2723117456	2,0444419099	0,2072216662	12,25566599	2005-07	11,0114752597	0,3146369867	18,4608835209	9,4428953569	5,5397001916	1,4039025664	26,59949763
+Aug-75	1985-08	1,7537117383	0,5089340539	1,9186277532	0,7927822178	0,4989501332	-0,4097454565	2,046774526	1995-08	4,4905677883	0,4104801973	5,8992446791	3,2670148236	2,0246531615	0,3767728571	12,13931369	2005-08	11,6033911244	0,4111265106	16,7380160967	9,432703758	5,4867071586	1,677368038	27,2414687
+Sep-75	1985-09	2,0210517668	0,7365329998	2,3031744184	0,8001332418	0,5063011572	-0,4108012577	2,235425913	1995-09	4,4568783367	0,7244923797	6,0965100821	3,2778812488	2,0355195866	0,5071441462	13,17709457	2005-09	12,4626271622	0,8938028132	18,4196788103	9,4389519218	5,4929553224	1,7109371879	29,30677102
+Oct-75	1985-10	2,1951024999	0,7798623412	2,8461216562	0,8016673586	0,507835274	-0,4436492574	2,18185942	1995-10	3,9264206912	0,7655368517	6,0328815285	3,2868974476	2,0445357855	0,4308308349	11,98214709	2005-10	11,0313075793	1,0331715981	18,1058234111	9,4431394925	5,4971428931	1,4476097134	26,54441261
+Nov-75	1985-11	1,9232458369	0,7793598621	2,4787940482	0,8238942709	0,5109762218	-0,3916762246	2,283469711	1995-11	3,816338625	0,7890765457	5,6462150283	3,3890423122	2,0588592188	0,4675139654	12,07758483	2005-11	11,0234283717	1,1005370218	17,6065705344	9,7854556155	5,5369398466	1,6016749333	26,71667903
+Dec-75	1985-12	2,3609667666	0,8076167358	2,7372779438	0,8029233111	0,5109304591	-0,3174693611	2,455009933	1995-12	3,7763413815	0,8635025143	5,4468136792	3,2885993961	2,0534772146	0,5868625202	12,45602357	2005-12	11,4071014332	1,4002127778	17,4414789425	9,4471753677	5,5225504871	1,7552667666	27,29484081
+Jan-76	1986-01	2,3048293985	1,1280689396	2,7365936725	0,7699008553	0,5210818826	-0,4054425876	2,19031506	1996-01	4,2477670759	1,1193715587	5,9327726519	3,113657336	2,0709859811	0,3762175586	11,51935865	2006-01	11,9093261221	1,9408532175	18,5165379689	8,8510170276	5,5701944434	1,4703977937	26,09196834
+Feb-76	1986-02	2,2133360384	1,1045995711	2,6334836032	0,7605953507	0,5285068001	-0,3713776765	2,561312536	1996-02	4,2321792253	1,1876531841	5,8426953842	3,0267558274	2,0597841175	0,4211551243	11,69468931	2006-02	12,1547459709	2,0171884257	19,0071565855	8,5579117755	5,5331995433	1,338438785	26,2521843
+Mar-76	1986-03	2,4279016185	1,1293909366	2,9856944873	0,7059687706	0,5194438018	-0,2986325724	2,90768736	1996-03	4,0793447179	1,0837795549	5,7980702049	2,7654546626	2,0022856815	0,3930651299	11,74879582	2006-03	12,1461181376	1,9743980701	19,610992949	7,7077316107	5,3642234652	1,3548349577	26,52282706
+Apr-76	1986-04	2,9034154848	1,1955565921	3,1058678392	0,7169875316	0,4586350806	-0,2616416457	3,069552937	1996-04	4,5529664122	1,1787234685	5,5884304734	2,7775130749	1,7390179584	0,3868214601	12,17228723	2006-04	13,240943128	2,5617001752	19,1815917634	7,7113870036	4,5762596459	1,3360432682	27,60035416
+May-76	1986-05	2,5274380247	1,2320494763	2,9571158328	0,7598460466	0,4615130917	-0,24255519	3,132933718	1996-05	4,6757046448	1,1994272252	6,2498730809	2,9536426017	1,7425110067	0,4681214806	12,41455994	2006-05	12,4862384222	3,1211029357	19,286394413	8,2807901724	4,5865614559	1,3451340437	27,08138242
+Jun-76	1986-06	2,4160431237	1,2637690433	2,9425425364	0,7816834795	0,4701833105	-0,2137678091	3,173182561	1996-06	4,6471374129	1,1744951389	6,5027279849	3,0408141676	1,7677193169	0,4896211925	12,04714399	2006-06	12,2910715833	2,5418376997	19,3485707441	8,5679485496	4,6580575934	1,2307925039	26,18334244
+Jul-76	1986-07	2,2748221251	1,4991644507	2,7017850118	0,8283135455	0,5187723556	-0,2559891107	3,256819941	1996-07	4,51629858	1,3593274783	6,137324783	3,2194822896	1,928410437	0,3540216216	11,66885073	2006-07	12,5030674633	3,148131243	19,1859819865	9,1660276755	5,1198939089	1,170402534	26,59869253
+Aug-76	1986-08	2,8633267118	1,9679755189	3,3487947883	0,8146387041	0,5566312946	-0,2101359914	3,683874041	1996-08	4,7596175721	1,6304902903	6,4256291037	3,1311249248	2,052320278	0,4503812684	11,84858131	2006-08	13,1011826583	3,5214151188	19,9850127372	8,8650162469	5,4776235372	1,2905818226	27,40444217
+Sep-76	1986-09	2,5410644981	2,2140373916	3,1256307814	0,7743041343	0,558783123	-0,2702010327	3,435650625	1996-09	4,9625313158	1,470762311	6,756317917	2,9543275268	2,0615368944	0,4464433342	12,25666815	2006-09	13,2994251656	3,047130945	20,8556364062	8,2794177872	5,5031422133	1,3329517386	27,49132706
+Oct-76	1986-10	2,9421848855	2,2072555513	3,1332285858	0,7613151937	0,5658677264	-0,2207794755	3,529244156	1996-10	5,5794365931	1,3977623876	6,7061453778	2,8725655755	2,0668524427	0,6346084369	12,86292494	2006-10	15,3837729736	2,8444082383	21,4375162694	8,0001966924	5,5072247919	1,6301133443	29,66875647
+Nov-76	1986-11	2,8646935968	1,6060968454	3,6513685876	0,6867856184	0,5589942826	-0,167229136	3,759908206	1996-11	5,6859772207	1,0228188289	7,8185272158	2,5461674751	2,0308134545	0,7821985006	13,74043811	2006-11	14,5685000181	2,6103450899	23,5450057084	6,9501203219	5,3908675297	1,7509363432	30,56666316
+Dec-76	1986-12	2,7901327159	1,4911512446	3,3723357458	0,6497357049	0,4990822595	-0,1877459912	3,490343035	1996-12	5,7436592067	0,8831524714	7,499304884	2,3845404442	1,7919865432	0,7251923514	12,4052811	2006-12	15,1989163794	2,4984432076	23,5348184877	6,449308902	4,7004682046	1,6907795854	28,86630743
+Jan-77	1987-01	2,2431086855	1,6571891555	2,8280777515	0,6198357688	0,4892197092	-0,0899825978	4,26386663	1997-01	6,0821616169	0,8065577731	7,9706105575	2,2349913185	1,7284822673	0,8374000197	13,06750075	2007-01	15,6155045585	2,5770148847	24,1657520989	6,0098471802	4,5361667589	1,777956003	30,31725475
+Feb-77	1987-02	2,1296102853	1,5186878891	2,5754138773	0,6237070731	0,4790617615	0,0461748126	4,476496564	1997-02	6,8924710301	0,6740170067	8,574609904	2,2417891973	1,6829061236	1,0571699437	13,29880441	2007-02	15,8647640374	2,6971291253	23,8354553053	6,0096806387	4,3893574484	1,9669308027	30,27037127
+Mar-77	1987-03	2,1694831609	1,3320743967	2,8073625203	0,5891855234	0,4763836699	0,1191609611	4,878464212	1997-03	7,0836222517	0,5066920798	9,3854402274	2,0961901531	1,6651177728	1,0599342939	13,0812134	2007-03	15,8681814607	2,2319719881	25,3066185112	5,5689541903	4,3330877562	1,8627023085	31,04566466
+Apr-77	1987-04	1,9439094518	1,5268873934	2,7028323954	0,5207258498	0,4049444454	0,1347148387	5,173827893	1997-04	6,5195863804	0,4524264997	9,0627425513	1,8270728984	1,4017042617	1,030398205	13,39801422	2007-04	15,8524782754	2,3642826651	26,0592042731	4,7556429067	3,583185341	2,095731808	32,11051102
+May-77	1987-05	1,9762535162	1,7342238508	2,4070005686	0,5070776265	0,3922731114	0,1445008995	5,271994381	1997-05	6,9730255918	0,4951168829	8,859046204	1,7653872864	1,3475596502	1,3240149935	14,54884975	2007-05	17,4311851779	2,3808771431	25,6320657117	4,5808264172	3,4399446436	2,2570719852	33,56264904
+Jun-77	1987-06	2,3054455252	1,7782432288	2,7309803583	0,5289433045	0,3782061263	0,2114155382	5,024087408	1997-06	7,734768221	0,5688573076	9,6855348305	1,8340999404	1,285576622	1,490806016	14,72846608	2007-06	18,0995160174	2,4803790092	26,1541484232	4,7737630124	3,275874802	2,267160329	31,98496437
+Jul-77	1987-07	2,4845917706	1,7284246038	3,0827120173	0,4937077774	0,3683492069	0,2468889783	5,235767082	1997-07	9,1775876836	0,3914707419	11,4314888282	1,6864583764	1,2359430497	1,6431893263	15,69255808	2007-07	16,683842526	2,4538462356	25,5388137245	4,391388401	3,1765948486	2,2589947076	31,64371564
+Aug-77	1987-08	2,4760037984	1,7683857777	3,0584122455	0,4604154354	0,338783205	0,3921065629	5,597633591	1997-08	7,6908917516	0,3661402928	9,7568299099	1,5570162993	1,1278711529	1,742120777	14,44440077	2007-08	16,5071643167	2,3972399029	24,9599584449	4,0385030852	2,9024646708	2,1948023605	31,47198374
+Sep-77	1987-09	2,338086595	1,6748663611	2,8545251315	0,4647727175	0,3063589048	0,3619483178	5,389016228	1997-09	8,221810548	0,2976086623	10,1813688862	1,5624466713	1,0093547579	1,8460922943	15,10653488	2007-09	16,8100458868	2,5657081286	24,8859442324	4,0308870376	2,5815788388	2,3886507657	32,60120101
+Oct-77	1987-10	1,3900041595	1,5260402524	1,9028238407	0,4649536114	0,3017952843	0,1908463652	4,327885775	1997-10	6,9503601063	0,1875777604	9,0932668713	1,5677101608	0,9988271792	2,0103173653	14,48365679	2007-10	16,7600968564	2,5567705917	25,4567905593	4,0309968891	2,5422708521	2,649496703	34,25170482
+Nov-77	1987-11	0,9832168663	1,4826251235	1,4135269819	0,4662730423	0,3015359141	-0,0108867699	4,115226331	1997-11	7,4301577594	0,0371548048	9,2176976014	1,5728751835	0,9987474943	1,9646951296	14,55562159	2007-11	16,3068433194	2,7926450193	24,0039810965	4,0310636301	2,5292705769	2,3784836736	32,31193333
+Dec-77	1987-12	0,9744275787	1,6303103285	1,3595168424	0,4491179211	0,3014920195	-0,022523065	4,23712144	1997-12	8,2552726805	-0,0563618061	9,7737836397	1,5072261651	0,9952591133	2,0933109166	14,41403026	2007-12	16,9892552604	2,802652992	24,0929292483	3,8496375588	2,517205834	2,4566111465	31,16869958
+Jan-78	1988-01	0,8058171827	1,3559002832	1,2090571261	0,4177522269	0,2819543443	0,0969707692	4,546720981	1998-01	8,634422144	-0,1757863981	10,4266805517	1,396176036	0,9327995729	2,2825518502	15,36419922	2008-01	13,9862507538	2,9402022503	21,0263450154	3,5440739229	2,3575802527	2,3381537449	29,54904769
+Feb-78	1988-02	1,1390318549	1,0801923495	1,5636784079	0,4048365218	0,264019416	0,1742223813	4,937734377	1998-02	9,2315664594	-0,1698509936	11,0676476092	1,3439188763	0,8688202622	2,6307763219	16,65306096	2008-02	13,6803059196	3,000523793	20,5336246176	3,3918198966	2,188931081	2,342724763	29,58927766
+Mar-78	1988-03	1,108523068	1,0171471133	1,5443236682	0,3908032816	0,2573051742	0,2318402493	4,842535613	1998-03	10,1841091592	-0,2258526063	11,9192784411	1,2894022643	0,8424359331	2,9030647101	16,58345772	2008-03	13,2052821726	3,094446603	19,7943056143	3,2320289894	2,1090649086	2,2128404825	27,89882954
+Apr-78	1988-04	1,1693352095	1,180598801	1,5171788542	0,3919472635	0,2416676034	0,1506789907	4,644648358	1998-04	10,5875609314	-0,0727097014	12,0521799921	1,2925943676	0,7919634802	2,8847711195	15,95023813	2008-04	14,7160058196	3,017507196	20,9493053679	3,2395670521	1,9878941855	2,2150108064	28,11236948
+May-78	1988-05	1,1753402164	1,1666031323	1,6542688733	0,4252105034	0,238676189	0,0482366307	4,44469078	1998-05	11,3846164246	-0,1307340776	13,6005254762	1,4144138747	0,7873760562	2,6805763686	15,49789977	2008-05	14,6528300298	2,8626276581	22,0631732504	3,5456770116	1,9632068145	2,1052283178	28,19181119
+Jun-78	1988-06	1,2376724094	1,0656974771	1,7384320816	0,4448297515	0,252114713	0,1394207725	4,376340744	1998-06	11,7712445917	-0,2371240299	13,8025281171	1,4746299537	0,8215224744	2,7124022208	15,71617243	2008-06	12,6140876086	2,6551309769	19,4381717054	3,7042016473	2,0423860196	1,9066475481	25,48063947
+Jul-78	1988-07	1,2424168477	0,9277217276	1,7253094679	0,4789236879	0,2705245367	0,1429922348	4,084394257	1998-07	11,2617834199	-0,2807213778	13,4727299782	1,5913412167	0,8741455239	2,9568678292	14,49127753	2008-07	12,2486029386	2,7938140405	18,5152335829	4,0266500749	2,1732414127	1,6667783657	22,9659833
+Aug-78	1988-08	1,1667404566	0,6945382075	1,6092596974	0,512318294	0,2894001544	0,0142288185	3,66160018	1998-08	8,7852534825	-0,4570720937	10,5711010498	1,7191287204	0,9397502918	2,3438301682	11,99251123	2008-08	11,9111502956	1,8732859578	17,6464453107	4,3795683008	2,3331202729	1,5182407613	22,04485494
+Sep-78	1988-09	1,2889987669	0,5525505142	1,7422434224	0,4926269636	0,2980510907	0,0361034054	3,808613975	1998-09	7,6641355282	-0,4715741292	9,3920348576	1,6566594907	0,9776307368	2,1610827479	12,06462339	2008-09	10,2935792159	1,6842676364	15,6132217443	4,1950069549	2,4159149644	1,357103727	18,91252639
+Oct-78	1988-10	1,4403355247	0,3913623943	1,7789077386	0,5102100231	0,3029386868	0,1438064668	4,259604166	1998-10	8,3567340164	-0,5225466938	9,3746327199	1,7262543929	0,9983380286	2,3724939309	13,6049372	2008-10	8,6792170939	1,3789580099	13,0640540276	4,3819242486	2,4624205547	0,7887905835	15,26078059
+Nov-78	1988-11	1,4296684677	0,6324911943	1,7520358697	0,5454386638	0,3076357684	0,2076095951	4,664626409	1998-11	9,3008761376	-0,3990017701	10,6749741469	1,8653551123	1,0207094845	3,1461385333	15,10535748	2008-11	8,1675729022	1,4886124641	11,795914177	4,7784841475	2,5250668443	0,7872157099	14,74849581
+Dec-78	1988-12	1,5534721341	0,6210528878	1,926942192	0,5632364796	0,3123155001	0,2207142406	4,520038558	1998-12	9,2898142184	-0,4184774122	10,6102503266	1,9332821989	1,0363763091	3,2945332521	15,35234889	2008-12	8,5058959727	1,7669898739	12,2763679933	4,9665968688	2,5581846062	0,7633318479	14,72189226
+Jan-79	1989-01	1,5170101382	0,3859753117	1,987813724	0,5809899679	0,3199816409	0,2185043711	4,574677241	1999-01	9,6479816455	-0,5359451336	10,7904877012	2,0206083485	1,0808814083	3,4044423269	15,29066349	2009-01	7,4787059425	1,6308037354	11,1073288211	5,1951073817	2,6531374961	0,6601458081	12,8848177
+Feb-79	1989-02	1,5461910329	0,1850533761	1,8725194827	0,637038792	0,3547187175	0,306076002	4,647605801	1999-02	9,4154247203	-0,6230051581	10,1253123375	2,2438736803	1,2024212244	3,5371275457	15,15098852	2009-02	6,6234662218	1,6783597923	9,4630995036	5,8267006549	2,9397092794	0,5212687611	11,61209933
+Mar-79	1989-03	1,6667939958	0,2194814289	2,0330061294	0,6594539147	0,3861701707	0,2779511039	4,365598835	1999-03	9,5020702115	-0,6076621416	10,3895507353	2,3230020028	1,3022383067	3,6276001027	15,13466638	2009-03	7,3043905429	1,6825144928	10,4668058822	6,0587800591	3,1941262529	0,3436348172	12,0525948
+Apr-79	1989-04	1,7729819403	0,2187562377	2,2139076162	0,6793531634	0,438765146	0,3083173845	4,502014051	1999-04	10,6547956945	-0,6058411805	11,6111562609	2,3999092104	1,4843696897	3,765832596	15,80775285	2009-04	8,8722656496	1,6010822912	12,4648029384	6,2943584913	3,6778646773	0,619152729	13,65753136
+May-79	1989-05	2,0063206734	0,0523589602	2,2895227557	0,7769605643	0,4620936557	0,4293900922	4,454007429	1999-05	10,4504377687	-0,7048122599	11,0149184411	2,8068993269	1,5714604594	3,9668806896	15,45416847	2009-05	9,8012557536	1,4788545016	12,9521818238	7,5474078462	3,9039981776	0,9080180742	15,39215359
+Jun-79	1989-06	2,2074510285	-0,0667632917	2,6850330783	0,8219679081	0,5507826497	0,4712413308	4,225872424	1999-06	11,3284656105	-0,8400927998	12,3731305168	2,9799923532	1,8825965311	3,8813125098	15,73671712	2009-06	9,5986212909	1,2755891771	13,3695409481	8,0917518319	4,7561712616	0,9352305959	14,81555822
+Jul-79	1989-07	2,2759869159	-0,0984581402	2,9257547635	0,8148312679	0,6173771751	0,5287440125	4,819455547	1999-07	10,2001430192	-0,9008941609	11,9751537488	2,9009118287	2,0951842155	4,1273113434	15,54276244	2009-07	10,4098355766	1,0670479892	14,906665467	7,833272766	5,3654699894	0,9932315106	16,10501689
+Aug-79	1989-08	2,3401932985	-0,1537592784	2,9136435772	0,7573746939	0,6405678193	0,5424296353	4,431942444	1999-08	10,4673976336	-0,913534586	11,8158694593	2,6547026089	2,1823634155	3,6912167847	14,83178823	2009-08	10,579198131	1,050761946	14,2905697762	7,0430026218	5,6100837601	1,1088117579	16,10485841
+Sep-79	1989-09	2,2818888434	-0,3469469097	2,8903164192	0,7396206548	0,6457404499	0,5410314994	4,460167369	1999-09	10,1776789093	-1,0134837821	11,1864689124	2,5831720377	2,2050053999	3,6335217109	14,30265268	2009-09	11,0548827418	0,7108330561	14,7344764992	6,8012181126	5,6585179663	1,2223701061	16,40283438
+Oct-79	1989-10	2,2164734834	-0,4292109741	2,6019649285	0,7784103254	0,6495427361	0,6230186883	4,712359654	1999-10	11,6939920089	-0,9545216082	12,0267501893	2,7521443454	2,2275849146	3,8104984272	16,47678095	2009-10	11,084113203	0,576534017	13,9009621464	7,3107336677	5,708772342	1,4615301015	17,51569801
+Nov-79	1989-11	2,4348868506	-0,3576247736	3,0165609023	0,84016715	0,7174848093	0,6128589922	4,762340897	1999-11	12,4530065312	-0,9998406517	13,3713427059	3,005935402	2,4912624146	4,2994592313	16,41191278	2009-11	11,4747251708	0,7987524318	15,2291179252	8,1314121459	6,5115959225	1,6038037318	17,70708004
+Dec-79	1989-12	2,9959388916	-0,481453109	3,4659669702	0,8201796946	0,7383619505	0,6019791128	4,788164472	1999-12	15,1967369602	-1,1396458475	15,555498716	2,9186454636	2,5753203463	4,2882994737	17,34567634	2009-12	12,4217922542	0,3588504871	15,9007863733	7,8440909844	6,7634536965	1,5694049993	17,51024653
+Jan-80	1990-01	3,0626281228	-0,7584125359	3,6566059301	0,8386801405	0,7350422071	0,5056729757	4,16078877	2000-01	14,8637603728	-1,3233619295	15,6208969574	3,0105655482	2,5738133193	4,1794547653	15,22426627	2010-01	11,5615235917	-0,4069352481	15,3563586562	8,1423490379	6,7616458659	1,5710099126	15,64916926
+Feb-80	1990-02	2,929059051	-0,7297965431	3,5921803163	0,9310236009	0,7518240631	0,4112871227	3,926833559	2000-02	16,2352546109	-1,2731935387	17,260359098	3,3884832158	2,6176989348	3,8721771454	15,26373631	2010-02	11,2040116912	-0,4030531617	15,1814614688	9,3405306394	6,8525827678	1,3900511334	15,89229571
+Mar-80	1990-03	3,6961053743	-0,6401963465	3,9282718864	1,1513946978	0,8848046862	0,6615251534	4,204964298	2000-03	17,7622939368	-1,2015668052	16,7413102794	4,4064265707	3,1681729237	4,7260075034	18,59943835	2010-03	13,7240403795	-0,0380200086	16,2855242071	12,9044310951	8,5861267134	1,999188965	19,26112855
+Apr-80	1990-04	3,1207440574	-0,6211144246	3,9608993322	1,1550945503	0,9562255554	0,7164500874	3,786443673	2000-04	16,5534406972	-1,17245253	17,6176152446	4,4109850731	3,4738134697	4,9944937457	16,53323062	2010-04	13,1136699647	0,1753341731	17,7675720517	12,9077494869	9,593462162	2,2716299322	17,94982912
+May-80	1990-05	3,0534794275	-0,6257409603	3,9100612443	0,9227952545	0,9537306555	0,7160228141	4,058426014	2000-05	15,2432928126	-1,1649155437	16,6622018992	3,3214694089	3,4597579546	4,5818082163	15,23484167	2010-05	12,183530022	0,3113639274	16,6765954954	9,0517154926	9,5153597294	1,886097456	15,21384372
+Jun-80	1990-06	3,0209737407	-0,752030253	3,9072684673	0,8861039323	0,8800643042	0,6630539876	3,772972724	2000-06	14,2940737018	-1,2297518466	15,6050469319	3,1381391077	3,1118549031	4,4147249268	14,98171742	2010-06	11,8090409234	0,0246679462	16,1329324804	8,46563584	8,37984498	1,5601399107	13,85944647
+Jul-80	1990-07	2,9827165244	-0,7748940803	3,9127573327	0,849942403	0,8145257471	0,5707383836	3,664569763	2000-07	14,470500479	-1,2706923093	15,2918765881	2,9626163049	2,8123569131	4,176833767	14,01232462	2010-07	11,8084313447	-0,1722182961	15,9351266328	7,9088217815	7,430690615	1,3947771908	14,61693273
+Aug-80	1990-08	2,4146844537	-0,7085660361	2,9755618149	0,8264328457	0,7509976905	0,3562263761	3,101354659	2000-08	14,919048692	-1,2662202818	14,5317812299	2,8816775882	2,5676321578	4,0936883065	14,19761174	2010-08	11,620860947	-0,0909330104	14,7582817869	7,6364059005	6,6557425157	1,3309630575	13,67839037
+Sep-80	1990-09	1,7317556353	-0,7656636284	2,3181263124	0,8814309069	0,7329927523	0,2346154894	2,508874043	2000-09	13,9530145189	-1,3029687008	13,8531444572	3,1338305145	2,5089713559	3,9031196182	12,8975754	2010-09	12,3192780866	-0,145042631	16,1010367119	8,4606021603	6,4869984053	1,3793545189	14,6185659
+Oct-80	1990-10	2,0494845764	-0,7715441528	2,6242681314	0,9184383893	0,7675014172	0,1510024873	2,741630956	2000-10	15,0660004693	-1,2929112702	13,7998671202	3,3204844863	2,6732118522	3,5022923627	12,24204175	2010-10	13,6130507351	0,0018626408	17,1808742497	9,0558697551	6,9732047371	1,4625910424	14,73887078
+Nov-80	1990-11	2,0339728694	-0,7253257149	2,7388965288	0,9906245795	0,8378425827	0,1472812047	2,519631548	2000-11	13,2147183554	-1,2656648765	13,0817546378	3,6099408476	2,9360140693	3,2950404908	10,87274844	2010-11	13,636179666	0,1886694388	17,8451181385	10,0182903851	7,7878627161	1,4421504266	13,732308
+Dec-80	1990-12	2,0120249648	-0,6976026569	2,5933896053	1,0390683885	0,8697159856	0,2569910686	2,690513283	2000-12	13,6867122287	-1,241320064	12,8321531837	3,8001674914	3,0416019999	3,2476834459	11,34086596	2010-12	14,5205003231	0,3229996358	18,3746609766	10,6904223953	8,1408757984	1,649436841	15,23967733
+Jan-81	1991-01	2,1501339874	-0,6372058646	2,6682509424	1,0868239828	0,9045135817	0,2551449328	2,962766834	2001-01	14,9623511324	-1,1973102037	13,8936941856	4,0252039097	3,1952509498	3,3155234353	11,99599272	2011-01	15,3383410067	0,4496344619	19,2285646474	11,424656976	8,5894231688	1,8204645437	16,15735776
+Feb-81	1991-02	2,4485967095	-0,5980690529	3,1000443479	1,2686944341	0,9475335754	0,5153162298	3,343857214	2001-02	13,518268001	-1,1480036792	13,1822885917	4,9106897539	3,3778615204	3,4134613785	10,79905168	2011-02	15,8069212489	0,7522505942	20,0639507472	14,6825861916	9,1874225259	2,1006405144	16,72439364
+Mar-81	1991-03	2,2905608642	-0,5887780256	3,0349436783	1,3714137256	1,0844891361	0,5161980015	3,054569511	2001-03	12,1467182514	-1,1339349549	12,6108770379	5,4104525224	3,9770766397	2,8108063987	9,58442387	2011-03	14,6919597801	0,862923083	19,6029665485	16,5884824243	11,2120899744	1,8940075829	15,89701828
+Apr-81	1991-04	2,3323231005	-0,589044335	3,0860171038	1,3298508796	1,0991318924	0,5517050427	3,088701428	2001-04	12,5498690331	-1,1345137348	13,0664756936	5,1627901016	4,0191700857	2,7993964663	10,39725302	2011-04	15,0685166079	0,9928014753	20,0355175024	15,6195933737	11,3650304573	1,9486845949	16,64324154
+May-81	1991-05	2,6482202549	-0,566512388	3,1335391177	1,4501934174	1,1649970706	0,5906801463	3,27410903	2001-05	12,5679497487	-1,0885768781	12,2704145013	5,8060928241	4,3393378952	3,2195428398	10,47667672	2011-05	14,9782583755	1,1849954652	18,7973005484	18,1755238227	12,5121222437	2,0750476644	16,63354381
+Jun-81	1991-06	2,1840401317	-0,5154559796	3,0677852352	1,4491837015	1,2133304683	0,5937783304	2,993146549	2001-06	11,3980723363	-1,0669207015	12,9768572362	5,8062400439	4,5816173061	3,1106923887	10,10642348	2011-06	13,930887989	1,3575707738	19,3701676182	18,1774618259	13,4052176374	1,9440125776	16,35995373
+Jul-81	1991-07	2,1252251886	-0,4179392554	2,7597049708	1,4431076233	1,2163221724	0,6637026553	3,263984013	2001-07	10,7938890915	-0,9887720701	11,686309034	5,8182251355	4,6386286789	3,1717934309	10,15104001	2011-07	13,241016131	1,8833246687	17,4078604582	18,1898069843	13,5852472589	2,2128877441	16,33610905
+Aug-81	1991-08	2,2723362897	-0,4440591346	2,7238031963	1,4961329897	1,2494987608	0,7165899903	3,339883342	2001-08	9,6350369494	-0,9723497237	10,3406537632	6,0953916346	4,7930201511	3,091543972	9,806634252	2011-08	10,6189309489	2,3394999823	13,8728871064	19,3039408478	14,1422338064	1,7767934879	15,38171075
+Sep-81	1991-09	2,4130723531	-0,5210977897	2,6953360966	1,4785533263	1,265977936	0,9171016483	3,851917084	2001-09	8,34144247	-0,9932056748	8,9297019527	5,9658186915	4,8466282929	2,9861157386	9,64233097	2011-09	10,7864820154	2,0646150389	13,1623638039	18,7409083817	14,3191789639	2,1282133253	15,16129269
+Oct-81	1991-10	2,3835220787	-0,4815987691	2,8615880399	1,3859817743	1,184713171	0,8937674601	3,779295398	2001-10	8,9980521079	-0,9735477265	10,0840782721	5,4503816209	4,4276735208	3,1024766514	9,513865042	2011-10	12,3647423241	1,8713637173	15,8434930989	16,6336033721	12,7340426532	2,2173727982	16,35312777
+Nov-81	1991-11	2,2234120708	-0,4318645321	2,836317963	1,3138042004	1,1569158851	0,8325634463	3,216366253	2001-11	9,6219200253	-0,9408017338	11,054117586	5,0920528146	4,310179483	3,2459033152	9,358808507	2011-11	11,7753315829	2,2702070143	15,7064090063	15,1970082053	12,273617189	2,2040604312	14,68389578
+Dec-81	1991-12	2,3626439901	-0,4178114597	2,7103396173	1,2698175589	1,1111443376	0,8390011375	3,648045505	2001-12	10,3582161223	-0,9464977715	11,0106697016	4,8452931625	4,0695304891	3,300416795	9,643724815	2011-12	11,7621716403	2,1007356831	14,7368025987	14,2939310925	11,448370492	2,2541246897	15,01942535
+Jan-82	1992-01	2,5285195886	-0,3753033246	3,0345050139	1,2951720982	1,1133972885	1,1242113091	3,626171554	2002-01	9,9723937851	-0,8757765885	11,3505085509	4,9726656371	4,0797586579	3,5666350777	9,464754127	2012-01	12,7319293811	2,3971307936	16,7925331239	14,7547864692	11,4637083439	2,6990407439	16,12745368
+Feb-82	1992-02	2,6049851413	-0,3578271434	3,0943993836	1,267193894	1,1020184288	1,1564393208	3,843883909	2002-02	9,6762418194	-0,818093624	11,0193742915	4,85702439	4,0505458767	3,506802337	10,06505775	2012-02	13,4338302164	2,7360629538	17,4430530695	14,3041366519	11,3497524546	2,9892593125	18,20059551
+Mar-82	1992-03	2,443195593	-0,2631575522	2,9433019315	1,1942211734	1,0628157136	1,1865684659	3,729980981	2002-03	10,1706980282	-0,721481949	11,3329932781	4,5117317186	3,8836174445	3,8901623675	10,90304221	2012-03	13,2365721539	3,1454315867	17,196557906	13,0242359637	10,7718927413	3,2344342574	19,00452014
+Apr-82	1992-04	2,4764585405	-0,3443542423	2,8488852894	1,0806413859	0,9586600259	1,0718392138	3,553087878	2002-04	9,4011918198	-0,7461114388	10,5104523631	3,9867130915	3,4293208507	3,4356377484	9,911140256	2012-04	12,8412574928	2,7779934646	16,493756621	11,1260048199	9,2153036104	2,989265817	17,80019708
+May-82	1992-05	2,6660848746	-0,2952603981	3,0196101765	1,0463004426	0,9142415275	1,1409805484	3,882679705	2002-05	9,0077624297	-0,6573911508	10,2548476747	3,8011691664	3,2103432556	3,3426897399	10,23899031	2012-05	11,879659067	2,8301681791	15,3422541003	10,4525772336	8,469504171	2,8948954581	16,59442644
+Jun-82	1992-06	2,6321447696	-0,2123833289	2,928532243	1,1409310624	0,9287422255	1,2805852423	3,949447723	2002-06	8,2340723144	-0,5637153956	9,4841645747	4,2184029628	3,2495156004	3,3995085849	10,04973887	2012-06	12,4849988449	3,1761201068	15,699491374	11,8940359602	8,5735793174	3,2097331375	18,45079548
+Jul-82	1992-07	2,2994897123	-0,2512006021	2,6636681281	1,1851811351	0,9900130466	1,3385038972	4,02664623	2002-07	6,6515661861	-0,6521122461	8,3689948353	4,4358459719	3,5241184932	2,8913472478	9,20610246	2012-07	13,1765280424	2,8241581314	16,7109884509	12,6646504095	9,4684415695	3,3999668649	18,96142197
+Aug-82	1992-08	2,1641039021	-0,3512821752	2,413069336	1,1167229734	0,9833982128	1,3449134888	3,78086708	2002-08	6,7541384401	-0,7298414338	8,2059507978	4,1162690408	3,5027881422	2,9146571495	8,488310416	2012-08	13,7506143447	2,5716001776	16,8952230374	11,5121978735	9,3944509491	3,5237343407	18,02710301
+Sep-82	1992-09	1,8507742611	-0,5026622401	2,3222310273	1,0372889941	0,9143053524	1,0781124792	3,713077857	2002-09	4,353378168	-0,8512121687	6,1571204532	3,7231381005	3,1769882079	2,2560568009	7,343033928	2012-09	13,5592485065	2,0754605643	17,6059253932	10,1282577207	8,3087720794	3,088910573	18,46787825
+Oct-82	1992-10	1,9572722582	-0,4716348383	2,18804402	0,9798375936	0,8696545061	0,8667753628	3,266096824	2002-10	5,2832366362	-0,8196562864	6,6329327582	3,4528469341	2,9758513914	1,9195071605	7,388782313	2012-10	13,889273363	2,2403288792	16,9238842794	9,191924416	7,6428626531	2,7095619206	17,03575473
+Nov-82	1992-11	1,9940917098	-0,4802210194	2,2881462057	0,9583233581	0,7896438371	0,82607131	3,110363445	2002-11	5,4972946444	-0,7882315365	6,9746842766	3,3741945783	2,6607138907	2,0043001881	7,402528801	2012-11	13,8525470799	2,272187337	17,4611924172	8,9015171574	6,63690669	2,4167226639	16,32058753
+Dec-82	1992-12	1,7654999719	-0,533430964	2,1938084863	0,8992989946	0,7329546558	0,8636398996	2,953875498	2002-12	4,1439330886	-0,8194098601	5,8950690396	3,1014705871	2,4175139441	1,9113857381	6,590276709	2012-12	13,1486590826	1,9084969987	17,4402638159	8,0479590063	5,9376441432	2,4519710852	15,86006561
+Jan-83	1993-01	1,8497818457	-0,61035089	2,0493871588	0,8722671625	0,689110787	0,7754190878	2,869265087	2003-01	3,9310942039	-0,8223967598	5,18588826	3,0231530885	2,2803813664	1,7785024666	6,180635613	2013-01	13,6759976672	1,5980647466	16,8665664068	7,7929171802	5,532205752	2,4853098913	16,37517006
+Feb-83	1993-02	1,8371921529	-0,6342856168	2,2920923816	0,8638079471	0,687913148	0,7568672614	2,869211537	2003-02	3,1790298487	-0,8386213495	4,817991492	3,018918638	2,3043182138	1,4814191689	5,88340733	2013-02	12,5495677524	1,4277379755	17,0477095231	7,787989114	5,6092457301	2,4674304839	16,0213127
+Mar-83	1993-03	1,4719331141	-0,5232631009	2,1052299376	0,8188173973	0,6351490954	0,712813845	2,952459107	2003-03	2,4273828177	-0,7609821808	4,1332781746	2,8495664032	2,1191358399	1,3894420964	5,601200416	2013-03	10,9767618818	1,8934913051	15,8211860098	7,2606226409	5,0804364138	2,4056736766	15,80276239
+Apr-83	1993-04	1,206826013	-0,5181780773	1,6852852093	0,8382445061	0,5772649431	0,6162503912	2,850545257	2003-04	2,9790204655	-0,80944236	4,4552709069	2,9364556224	1,9086089209	1,4605374185	5,720708923	2013-04	10,3468383976	1,5485780352	14,1442972135	7,5215910476	4,4810794596	2,3416772335	15,15381862
+May-83	1993-05	1,3622046895	-0,4660918766	1,5409476218	0,8601478292	0,6039558676	0,5613122489	2,988273984	2003-05	3,318307605	-0,7445511832	4,226175965	3,0290754055	2,0088265542	1,5262619811	6,217622621	2013-05	11,7703922249	1,361284594	13,9289006419	7,7882572312	4,7368041324	2,3791039964	15,33540963
+Jun-83	1993-06	1,3285920233	-0,4050699203	1,7572585845	0,9401035689	0,720922185	0,550136025	2,820320818	2003-06	3,4381324644	-0,6947714245	4,8941739621	3,3728482138	2,4568237997	1,6573461822	6,107860329	2013-06	10,5229437648	1,3750771353	14,0250273188	8,9084081222	6,0345211795	2,2704798041	14,40272343
+Jul-83	1993-07	1,3739583526	-0,3763829151	1,802181264	0,9414133815	0,7445360012	0,5490253328	2,980617152	2003-07	3,6255021643	-0,7243545575	4,9724743545	3,377221312	2,5500208311	1,674337838	6,40354102	2013-07	10,4160097908	1,1642838773	13,8637193445	8,9087100897	6,3001266468	2,3987068449	15,55532908
+Aug-83	1993-08	1,782514788	-0,3890722757	1,889183922	0,9847670515	0,7788829301	0,6334647515	3,152882913	2003-08	3,9741310253	-0,6889717732	4,8248631868	3,5619729087	2,6819051568	1,7558524818	6,529946597	2013-08	10,9780518292	1,3602530422	13,1656705441	9,5177483933	6,694127885	2,5344623391	15,09422074
+Sep-83	1993-09	1,6613671743	-0,4330540225	2,0266056201	1,0115591134	0,8039511073	0,6106292618	2,987392156	2003-09	3,4795074779	-0,6283826819	4,847572472	3,6594979915	2,7638025473	1,7678308759	6,418832643	2013-09	11,3957761236	1,4011746585	14,8108586261	9,8346943129	6,9341935868	2,4698426055	15,58127538
+Oct-83	1993-10	1,6405603086	-0,3710627188	2,2184578814	0,9714212251	0,8051463182	0,6232250855	3,156382175	2003-10	3,6400544689	-0,5844735178	5,3205874558	3,4756543821	2,7651574187	1,8355705655	6,984782322	2013-10	10,9498034404	1,4689763951	15,2887516807	9,2171753223	6,9390471773	2,5706276023	16,46997727
+Nov-83	1993-11	1,5599769559	-0,3128476765	1,9732973205	0,9715062766	0,803321342	0,6505741462	2,796630052	2003-11	3,6582896113	-0,5133867955	4,9761599488	3,4842045637	2,7658672406	1,9484489768	6,901492314	2013-11	11,1855793865	1,4927164059	14,7116706754	9,2222266347	6,9199609163	2,8278134297	16,32675105
+Dec-83	1993-12	1,8311056139	-0,3066852392	2,1518942897	0,9920881248	0,8186475315	0,6749163094	2,940262625	2003-12	3,919927172	-0,4968305192	5,1527595187	3,5661095569	2,8190971739	2,0655584698	7,300835302	2013-12	11,305821707	1,2829048742	14,712553707	9,5241641607	7,1098109608	2,9146704199	16,46461847
+Jan-84	1994-01	1,5884097855	-0,252595817	2,0519570954	0,9895937932	0,8123122969	0,6844210364	3,177409693	2004-01	3,8373128049	-0,4222728126	5,315621999	3,573172631	2,8102983167	2,204472932	7,371068701	2014-01	10,4826030815	1,5045537915		9,5407602899	7,0772778354	2,922407789	15,65363966
+Feb-84	1994-02	1,6136058591	-0,3129449246	1,8222741459	0,9437714227	0,7883727919	0,7910808159	3,186152779	2004-02	4,0629614226	-0,488997837	5,0309328692	3,3940864247	2,7347174181	2,4599893831	7,669766725	2014-02	11,6601628579	1,5158690127		8,9349189773	6,8356636379	3,1898617414	16,82631568
+Mar-84	1994-03	1,6551112439	-0,3299367909	2,0064665402	0,9224062411	0,7439029614	0,7511591956	2,796744965	2004-03	3,8048732449	-0,5145080609	5,1081742958	3,2999182809	2,5538649298	2,3666524224	7,19288516	2014-03	11,3974669405	1,5327983006		8,6391532726	6,2991373231	3,287669476	16,01199965
+Apr-84	1994-04	1,7627125498	-0,3117847387	2,1560948726	0,9224234792	0,7476562995	0,6821781719	2,936938661	2004-04	3,8904762191	-0,4871080941	5,2639408676	3,2942099071	2,5631186148	2,3950608828	7,039803	2014-04	11,2534878961	1,5532664983		8,6389273972	6,3438506769	3,2909668114	16,25749351
+May-84	1994-05	1,7132063127	-0,292403942	1,956318786	0,9413312633	0,7500650956	0,7143980681	3,288503379	2004-05	4,0136473543	-0,528658756	5,1191507433	3,3842875681	2,5795899367	2,3033459028	7,816729698	2014-05	12,2556177153	1,5745434679		8,9385468199	6,3976464165	3,4002632031	18,1119653
+Jun-84	1994-06	1,473421796	-0,2832665342	1,9573800898	0,942543501	0,7606608097	0,7787517755	3,235402689	2004-06	4,0108996523	-0,5089214688	5,5320553553	3,3869898511	2,6200638181	2,500067308	7,926662574	2014-06	11,6341585209	1,5329180943		8,9384101631	6,5115423544	3,6885014248	18,28847622
+Jul-84	1994-07	1,8141494465	-0,1987651555	1,9799206764	0,9377358416	0,7596175778	0,7880036477	3,482821001	2004-07	4,1167429103	-0,4023698454	5,0936955706	3,3828940605	2,6311705879	2,4739406248	7,942939529	2014-07	11,830139049	1,9261446749		8,9321778695	6,5513564883	3,85453842	18,67118376
+Aug-84	1994-08	1,7212461746	-0,2190963963	2,2360505895	0,9124685391	0,7470690983	0,6678384735	3,169892284	2004-08	3,6352003823	-0,4034795488	5,2826370423	3,288527304	2,5950739987	2,0983319818	7,112064143	2014-08	11,1273726513	1,8741730835		8,6359390404	6,4542798139	3,3858164019	17,20859551
+Sep-84	1994-09	1,2633645593	-0,1612070172	1,8135633747	0,8563658538	0,7208496803	0,6667788678	3,070340982	2004-09	3,4260278035	-0,3626048629	5,0618602979	3,0345209147	2,4784930828	2,1688549306	7,30824991	2014-09	10,2563229852	1,7827840781		7,8066003916	6,0949262688	3,4354301218	16,75862718
+Oct-84	1994-10	1,2909837347	-0,1524198105	1,688411828	0,8271846981	0,6812087759	0,683057371	3,155099123	2004-10	3,4084560224	-0,308097543	4,7514157771	2,8792129508	2,2931790519	2,1961357403	7,433315265	2014-10	9,8184911439	1,7531183757		7,3055913244	5,5402980336	3,3700464463	16,68898788
+Nov-84	1994-11	1,2422368355	-0,171665353	1,5966037392	0,7901424753	0,6501631763	0,6520331734	2,977378513	2004-11	3,5821999724	-0,2482017962	4,9233794274	2,7296790117	2,1776147707	2,3405118889	7,944000437	2014-11	10,5428244657	1,6120061864		6,8251996468	5,1915496757	3,6471193837	17,13417737
+Dec-84	1994-12	1,2517035744	-0,113088979	1,6441452218	0,7499946036	0,6141064507	0,6460661019	2,926469297	2004-12	3,6059327626	-0,164272826	5,0415342913	2,5615891381	2,0353521327	2,4836756201	8,085585126	2014-12	10,044213918	1,9208447599		6,3622089948	4,8331626471	3,7652413317	16,44810109
+Jan-85	1995-01	1,0400407393	-0,0474145615	1,4797331737	0,7711501085	0,6024933849	0,6051062979	2,646278424	2005-01	3,392558255	-0,1287878901	5,004855518	2,658327572	2,0043854581	2,2796780175	7,398077199	2015-01	10,5630744819	2,3180579175		6,6183877972	4,7155137809	3,5282447015	15,20840522
+Feb-85	1995-02	1,0999845146	-0,043503978	1,4682164995	0,8284829495	0,6501584791	0,5734041666	2,694779973	2005-02	3,4335014599	-0,1191450662	4,8823493774	2,893415346	2,1832837329	2,1359177716	7,660773773	2015-02	11,193585504	2,2870626091		7,3368338116	5,2144779521	3,385928739	16,15843804
+Mar-85	1995-03	0,8455978221	-0,0361152594	1,2275910065	0,850432987	0,6959348806	0,6364493894	2,748133939	2005-03	3,3096388738	-0,1005973627	4,8039749375	2,9704403143	2,3455109526	2,133071138	7,178110851	2015-03	11,5087162411	2,0770697529		7,5865201289	5,6897656812	3,4077466448	15,28705625
+Apr-85	1995-04	0,8673300837	-0,0896098438	1,3000496926	0,7939031054	0,6790413033	0,6850133431	2,900481858	2005-04	2,9580221801	-0,2080622144	4,5181477344	2,7353917582	2,2795033514	2,0128347141	7,018722459	2015-04	10,4627161927	1,8695702512		6,8414948182	5,4840444556	3,4221090204	15,73153326
+May-85	1995-05	0,747050128	-0,0754740395	1,3099260981	0,7573237673	0,6443781935	0,704171521	2,729530842	2005-05	2,8206614052	-0,192296428	4,6560189633	2,582867598	2,1428861783	1,9884234382	6,749360574	2015-05	9,3145285959	1,9702546061		6,382023974	5,0961973964	3,3385933579	14,94582625
+Jun-85	1995-06	0,6019632957	-0,0712094969	1,1183183832	0,7350467559	0,6107678157	0,717860665	2,653045167	2005-06	2,645304051	-0,1727989242	4,3168510714	2,5042745624	2,0261799443	1,9876679396	6,670520771	2015-06	8,1567418023	1,922602201		6,1597220817	4,7798383572	3,1956806587	14,27266203
+Jul-85	1995-07	0,8182073379	-0,084154817	1,073524932	0,6934930708	0,5747365115	0,7452507293	2,760900031	2005-07	3,1282221676	-0,2010895857	4,2647950773	2,3527145205	1,9039416506	1,9627119089	6,775721991	2015-07	8,9844771417	1,7477425696		5,7283487076	4,4560186404	3,0942566223	14,22395158
+Aug-85	1995-08	0,662437691	-0,1435710507	1,1708092826	0,6535789652	0,526676406	0,7920679294	2,633269396	2005-08	2,698481939	-0,2211922706	4,4571584609	2,2059742696	1,7366284568	2,0280366141	6,763226415	2015-08	7,1925862139	1,5586939725		5,317222346	4,0148139711	3,0829416991	13,04158363
+Sep-85	1995-09	0,5059375225	-0,1213603881	0,9328919559	0,6191598253	0,4927332025	0,9183038862	2,718000137	2005-09	2,6243871777	-0,1420057108	4,2154785186	2,0682517782	1,6095951686	2,0773889856	6,910434851	2015-09	6,1704019901	1,6496575236		4,9358591886	3,6874015439	2,9823707439	12,39368537
+Oct-85	1995-10	0,2806504527	-0,1240984399	0,7599480664	0,6595885624	0,5025835657	0,9147825229	2,456465795	2005-10	2,0432065349	-0,1072533824	3,7246404441	2,2043378944	1,6283852326	1,9442645458	6,287127449	2015-10	6,0836938868	1,7250199492		5,3202056964	3,7346318656	3,1464916661	12,73311522
+Nov-85	1995-11	0,3761367623	-0,1122063614	0,5676160656	0,6813474542	0,5431954371	0,8443014539	2,384086816	2005-11	2,3332039757	-0,0732951292	3,3547904693	2,2849121624	1,7705407312	1,9184707511	6,133031467	2015-11	6,6680901257	1,5280307877		5,5278377786	4,0908370768	3,0230007926	11,90958722
+Dec-85	1995-12	0,1741903319	-0,0958354937	0,6371795362	0,6418306254	0,5412223194	0,8118572114	2,317899352	2005-12	1,9879386385	0,0347740995	3,6315461307	2,1379012836	1,7667504665	1,8339250436	5,942738029	2015-12	5,2089871032	1,504356246		5,1359843487	4,1088294861	2,765368071	11,07412978
+Jan-86	1996-01	0,3204312776	-0,145454164	0,5595141799	0,6240505025	0,5242907126	0,7955942179	2,328819907	2006-01	2,1829757634	0,0524633037	3,380904219	2,0809830258	1,7164093634	1,857050958	6,169902803	2016-01	4,6303582656	1,3764840057		4,9664884969	3,9669853173	2,4688582903	10,15266971
+Feb-86	1996-02	0,3528883877	-0,1123220723	0,5409190054	0,5991263296	0,4985455628	0,7824290943	2,041259748	2006-02	2,3439414953	0,0938841621	3,5186888509	2,0083514245	1,6443907335	1,6562683601	5,520238697	2016-02	4,5713970696	1,7252515257		4,7778910956	3,7898679629	2,2023166338	9,091487745
+Mar-86	1996-03	0,2200756509	-0,1658633929	0,5645444923	0,5424053926	0,4395000334	0,634898293	1,788587232	2006-03	2,1280839155	0,0597596721	3,7681527721	1,8127926998	1,4513146344	1,4824627811	5,031627606	2016-03	4,3215867745	1,7826309521		4,2361363398	3,2835345607	2,1583422633	8,782562727
+Apr-86	1996-04	0,1616280336	-0,1597569577	0,4094192562	0,4741038237	0,4045683415	0,5765377242	1,774908545	2006-04	1,978194446	0,2368782109	3,3683863339	1,5663389117	1,3290788057	1,3899146783	5,042609236	2016-04	4,089710482	1,8249644231		3,6029266979	2,9956811323	2,1396656086	8,666522773
+May-86	1996-05	0,3313022111	-0,1678438734	0,367523252	0,5410165642	0,3792420839	0,6150286506	1,78611157	2006-05	2,1265432697	0,4223963055	2,8839939552	1,8084589516	1,2497134673	1,3541603831	4,845676134	2016-05	4,8176458353	1,8615355749		4,2361154174	2,7876878481	2,1075131067	8,761838877
+Jun-86	1996-06	0,3697460965	-0,1915525448	0,5708438384	0,5556755801	0,3893610008	0,5889957114	1,678900622	2006-06	2,1800754542	0,1852268961	3,2870292863	1,866257158	1,286894225	1,1981193561	4,595565577	2016-06	4,548349827	1,8951215804		4,4038078135	2,8889837159	2,0394769927	8,245614554
+Jul-86	1996-07	0,3944589109	-0,2226653248	0,5237835474	0,531143838	0,3835179364	0,5473465611	1,542413563	2006-07	2,3746615623	0,2459825496	3,3520896423	1,7926843483	1,2807172965	1,2527774441	4,572988086	2016-07	5,3460947955	2,0057940651		4,2232977157	2,890865991	2,2398231962	8,572277813
+Aug-86	1996-08	0,2147475221	-0,2968058265	0,6524430283	0,493531328	0,3655467878	0,5597143579	1,338491497	2006-08	1,9771678003	0,1050873134	3,7103163619	1,6687201017	1,2310047371	1,253238589	4,227544173	2016-08	4,5802806358	1,7252800884		3,8913422748	2,7680571381	2,1978768495	7,748668701
+Sep-86	1996-09	0,39078122	-0,4088420849	0,4636977553	0,5115055346	0,3620057279	0,6522982383	1,558299159	2006-09	2,3154086642	-0,1352942385	3,2037826521	1,7314464607	1,2183338838	1,4327821627	4,539508029	2016-09	4,9611509438	1,3310901479		4,0483001693	2,7266377906	2,2914284109	8,191522512
+Oct-86	1996-10	0,3733692271	-0,4294771246	0,5668298326	0,5601743702	0,3703066142	0,7306790182	1,626308989	2006-10	2,4360717767	-0,1910113224	3,6417138483	1,9134226706	1,2499303317	1,5639347648	4,866660396	2016-10	4,9754220146	1,1451982676		4,5494632341	2,8088229801	2,2704813732	8,162637223
+Nov-86	1996-11	0,4300012657	-0,3750406663	0,6394831811	0,5788210894	0,3857468434	0,7624375636	1,666247627	2006-11	2,3232223423	0,0067447963	3,64933555	1,9806791238	1,2998804393	1,5319168549	4,761928771	2016-11	4,7242950465	1,2790100726		4,731559641	2,9293382164	2,1951728522	7,903408404
+Dec-86	1996-12	0,4722448062	-0,3874897546	0,598240546	0,5404033622	0,3804066919	0,7523842172	1,55680803	2006-12	2,5349592491	0,0252349906	3,7124800489	1,8428756219	1,284510512	1,5375381554	4,754441726	2016-12	5,3069752698	1,083623825		4,3653276246	2,9028439186	2,2775904687	7,928983458
+Jan-87	1997-01	0,8308077155	-0,4666583189	0,7238842252	0,5182413433	0,3706154417	0,6890017255	1,27924761	2007-01	3,2724963032	-0,0306140807	3,9381330391	1,7894266377	1,2774595859	1,3843564886	4,168953617	2017-01	6,3953698554	1,0807990974		4,2159681623	2,8835364376	2,1001958501	7,140822409
+Feb-87	1997-02	1,129579836	-0,4706317027	1,1362820995	0,5195680841	0,3360003154	0,6530748858	1,226130959	2007-02	3,4983180811	0,0805547507	4,5778206942	1,7851719356	1,1551561535	1,2428440192	3,9556062	2017-02	7,1005167485	1,2303515729		4,2094880822	2,586252204	1,9548014861	7,091865732
+Mar-87	1997-03	1,1555432666	-0,4738417293	1,4161515784	0,5014190833	0,32555779	0,5619094202	1,027895271	2007-03	3,4428708107	0,0221009826	5,1410709313	1,7198418673	1,1208874775	1,0436670575	3,727415056	2017-03	7,0949072495	1,1610360359		4,0397629101	2,5084487223	1,8705842627	6,665067816
+Apr-87	1997-04	1,1585540557	-0,5477328531	1,3261629986	0,4717180729	0,3079382412	0,5259086347	0,973718145	2007-04	3,7748760948	-0,0427917494	5,2867503044	1,5936625614	1,0448515257	1,1692382216	3,649904787	2017-04	7,1574243771	1,0302408299		3,721578558	2,3412190735	1,9068862656	6,31766213
+May-87	1997-05	1,2698696537	-0,5864647145	1,4408598643	0,4550982721	0,2881949157	0,7038813553	1,112506398	2007-05	4,1972491872	-0,1358924938	5,6151834849	1,5416998486	0,9884645219	1,2593649695	3,797847026	2017-05	7,4092464633	0,8557526094		3,5799834773	2,2034623617	1,9874200037	6,493223908
+Jun-87	1997-06	1,2442929402	-0,5757613282	1,6429226669	0,5026530231	0,2752088277	0,7242475274	1,233355846	2007-06	3,8689665023	-0,1256041311	5,7259425958	1,716892394	0,9539874291	1,151651046	3,759200711	2017-06	6,5500711567	0,9623606181		4,0447954612	2,1226228209	1,8968344546	6,527964146
+Jul-87	1997-07	1,4887007852	-0,6265912787	1,8190243241	0,5427359305	0,2699475802	0,7700719352	1,287674745	2007-07	3,2502775074	-0,1149450873	5,0055032525	1,8962551809	0,9656168311	1,0869368171	3,533738227	2017-07	5,8863374891	0,8914346773		4,5467699748	2,1604871865	1,8279043451	6,554819735
+Aug-87	1997-08	1,1113143659	-0,6453208624	1,2913354084	0,575111879	0,2930598182	0,6545163039	0,971793885	2007-08	3,2157409421	-0,1521703621	4,569726916	2,0247877884	1,0454401724	0,8360538745	3,246844455	2017-08	5,7346663277	0,9247079721		4,9042493672	2,3482549273	1,618042136	6,10033688
+Sep-87	1997-09	1,3449444803	-0,6471622689	1,4069830535	0,6104995372	0,3143377336	0,749173614	1,14098224	2007-09	3,4710018202	-0,0596363937	4,5906740368	2,1491119533	1,1038933523	0,9870107954	3,553759499	2017-09	6,425092095	0,9974830205		5,2787152134	2,5056203254	1,77953455	6,411918874
+Oct-87	1997-10	1,8054369368	-0,6471400699	1,2492467722	0,6503665864	0,3617111837	1,0773953536	1,495894448	2007-10	5,1741398673	0,0156468838	4,9450263529	2,2886089717	1,2468422766	1,4280778902	4,786194853	2017-10	9,3205866299	0,8877144723		5,6860706494	2,8602305163	2,4037653418	8,271546987
+Nov-87	1997-11	2,5450888179	-0,6876643866	2,083991918	0,5636636197	0,346988127	1,3963345112	1,620660546	2007-11	6,1413124376	0,1209991461	6,5019775567	1,9472645983	1,1883594201	1,673914295	4,678999435	2017-11	10,9608792432	0,8824037134		4,7182218846	2,7221316407	3,0939291534	8,750501368
+Dec-87	1997-12	2,9051036104	-0,7517124522	2,8139809912	0,5786799427	0,3103818277	1,512332562	1,529614679	2007-12	6,4528125324	0,0353668406	7,7892101826	2,0039855303	1,0687045218	1,7578016192	4,334975163	2017-12	11,0472665296	0,7281265632		4,8902835163	2,4401792979	3,3047341661	8,440117802
+Jan-88	1998-01	3,4065027166	-0,7340586512	3,0536063444	0,583745107	0,3077927919	1,4138894594	1,544312425	2008-01	5,7206488481	0,2555050892	6,7062453574	2,0157664719	1,0559152933	1,4142130561	3,766796175	2018-01	12,2471047965	0,9394743256		4,9104124886	2,401155022	3,3482582614	8,743311491
+Feb-88	1998-02	3,024382708	-0,6647498343	3,6654236358	0,5501245746	0,299985486	1,5037487217	1,571758545	2008-02	4,6464636727	0,4864332974	7,2019230759	1,8843643095	1,0253301851	1,2723778191	3,446284241	2018-02	9,6671852875	1,1649885577		4,5462311223	2,3297304512	3,0311746712	7,758780833
+Mar-88	1998-03	3,4609491567	-0,6709616346	3,3487578363	0,5329536027	0,280425155	1,5728307832	1,60572539	2008-03	4,5336539799	0,5767134634	5,8778378849	1,8123448863	0,9544242367	1,0913902294	3,246119298	2018-03	9,5176112892	1,1288737421		4,3638877632	2,1738867612	2,8887218195	7,275361413
+Apr-88	1998-04	3,5066497509	-0,6535033929	3,3838929131	0,5514902484	0,2772023099	1,7152144344	1,598644029	2008-04	4,9811513928	0,4102578336	6,2559163796	1,8799532651	0,9446102743	1,2362417862	3,442905408	2018-04	10,1000749305	1,0948528931		4,5377879543	2,1404353026	2,8627402158	7,269070657
+May-88	1998-05	3,8072728084	-0,6706631233	3,8282314878	0,607866606	0,2974899285	1,7906785867	1,624575395	2008-05	4,9406332409	0,3602077773	6,5017333422	2,0754116097	0,995518351	1,3620538278	3,626649761	2018-05	9,776326782	1,0302022575		5,0912959652	2,2658673947	3,0683356356	7,519620444
+Jun-88	1998-06	3,8353335246	-0,6885898125	3,9228029032	0,6053751895	0,3071457358	1,6285321251	1,696359288	2008-06	4,0132931145	0,3551508235	5,660581163	2,0709144524	1,029662357	1,0575773124	3,216393324	2018-06	8,9300452419	0,9787585277		5,0895771446	2,3563391927	2,9046526986	7,528021608
+Jul-88	1998-07	3,6302780124	-0,6709601037	3,7401671999	0,6183580747	0,3501443693	1,7802862846	1,630655314	2008-07	3,860160297	0,5283812819	5,2518926135	2,1301317052	1,1760518809	0,8940128023	3,005281065	2018-07	8,9719304219	0,9655914801		5,2790481697	2,728861473	3,0170227496	7,637211254
+Aug-88	1998-08	2,8086546419	-0,6798198073	2,8014193219	0,6376357667	0,3973636097	1,6286588148	1,385355859	2008-08	3,8891545695	0,3279099694	5,00194458	2,2007542941	1,3307029455	1,0179114452	3,205964434	2018-08	8,7394774773	0,9183176237		5,473253229	3,106873254	3,2448911947	8,303668189
+Sep-88	1998-09	2,2015503649	-0,6373411347	2,467727824	0,6054291725	0,4219767525	1,4532189533	1,324320099	2008-09	3,0314475274	0,371952781	4,4138022377	2,061944152	1,4003737712	0,8631470474	2,466575645	2018-09	7,8979313274	1,0222093803		5,0712003515	3,2803289759	3,2596078647	7,941646748
+Oct-88	1998-10	2,2590967456	-0,6020339108	2,3275813035	0,5738522531	0,4143324335	1,3960765021	1,387419213	2008-10	2,2170142041	0,3825582367	3,3675608314	1,9353821329	1,3675470433	0,3208197859	1,503446582	2018-10	6,9216927975	1,1103928844		4,6981829569	3,181196545	2,8941441949	6,66761294
+Nov-88	1998-11	2,6094659593	-0,6261842061	2,5264245057	0,5788956099	0,393755986	1,7708821441	1,457186516	2008-11	2,0596947704	0,2048102689	2,7074742974	1,9531672455	1,2988778022	0,245557775	1,22775369	2018-11	6,9536456569	1,0393909164		4,7082087312	2,9724121322	2,9277264939	6,489284265
+Dec-88	1998-12	2,4404303925	-0,6318457207	2,5794166284	0,5964680052	0,4033433835	1,8375223741	1,566987594	2008-12	2,0183661336	0,3516162369	2,9378838946	2,0143659657	1,3266201595	0,2150703555	1,287650825	2018-12	6,0831077962	1,1125677666		4,8919622721	3,0532868815	2,5847383008	5,795649619
+Jan-89	1999-01	2,6177255968	-0,6026374136	2,4800337139	0,6457436165	0,4379643783	1,9119394488	1,540740046	2009-01	1,7226775683	0,5385190575	2,4105879755	2,1709959981	1,4193343871	0,1572505736	0,97089823								
+Feb-89	1999-02	2,5033946067	-0,5670320207	2,2678575601	0,686921722	0,500410781	1,8262544378	1,487381504	2009-02	1,3990065146	0,8385973116	1,8999629336	2,3091977797	1,6170226949	-0,0140922003	0,729187773								
+Mar-89	1999-03	2,3846019369	-0,5745538317	2,322258156	0,7052836884	0,5493573689	1,9375709568	1,622548956	2009-03	1,5076762736	0,7921419386	2,176975888	2,3840102884	1,7948619635	-0,0932593877	0,919288553								
+Apr-89	1999-04	2,6259084604	-0,573471622	2,5553916506	0,6868889507	0,5595368158	1,9622346393	1,66919008	2009-04	1,9026816212	0,743908154	2,6323454962	2,3164572198	1,8362969259	0,0432792165	1,138439644								
+May-89	1999-05	2,2993224099	-0,5574573775	2,2550336662	0,7285421768	0,5799187737	1,8577921501	1,637293626	2009-05	1,9434174247	0,9284743949	2,6235747334	2,4700756099	1,9019472662	0,0967864725	1,464378684								
+Jun-89	1999-06	2,3440374377	-0,5947743734	2,3875821668	0,6893392995	0,601829929	1,7451360977	1,807025473	2009-06	1,6897002904	1,0042017244	2,4691415716	2,3195699831	1,9861436686	0,0728394214	1,479703911								
+Jul-89	1999-07	1,9697675197	-0,6300542014	2,0457593283	0,6639521442	0,5998510478	1,7921678071	1,475336801	2009-07	1,856437232	0,9156433206	2,5813903318	2,2480547175	2,0046449879	0,054401347	1,402710995								
+Aug-89	1999-08	1,9856897604	-0,6099921424	1,9764465431	0,6639479266	0,5910970743	1,543020384	1,539364187	2009-08	1,8395252327	1,0171274412	2,3901179517	2,2420668667	1,9660693024	0,1014536088	1,593657311								
+Sep-89	1999-09	1,9629022868	-0,577087098	1,7605114294	0,7052030904	0,6099081849	1,5176222685	1,438873568	2009-09	2,0270795926	1,1765754187	2,4127116786	2,3869625992	2,0211247128	0,1632077419	1,632247178								
+Oct-89	1999-10	2,4495800188	-0,4526441193	1,9398786137	0,7483106983	0,6513966495	1,4922815645	1,687281222	2009-10	2,1045986654	1,2728611082	2,1911421346	2,5397468221	2,1606628028	0,2135465942	1,688738562								
+Nov-89	1999-11	2,4345572395	-0,558642866	2,3379391898	0,8038959367	0,6917082657	1,7554345545	1,652073249	2009-11	2,0031738806	1,2921281044	2,6040371254	2,7792759835	2,3294173954	0,2979584635	1,701304289								
+Dec-89	1999-12	2,5819204396	-0,6118680089	2,6751667612	0,8026551579	0,7051011258	1,7661937301	1,790426304	2009-12	1,7553807674	1,1985467296	2,5645611113	2,7705944219	2,3779873327	0,2878668566	1,648988479								
+Jan-90	2000-01	2,4517264245	-0,6044065068	2,245961287	0,8338921675	0,7260104197	1,866493412	1,76214796	2010-01	1,5235603903	1,1764253655	2,0024279217	2,8931681861	2,4547042126	0,389660025	1,685567525								
+Feb-90	2000-02	2,8986514954	-0,571097974	2,5137176939	0,9992029575	0,7985091442	1,874926331	1,912700522	2010-02	1,5412772067	1,0787384358	1,9031444312	3,5893693814	2,7279546786	0,3945241598	1,877428969								
+Mar-90	2000-03	2,5669909626	-0,5650088017	2,5330621752	1,0494779024	0,8369724326	1,9099702739	2,354411696	2010-03	1,566881231	1,2748221816	2,2417093476	3,8105245898	2,8795776206	0,4539266326	2,311175672								
+Apr-90	2000-04	2,7957135074	-0,5466351564	2,1059358499	1,0557972365	0,8408200206	1,9583326532	2,251011366	2010-04	1,8330861632	1,5026196132	1,9236484991	3,8381328639	2,894159584	0,5327998116	2,36739292								
+May-90	2000-05	2,5678320316	-0,5397205457	2,2797338806	1,0715602046	0,8617128125	1,7649368886	1,839287505	2010-05	1,6813427232	1,7133208725	2,08101446	3,8861582177	2,9600710172	0,3504489574	1,674190281								
+Jun-90	2000-06	2,3760852503	-0,4841761812	2,1130788136	1,0813171308	0,8838599167	1,7631886811	1,960290972	2010-06	1,6201423282	1,9413853728	2,0205005228	3,9638587835	3,083266654	0,2383414213	1,586615605								
+Jul-90	2000-07	2,4474277295	-0,5194996902	2,0758594177	1,0245256467	0,8838523931	1,7881161881	1,834068326	2010-07	1,6478679046	1,7498053981	2,0100641475	3,72710798	3,106071273	0,2382166217	1,804403446								
+Aug-90	2000-08	3,1353953954	-0,5979947586	1,918314888	1,0986300369	0,8978685562	2,1271275598	2,275954303	2010-08	2,0817098133	1,5186302018	1,765879394	4,0428069297	3,1412459641	0,4271003194	2,011687383								
+Sep-90	2000-09	3,8003933072	-0,5896864649	2,2500398126	1,1408994897	0,9068514606	2,2635933945	2,485231777	2010-09	3,1144483752	1,7120058799	2,5755113594	4,2407044354	3,1781453467	0,6093382963	2,795147481								
+Oct-90	2000-10	3,6534673607	-0,5735701841	2,9470619471	1,1504380096	0,9303888621	2,1901635583	2,114144731	2010-10	3,0604690947	1,9787204706	3,6973696409	4,2488993086	3,2468135659	0,7848603155	2,583245925								
+Nov-90	2000-11	3,1365148745	-0,5884798356	2,3619632971	1,1176257925	0,9360696419	2,0739481202	1,9586475	2010-11	3,0987349314	2,0501364576	3,3592073143	4,1058831776	3,2831620179	0,783073276	2,564466724								
+Dec-90	2000-12	3,3065015557	-0,575765507	2,3048695247	1,0863636938	0,9283610655	1,8183552456	1,933628567	2010-12	3,3942630633	2,1342786016	3,5002210337	3,9963129593	3,2834098499	0,7547098318	2,765204523								
+Jan-91	2001-01	3,5036295078	-0,5898707423	2,6015586182	1,1191500327	0,9377443989	1,8729970351	1,893035255	2011-01	3,4458315789	1,9995018161	3,7541964672	4,09992206	3,2786400782	0,8705284709	2,720641954								
+Feb-91	2001-02	2,744542415	-0,5609645107	2,3720627673	1,0092041826	0,9237613789	1,4825346479	1,378477986	2011-02	3,1779523649	2,2320545439	3,8854879431	3,5941321228	3,2179024403	0,6834342173	2,500234645								
+Mar-91	2001-03	2,5472018842	-0,5567483029	1,9517391427	1,0071883135	0,9078758835	1,1593265955	1,279402244	2011-03	3,0776712579	2,3692324837	3,3439833712	3,5764991312	3,1409858458	0,570614623	2,573623826								
+Apr-91	2001-04	2,6150805289	-0,5578558955	2,2076819637	0,9981977363	0,9010336848	1,1089689145	1,442663329	2011-04	3,1331596715	2,571476834	3,6758821355	3,5578175785	3,1323200099	0,5617290322	2,715172762								
+May-91	2001-05	2,310779541	-0,5206561623	2,0160716085	1,0018221621	0,9066430001	1,2821314939	1,352253326	2011-05	2,7438127952	2,698164992	3,3813479028	3,5679614179	3,1509670912	0,5884093847	2,550229751								
+Jun-91	2001-06	2,4533006227	-0,5423736537	1,9504807508	1,0029258455	0,905761794	1,2204818524	1,438669154	2011-06	3,0134744058	2,6382118476	3,1781272408	3,5706468082	3,1451492395	0,5167033745	2,751199475								
+Jul-91	2001-07	2,3468925156	-0,5385581961	1,9874704541	1,0641429894	0,9310745669	1,1646574548	1,296745504	2011-07	2,8957524032	2,7451719235	3,207778056	3,7945764413	3,2044242407	0,5841536646	2,504154739								
+Aug-91	2001-08	1,8786864282	-0,5003654698	1,741399531	1,0549401198	0,9563928305	1,0643936069	1,182890167	2011-08	1,9836902952	3,4112029474	2,4498209514	3,7425135212	3,3041270691	0,3141980612	2,233184186								
+Sep-91	2001-09	1,4148803278	-0,455338119	1,2975588959	1,0307299727	0,9631775782	0,8100322981	0,9088516	2011-09	1,8955788576	3,5818515447	2,1401548585	3,6317795341	3,332277948	0,305061204	1,821045852								
+Oct-91	2001-10	1,6180590649	-0,4740566035	1,4974665387	1,0144709945	0,9715908859	0,8880326406	0,917345847	2011-10	2,3548069545	3,1212350764	2,6678810481	3,5496171783	3,36004094	0,3666121494	2,105468618								
+Nov-91	2001-11	1,93212699	-0,4856164016	1,7649554717	1,0209335175	0,9841945242	1,0207579052	1,162123094	2011-11	2,3693050176	3,3053473366	2,6857037506	3,540863644	3,3785145731	0,4183778984	2,188278039								
+Dec-91	2001-12	2,0063459461	-0,5010483638	1,873295885	0,9897917425	0,9735311619	1,0361671698	1,001622462	2011-12	2,2177413751	3,0469453312	2,6192437466	3,4472204518	3,3756981768	0,4353727276	1,93648286								
+Jan-92	2002-01	1,7690234992	-0,4627458	1,9032032552	0,9433508325	0,9513468543	0,879191345	0,980311537	2012-01	2,3170763521	3,1620496657	3,0520938652	3,2281467399	3,2626724159	0,394023141	2,184807597								
+Feb-92	2002-02	1,6357528812	-0,4161971009	1,7223238959	0,937308458	0,9234489382	0,8279109664	1,005768046	2012-02	2,4197103827	3,4170002219	3,0513844456	3,1781874776	3,1189780458	0,4867632582	2,432501353								
+Mar-92	2002-03	1,8899561417	-0,3977544531	1,7616362672	0,9532147909	0,9194714181	0,9547849792	1,222129618	2012-03	2,5306113306	3,347115452	2,9389805622	3,24262457	3,0980643631	0,55776644	2,674528336								
+Apr-92	2002-04	1,6611971644	-0,3519526003	1,6780837202	0,9669939511	0,9291862376	0,8714769097	1,111508597	2012-04	2,3926238085	3,3602974091	2,9375142435	3,2838893934	3,1214651499	0,5566998934	2,580149664								
+May-92	2002-05	1,4284579258	-0,3105606047	1,597349287	0,9774742758	0,9336054507	0,7778906208	1,028619252	2012-05	1,9733436254	3,2023589909	2,6342601663	3,3246529541	3,135750632	0,464843679	2,099997184								
+Jun-92	2002-06	1,2592630342	-0,2978232321	1,2984224891	0,9757361401	0,937865335	0,6942639714	0,967082223	2012-06	2,165702039	3,1869316526	2,5406651244	3,3125632663	3,1495662872	0,4852079799	2,416428852								
+Jul-92	2002-07	1,0527150346	-0,3481524166	1,0967495908	0,9913362083	0,9493041315	0,4605506675	0,779202175	2012-07	2,6971643326	3,0240024029	2,8695318281	3,3653353687	3,1835872133	0,5139973814	2,456583087								
+Aug-92	2002-08	1,1712020839	-0,3354274048	1,2641236507	0,9833349406	0,9712908339	0,4648042978	0,735111066	2012-08	3,0205913497	3,2292085246	3,302116817	3,3232665519	3,2710204603	0,5517286465	2,454795518								
+Sep-92	2002-09	0,6481564744	-0,3169067158	0,8312281712	0,9076163661	0,9608973288	0,3787063195	0,532100948	2012-09	3,4134200765	3,5370943773	3,715415644	3,0042010241	3,2309956871	0,5985349279	2,594639127								
+Oct-92	2002-10	0,8760276241	-0,3166808113	1,15220715	0,8646981285	0,8570612136	0,3837254973	0,719301601	2012-10	3,3604002601	3,567508513	3,9749779738	2,8140574116	2,7827236293	0,631749631	2,682235702								
+Nov-92	2002-11	0,9237261853	-0,2731062971	1,2154406447	0,8579464109	0,810988906	0,4591546552	0,798980057	2012-11	3,2985127659	3,6516273802	4,0388715415	2,751998505	2,5627915814	0,5373180284	2,671148286								
+Dec-92	2002-12	0,6354432887	-0,2408038729	0,904734908	0,838049788	0,7802116872	0,3823168083	0,67500276	2012-12	3,4259457629	3,5409943062	4,0437405719	2,7093396987	2,478016166	0,5167573316	2,712216056								
+Jan-93	2003-01	0,5229334295	-0,1404446016	0,836242421	0,8158704978	0,7480450652	0,3902303399	0,622306972	2013-01	3,464921095	3,5998470312	4,2414819691	2,5924950841	2,3264850738	0,6243371595	2,929021797								
+Feb-93	2003-02	0,2915353998	-0,1287011372	0,6743495472	0,7816718402	0,7150354598	0,2604407139	0,552890793	2013-02	3,1195019192	3,4752157088	4,1395846508	2,4447490853	2,1884881955	0,6337475864	2,841955404								
+Mar-93	2003-03	0,219700357	-0,1843563323	0,4804216738	0,7321774295	0,6378724545	0,2467096908	0,451931181	2013-03	3,1491993178	3,3423362338	3,7964865512	2,2465976414	1,8960891492	0,6459897006	2,701349623								
+Apr-93	2003-04	0,5931110522	-0,2551089028	0,7561751444	0,7403076925	0,6271241645	0,3588394139	0,524817249	2013-04	3,3892991195	2,8713258438	3,7711462011	2,2654421355	1,846093914	0,7212094037	2,650070602								
+May-93	2003-05	0,618640921	-0,2408056601	0,8471735686	0,7731553022	0,6245068515	0,4427959783	0,589186508	2013-05	3,6436260018	2,3858313055	4,1472385751	2,371010544	1,8175044126	0,8074592014	2,564455656								
+Jun-93	2003-06	0,6868141222	-0,2506596127	0,9513609669	0,7683042884	0,6249647891	0,5229959168	0,634932602	2013-06	3,2359396928	2,139099976	3,8552775615	2,3582513496	1,8247908456	0,7630490949	2,501400651								
+Jul-93	2003-07	0,7262169972	-0,3133128997	1,0311825627	0,7364804276	0,6221857959	0,5343486767	0,636729763	2013-07	3,1172676585	1,8037784427	3,9272157961	2,226420678	1,8055310259	0,8338176487	2,623742182								
+Aug-93	2003-08	0,5836370108	-0,2627865077	0,9203014441	0,6994504421	0,5838670123	0,5011675844	0,594152307	2013-08	2,6939216239	2,0690707849	3,5466718831	2,0869775883	1,6700582617	0,8044505513	2,365244762								
+Sep-93	2003-09	0,4897254375	-0,1447977551	0,6877128534	0,660732941	0,5407163552	0,5288755267	0,63711582	2013-09	3,0085071835	2,3147035989	3,4730636906	1,9474111872	1,5237724844	0,7988494993	2,624782572								
+Oct-93	2003-10	0,5566862307	-0,1688941769	0,9055403487	0,6266304115	0,5278051172	0,5531298685	0,69429617	2013-10	2,8911158156	2,1357416653	3,8105581515	1,8267773276	1,482581665	0,8379256094	2,673309166								
+Nov-93	2003-11	0,6168188802	-0,1600608136	0,7852993334	0,6300529426	0,4996162718	0,5888504571	0,8461779	2013-11	3,0993243345	1,9448766211	3,5886604521	1,8186662185	1,3693762529	0,9391107248	3,001209533								
+Dec-93	2003-12	0,5378265851	-0,1477504536	0,8689327602	0,6002967299	0,4619744114	0,6232334353	0,865342302	2013-12	2,7388341275	1,7121730111	3,6721088017	1,7370960345	1,2677669905	0,9519146904	2,880997846								
+Jan-94	2004-01	0,660376064	-0,1327617517	0,8076320423	0,5999679053	0,449930215	0,6866669749	0,776217365	2014-01	2,8146672789	1,7518882169		1,7238428234	1,2190185912	0,948810429	2,481648507								
+Feb-94	2004-02	0,7243551161	-0,1362853663	0,8416610245	0,6520993393	0,4566959648	0,7134484238	0,842908856	2014-02	3,1798580814	1,948868547		1,8906552397	1,2243267749	0,9535840008	2,736484014								
+Mar-94	2004-03	0,6078840598	-0,1429124249	0,8416032806	0,6951132817	0,4748816758	0,7033851789	0,917717857	2014-03	3,023278395	2,0240793618		2,0575713608	1,2916012414	1,046409368	2,928223242								
+Apr-94	2004-04	0,5696402236	-0,1334258543	0,8605837984	0,7150255324	0,4811967906	0,7821669076	0,808356769	2014-04	2,8189599836	1,9810650828		2,1485387449	1,327004408	1,1349927139	2,842784367								
+May-94	2004-05	0,6406991251	-0,1954839713	0,7451237079	0,7493303225	0,500835245	0,7053679182	0,824913227	2014-05	3,2248177586	1,9315036991		2,2774622145	1,3921823617	1,1501041464	2,926770914								
+Jun-94	2004-06	0,7997671464	-0,1855580922	0,9086453454	0,8212073245	0,5546085608	0,7417526129	0,873847299	2014-06	3,4052770398	1,8631278198		2,5510179495	1,5683009819	1,2084079192	3,016003401								
+Jul-94	2004-07	0,614638008	-0,1664402793	0,9037711206	0,7948292513	0,5769329778	0,7193451619	0,769981717	2014-07	2,9328478709	1,9567252035		2,4431857552	1,6413728981	1,2729636772	2,865075669								
+Aug-94	2004-08	0,5104000809	-0,1477103777	0,7740706831	0,8297690747	0,5884604349	0,6442082278	0,72125545	2014-08	2,8310845278	1,9628698193		2,5817081018	1,6825409817	1,198430324	2,833851083								
+Sep-94	2004-09	0,7337502124	-0,1653699007	0,7647244072	0,9097150272	0,6492552994	0,6817415379	0,809538811	2014-09	3,255660366	1,718230598		2,9048285776	1,8970372811	1,2254366295	2,825861835								
+Oct-94	2004-10	0,7081260632	-0,1265539225	0,9454415325	0,9112816818	0,696917815	0,68282417	0,799609982	2014-10	3,0497753182	1,6835466968		2,9219439661	2,0809810386	1,1774896246	2,737036683								
+Nov-94	2004-11	0,8164721627	-0,0556597417	0,9965747836	0,9073234516	0,7288739122	0,7894017791	1,006584552	2014-11	3,4256245436	1,6133485216		2,8875842882	2,184532235	1,3641783581	3,017663005								
+Dec-94	2004-12	0,8122720076	-0,0407843145	1,0813336422	0,8914020545	0,723995578	0,8643453549	1,058849739	2014-12	3,2101465972	1,7188046018		2,8666204924	2,2071487272	1,4325877833	2,908566142								
+Jan-95	2005-01	0,9116714919	-0,0736480668	1,0692470754	0,9330468419	0,7618685586	0,8079840091	1,056330254	2015-01	3,866051645	1,8738338147		2,9975914136	2,314694392	1,3787096359	2,914965906								
+Feb-95	2005-02	0,8761441771	-0,0694526679	1,2115066307	0,8985044067	0,751155368	0,7650905291	1,094809191	2015-02	3,9949077077	1,8389036608		2,8510963454	2,2699309913	1,3488674916	3,098143435								
+Mar-95	2005-03	1,0629188811	-0,061422557	1,1203440715	0,8663532675	0,7260154073	0,6987653132	0,94206085	2015-03	4,7886630562	1,6568103971		2,7368513661	2,189794821	1,2691075292	2,821096201								
+Apr-95	2005-04	0,8790811218	-0,1001986225	1,2398487916	0,8330949735	0,6486477595	0,592739744	0,828153196	2015-04	4,2437347102	1,6237600466		2,5919821934	1,894204862	1,209798547	2,773257299								
+May-95	2005-05	0,9342627388	-0,1000068055	1,2725276995	0,7898964923	0,6073378307	0,5633357992	0,846800625	2015-05	4,0189646194	1,672474103		2,4279895271	1,7524185617	1,1439454308	2,756552379								
+Jun-95	2005-06	1,0028956416	-0,0877695459	1,2494335633	0,7753178443	0,5628723095	0,5498424174	0,865537997	2015-06	3,8194496271	1,6173998851		2,3758435832	1,6021786977	1,0546900938	2,666343917								
+Jul-95	2005-07	1,0033635253	-0,0990298631	1,369654052	0,7886802137	0,5633734857	0,512418378	0,834793458	2015-07	3,665908004	1,4993825672		2,4333939401	1,6092622225	0,9697257097	2,544797057								
+Aug-95	2005-08	0,9564863772	-0,0597404348	1,2386617976	0,7647464173	0,557883661	0,5034511163	0,895155411	2015-08	3,151029606	1,4814537677		2,3482068981	1,5966996016	0,9082409487	2,368245865								
+Sep-95	2005-09	1,1016892423	-0,0140301614	1,3202806242	0,734510744	0,522268271	0,427616192	0,885499266	2015-09	2,9846667038	1,5051538842		2,246064811	1,4875357566	0,7305793856	2,128962248								
+Oct-95	2005-10	1,0655485447	0,0186837801	1,2955287599	0,7275387675	0,5061227687	0,3696456242	0,864020294	2015-10	3,5683379316	1,5830664676		2,2285566305	1,440845295	0,8082071238	2,463707332								
+Nov-95	2005-11	1,1131123552	0,0349828053	1,4744638809	0,6928107698	0,4865950944	0,4126664376	0,867580123	2015-11	3,6409601876	1,3914667373		2,0801349123	1,3600221868	0,8271111646	2,319824739								
+Dec-95	2005-12	1,1925708652	0,1078638389	1,5218242486	0,6418757384	0,4388247317	0,3947869559	0,848958769	2015-12	3,337712119	1,3285999623		1,9158690834	1,2250149363	0,7403436614	2,157583429								
+Jan-96	2006-01	1,0980978114	0,1790790366	1,6334499428	0,6194801309	0,4105336587	0,4214636966	0,910588374	2016-01	2,5534970805	1,334975809		1,8229481176	1,1259541971	0,6219179229	1,903161976								
+Feb-96	2006-02	1,1453363599	0,1740515998	1,5352707133	0,6731837121	0,3967749869	0,3343446689	0,896322076	2016-02	2,4295158266	1,5416841705		2,0159430359	1,0834940926	0,5061284533	1,864531849								
+Mar-96	2006-03	1,2037225465	0,207409199	1,629183601	0,7148343508	0,4221461693	0,3602005934	0,907876942	2016-03	2,5892700025	1,7235970333		2,1594096475	1,1524190481	0,6235177429	2,018137564								
+Apr-96	2006-04	1,1953451015	0,353819295	1,6524744365	0,6986492396	0,4255043104	0,3571731582	0,916996074	2016-04	2,5887254335	1,741509686		2,1214836703	1,1821267439	0,676624596	1,995359284								
+May-96	2006-05	1,0387597384	0,5264378574	1,5137155237	0,7144163352	0,4214785155	0,3086629362	0,847838477	2016-05	2,6178380834	1,7955771914		2,167392678	1,1585884722	0,6181794491	2,014074372								
+Jun-96	2006-06	1,0175603512	0,3507156198	1,4317879034	0,7325907481	0,4293121625	0,24647492	0,836192045	2016-06	2,3622987478	1,888960665		2,2414748531	1,1884306775	0,6097715816	1,961655933								
+Jul-96	2006-07	1,0937362779	0,447475317	1,3805578443	0,7162034744	0,4422464212	0,3060387334	0,921812337	2016-07	2,7615086813	2,069777884		2,1872368694	1,2357090825	0,7588448058	2,228216862								
+Aug-96	2006-08	1,1010566183	0,4273965897	1,5342609142	0,6859239357	0,4373052054	0,2960352823	0,954023326	2016-08	2,7446200757	2,0407509239		2,0690327635	1,2148419035	0,7201293948	2,19006291								
+Sep-96	2006-09	1,0629378897	0,3645174071	1,5543703413	0,6749498538	0,4262998952	0,3172723228	0,8988627	2016-09	2,5403569315	2,0378314119		2,0207689469	1,1724934704	0,6663840783	2,071349724								
+Oct-96	2006-10	1,1549931193	0,3377184928	1,5592669685	0,6362583563	0,3996646365	0,3222525198	0,959745368	2016-10	2,5844715314	1,9052580019		1,8819785183	1,0897486906	0,57460596	1,978881336								
+Nov-96	2006-11	1,0159261769	0,4575318364	1,5810696888	0,6121539015	0,3933357184	0,2844025453	0,896954445	2016-11	2,3145017983	1,857521268		1,7935064587	1,067937756	0,5090406076	1,849116039								
+Dec-96	2006-12	1,0778828121	0,4986151369	1,5746217635	0,5959884963	0,3784775258	0,2919252988	0,970142066	2016-12	2,5431386345	1,6881970609		1,7459236165	1,0294738939	0,5543124783	1,973912496								
+Jan-97	2007-01	1,0423267808	0,5810134565	1,6325400018	0,6089707263	0,3853851327	0,2664383469	0,98099433	2017-01	2,3900116803	1,9487725823		1,7725427592	1,0366998657	0,5348118004	2,034911785								
+Feb-97	2007-02	0,8611789812	0,7210424157	1,4630844734	0,5633866404	0,3589863304	0,220262829	0,941092921	2017-02	2,2136267056	2,1436333534		1,6234254337	0,9635979062	0,494981211	2,084040148								
+Mar-97	2007-03	0,8159161352	0,6604147287	1,3748671942	0,5873111033	0,3552663775	0,1825801044	1,022511545	2017-03	2,1711604547	2,0746635536		1,7113934925	0,9565848311	0,5412343971	2,190327935								
+Apr-97	2007-04	0,9436921417	0,7623282107	1,3750840421	0,6047485715	0,3548690701	0,2746415848	1,038867496	2017-04	2,1928120939	2,2511042408		1,7993094361	0,9776728834	0,5984445445	2,12453801								
+May-97	2007-05	1,0162167279	0,7364857991	1,5120895385	0,5911298567	0,3551797076	0,1908069833	0,973870751	2017-05	2,1388324799	2,2019917789		1,7429673709	0,9724788751	0,4640698302	2,001638403								
+Jun-97	2007-06	0,9104360703	0,7193434481	1,4046491506	0,5855555859	0,3518618264	0,1247638016	0,855760989	2017-06	1,8387097592	2,2839448502		1,7198006179	0,9592425141	0,4007443977	1,854781499								
+Jul-97	2007-07	0,5083901643	0,8545210195	1,1691857795	0,5638515699	0,3491432278	0,0661962528	0,726056	2017-07	1,3196498829	2,4042784871		1,635629503	0,944041157	0,3286619138	1,793806738								
+Aug-97	2007-08	0,7564670463	0,8520183351	0,8842328162	0,5813417402	0,3589711675	0,014244775	0,86430471	2017-08	1,6747199228	2,5452554243		1,690643938	0,968810294	0,3231591714	2,024187221								
+Sep-97	2007-09	0,677481252	0,9958655127	1,1745934789	0,5620080549	0,3554501494	0,0284508172	0,843529335	2017-09	1,6599136937	2,6642554187		1,6446540461	0,975615708	0,3193866476	1,916285654								
+Oct-97	2007-10	0,9415329438	1,1122175963	1,1066061815	0,5569688421	0,3637172896	0,0416833853	1,020527377	2017-10	2,1303602809	2,5227206902		1,6375844478	1,009704076	0,3416294773	2,162838255								
+Nov-97	2007-11	0,7792810618	1,4248759911	1,2361415556	0,5503232311	0,3854087291	-0,0160650692	0,889413251	2017-11	1,8782794393	2,7690556401		1,6263243923	1,086913242	0,3889199399	2,17777603								
+Dec-97	2007-12	0,6800674918	1,564577771	1,1758209571	0,5086835376	0,3852984222	-0,0378632311	0,832993823	2017-12	1,6135150319	2,9567365547		1,4938476642	1,0942955603	0,3852782381	2,1764968								
+Jan-98	2008-01	0,3293464948	1,8554022398	0,7613247123	0,4784603979	0,3617755465	-0,1179983931	0,629590472	2018-01	1,5546270465	3,1918602663		1,3885729808	1,0180524909	0,4723006832	2,273227542								
+Feb-98	2008-02	0,2167793322	1,8883079615	0,6578341211	0,4574764572	0,3521746266	-0,2038348683	0,501097299	2018-02	1,2221465942	3,0613692886		1,3248397465	0,9932036252	0,2999145965	1,900260516								
+Mar-98	2008-03	0,0579137866	2,0591657784	0,4963654823	0,4367138102	0,3365743219	-0,2938657182	0,409441625	2018-03	0,9460268936	3,0554219434		1,273272776	0,9601610466	0,2065697078	1,694756524								
+Apr-98	2008-04	0,139864348	1,7337280114	0,460530115	0,4389119227	0,337321168	-0,2885743055	0,481852946	2018-04	1,0431416667	2,8983480165		1,2718425735	0,9543405237	0,1212535391	1,699966625								
+May-98	2008-05	0,0492343428	1,7488644745	0,4762136459	0,4437431552	0,3343513876	-0,2737056532	0,527216474	2018-05	0,8348450041	2,9318029292		1,2994777849	0,9564243142	0,1485954338	1,75863711								
+Jun-98	2008-06	-0,1379867406	1,8177234954	0,2115052449	0,4179517155	0,3302259505	-0,3248895149	0,349237449	2018-06	0,659372101	2,9602004783		1,2215799146	0,9488809045	0,1801308123	1,686443391								
+Jul-98	2008-07	-0,125552154	1,9848995228	0,148362782	0,3973975312	0,3249807194	-0,422086886	0,311039031	2018-07	0,75417568	2,8014076417		1,1651339696	0,9415515492	0,1383567411	1,78881528								
+Aug-98	2008-08	0,0998878448	1,7280315368	0,1202951883	0,3585395392	0,3105220965	-0,3393209378	0,523463134	2018-08	1,1265325716	2,7972567107		1,0386492945	0,8929535393	0,2921186485	2,316049237								
+Sep-98	2008-09	0,0826437539	1,6244013492	0,227967535	0,3015919722	0,2760385656	-0,341741119	0,284081719	2018-09	1,3222718022	2,7126808663		0,8697330052	0,7942978332	0,4007187687	2,26256323								
+Oct-98	2008-10	-0,1643843222	1,5082683837	0,1614973194	0,3027192078	0,2506216236	-0,5216628344	-0,104264835	2018-10	1,0049445328	2,6498107615		0,8656376571	0,7132253858	0,3038491365	1,71029834								
+Nov-98	2008-11	-0,293276374	1,3526498486	-0,0022911731	0,320598166	0,2529810687	-0,6272443343	-0,226631397	2018-11	0,7980760876	2,7073715092		0,8938970425	0,6959676755	0,1051674099	1,573076801								
+Dec-98	2008-12	-0,2648208686	1,5878097663	-0,0822307691	0,2801658289	0,2289640896	-0,6514919368	-0,245671321	2018-12	0,6675237608	2,8466195554		0,7844683711	0,6375360375	-0,0358693785	1,22094648								
+Jan-99	2009-01	-0,3810580917	1,7633044974	-0,1545720237	0,2623937127	0,2078753758	-0,6824589722	-0,346029687																
+Feb-99	2009-02	-0,4450826705	2,0411626805	-0,2915624715	0,2775282122	0,1887366148	-0,726868303	-0,419502549																
+Mar-99	2009-03	-0,388880287	2,009767017	-0,195195771	0,306874777	0,1924967594	-0,7669572116	-0,39052575																
+Apr-99	2009-04	-0,3374672959	1,936698427	-0,0385527003	0,2833343557	0,1813229756	-0,7265657701	-0,328033864																
+May-99	2009-05	-0,2446917403	2,1276294566	-0,0920351334	0,3085519521	0,1721054621	-0,6927586784	-0,206470878																
+Jun-99	2009-06	-0,3275873153	2,404222791	-0,0595543521	0,3567854217	0,1828344065	-0,6820604997	-0,258077244																
+Jul-99	2009-07	-0,1706488843	2,4308990697	-0,0209185471	0,4102729834	0,2300789795	-0,6912293614	-0,167325997																
+Aug-99	2009-08	-0,1837487559	2,4749517458	0,0205095383	0,4359778369	0,269255434	-0,6316378217	-0,126559759																
+Sep-99	2009-09	-0,120768196	2,5449144829	0,0352918863	0,4584620666	0,2866044326	-0,6067254695	-0,073844673																
+Oct-99	2009-10	-0,2439936524	2,1252846559	0,0136823172	0,496569334	0,3180983518	-0,5850011323	-0,151181355																
+Nov-99	2009-11	-0,2617911875	2,6189197813	-0,0153716691	0,46525698	0,3318794558	-0,6074291373	-0,129483342																
+Dec-99	2009-12	-0,365574539	2,7783917535	-0,0231361577	0,4766876484	0,3347798278	-0,6160399477	-0,198360885																
+Jan-00	2010-01	-0,392076638	2,7213897615	-0,2200477013	0,5481577634	0,3702254586	-0,5986289439	-0,171826941																
+Feb-00	2010-02	-0,4781532023	2,4262468008	-0,2166865633	0,5398508776	0,3815706006	-0,6016764146	-0,163150645																
+Mar-00	2010-03	-0,4119887298	2,6692258509	-0,2312880108	0,5052160996	0,383321565	-0,593345574	-0,17549226																
+Apr-00	2010-04	-0,3930504345	2,8792810831	-0,2266720033	0,4864912043	0,3820678143	-0,5792054038	-0,129922287																
+May-00	2010-05	-0,3838142698	3,1519723358	-0,2253444786	0,5122251556	0,4124172621	-0,5992653978	-0,207747444																
+Jun-00	2010-06	-0,3522181717	3,1015570872	-0,1946686474	0,4877292721	0,4303033848	-0,6308885668	-0,268529815																
+Jul-00	2010-07	-0,3584555985	3,0253603373	-0,1327632981	0,5039134523	0,4460926074	-0,632444477	-0,158282142																
+Aug-00	2010-08	-0,3971428262	3,2020548152	-0,193168117	0,489682028	0,4459825878	-0,6388570228	-0,234112845																
+Sep-00	2010-09	-0,3007314477	3,428843229	-0,1202408142	0,4987933233	0,4564557036	-0,6092303486	-0,08047479																
+Oct-00	2010-10	-0,2866587651	3,747943981	0,0138291734	0,488503239	0,4525305778	-0,5489040436	-0,020291865																
+Nov-00	2010-11	-0,16636797	3,9413208956	0,0398271426	0,4824611055	0,4559410202	-0,5237315049	0,033492557																
+Dec-00	2010-12	-0,1390239525	3,9115162755	0,1799031826	0,444316812	0,4244499537	-0,4731740343	0,10648938																
+Jan-01	2011-01	-0,1744889962	3,8997959827	0,2135234168	0,4282222445	0,3786064778	-0,4524924062	0,108580522																
+Feb-01	2011-02	-0,0446442199	4,0176253657	0,1756816976	0,4251720386	0,3712081678	-0,4123245081	0,281974938																
+Mar-01	2011-03	-0,0150978906	4,1815833092	0,2337864584	0,4016675363	0,3570067261	-0,3555130299	0,365050224																
+Apr-01	2011-04	-0,0188743366	4,4361723661	0,3736967067	0,4304391194	0,3468515417	-0,3382002435	0,32362771																
+May-01	2011-05	-0,0224559332	4,3447443019	0,2544139687	0,4691959312	0,3574915386	-0,3851375383	0,317012139																
+Jun-01	2011-06	0,0050659038	4,4327717954	0,2910326055	0,4625626	0,358631491	-0,3929519882	0,343043092																
+Jul-01	2011-07	0,007901156	4,6456353988	0,2004876725	0,4646448899	0,3503144443	-0,3490539931	0,334614008																
+Aug-01	2011-08	-0,103206332	5,2349529396	-0,003647816	0,4290998885	0,3310903201	-0,430177849	0,293736809																
+Sep-01	2011-09	0,0543811304	5,0809420401	0,0137884092	0,4230492973	0,3022126373	-0,3396690141	0,292546385																
+Oct-01	2011-10	0,1230632921	4,6629427723	0,36571626	0,3900446012	0,2699820572	-0,3439316699	0,416874253																
+Nov-01	2011-11	-0,0060807015	5,0578211987	0,2685630128	0,3653726648	0,2276930755	-0,3749966816	0,285740028																
+Dec-01	2011-12	-0,0752304569	4,7700059585	0,1346527096	0,4168360576	0,2590055418	-0,3680218553	0,283856061																
+Jan-02	2012-01	0,0485267296	4,6615652941	0,2327242321	0,4373954674	0,2723503173	-0,3248186898	0,411058869																
+Feb-02	2012-02	0,1399622422	4,6745391668	0,3039303552	0,4420358811	0,2915820105	-0,2609634551	0,501492423																
+Mar-02	2012-03	0,0630681733	4,4666214403	0,3263716673	0,4759878834	0,3123388076	-0,2855140382	0,446952725																
+Apr-02	2012-04	0,1170334477	4,2190519555	0,2350286933	0,4742904062	0,3237087565	-0,2497881503	0,486482692																
+May-02	2012-05	0,078488805	3,8188011284	0,1975364966	0,4799554037	0,3262282862	-0,2493260132	0,339348675																
+Jun-02	2012-06	0,2446954049	3,7431738272	0,2525264374	0,4587758059	0,3241888453	-0,1961526749	0,527584116																
+Jul-02	2012-07	0,6075897889	3,8568775858	0,4425116017	0,4322867192	0,3051155817	-0,0397021392	0,709852139																
+Aug-02	2012-08	0,6488483624	4,0147867366	0,6826193045	0,3839421006	0,2556408266	-0,0222842416	0,749807436																
+Sep-02	2012-09	1,3751871258	4,233171891	0,7485899733	0,3505232624	0,2258938725	0,0701442259	1,053511769																
+Oct-02	2012-10	1,0707950391	4,2812862622	1,3272745275	0,3610808278	0,2083746163	0,0865342996	0,881124611																
+Nov-02	2012-11	0,9947471103	4,1655692874	1,1091322421	0,3605184523	0,2008067757	-0,0287223232	0,795818063																
+Dec-02	2012-12	1,4029605587	3,8338430377	1,094746151	0,3453292841	0,1916688555	0,0175636719	0,947047787																
+Jan-03	2013-01	1,6057747449	3,4608317539	1,444179179	0,3280803865	0,2353429547	0,079798535	1,134388718																
+Feb-03	2013-02	1,8153907548	3,310955081	1,5574406333	0,2951856823	0,1883055739	0,2008274464	1,180663898																
+Mar-03	2013-03	1,9885513053	3,4305095967	1,7417587941	0,2988650151	0,1612329062	0,2220195296	1,24159436																
+Apr-03	2013-04	1,4622308289	3,2996925296	1,9095193449	0,3202211062	0,1611002183	0,1672936161	1,112017115																
+May-03	2013-05	1,5670015867	2,7524837534	1,5606081479	0,2688469018	0,1475382116	0,1480459749	0,982843576																
+Jun-03	2013-06	1,2513793235	2,5322196155	1,3915928032	0,2433948497	0,1369700263	0,0591967314	0,893939129																
+Jul-03	2013-07	1,1396720837	2,4284388439	1,3295144218	0,2889877793	0,1094206278	0,0904333654	0,958107178																
+Aug-03	2013-08	1,0921893715	2,5134874968	1,1553928768	0,311739106	0,1156298954	0,0989097907	0,866413793																
+Sep-03	2013-09	1,4034197554	2,3237707612	1,241932167	0,3152424041	0,1197232336	0,0735118939	0,956079932																
+Oct-03	2013-10	1,2377400383	2,2339730396	1,5126805162	0,3247343707	0,1476883126	0,0784373646	0,916632463																
+Nov-03	2013-11	1,2740110254	2,0369678754	1,3517511011	0,34016967	0,1584928397	0,1079805228	0,918966906																
+Dec-03	2013-12	1,1768388435	1,7642989139	1,350026415	0,3359872564	0,1461646108	0,090758355	0,839507011																
+Jan-04	2014-01	1,0665938923	1,7725594125		0,3243149533	0,1833123441	0,0475632834	0,737051916																
+Feb-04	2014-02	1,1833283703	1,9800959199		0,3133634756	0,1431489114	0,0316263927	0,799394732																
+Mar-04	2014-03	1,2502344928	2,0647043031		0,2861049782	0,1188280277	0,0873950771	0,817486744																
+Apr-04	2014-04	1,1867039434	1,9860145483		0,3176545271	0,1360435181	0,0814080038	0,886084066																
+May-04	2014-05	1,3174112591	2,1387319097		0,3441181777	0,1382787552	0,1439068848	0,913462267																
+Jun-04	2014-06	1,2057722262	2,0411631657		0,3505815869	0,1321718535	0,1475786505	0,905661897																
+Jul-04	2014-07	1,1933824994	2,0738069115		0,3393793985	0,1503795851	0,1968979866	0,941283788																
+Aug-04	2014-08	1,2814067458	2,0209511585		0,317318278	0,1853040027	0,214662191	0,980307182																
+Sep-04	2014-09	1,2098667755	1,8380983041		0,3053506716	0,1377430045	0,198914395	0,877662519																
+Oct-04	2014-10	1,1346308863	1,6913072862		0,290300397	0,1734740665	0,1736940023	0,844116517																
+Nov-04	2014-11	1,1973588766	1,4577397737		0,2737019953	0,1736187734	0,1930111976	0,779305212																
+Dec-04	2014-12	1,0948209702	1,5008867855		0,258597465	0,1284263491	0,1792223343	0,687479109																
+Jan-05	2015-01	1,3067131725	1,7392558998		0,2581972426	0,1690323864	0,1940996792	0,69843889																
+Feb-05	2015-02	1,4105618731	1,6972321537		0,2519745305	0,1399265414	0,2080897318	0,744708354																
+Mar-05	2015-03	1,5414471028	1,5079637939		0,2740492058	0,1488823847	0,2148743435	0,752700027																
+Apr-05	2015-04	1,5222053645	1,5773074155		0,2390965585	0,1251097927	0,2647899793	0,838317278																
+May-05	2015-05	1,3463320958	1,6195986052		0,2172465619	0,1125061694	0,2527771915	0,812060333																
+Jun-05	2015-06	1,1774920197	1,5385147913		0,1981368021	0,086365135	0,2142049737	0,751471144																
+Jul-05	2015-07	1,1078131666	1,4576189896		0,2098497125	0,1010831489	0,1963118673	0,721965628																
+Aug-05	2015-08	0,9187440539	1,3472474452		0,2148543006	0,0800888279	0,1676288257	0,581855051																
+Sep-05	2015-09	0,7131832441	1,2652351112		0,197201508	0,0823751758	0,1231488291	0,476162634																
+Oct-05	2015-10	0,9991251234	1,2592722595		0,219560318	0,1079406594	0,2206286679	0,654178816																
+Nov-05	2015-11	0,9861148762	1,0777671644		0,2443706898	0,1206561652	0,1944037082	0,581885475																
+Dec-05	2015-12	0,7898978682	0,9006032746		0,2385623829	0,1110933899	0,1576864292	0,521730786																
+Jan-06	2016-01	0,5359453027	0,8033020398		0,2415340347	0,1592881751	0,0649878634	0,35567322																
+Feb-06	2016-02	0,4496540703	0,9623520888		0,2640418701	0,1501546175	0,0614743294	0,348999461																
+Mar-06	2016-03	0,4716410205	1,0390783237		0,2783234854	0,123625455	0,1136951256	0,409407018																
+Apr-06	2016-04	0,4794605529	0,8380573341		0,3198433067	0,1415237269	0,1514050089	0,393556697																
+May-06	2016-05	0,6085504446	0,6672368346		0,3265013235	0,1483531786	0,1555271202	0,455545482																
+Jun-06	2016-06	0,5113417962	0,9381891414		0,3287829094	0,1405646121	0,2079909998	0,439938071																
+Jul-06	2016-07	0,6287204994	0,9219005624		0,3371661922	0,1864234843	0,2514198785	0,499679724																
+Aug-06	2016-08	0,6147651931	0,9301111435		0,3163880831	0,1686208352	0,2348949621	0,455930951																
+Sep-06	2016-09	0,5531215755	1,0130259229		0,2937210489	0,133765884	0,1786624944	0,440967991																
+Oct-06	2016-10	0,502537091	0,9643017771		0,2980392589	0,1680286858	0,1134903797	0,351215709																
+Nov-06	2016-11	0,4877500184	0,7799649367		0,2868848362	0,1375131025	0,1029085221	0,335958769																
+Dec-06	2016-12	0,5404680886	0,6303490571		0,2940622262	0,1477046099	0,1258646514	0,340339395																
+Jan-07	2017-01	0,5059962945	0,6989396375		0,3361283742	0,194344113	0,1384962915	0,365961116																
+Feb-07	2017-02	0,5680741043	0,6602413328		0,3393104896	0,1751195669	0,1529436489	0,416598474																
+Mar-07	2017-03	0,585854454	0,6827066075		0,3236294037	0,1648309908	0,2227102218	0,404926372																
+Apr-07	2017-04	0,4896485659	0,6736028879		0,3580305709	0,1807700521	0,1726775501	0,364329352																
+May-07	2017-05	0,4128073759	0,6758121406		0,3792409999	0,2025740495	0,1594075511	0,356290006																
+Jun-07	2017-06	0,350683253	0,7349681879		0,4194895829	0,1910951184	0,1787054539	0,37323864																
+Jul-07	2017-07	0,4105615767	0,6692714224		0,4118188446	0,2357437268	0,185954857	0,448255149																
+Aug-07	2017-08	0,3887289589	0,7396352897		0,3799924276	0,2307197525	0,2403178491	0,449555404																
+Sep-07	2017-09	0,4460548558	0,665903466		0,3705795873	0,2170607372	0,2191050224	0,412590261																
+Oct-07	2017-10	0,4644140963	0,5121107306		0,381393526	0,2390386353	0,2214243454	0,396458559																
+Nov-07	2017-11	0,472717626	0,4054305158		0,3571704678	0,2422948159	0,3280674977	0,502909488																
+Dec-07	2017-12	0,4180290873	0,3917669245		0,3733342033	0,2331683565	0,3513872081	0,546904162																
+Jan-08	2018-01	0,7463128988	0,3226093091		0,3519817834	0,2862595262	0,5444378444	0,793446587																
+Feb-08	2018-02	0,6642309408	0,2644092001		0,3406442221	0,2403999889	0,5188989329	0,722702207																
+Mar-08	2018-03	0,6734813139	0,1874783223		0,3205567204	0,1930061336	0,5784472299	0,700602012																
+Apr-08	2018-04	0,6340649097	0,2828398955		0,3511409281	0,2117217392	0,4792817661	0,623703856																
+May-08	2018-05	0,5974943105	0,2875286159		0,3764416737	0,1893827982	0,4790736544	0,609520577																
+Jun-08	2018-06	0,7408993468	0,2649183169		0,4256482273	0,2359670483	0,6067908906	0,765747306																
+Jul-08	2018-07	0,8033101337	0,1424738371		0,4246313671	0,2487087318	0,7663886396	0,879982752																
+Aug-08	2018-08	0,747684633	0,2526331961		0,3775952925	0,2970540671	0,7602105597	0,93048845																
+Sep-08	2018-09	0,9183927359	0,2718332917		0,3573533572	0,2599276535	0,8844883476	1,223818971																
+Oct-08	2018-10	1,1085975604	0,3080414312		0,3229555542	0,2922600418	1,2758859553	1,563956544																
+Nov-08	2018-11	1,2176064101	0,4182730566		0,2716997965	0,3147472513	1,4060106762	1,78025666																
+Dec-08	2018-12	1,0051986838	0,3344428777		0,2066633597	0,3012527874	1,2581007619	1,471822306																

BIN
data/raw/RA_ExpFB_Renditedaten.xlsx


+ 50 - 0
data/sampling-info.md

@@ -0,0 +1,50 @@
+Diese Faktenbox zeigt Ihnen, wie sich Renditen über bestimmte Zeiträume in der Vergangenheit entwickelt hatten. Diese sind bereits um die jeweilige Veränderung der Verbraucherpreise (Inflation) bereinigt. Noch nicht berücksichtigt sind Steuern. Es sind keine Entnahmen/Dividenden vorgesehen.
+
+### Kosten wurden wie folgt berücksichtigt
+- Aktienfonds 0,5 % p.a.
+- ETFs 0,5 % p.a.
+- Festgeld 0,05 % p.a.
+- Gold 0,5 % p.a.
+- Unternehmensanleihen 0,5 % p.a.
+
+### Grundlage der Daten
+- EFT (MSCI WORLD): Wertentwicklung des MSCI World Index
+- ETF (DAX): Wertentwicklung des DAX
+- ETF (Rentenindex): Entwicklung des Deutschen Rentenindex (REX)
+- ETF (US-Aktien): Wertentwicklung des S&P-500 Index
+- Festgeld: Deutsche Bundesbank: „Sparbriefe mit laufender Zinszahlung, vierjährige Laufzeit, Durchschnittsatz“ (bis 2002), „Banken DE, Neugeschäft, Einlagen privater Haushalte, vereinbarte Laufzeit von über 2 Jahren“
+- Gold: Entwicklung des London Market Price
+- Unternehmensanleihen: Bonds-Entwicklung
+
+### Auswahl der Daten
+Wenn 10-jährige, 20-jährige oder 30-jährige Zeiträume ausgewählt sind, werden entsprechende Zeiträume aus der verfügbaren Finanzhistorie zugrundegelegt (maximal monatsgenauer Einstiegszeitpunkt zwischen 1. Januar 1950 und 31. März 2009).
+Wenn verschiedene Anlageformen vermischt werden,  ist zu berücksichtigen, dass sich diese Mischung durch den unterschiedlichen Wertzuwachs der Anlageformen über die Zeit verändert.
+
+<hr/>
+
+### Begriffe
+
+#### Aktien
+- Eine Aktie ist ein Wertpapier. Hierdurch wird dem Aktionär ein Anteil an einem Unternehmen gesichert, mit bestimmten Mitwirkungsrechten. Der Wert einer Aktie spiegelt die Entwicklung des Unternehmens wider. Ein Aktienindex spiegelt demgegenüber die Entwicklung vieler Unternehmen in einer Zahl wider. 
+- Der DAX-30-Index dokumentiert die Entwicklung der 30 stärksten Unternehmen in Deutschland, die verschiedene Kriterien der Deutschen Börse (2018) erfüllen, z.B. juristischer Sitz oder operatives Hauptquartier in Deutschland. 
+- Der S&P-500-Index der international bekannten Kredit-Ratingagentur Standard & Poor’s dokumentiert die Entwicklung der 500 größten börsennotierten US-amerikanischen Unternehmen. 
+- Der MSCI World vom US-amerikanischen Finanzdienstleister MSCI dokumentiert die Entwicklung von 1.650 Unternehmen aus 23 Industriestaaten. Sie können alle diese Aktienindizes mit Hilfe von eigenen Indexfonds nachbilden (ETFs).
+
+#### Bundesanleihen
+- Bundesanleihen gehören zu den Bundeswertpapieren und sind Schuldverschreibungen der Bundesrepublik Deutschland (Deutsche Finanzagentur, 2019).
+
+#### Festgeld
+- Der Begriff Festgeld umschreibt Geldanlagen in Form von Sparkonten mit festgesetzten Laufzeiten und Zinssätzen, man spricht auch von Termingeld.
+
+### Quellen der Datensätze:
+- Allfinancialmatters (2015). <a href="https://allfinancialmatters.com/2015/12/13/sp-500-10-year-rolling-total-returns/" target="_blank">A historical look at the S&P 500 Total Return by the Month</a>, letzter Zugriff 01.05.2019.
+- Deutsche Bundesbank (2019). <a href="https://www.bundesbank.de/de/statistiken/geld-und-kapitalmaerkte/zinssaetze-und-renditen/realzinssaetze-auf-bankeinlagen/realzinssaetze-auf-bankeinlagen-772412" target="_blank">Realzinssätze auf Bankeinlagen: Habenzinsen Banken / Sparbriefe mit laufender Zinszahlung, vierjährige Laufzeit / Durchschnittssatz</a>, letzter Zugriff 11.10.2019.
+- Measuringworth (2019). <a href="https://www.measuringworth.com/datasets/gold/result.php" target="_blank">The Price of Gold - London market price</a>, letzter Zugriff 01.05.2019.
+- MSCI (2019). Real time index data search. MSCI Gross.
+- Stehle, R. (2015). DAX monthly. Zur Verfügung gestellt von Deutsches Aktieninstitut e.V.
+
+<div class="logos">
+    <img src="../img/HardingCenter_Logo_de_RGB.png" width="160" height="27" alt="Harding Center Logo"> 
+    <img src="../img/mpib.png" width="400" height="32" alt="Max-Planck-Institut für Bildungsforschung Logo"> 
+    <img src="../img/BMJV_Web_Master_de_WBZ.png" width="160" height="132" alt="Bundesministerium für Justiz und Verbraucherschutz Logo"> 
+<div></div></div>

+ 51 - 0
package.json

@@ -0,0 +1,51 @@
+{
+  "name": "experience-based-fact-box",
+  "version": "1.0.0",
+  "main": "main.js",
+  "dependencies": {
+    "d3-fetch": "^2.0.0",
+    "d3-selection": "^2.0.0",
+    "d3-transition": "^2.0.0",
+    "whatwg-fetch": "^3.4.0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.11.4",
+    "@babel/polyfill": "^7.10.4",
+    "@babel/preset-env": "^7.11.0",
+    "@riotjs/compiler": "^4.10.1",
+    "@rollup/plugin-babel": "^5.2.0",
+    "@rollup/plugin-commonjs": "^15.0.0",
+    "@rollup/plugin-node-resolve": "^9.0.0",
+    "autoprefixer": "^9.8.6",
+    "babel-eslint": "^10.1.0",
+    "cssnano": "^4.1.10",
+    "marked": "^1.1.1",
+    "node-sass": "^4.14.1",
+    "posthtml": "^0.13.3",
+    "posthtml-expressions": "^1.4.6",
+    "riot": "^4.13.5",
+    "rollup": "^2.26.5",
+    "rollup-plugin-browsersync": "^1.1.0",
+    "rollup-plugin-copy": "^3.3.0",
+    "rollup-plugin-delete": "^2.0.0",
+    "rollup-plugin-eslint": "^7.0.0",
+    "rollup-plugin-json": "^4.0.0",
+    "rollup-plugin-postcss": "^3.1.6",
+    "rollup-plugin-riot": "^4.0.2",
+    "rollup-plugin-sourcemaps": "^0.6.2",
+    "rollup-plugin-terser": "^7.0.0",
+    "stylelint": "^13.6.1",
+    "stylelint-config-recommended": "^3.0.0"
+  },
+  "scripts": {
+    "prepare": "npm run build",
+    "build": "npm run build:preprocess && npm run build:once",
+    "build:preprocess": "node bin/preprocess.js",
+    "build:once": "rollup -c",
+    "build:dev": "NODE_ENV=development npm run build",
+    "build:prod": "NODE_ENV=production npm run build",
+    "watch": "NODE_ENV=development npm run build:preprocess && NODE_OPT=serve rollup -c --watch"
+  },
+  "author": "zitzmann@mpib-berlin.mpg.de",
+  "license": "ISC"
+}

+ 76 - 0
rollup.config.js

@@ -0,0 +1,76 @@
+import autoprefixer from 'autoprefixer';
+import babel from '@rollup/plugin-babel';
+import browsersync from 'rollup-plugin-browsersync';
+import commonjs from '@rollup/plugin-commonjs';
+import cssnano from 'cssnano';
+import copy from 'rollup-plugin-copy';
+// import del from 'rollup-plugin-delete';
+// import { eslint } from 'rollup-plugin-eslint';
+import json from 'rollup-plugin-json';
+import path from 'path';
+import postcss from 'rollup-plugin-postcss';
+import riot  from 'rollup-plugin-riot';
+import resolve from '@rollup/plugin-node-resolve';
+import sourcemaps from 'rollup-plugin-sourcemaps';
+import stylelint from 'stylelint';
+import { terser } from 'rollup-plugin-terser';
+
+import config from './build.json';
+
+const printWarning = (message) => {
+    if (message.code === 'CIRCULAR_DEPENDENCY') {
+        return;
+    }
+    console.error(message);  // eslint-disable-line
+};
+
+let TARGET = process.env.NODE_ENV || 'development';
+let MODE = process.env.NODE_OPT;
+
+export default {
+    onwarn: printWarning,
+    input: path.join(config.path.input, config.path.js, `${config.main}.js`),
+    output: {
+        file: path.join(config.path.output, config.path.js, `${config.main}${config[TARGET].infix}.js`),
+        format: 'iife',
+        sourcemap: config[TARGET].sourcemap
+    },
+    plugins: [
+        // (MODE !== 'serve' && del({ targets: [path.join(config.path.output, '/*'), path.join(config.path.output, '/*')] })),
+        resolve({ browser: true }),
+        json(),
+        commonjs(),
+        // eslint({
+        //     exclude: ['styles/**', 'context/**', 'html/**']
+        // }),
+        riot(),
+        babel({ babelHelpers: 'bundled' }),
+        (TARGET === 'development' && sourcemaps()),
+        postcss({
+            extract: `${config.main}${config[TARGET].infix}.css`,  // rollup v3 seems to have broken the convenient way. file needs to be copied to destination in succeeding step
+            plugins: [
+                autoprefixer(),
+                stylelint(),
+                (TARGET === 'production' && cssnano())
+            ]
+        }),
+        copy({
+            targets: [
+                { src: path.join(config.path.output, config.path.js, `${config.main}${config[TARGET].infix}.css`), dest: path.join(config.path.output, config.path.css) },
+                { src: path.join(config.path.data, config.data), dest:  path.join(config.path.output, config.path.data) },
+                { src: path.join(config.path.assets, config.path.js), dest: config.path.output },
+                { src: path.join(config.path.assets, config.path.img), dest: config.path.output },
+                { src: path.join(config.path.assets, config.path.fonts), dest: config.path.output },
+            ],
+            hook: 'writeBundle',
+            verbose: true
+        }),
+        (TARGET === 'production' && terser()),
+        (MODE === 'serve' && browsersync({
+            server: {
+                baseDir: config.path.output,
+                index: config.html.output
+            }
+        }))
+    ]
+};

+ 633 - 0
src/css/styles.css

@@ -0,0 +1,633 @@
+@font-face {
+    font-family: 'fontello';
+    src: url('../fonts/fontello.eot?66028575');
+    src: url('../fonts/fontello.eot?66028575#iefix') format('embedded-opentype'),
+    url('../fonts/fontello.woff?66028575') format('woff'),
+    url('../fonts/fontello.ttf?66028575') format('truetype'),
+    url('../fonts/fontello.svg?66028575#fontello') format('svg');
+    font-display: 'fallback';
+    font-weight: normal;
+    font-style: normal;
+}
+
+
+@font-face {
+    font-family: 'Source Code Pro Bold';
+    src: url('../fonts/sourcecodepro-bold-webfont.woff2') format('woff2'),
+         url('../fonts/sourcecodepro-bold-webfont.woff') format('woff');
+    font-display: 'fallback';
+    font-weight: normal;
+    font-style: normal;
+
+}
+
+@font-face {
+    font-family: 'Source Sans Pro Bold';
+    src: url('../fonts/sourcesanspro-bold-webfont.woff2') format('woff2'),
+         url('../fonts/sourcesanspro-bold-webfont.woff') format('woff');
+    font-display: 'fallback';
+    font-weight: normal;
+    font-style: normal;
+
+}
+
+@font-face {
+    font-family: 'Source Sans Pro Light';
+    src: url('../fonts/sourcesanspro-light-webfont.woff2') format('woff2'),
+         url('../fonts/sourcesanspro-light-webfont.woff') format('woff');
+    font-display: 'fallback';
+    font-weight: normal;
+    font-style: normal;
+
+}
+
+@font-face {
+    font-family: 'Source Sans Pro';
+    src: url('../fonts/sourcesanspro-regular-webfont.woff2') format('woff2'),
+         url('../fonts/sourcesanspro-regular-webfont.woff') format('woff');
+    font-display: 'fallback';
+    font-weight: normal;
+    font-style: normal;
+
+}
+
+.demo-icon
+{
+    font-family: "fontello"; /* stylelint-disable-line */
+    font-style: normal;
+    font-weight: normal;
+    speak: none;
+
+    display: inline-block;
+    text-decoration: inherit;
+    width: 1em;
+    margin-right: 0.2em;
+    text-align: center;
+
+    /* For safety - reset parent styles, that can break glyph codes */
+    font-variant: normal;
+    text-transform: none;
+
+    /* Font smoothing. That was taken from TWBS */
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale;
+}
+
+:root {
+    --baseline: 1.25;
+    line-height: var(--baseline);
+
+    --border-thin: 1px;
+    --border-bold: 4px;
+
+    /* font size ratios */
+    --largefr: 1.953rem;
+    --mediumfr: 1.563rem;
+    --defaultfr: 1.25rem;
+    --smallfr: 1rem;
+    --tinyfr: 0.8rem;
+
+    /* colours */
+    --highlight: #00485e;
+    --main-light: #f7f7f6;
+    --forms: #7c7872;
+    --forms-bg: #fdfdfc;
+    --text: #322f2b;
+    --text-alt: #847d71;
+}
+
+body {
+    align-content: center;
+    background-color: var(--text);
+    color: var(--text);
+    font-family: "Source Sans Pro", "Helvetica Neue", Helvetica, sans-serif;
+    font-size: 16px;
+    font-weight: normal;
+    display: flex;
+    justify-content: center;
+    height: 100%;
+    overflow: hidden;
+}
+
+/* dark mode. experimental */
+/* @media (prefers-color-scheme: dark) { */
+/*   body { */
+/*     color: #ddd; */
+/*     background-color: #222; */
+/*   } */
+
+/*   main { */
+/*       background-color: #373736; */
+/*   } */
+/*   section { */
+/*       background-color: #373736; */
+/*   } */
+/*   #source-modal { */
+/*       background-color: #373736; */
+/*   } */
+/*   .deposit-stock-ratio { */
+/*       background-color: #353531; */
+/*   } */
+/* } */
+
+html, body {
+    height: 100%;
+}
+
+html, body, * {
+    border: 0;
+    margin: 0;
+    padding: 0;
+    box-sizing: border-box;
+}
+
+.iconset {
+    display: none;
+}
+
+main {
+    background-color: var(--main-light);
+    display: flex;
+    flex-direction: column;
+    justify-content: space-between;
+    padding: 1rem;
+    width: 1024px;
+    height: 650px;
+}
+
+input,
+/* label.form-item, */
+select {
+    font-family: "Source Sans Pro Bold", sans-serif;
+    font-size: var(--smallfr);
+    font-weight: normal;
+    letter-spacing: 0.025em;
+    color: var(--highlight);
+    background-color: var(--forms-bg);
+}
+
+/* does not work, loses against javascript injected styles */
+/* input.investment-options-ratios:hover, */
+select.investment-option-selector:hover {
+    opacity: 1;
+}
+
+
+select {
+    -webkit-appearance: none;
+       -moz-appearance: none;
+            appearance: none;
+    border-radius: 3px;
+    cursor: pointer;
+}
+
+input[type=range] {
+    max-width: 10rem;
+    -webkit-appearance: none;
+       -moz-appearance: none;
+            appearance: none;
+}
+
+input[type=range]:focus {
+  outline: none;
+}
+
+input[type=range]::-moz-range-track {
+    width: 100%;
+    height: 1px;
+    background-color: #000;
+    margin: 5px 0;
+}
+
+input[type=range]::-webkit-slider-runnable-track {
+    width: 100%;
+    height: 1px;
+    background-color: #000;
+    margin: 5px 0;
+}
+
+input[type=range]::-moz-range-thumb {
+    height: 12px;
+    width: 12px;
+    margin-top: -6px;
+    border: 1px solid black;
+    border-radius: 50%;
+    background-color: #fff;
+}
+
+input[type=range]::-webkit-slider-thumb {
+    height: 12px;
+    width: 12px;
+    margin-top: -6px;
+    -webkit-appearance: none;
+            appearance: none;
+    border: 1px solid black;
+    border-radius: 50%;
+    background-color: #fff;
+}
+
+a {
+    color: var(--text-alt);
+    text-decoration: none;
+}
+
+table {
+    width: 50%;
+}
+
+td:nth-child(2) {
+    font-family: monospace;
+}
+
+svg {
+    background-color: var(--forms-bg);
+}
+
+h1 {
+    font-family: "Source Sans Pro Light"; /* stylelint-disable-line */
+    font-size: var(--largefr);
+    font-weight: normal;
+    letter-spacing: 0.025em;
+}
+
+h1 a {
+    float: right;
+}
+
+h2 {
+    font-family: "Source Sans Pro Bold", sans-serif;
+    font-size: var(--defaultfr);
+    padding: 0 0.05em;
+}
+
+h4 {
+    font-family: "Source Sans Pro Bold", sans-serif;
+    font-size: var(--smallfr);
+    font-weight: normal;
+}
+
+header {
+    line-height: calc(var(--baseline) * 2rem);
+}
+
+.sampling-description {
+    font-weight: normal;
+}
+
+#source-modal {
+    background-color: #f7f7f6;
+    box-shadow: 1px 1px 20px 1px #847d71;
+    font-size: var(--tinyfr);
+    height: 40rem;
+    left: 0;
+    line-height: calc(var(--baseline) * 1rem);
+    margin: 0 auto;
+    right: 0;
+    overflow: auto;
+    padding: 1rem 2.5rem;
+    position: absolute;
+    top: 0.35rem;
+    width: 55rem;
+    z-index: 1000;
+}
+
+.reference-group h4 {
+    font-family: "Source Sans Pro", sans-serif;
+    padding: 0 0.5rem;
+    font-weight: normal;
+}
+
+#source-modal h4 {
+    margin: calc(var(--baseline) * 0.25em) 0;
+}
+
+.logos {
+    align-items: center;
+    display: flex;
+    justify-content: space-between;
+    margin: 2rem 0;
+}
+
+header .investment {
+    border: none;
+    border-bottom: 1px solid var(--forms);
+    width: 5rem;
+    text-align: right;
+    font-size: var(--defaultfr);
+}
+
+header .period-selector {
+    font-size: var(--defaultfr);
+}
+
+.samplers {
+    display: flex;
+    justify-content: space-between;
+}
+
+.reference-group-title {
+    line-height: calc(var(--baseline) * 2rem);
+}
+
+.reference-group {
+    padding: 0 0.5em;
+}
+
+.sampler-visual {
+    display: flex;
+}
+
+.sampler-wrapper {
+    border: 1px solid var(--text-alt);
+}
+
+.investment-options-ratio {
+    display: flex;
+    justify-content: space-between;
+}
+
+.investment-option-selector-wrapper {
+    display: flex;
+    flex-direction: column;
+    font-weight: bold;
+}
+
+.investment-option-selector-wrapper select {
+    border-radius: 3px;
+    font-size: var(--smallfr);
+}
+
+.investment-option-selector-wrapper-left {
+    align-content: flex-end;
+}
+
+.investment-options-range-labels {
+    display: flex;
+    justify-content: space-between;
+}
+
+input::-webkit-outer-spin-button,
+input::-webkit-inner-spin-button {
+    -webkit-appearance: none;
+}
+
+label,
+textarea,
+button {
+    -webkit-appearance: none;
+       -moz-appearance: none;
+            appearance: none;
+    font-size: 1rem;
+    padding: 0.25em 0.5em;
+}
+
+footer label {
+    font-size: var(--smallfr);
+}
+
+.investment-options-range-labels label {
+    padding: 0;
+}
+
+.textual.controls {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+}
+
+.overview {
+    text-align: right;
+}
+
+.sampler-textual {
+    display: flex;
+    justify-content: center;
+    min-height: 9rem;
+    min-width: 10rem;
+    text-align: center;
+}
+
+.sampler-textual-1 {
+    order: 1;
+}
+
+.current-sample-wrapper {
+    display: flex;
+}
+
+.current-sample {
+    display: flex;
+    flex-direction: column;
+    justify-content: space-around;
+    align-items: center;
+}
+
+.current-sample-number {
+    border-radius: 50%;
+    color: var(--main-light);
+    display: inline-block;
+    font-family: "Source Code Pro Bold", monospace;
+    font-size: var(--defaultfr);
+    height: 5rem;
+    line-height: 5rem;
+    width: 5rem;
+}
+
+.sample-button {
+    display: flex;
+    flex-direction: column;
+}
+
+.controls-sample-size-reset {
+    display: flex;
+    justify-content: space-between;
+}
+
+.buttons {
+    display: flex;
+    flex-direction: column;
+    justify-content: space-around;
+}
+
+.buttons input {
+    display: none;
+}
+
+.form-item {
+    border: var(--border-thin) solid var(--forms);
+    font-size: 1rem;
+    margin: 0.25rem;
+    padding: 0.25rem;
+}
+
+.buttons .form-item {
+    min-width: 10rem;
+    padding: 1rem;
+    text-align: center;
+}
+
+.buttons.export-reset {
+    order: 1;
+}
+
+footer {
+    display: flex;
+    justify-content: center;
+    padding-top: 1rem;
+}
+
+button.sample {
+    padding: 1.5rem;
+    font-family: "Source Sans Pro Bold", sans-serif;
+    border: 4px solid var(--forms);
+}
+
+/* form elements */
+button a,
+button i,
+label.form-item {
+    color: var(--highlight);
+}
+
+.groupsize, .period {
+    display: flex;
+    flex-direction: column;
+}
+
+.input-radio ~ label {
+    box-sizing: border-box;
+    color: var(--text-alt);
+    cursor: pointer;
+    display: block;
+}
+
+.groupsize .input-radio ~ label,
+.period .input-radio ~ label {
+    font-size: var(--smallfr);
+    width: 7.5rem;
+    height: 2rem;
+    line-height: 1.2rem;
+    text-align: center;
+}
+
+.groupsize .input-label,
+.period .input-label {
+    font-size: var(--smallfr);
+}
+
+.groupsize .size-selectors,
+.period .size-selectors, {
+    display: flex;
+}
+
+button {
+    -webkit-appearance: none;
+       -moz-appearance: none;
+            appearance: none;
+    background-color: var(--forms-bg);
+}
+
+button a,
+button i {
+    text-decoration: none;
+    /* color: var(--text); */
+}
+
+button:active:not([disabled]) {
+    background-color: var(--highlight);
+    /* border: var(--border-thin) solid var(--highlight); */
+    border-color: var(--highlight);
+}
+
+button:hover:not([disabled]) {
+    background-color: var(--forms);
+    border-color: var(--forms);
+    cursor: pointer;
+}
+
+button:hover a,
+button:hover i {
+    color: var(--main-light);
+}
+
+button[disabled],
+button[disabled] a,
+button[disabled] i {
+    cursor: not-allowed;
+    color: var(--text-alt);
+}
+
+button .loading::before {
+    width: 0.6em;
+    height: 0.6em;
+    border: 2px solid var(--text-alt);
+    /* border: 2px solid var(--main-light); */
+    content: "";
+    display: inline-block;
+    border-top-color: transparent;
+    border-right-color: transparent;
+    border-radius: 1000px;
+    animation: spinAround 1.5s infinite linear;
+    margin-right: 0.5em;
+}
+
+button .loading:hover::before {
+    border: 2px solid var(--main-light);
+    border-top-color: var(--text-alt);
+    border-right-color: var(--text-alt);
+} 
+
+@keyframes spinAround {
+    from {
+        -webkit-transform: rotate(0);
+        transform: rotate(0)
+    }
+
+    to {
+        -webkit-transform: rotate(359deg);
+        transform: rotate(359deg)
+    }
+}
+
+button .loading i {
+    display: none;
+}
+/* button[disabled]:hover {
+/*     background-color: var(--forms-bg);*/
+/*     border: var(--border-thin) solid var(--text-alt);*/
+/* }*/
+
+input[type=number] {
+    -moz-appearance: textfield;
+}
+
+.input-radio {
+    height: 0;
+    width: 0;
+    opacity: 0;
+}
+
+.input-radio:hover ~ label {
+    border: var(--border-thin) solid var(--forms);
+    color: var(--main-light);
+}
+
+.input-radio:checked ~ label {
+    background-color: var(--forms-bg);
+    border: var(--border-thin) solid var(--highlight);
+    /* font-family: "Source Sans Pro Bold", sans-serif; */
+    color: var(--highlight);
+}
+
+.input-radio + label:hover,
+select:hover
+{
+    border: var(--border-thin) solid var(--main-light);
+    background-color: var(--forms);
+    color: var(--main-light);
+}
+
+.input-file:focus + label {
+    outline: 1px dotted #000;
+    outline: -webkit-focus-ring-color auto 5px;
+}

+ 15 - 0
src/html/main.html

@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta charset="utf-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1">
+  <script type="text/javascript" src="js/pdfkit.min.js"></script>
+  <script type="text/javascript" src="js/blob-stream.min.js"></script>
+  <link rel="stylesheet" href="{{ stylesheet }}" type="text/css" media="screen" title="main" charset="utf-8">
+  <title>&nbsp;</title>
+</head>
+<body>
+  <main id="visualisation" is="sampling-app"></main>
+  <script src="{{ javascript }}"></script>
+</body>
+</html>

+ 26 - 0
src/js/components/config_visual.json

@@ -0,0 +1,26 @@
+{
+    "axisOffset": 10,
+    "axisWidth": 45,
+    "blocks": 5,
+    "blocksize": 8,
+    "blocks": {
+        "horizontal": {
+            "size": 20,
+            "amount": 2,
+            "spacingRatio": 0.8
+        },
+        "vertical": {
+            "size": 5,
+            "amount": 5,
+            "spacingRatio": 0.0
+        }
+    },
+    "dotspacingRatio": 0.5,
+    "duration": 100,
+    "labelOffset": 5,
+    "layout": "vertical",
+    "radius": 3.5,
+    "svgWidth": 480,
+    "svgHeight": 300,
+    "tickLength": 10
+}

+ 92 - 0
src/js/components/sampler-controls.riot

@@ -0,0 +1,92 @@
+<sampler-controls>
+    <h4 class="reference-group-title">
+        { props.referenceClasses.prefix } { state.sampler.samples.length }
+        { props.referenceClasses.infix } { props.investment.input.value }
+        { props.referenceClasses.suffix }
+    </h4>
+    <div class="investment-options-ratio">
+        <div class="investment-option-selector-wrapper investment-option-selector-wrapper-left">
+            <select class="investment-option-selector left form-item"
+                    style="opacity: { interpolatedRatio }"
+                    onchange="{ onLeftOptionChange }">
+                <option each="{ (option, idx) in props.investment.options }"
+                        name="{ option.name }"
+                        selected="{ option === state.sampler.investment.options[0] }">
+                { option.desc }
+                </option>
+            </select>
+        </div>
+        <div class="investment-option-range">
+            <div class="investment-options-range-labels">
+                <label class="range-label-left"
+                       style="opacity: { interpolatedRatio };">{ state.sampler.leftOptionRatioRepr }</label>
+                <label class="range-label-right"
+                       style="opacity: { interpolatedInverseRatio };">{ state.sampler.rightOptionRatioRepr }</label>
+            </div>
+            <input type="range"
+                   id="ratio-sampler-{ state.sampler.id }"
+                   min="0"
+                   max="1.0"
+                   step="0.01"
+                   value="{ state.sampler.investment.inverseRatio }"
+                   oninput="{ onRatioInput }"
+                   onchange="{ onRatioChange }" />
+        </div>
+        <div class="investment-option-selector-wrapper investment-option-selector-wrapper-right">
+            <select class="investment-option-selector right form-item"
+                    style="opacity: { interpolatedInverseRatio }"
+                    onchange="{ onRightOptionChange }">
+                <option each="{ (option, idx) in props.investment.options }"
+                        name="{ option.name }"
+                        selected="{ option === state.sampler.investment.options[1] }">
+                { option.desc }
+                </option>
+            </select>
+        </div>
+    </div>
+
+    <script charset="utf-8">
+        export default {
+
+            // life cycle
+            onBeforeMount(props, state) {
+                state.sampler = props.sampler;
+                Object.defineProperty(this, 'interpolatedRatio', { get: this.interpolatedRatio });
+                Object.defineProperty(this, 'interpolatedInverseRatio', { get: this.interpolatedInverseRatio });
+            },
+
+            // getter
+            interpolatedRatio() {
+                return Math.min(this.state.sampler.investment.ratio * 2, 1);
+            },
+
+            interpolatedInverseRatio() {
+                return Math.min(this.state.sampler.investment.inverseRatio * 2, 1);
+            },
+
+            // custom event handlers
+            onRatioInput(e) {
+                this.state.sampler.investment.inverseRatio = parseFloat(e.target.value);
+                this.state.sampler.investment.ratio = 1 - this.state.sampler.investment.inverseRatio;
+                this.update();
+            },
+
+            onRatioChange(e) {
+                let ivrt = parseFloat(e.target.value);
+                this.state.sampler.investment.inverseRatio = ivrt;
+                this.state.sampler.investment.ratio = 1 - ivrt;
+                this.props.onRatioChange(e);
+            },
+ 
+            onLeftOptionChange(e) {
+                this.state.sampler.investment.options[0] = this.props.investment.options[e.target.selectedIndex];
+                this.props.onOptionChange(e, this.state.sampler);
+            },
+ 
+            onRightOptionChange(e) {
+                this.state.sampler.investment.options[1] = this.props.investment.options[e.target.selectedIndex];
+                this.props.onOptionChange(e, this.state.sampler);
+            }
+        }
+    </script>
+</sampler-controls>

+ 47 - 0
src/js/components/sampler-textual.riot

@@ -0,0 +1,47 @@
+<sampler-textual>
+    <div class="current-sample-wrapper">
+        <div class="current-sample" style="visibility: { visibility }">
+            <div class="current-sample-colour"></div>
+            <p class="current-sample-label">{ props.textual.subject } { props.mouseOver ? (props.sampler.currentSample.id + 1) : (props.sampler.samples.length) }</p>
+            <div class="current-sample-number" style="background-color: { props.colours[props.sampler.currentSample.cid] }">
+                { props.sampler.calculatedYield }
+            </div>
+            <p class="current-sample-label">
+                { props.sampler.currentSample.cid === 0 ?
+                    props.textual.failure + ' ' + props.investmentOutput + ' Euro' :
+                    props.textual.success + ' ' + props.investmentOutput + ' Euro' }
+            </p>
+        </div>
+    </div>
+    <script charset="utf-8">
+        export default {
+
+            // life cycle methods
+            onBeforeMount(props, state) {
+                state.mouseOver = false;
+                Object.defineProperty(this, 'visibility', { get: this.visibility });  // define visibility as getter only when 'this.props' is defined
+                Object.defineProperty(this, 'sampleLabel', { get: this.sampleLabel });  // define visibility as getter only when 'this.props' is defined
+            },
+
+            // evaluates if modal should be shown
+            visibility() {
+                let visibility = 'hidden';
+                if ((this.props.sampler.samples.length > 0 && this.props.groupSizeId === 0) ||
+                    (this.props.sampler.samples.length > 0 && this.props.mouseOver === true)) {
+                    visibility = 'visible';
+                }
+                return visibility;
+            },
+
+            sampleLabel () {
+                let label = '';
+                if (this.props.sampler.currentSample.cid === 0) {
+                    label = this.props.textual.failure;
+                } else {
+                    label = this.props.textual.success;
+                }
+                return label += ' ' + this.props.investmentOutput + ' ' + this.props.labels.currency;
+            }
+        }
+    </script>
+</sampler-textual>

+ 316 - 0
src/js/components/sampler-visual.riot

@@ -0,0 +1,316 @@
+<sampler-visual class="sampler-visual">
+    <svg class="icon-array visual-{ sampler.id }" id="{ sampler.svgclass }"></svg>
+
+    <script charset="utf-8">
+        import * as d3 from '../d3custom';
+        import config from './config_visual.json';
+
+        export default {
+            // life cycle
+            onBeforeMount(props, state) {
+                this.sampler = props.sampler;
+            },
+
+            onMounted(props, state) {
+
+                let columns = (config.blocks.horizontal.amount * config.blocks.horizontal.size);
+                let rows = config.blocks.vertical.amount * config.blocks.vertical.size;
+
+                let vmrgn = (config.svgHeight - rows * (config.radius * (2 + config.dotspacingRatio))) * 0.65;  // yet another magic number
+                let hmrgn = (config.svgWidth - columns * (config.radius * (2 + config.dotspacingRatio))) / 2 - config.axisWidth / 2;
+                config.margin = {
+                    right: hmrgn,
+                    left: hmrgn,
+                    top: vmrgn,
+                    bottom: vmrgn
+                };
+
+                this.width = config.svgWidth - config.margin.left - config.margin.right;
+                this.height = config.svgHeight - config.margin.top - config.margin.bottom;
+
+                this.svg = d3.select('#' + this.sampler.svgclass)
+                    .attr('width', this.width + config.margin.left + config.margin.right)
+                    .attr('height', this.height + config.margin.top + config.margin.bottom);
+
+                this.legendGroup = this.svg.append('g')
+                    .attr('class', 'legend-group')
+                    .attr('transform', 'translate(' + config.margin.left + ',' + config.margin.top + ')');
+
+                this.mAxisGroup = this.legendGroup.append('g')
+                    // .attr('class', 'class-label');
+                    .attr('class', 'separator-group');
+
+                this.mAxisGroup.append('text')
+                    .attr('class', `class-label-${this.sampler.id}-0`);
+
+                this.mAxisGroup.append('text')
+                    .attr('class', `class-label-${this.sampler.id}-1`);
+
+                this.mAxisGroup.append('line')
+                    .attr('class', 'icon-separator')
+                    .attr('stroke', '#000')
+                    .attr('stroke-dasharray', '1');
+
+                this.mAxisGroup.append('line')
+                    .attr('class', 'label-separator')
+                    .attr('stroke', '#000');
+
+                this.legendGroup.append('line')
+                    .attr('class', 'x-axis')
+                    .attr('stroke', '#000')
+                    .attr('x1', -config.axisOffset)
+                    .attr('y1', this.height)
+                    .attr('x2', this.width + config.axisOffset)
+                    .attr('y2', this.height);
+
+
+                this.legendGroup.append('g')
+                    .attr('class', 'tooltip');
+
+                this.cgroup = this.svg.append('g')
+                    .attr('class', 'circles')
+                    .attr('transform', 'translate(' + config.margin.left + ',' + config.margin.top + ')');
+
+                if (this.sampler.samples.length >= 0) {
+                    this.updateVisualisation();
+                }
+            },
+
+            onUpdated(props, state) {
+                this.updateVisualisation();
+            },
+
+            // custom methods
+
+            // Draw axes. Adaptive to bin sizes
+            drawAxis() {
+                let blockspacing = config.radius * 2 * config.blocks.horizontal.spacingRatio;
+                let dotspacing = config.radius * config.dotspacingRatio;
+                let xoffset = config.radius;
+                let spc = this.sampler.samplesPerClass().map(function(d) { return d.length; });
+                let diameter = 2 * config.radius;
+                let id = this.sampler.id;
+
+                let binWidth;
+                let boffset;
+
+                // labels and separator
+                this.labels = [];
+                this.separator = undefined;
+
+                for (let cidx in this.sampler.classes) {
+                    cidx = parseInt(cidx);
+                    let bidx = cidx;
+
+                    let lBinColumns = this.sampler.maxSamples / (config.blocks.vertical.amount * config.blocks.vertical.size) / 2;
+
+                    if (spc[0] > this.sampler.maxSamples / 2) {
+                        lBinColumns = Math.ceil(spc[0] / (config.blocks.vertical.size * config.blocks.vertical.amount));
+                    } else if (spc[1] > this.sampler.maxSamples / 2) {
+                        let rBinColumns = Math.ceil(spc[1] / (config.blocks.vertical.size * config.blocks.vertical.amount));
+                        lBinColumns = Math.max(
+                            this.sampler.maxSamples / (config.blocks.vertical.size * config.blocks.vertical.amount) - rBinColumns,
+                            Math.ceil(spc[0] / (config.blocks.vertical.size * config.blocks.vertical.amount))
+                        );
+                    }
+
+                    binWidth = lBinColumns * (dotspacing + diameter);
+
+                    boffset = xoffset + (diameter + dotspacing) + config.axisOffset + blockspacing - dotspacing / 2 + binWidth;  // x-offset per icon array
+
+                    // Axis (bins) labels
+                    let lines = Array();
+
+                    lines.push(spc[cidx]);  // class size
+                    lines.push(this.sampler.classes[bidx].name + ' ' + this.props.investmentOutput + ' Euro');
+
+                    let y = this.height + config.axisOffset + config.labelOffset * 2;
+                    let x = cidx === 0 ? boffset - 2.5 * blockspacing : boffset + blockspacing;
+
+                    let label = this.mAxisGroup.selectAll(`.class-label-${id}-${cidx}`);
+
+                    label
+                        .attr('class', function() { return `class-label-${id}-${cidx}`; })
+                        .style('font-size', '16px')
+                        .style('text-anchor', function() { return cidx === 0 ? 'end' : 'start'; })
+                        .attr('y', y);
+
+                    let span = label.selectAll('tspan')
+                        .data(lines);
+
+                    span
+                        .enter()
+                        .append('tspan')
+                        .merge(span)
+                        .transition()
+                        .duration(config.duration)
+                        .attr('x', x)
+                        .attr('class', 'class-size')
+                        .attr('dy', function(d, i) { return i === 0 ? '0em' : '1.2em'; })
+                        .text(function(d, i) { return d; });
+
+                    this.labels.push(label);
+
+                }
+                // vertical lines
+                let y2 = this.height + config.axisOffset;
+                let y2long = this.height + config.axisOffset * 2;
+
+                this.mAxisGroup.select('.icon-separator')
+                    .transition()
+                    .duration(config.duration)
+                    .attr('opacity', '0.2')
+                    .attr('x1', boffset - config.radius - dotspacing / 2)
+                    .attr('y1', -config.axisOffset * 2)
+                    .attr('x2', boffset - config.radius - dotspacing / 2)
+                    .attr('y2', y2);
+
+                this.mAxisGroup.select('.label-separator')
+                    .transition()
+                    .duration(config.duration)
+                    .attr('x1', boffset - config.radius - dotspacing / 2)
+                    .attr('y1', this.height)
+                    .attr('x2', boffset - config.radius - dotspacing / 2)
+                    .attr('y2', y2long);
+            },
+
+            // Called whenever 
+            updateVisualisation() {
+
+                let self = this;
+
+                let radius = config.radius;
+                let diameter = 2 * config.radius;
+                let dotspacing = config.radius * config.dotspacingRatio;
+                let nrblocks = {
+                    h: config.blocks.horizontal.amount,
+                    v: config.blocks.vertical.amount
+                };
+                let blocksize = {
+                    h: config.blocks.horizontal.size,
+                    v: config.blocks.vertical.size
+                };
+                let blockspacing = {
+                    h: diameter * config.blocks.horizontal.spacingRatio,
+                    v: diameter * config.blocks.vertical.spacingRatio
+                };
+
+                let xoffset = 3 * (dotspacing + diameter) - dotspacing;
+                let yoffset = config.radius;
+
+                let iaheight = this.height;
+                let colours = this.props.classes.map(c => c.colour);
+
+                let samplesPerClass = this.sampler.samplesPerClass();
+                let samplesConcat = [];
+
+                // initial left bin width. icons are drawn from the centre to the margins
+                let lBinColumns = this.sampler.maxSamples / (nrblocks.v * blocksize.v) / 2;
+
+                if (samplesPerClass[0].length > this.sampler.maxSamples / 2) {
+                    lBinColumns = Math.ceil(samplesPerClass[0].length / (blocksize.v * nrblocks.v));
+                } else if (samplesPerClass[1].length > this.sampler.maxSamples / 2) {
+                    let rBinColumns = Math.ceil(samplesPerClass[1].length / (blocksize.v * nrblocks.v));
+                    lBinColumns = Math.max(
+                        this.sampler.maxSamples / (blocksize.v * nrblocks.v) - rBinColumns,
+                        Math.ceil(samplesPerClass[0].length / (blocksize.v * nrblocks.v))
+                    );
+                }
+
+                //>>> fill samples array
+                for (let i = 0; i < lBinColumns * nrblocks.v * blocksize.v - samplesPerClass[0].length; ++i) {
+                    samplesConcat.push(undefined);
+                }
+
+                // Keep the visual order of the samples. Invert for first class, as the corresponding icon array is flipped.
+                for (let s = samplesPerClass[0].length - 1; s >= 0; --s) {
+                    samplesConcat.push(samplesPerClass[0][s]);
+                }
+                for (let s = 0; s < samplesPerClass[1].length; ++s) {
+                    samplesConcat.push(samplesPerClass[1][s]);
+                }
+
+
+                let sclength = samplesConcat.length;
+                for (let i = 0; i < this.sampler.maxSamples - sclength; ++i) {  // fill up the array with either base class id or undefined (placeholder)
+                    samplesConcat.push(undefined);
+                }
+
+                let ao = config.axisOffset;
+                
+                let circles = this.cgroup.selectAll('circle')
+                    .data(samplesConcat);
+
+                circles
+                    .attr('cx', function(d, i) {  // y positioning with block grouping
+                        // blockspacing dependent on number of columns of first bin
+                        let bsp = i / (lBinColumns * nrblocks.v * blocksize.v) >= 1 ? blockspacing.h : 0;
+                        return xoffset +
+                            bsp +
+                            (dotspacing + diameter) * Math.floor(i / (nrblocks.v * blocksize.v));
+                    })
+                    .transition()
+                    .duration(config.duration)
+                    .attr('r', function(d) {
+                        if (d !== undefined && self.props.mouseOver && d.id === self.sampler.currentSample.id) {
+                            return radius + dotspacing;
+                        }
+                        return radius;
+                    });
+
+                let circle = circles.enter()
+                    .append('circle')
+                    .attr('r', radius)
+                    .merge(circles)                 // merge first!!!
+                    .attr('cx', function(d, i) {  // y positioning with block grouping
+                        // blockspacing dependent on number of columns of first bin
+                        let bsp = i / (lBinColumns * nrblocks.v * blocksize.v) >= 1 ? blockspacing.h : 0;
+                        return xoffset +
+                            bsp +
+                            (dotspacing + diameter) * Math.floor(i / (nrblocks.v * blocksize.v));
+                    })
+                    .attr('cy', function(d, i) {  // x positioning with block grouping
+                        let fst = i / (lBinColumns * nrblocks.v * blocksize.v) < 1 ? true : false;
+                        let cy;
+                        if (fst) {  // invert y coordinates for first icon block
+                            cy = -0.5 - ao - yoffset - (diameter + dotspacing) + (i % (nrblocks.v * blocksize.v)) * (diameter + dotspacing);
+                        } else {
+                            cy = iaheight - 2 * yoffset - (dotspacing + diameter) * (i % (nrblocks.v * blocksize.v));
+                        }
+                        return cy;
+                    })
+                    .attr('class', function(d) {
+                        if (d === undefined) {
+                            return 'placeholder';
+                        }
+                        return 'sample';
+                    })
+                    .attr('fill', function(d) {
+                        let col = 'none';
+                        if (d !== undefined) {
+                            col = colours[d.cid];
+                        }
+                        return col;
+                    })
+                    .attr('stroke', function(d) {
+                        let col = 'none';
+                        return col;
+                    });
+
+                circle
+                    .on('mouseover', function(e) {
+                        this.setAttribute('r', radius + dotspacing);
+                        self.props.onMouseOver(e, e.id);
+                    })
+                    .on('mouseout', function(e) {
+                        this.setAttribute('r', radius);
+                        self.props.onMouseOut(e, e.id);
+                    });
+
+                circles.exit().remove();
+                this.drawAxis();
+
+            }
+        }
+    </script>
+</sampler-visual>

+ 436 - 0
src/js/components/sampling-app.riot

@@ -0,0 +1,436 @@
+<sampling-app>
+    <header app-title="{ props.header.title }"
+            description="{ props.header.description }"
+            investment="{ props.investment }"
+            periods="{ props.periods }"
+            period="{ state.sPeriod }"
+            on-period-change="{ onPeriodChange }"
+            on-investment-input-change="{ onInvestmentInputChange }"
+            on-investment-output-change="{ onInvestmentOutputChange }"
+            labels="{ props.labels }"
+            is="sampling-header">
+    </header>
+    <section class="samplers">
+        <div each="{ sampler in this.samplers }"
+             class="sampler-wrapper sampler-wrapper-{ sampler.id }">
+            <div is="sampler-controls"
+                 class="reference-group"
+                 investment="{ props.investment }"
+                 referenceClasses="{ props.referenceClasses }"
+                 on-option-change="{ onOptionChange }"
+                 on-ratio-change="{ onRatioChange }"
+                 sampler="{ sampler }">
+            </div>
+            <sampler-visual class="sampler-visual"
+                            on-mouse-over="{ onMouseOver }"
+                            on-mouse-out="{ onMouseOut }"
+                            mouse-over="{ state.mouseOver }"
+                            classes="{ props.classes }"
+                            colours="{ state.colours }"
+                            investment-output="{ state.investment.output.value }"
+                            sampler="{ sampler }">
+            </sampler-visual>
+        </div>
+    </section>
+    <section class="textual controls">
+        <div class="buttons size-selectors">
+            <div each="{ gsize in props.groupSizes }"
+                 class="size-input">
+                <input id="size-{ gsize.id }"
+                       type="radio"
+                       class="input-radio"
+                       value="{ gsize.id }"
+                       defaultChecked="{ gsize.id === state.sGroupSize.id }"
+                       name="groupSize"
+                       onchange="{ groupSizeChanged }" />
+                <label for="size-{ gsize.id }" class="form-item">{ gsize.name }</label>
+            </div>
+        </div>
+        <sampler-textual each="{ sampler in this.samplers }"
+                         id="sampler-textual-{ sampler.id }"
+                         class="sampler-textual sampler-textual-{ sampler.id }"
+                         sampler="{ sampler }"
+                         group-size-id="{ state.sGroupSize.id }"
+                         textual="{ props.textual }"
+                         colours="{ state.colours }"
+                         investment-output="{ state.investment.output.value }"
+                         mouse-over="{ state.mouseOver }">
+        </sampler-textual>
+
+        <div class="sample-button" onclick="{ sampleButtonClicked }">
+            <button class="sample"
+                    disabled="{ maximumSamplesDrawn }">
+                <a href="#">{ props.labels.sample } { state.investment.output.value } { props.labels.currency }?</a>
+            </button>
+        </div>
+
+        <div class="buttons export-reset">
+            <button id="export"
+                    class=" export form-item"
+                    disabled="{ state.isLoading }"
+                    onclick="{ generatePDF }">
+                <a href="{ state.pdfDownloadURL }" id="exportPDF" class="export" download="{ state.pdfFilename }">
+                    <i class="demo-icon icon-download">&#xe801;</i>Faktenbox
+                </a>
+            </button>
+            <button class="reset form-item"
+                    onclick="{ onReset }"
+                    disabled="{ resetEnabled }">
+                <a href="#"><i class="demo-icon icon-ccw">&#xe802;</i>{ props.labels.reset }</a>
+            </button>
+        </div>
+
+    </section>
+
+    <script charset="utf-8">
+
+        import '@babel/polyfill';
+        import * as riot from 'riot';
+        import * as d3 from '../d3custom';
+
+        import { Sampler } from '../sampler';
+        import { PDFExport } from '../pdfExport';
+        import visual_config from './config_visual.json';
+
+        import info from './sampling-info.riot';  // built from /data/sampling-info.md by bin/preprocess.js
+        import header from './sampling-header.riot';
+        import textual from './sampler-textual.riot';
+        import controls from './sampler-controls.riot';
+        import visual from './sampler-visual.riot';
+        riot.register('sampling-header', header);
+        riot.register('sampling-info', info);
+        riot.register('sampler-controls', controls);
+        riot.register('sampler-textual', textual);
+        riot.register('sampler-visual', visual);
+
+        export default {
+
+             // life cycle methods
+            onBeforeMount(props, state) {
+
+                state.investment = props.investment;
+                state.period = props.period;
+                this.state.isLoading = false;
+
+                // load defaults: selected values / elements
+                state.mouseOver = false;
+                state.sPeriod = props.periods[props.defaults.periodId];
+                state.sGroupSize = props.groupSizes[props.defaults.groupSizeId];
+
+                state.colours = props.classes.map(c => c.colour);
+
+                this.fetchData(props.dataFilePath);
+                document.title = props.header.title;
+             },
+
+             // fetch all data once
+             fetchData(filepath) {  //-> initialise, create samplers, samplers call controller.filterData(s.o1, s.o2)
+                 d3.tsv(filepath).then(this.initialise);
+             },
+
+             // filter data for sampler with primaryKeys, make sure there is also data for opposing sampler (secondaryKeys)
+             filterData(primaryKeys, secondaryKeys) {
+
+                function parseVal(val) {
+                    return parseFloat(val.replace(',', '.'));
+                }
+
+                let filteredData = this.data
+                    .filter(
+                        d => d[primaryKeys[0]] && d[primaryKeys[1]] &&
+                            d[secondaryKeys[0]] && d[secondaryKeys[1]])  // only return data if row contains values for both options for both samplers
+                    .map(d => {
+                        return {
+                            year: d.date_of_investment,
+                            values: [parseVal(d[primaryKeys[0]]), parseVal(d[primaryKeys[1]])]
+                        }
+                    });
+
+                return filteredData;
+             },
+
+            // Create new data set for sampler identified by samplerId
+            queryData(samplerId, leftOptions, rightOptions) {
+                return this.filterData(
+                    [
+                        this.createDataKey(leftOptions[samplerId].name),
+                        this.createDataKey(rightOptions[samplerId].name)
+                    ], [
+                        this.createDataKey(leftOptions[(samplerId + 1) % 2].name),
+                        this.createDataKey(rightOptions[(samplerId + 1) % 2].name)
+                    ]
+                );
+            },
+
+            createDataKey(name) {
+                return this.state.sPeriod.name + '_' + name;
+            },
+
+            getLeftOptions() {
+                if (this.samplers === undefined) {
+                    return [
+                        this.props.investment.options[this.props.defaults.selectedOptionsIds[0][0]],
+                        this.props.investment.options[this.props.defaults.selectedOptionsIds[1][0]]
+                    ];
+                }
+                return [
+                    this.samplers[0].investment.options[0],
+                    this.samplers[1].investment.options[0]
+                ];
+            },
+
+            getRightOptions() {
+                if (this.samplers === undefined) {
+                    return [
+                        this.props.investment.options[this.props.defaults.selectedOptionsIds[0][1]],
+                        this.props.investment.options[this.props.defaults.selectedOptionsIds[1][1]]
+                    ];
+                }
+
+                return [
+                    this.samplers[0].investment.options[1],
+                    this.samplers[1].investment.options[1]
+                ];
+            },
+
+            getRatio(i) {
+                if(this.samplers === undefined) {
+                    return this.props.defaults.ratios[i];
+                }
+                return this.samplers[i].investment.ratio;
+            },
+
+            createSamplers() {
+                let samplers = [];
+
+                let leftOptions = this.getLeftOptions();
+                let rightOptions = this.getRightOptions();
+
+                for (let i = 0; i < 2; ++i) {
+
+                    samplers.push(new Sampler(
+                        i,
+                        this.queryData(i, leftOptions, rightOptions),
+                        this.props.classes,
+                        {
+                            ratio: this.getRatio(i),
+                            inverseRatio: 1 - this.getRatio(i),  // inverted <input type="range"> bar!!
+                            input: this.props.investment.input,
+                            output: this.props.investment.output,
+                            options: [leftOptions[i], rightOptions[i]]
+                        },
+                        this.props.maxSamples
+                    ));
+                }
+                return samplers;
+            },
+
+            initialise(data) {
+                this.data = data;
+                this.samplers = this.createSamplers();
+
+                // define getters for template updating only after 'this.props' is defined
+                Object.defineProperty(this, 'maximumSamplesDrawn', { get: this.maximumSamplesDrawn });
+                Object.defineProperty(this, 'resetEnabled', { get: this.resetEnabled });
+                this.resetSamplers();
+            },
+
+            drawSamples(amount, samplers) {
+
+                if (samplers[0].data.length !== samplers[1].data.length) {
+                    throw new Error('Data arrays of samplers are not of equal size: ' + samplers[0].data.length + ', ' + samplers[1].data.length);
+                }
+                for (let i = 0; i < amount; ++i) {
+
+                    // Importance sampling implementation
+                    let cumulatedProb = 0.0;
+                    let random = Math.random();
+                    let prob = 1.0 / samplers[0].data.length;
+
+                    let index = 0;
+                    for (; index < samplers[0].data.length; ++index) {
+                        cumulatedProb += prob;
+
+                        if (random < cumulatedProb) {
+                            break;
+                        }
+                    }
+
+                    for (let sampler of samplers) {
+                        sampler.drawSample(index);
+                    }
+                }
+            },
+
+            clearSamples() {
+                for (let sampler of this.samplers) {
+                    sampler.reset();
+                }
+            },
+
+            // Generates pdf on button click
+            generatePDF(e) {
+
+                if (e.hasBeenProcessed === true) {  // Discard event and do nothing if the event already has been processed
+                    e.stopImmediatePropagation();
+                    this.$('#exportPDF').classList.remove('loading');
+                    this.update({
+                        isLoading: false
+                    });
+                    return;
+                }
+
+                this.$('#exportPDF').classList.add('loading');
+                this.update({
+                    isLoading: true
+                });
+                e.stopPropagation();  // Stop event propagation
+
+                let pdfSamplers = this.createSamplers();
+
+                this.drawSamples(this.props.maxSamples, pdfSamplers);
+
+                // Create new PDFExport and pass all necessary data and the click event
+                this.pdfx = new PDFExport(
+                    this,
+                    {
+                        title: this.props.header.title,
+                        clickEvent: e,
+                        description: this.props.header.description,
+                        referenceClasses: this.props.referenceClasses,
+                        author: this.props.author,
+                        subject: this.props.subject,
+                        classes: this.props.classes,
+                        colours: this.state.colours,
+                        context: this.props.context,
+                        fontRatios: this.props.fontRatios,
+                        iconArray: {
+                            blocks: visual_config.blocks,
+                            dotspacingRatio: visual_config.dotspacingRatio,
+                            radius: visual_config.radius
+                        },
+                        investment: this.props.investment,
+                        lang: this.lang,
+                        labels: this.props.labels,
+                        maxSamples: this.props.maxSamples,
+                        samplers: pdfSamplers,
+                        selectedPeriod: this.state.sPeriod
+                    }
+                );
+            },
+
+            /**
+             * Called from pdf generation code
+             * The event that has been triggered to start the pdf generation process
+             * is dispatched so that the pdf download happens after the variables have been assigned
+             *
+             * @param url:  Blob url
+             * @param e:    Event object
+             */
+            updatePDFLink(url, e) {
+                this.update({
+                    pdfDownloadURL: url,
+                    pdfFilename: `${this.props.header.title}.pdf`
+                });
+                let anchor = this.$('#exportPDF');
+                anchor.classList.remove('loading');
+                e.hasBeenProcessed = true;  // indicate that the event has been processed and should be discarded (otherwise the pdf would be downloaded indefinitely)
+                anchor.dispatchEvent(e);
+                this.update({
+                    isLoading: false
+                });
+            },
+
+            resetSamplers() {
+                this.clearSamples();
+                this.update();
+            },
+
+            maximumSamplesDrawn() {
+                let sampler = this.samplers[0];  // Both samplers always have the same amount of samples and maxSamples
+                return sampler.samples.length === sampler.maxSamples;
+            },
+
+            resetEnabled() {
+                let result = false;
+                if (this.samplers !== undefined) {
+                    result = this.samplers[0].samples.length === 0;
+                }
+                return result;
+            },
+
+            sampleButtonClicked(e) {
+                e.preventDefault();
+
+                let groupSize = this.state.sGroupSize.value;
+                let remaining = this.samplers[0].maxSamples - this.samplers[0].samples.length;
+                let amount = Math.min(remaining, groupSize);
+ 
+                this.drawSamples(amount, this.samplers);
+                this.update();
+            },
+ 
+            groupSizeChanged(e) {
+                this.state.sGroupSize = this.props.groupSizes[parseInt(e.target.value)];
+                this.update();
+            },
+
+            // events
+            onPeriodChange (e) {
+                this.state.sPeriod = this.props.periods[e.target.selectedIndex];
+                for (let sampler of this.samplers) {
+                    sampler.data = this.queryData(sampler.id, this.getLeftOptions(), this.getRightOptions());
+                }
+                this.resetSamplers();
+            },
+
+            onMouseOver (e, idx) {
+                this.state.mouseOver = true;
+                for (let sampler of this.samplers) {
+                    sampler.setCurrentSample(idx);
+                }
+                this.update();
+            },
+
+            onMouseOut (e, idx) {
+                this.state.mouseOver = false;
+                for (let sampler of this.samplers) {
+                    sampler.setCurrentSample(sampler.samples.length - 1);
+                }
+                this.update();
+            },
+
+            onInvestmentInputChange (e) {
+                let newVal = Math.max(Math.min(e.target.valueAsNumber, this.state.investment.input.max), this.state.investment.input.min);
+                this.state.investment.input.value = newVal;
+                this.resetSamplers();
+            },
+
+            onInvestmentOutputChange (e) {
+                let newVal = Math.max(Math.min(e.target.valueAsNumber, this.state.investment.output.max), this.state.investment.output.min);
+                this.state.investment.output.value = newVal
+                this.resetSamplers();
+            },
+
+            onOptionChange(e, sampler) {
+                let leftOptions = this.getLeftOptions();
+                let rightOptions = this.getRightOptions();
+
+                // Set new data for both samplers, as data arrays must be of equal lengths
+                for (let s of this.samplers) {
+                    s.data = this.queryData(s.id, leftOptions, rightOptions);
+                }
+                this.resetSamplers();
+            },
+
+            onRatioChange(e) {
+                this.resetSamplers();
+            },
+
+            onReset(e) {
+                e.preventDefault();
+                this.resetSamplers();
+            }
+        }
+    </script>
+</sampling-app>

+ 92 - 0
src/js/components/sampling-header.riot

@@ -0,0 +1,92 @@
+<sampling-header>
+    <div id="source-modal" style="visibility: { state.modal.visibility }" is="sampling-info"></div>
+    <h1 class="sampling-title">{ props.appTitle }
+        <a href="#"
+           onclick="{ toggleSource }">
+            <i class="demo-icon { state.modal.icon.class }"></i>
+        </a>
+    </h1>
+    <h2 class="sampling-description">
+        { props.description[0] }
+        <input id="investment-input"
+               class="form-item investment investment-input"
+               type="number"
+               name="investment-input"
+               inputmode="decimal"
+               min="{ props.investment.input.min }"
+               max="{ props.investment.input.max }"
+               onchange="{ props.onInvestmentInputChange }"
+               placeholder="{ props.investment.input.value }"
+               value="{ state.investment.input.value }">
+        { props.description[1] }
+        <select id="period-selector"
+                class="period-selector form-item"
+                name="period-selector"
+                onchange="{ props.onPeriodChange }"
+                value="{ state.period.id }">
+            <option each="{ period in props.periods }">
+            { period.value } { props.labels.period }
+            </option>
+        </select>
+        { props.description[2] }
+        <input id="investment-output"
+               class="form-item investment investment-output"
+               type="number"
+               name="investment-output"
+               inputmode="decimal"
+               min="{ props.investment.output.min }"
+               max="{ props.investment.output.max }"
+               onchange="{ props.onInvestmentOutputChange }"
+               placeholder="{ props.investment.output.value }"
+               value="{ state.investment.output.value }">
+        { props.description[3] }
+    </h2>
+    <!-- <div id="source-modal" style="visibility: { state.visibilityModal }" is="sampling-info"></div> -->
+
+    <script charset="utf-8">
+        export default {
+
+            // life cycle methods
+            onBeforeMount(props, state) {
+              this.state.investment = this.props.investment;
+              this.state.period = this.props.period;
+              this.modalStates = [
+                    {
+                        visibility: 'hidden',
+                        icon: {
+                            class: 'icon-info-circled',
+                            glyph: '&#xe803;'
+                        }
+                    },
+                    {
+                        visibility: 'visible',
+                        icon: {
+                            class: 'icon-cancel-circled',
+                            glyph: '&#xe804;'
+                        }
+                    }
+                ];
+              this.state.visibility = 0;
+              this.state.modal = this.modalStates[this.state.visibility];
+            },
+
+            onMounted() {
+              this.displayIcon();
+            },
+
+            toggleSource(e) {
+                e.preventDefault();
+                this.state.visibility = (this.state.visibility + 1) % 2;
+                this.state.modal = this.modalStates[this.state.visibility];
+                this.update({
+                    modal: this.modalStates[this.state.visibility]
+                });
+                this.displayIcon();
+            },
+
+            displayIcon() {
+                this.$('i.demo-icon').innerHTML = this.state.modal.icon.glyph;
+            },
+        }
+    </script>
+</sampling-header>

+ 12 - 0
src/js/d3custom.js

@@ -0,0 +1,12 @@
+import { select, selectAll, selection } from 'd3-selection';
+import { transition } from 'd3-transition';
+import { json, tsv } from 'd3-fetch';
+
+export {
+    json,
+    select,
+    selectAll,
+    selection,
+    transition,
+    tsv
+};

+ 13 - 0
src/js/main.js

@@ -0,0 +1,13 @@
+import * as riot from 'riot';
+
+// riot app component
+import app from './components/sampling-app.riot';
+
+// configuration
+import options from './options.json';
+
+// postcss rollup, see rollup.config.js
+import '../css/styles.css';
+
+const mountApp = riot.component(app);
+mountApp( document.querySelector('#visualisation'), { ...options });

+ 89 - 0
src/js/options.json

@@ -0,0 +1,89 @@
+{
+    "author": "Harding-Zentrum für Risikokompetenz",
+    "classes": [
+        {
+            "id": 0,
+            "name": "weniger als",
+            "colour": "#9d9b9a"
+        },
+        {
+            "id": 1,
+            "name": "erreichen",
+            "colour": "#1bb5a9"
+        }
+    ],
+    "dataFilePath": "data/data.tsv",
+    "defaults": {
+        "groupSizeId": 0,
+        "selectedOptionsIds": [[0, 1], [2, 3]],
+        "periodId": 0,
+        "ratios": [1, 0.5]
+    },
+    "fontRatios": {
+        "tiny": 0.8,
+        "small": 1,
+        "medium": 1.25,
+        "large": 1.563,
+        "huge": 1.953
+    },
+    "groupSizes": [
+        { "id": 0, "value": 1, "name": "Individuell" },
+        { "id": 1, "value": 10, "name": "10er-Gruppen" }
+    ],
+    "header": {
+        "description": [
+            "Wie mache ich eher aus",
+            "Euro in",
+            "",
+            "Euro?"
+        ],
+        "title": "Faxtenbox: Chancen von Geldanlagen vergleichen – der Mix macht’s!"
+    },
+    "intervalSize": 1000,
+    "investment": {
+        "input": {
+            "value": 1000,
+            "min": 1,
+            "max": 1000000
+        },
+        "output": {
+            "value": 2000,
+            "min": 1,
+            "max": 1000000
+        },
+        "options": [
+            { "id": 0, "name": "dax", "desc": "Aktien DE (Dax)"   },
+            { "id": 1, "name": "gol", "desc": "Gold UK"           },
+            { "id": 2, "name": "fts", "desc": "Aktien DE (allg.)" },
+            { "id": 3, "name": "bon", "desc": "Bundesanleihen DE" },
+            { "id": 4, "name": "fes", "desc": "Festgeld DE"       },
+            { "id": 5, "name": "sp",  "desc": "Aktien USA (S&P)"  },
+            { "id": 6, "name": "msci",  "desc": "MSCI World"  }
+        ]
+    },
+    "labels": {
+        "currency": "Euro",
+        "groupSize": "Anzahl der Ziehungen",
+        "period": "Jahren",
+        "reset": "Neustart",
+        "sample": "Wie viele erreichen",
+        "source": "Quelle"
+    },
+    "maxSamples": 1000,
+    "nrSamplers": 2,
+    "periods": [
+        { "id": 0, "value": 10, "name": "ten", "desc": "short" },
+        { "id": 1, "value": 20, "name": "twe", "desc": "medium" },
+        { "id": 2, "value": 30, "name": "thi", "desc": "long" }
+    ],
+    "referenceClasses": {
+        "prefix": "Von",
+        "infix": "Verbrauchern, die",
+        "suffix": "Euro investieren:"
+    },
+    "textual": {
+        "subject": "Verbraucher Nr.",
+        "success": "erreicht",
+        "failure": "weniger als"
+    }
+}

+ 403 - 0
src/js/pdfExport.js

@@ -0,0 +1,403 @@
+import 'whatwg-fetch';
+
+export class PDFExport {
+
+    constructor(controller, config) {
+
+        this.controller = controller;
+
+        for (const key in config) {
+            this[key] = config[key];
+        }
+
+        this.fontsloaded = 0;
+
+        this.context_url = 'data/sampling-info.json';
+
+        this.fontData = {
+            'roman': { 'name': 'SourceSansPro Regular', 'url': 'fonts/SourceSansPro-Regular.otf', 'data': undefined },
+            'bold': { 'name': 'SourceSansPro  Bold', 'url': 'fonts/SourceSansPro-Bold.otf', 'data': undefined },
+            'light': { 'name': 'SourceSansPro Light', 'url': 'fonts/SourceSansPro-Light.otf', 'data': undefined }
+        };
+
+        this.lineSpacing = 1.5;
+        this.baseFontSize = 10;
+
+        this.axisWidth = 45;
+        this.axisOffset = 10;
+        this.tickLength = 10;
+        this.labelOffset = 5;
+        this.height = 180;
+        this.width = 215;
+
+        this.offset = {
+            x: 4 * this.baseFontSize,
+            y: 4 * this.baseFontSize
+        };
+
+        // *Magic Numbers* for conversion from svg web layout to pdf print
+        this.magicSpacingRatio = 0.425;
+        this.magicMagicRatio = 0.49;
+
+        this.diameter = parseFloat(this.iconArray.radius) * 1.18;
+        this.dotspacing = this.diameter * this.iconArray.dotspacingRatio * this.magicSpacingRatio;
+
+        // Load context json and fonts, then draw pdf
+        window.fetch(this.context_url)
+            .then(response => response.json())
+            .then(data => {
+                this.context = data;
+
+                for (let md in this.fontData) {
+                    let cfd = this.fontData[md];
+
+                    window.fetch(cfd.url)
+                        .then(response => response.arrayBuffer())
+                        .then(data => {
+                            cfd.data = data;
+                            this.fontsloaded += 1;
+                            if (this.fontsloaded === Object.keys(this.fontData).length) {
+                                this.drawPDF();
+                            }
+                        });
+                }
+            });
+    }
+
+    listUpdated(list) {
+        this.drawPDF(list);
+    }
+
+    /**
+     *   Creates an array of samples for each class
+     *   @idx:      Index of Sampler
+     *   @return:   Array of array of samples per class
+     */
+    samplesPerClass(idx) {
+        let samplesIsolated = [];
+        let samples = [];
+
+        for (let s of this.samplers[idx].samples) {  // deep copy of samples
+            samples.push(s);
+        }
+
+        for (let cls of this.classes) {  // create arrays per class
+            let arr = samples.filter(function(c) {
+                return c.cid === cls.id;
+            }, cls);
+
+            samplesIsolated.push(arr);
+        }
+        return samplesIsolated;
+    }
+
+    drawAxis(doc, x_offset, samplesPerClass) {
+        let blockspacing = this.diameter * this.iconArray.blocks.horizontal.spacingRatio;
+        // width of the left bin
+        let binWidth = (Math.ceil(samplesPerClass[0].length / (this.iconArray.blocks.vertical.size * this.iconArray.blocks.vertical.amount)) * (this.diameter + this.dotspacing));
+
+        let y_baseline = this.iconArray.y_offset + this.height + this.axisOffset - this.labelOffset / 2;
+
+        doc.fillColor('black');
+
+        for (let cidx in this.samplers[0].classes) {
+            cidx = parseInt(cidx);
+            let bidx = cidx;
+
+            let lines = new Array();
+            lines.push(samplesPerClass[cidx].length);
+            lines.push(this.samplers[0].classes[bidx].name + ' ' + this.investment.output.value + ' Euro');
+            let y = this.iconArray.y_offset + this.height + this.axisOffset;
+
+            let x = x_offset + (cidx + 1) * binWidth + blockspacing / 2;
+            let options = { width: binWidth };
+
+            if (cidx === 0) {
+                options.align = 'right';
+            } else {
+                options.align = 'left';
+            }
+
+            for (let lidx = 0; lidx < lines.length; ++lidx) {
+                doc.text(
+                    lines[lidx],
+                    x - binWidth + cidx * this.labelOffset - (1 - cidx) * this.labelOffset,  // x position for labels:bin seperator x position +- labelOffset
+                    y + lidx * this.labelOffset * 2.5,
+                    options
+                );
+            }
+
+            // vertical line
+            if (cidx < this.samplers[0].classes.length - 1) {
+                let y2 = y_baseline + this.axisOffset * 1.5;
+                let y2long = y_baseline + this.axisOffset * 1.25;
+                if (cidx === 0) {
+                    y2 = y2long;
+                }
+
+                doc.moveTo(x, y_baseline - (this.iconArray.blocks.vertical.size * (this.diameter + this.dotspacing) * this.iconArray.blocks.vertical.amount + this.labelOffset))
+                    .lineTo(x, y2long)
+                    .dash(1, {space: 2})
+                    .strokeColor('#aaa')
+                    .stroke();
+
+                doc.moveTo(x, y_baseline)
+                    .lineTo(x, y2)
+                    .dash(100)
+                    .strokeColor('#444')
+                    .stroke();
+            }
+        }
+        // horizontal line
+        doc.moveTo(x_offset - this.axisOffset, y_baseline)
+            .lineTo(x_offset + this.width, y_baseline)
+            .dash(500)
+            .strokeColor('#444')
+            .stroke();
+    }
+
+    createIconArray(doc) {
+
+        // hand-adjusted positioning
+        this.iconArray.x_offset = this.baseFontSize * 25;
+        this.iconArray.y_offset = this.baseFontSize * 5;
+
+        let blockspacing = {
+            h: this.diameter * this.iconArray.blocks.horizontal.spacingRatio * 1.5,
+            v: this.diameter * this.iconArray.blocks.vertical.spacingRatio * 1.5
+        };
+
+        let blocksize = {
+            h: this.iconArray.blocks.horizontal.size,
+            v: this.iconArray.blocks.vertical.size
+        };
+
+        let nrblocks = {
+            h: this.iconArray.blocks.horizontal.amount,
+            v: this.iconArray.blocks.vertical.amount
+        };
+
+        let iaxfirst = this.iconArray.size === 100 ? 50 : 0;
+
+        // draw both icon arrays
+        for (let j = 0; j < 2; ++j) {
+
+            let samplesPerClass = this.samplesPerClass(j);
+            let samplesConcat = [];
+
+            // width of left bin
+            let binWidth = (Math.ceil(samplesPerClass[0].length / (blocksize.v * nrblocks.v)) * (this.diameter + this.dotspacing));
+
+            for (let i = 0; i < samplesPerClass.length; ++i) {
+
+                // fill array with all samples of current class
+                for (let l = 0; l < samplesPerClass[i].length; ++l) {
+                    samplesConcat.push(i);
+                }
+                // fill up column with complementary class
+                for (let k = 0; k < nrblocks.v * blocksize.v - samplesPerClass[i].length % (nrblocks.v * blocksize.v); ++k) {
+                    samplesConcat.push(undefined);
+                }
+            }
+
+            let sclength = samplesConcat.length;
+            for (let i = 0; i < this.maxSamples - sclength; ++i) {  // fill up the array with either base class id or undefined (placeholder)
+                samplesConcat.push(undefined);
+            }
+
+            let samples = samplesConcat;
+
+            // x-offset per icon array. mighty magic
+            let x_offset = j * this.iconArray.x_offset + iaxfirst + this.baseFontSize * 4 + this.diameter * this.magicMagicRatio + this.axisOffset;
+
+            for (let i = 0; i < samples.length; ++i) {
+
+                let cx = blockspacing.h / 2;
+
+                // for left side: subtract actual position from [offset of icon array plus width of left class block minus spacing between icon array blocks]
+                if (i < Math.ceil(samplesPerClass[0].length / (nrblocks.v * blocksize.v)) * nrblocks.v * blocksize.v) {  // first class of icon array
+                    cx += x_offset +
+                        binWidth -
+                        blockspacing.h - this.dotspacing * 2 -  //
+                        (this.dotspacing + this.diameter) * Math.floor(i / (nrblocks.v * blocksize.v));
+                } else {  // second class of iconarray
+                    cx += x_offset + blockspacing.h +
+                        (this.dotspacing + this.diameter) * Math.floor(i / (nrblocks.v * blocksize.v));
+                }
+
+                let cy =
+                    this.iconArray.y_offset +  // y-offset
+                    this.height - (this.dotspacing + this.diameter) * (i % (nrblocks.v * blocksize.v));  // blockspacing y
+                doc.ellipse(
+                    cx,
+                    cy,
+                    this.diameter * this.magicMagicRatio  // radius !!??
+                );
+
+                let col = '';
+                if (samples[i] === undefined) {
+                    col = '#fff';
+                } else {
+                    col = this.colours[samples[i]];
+                }
+                doc.fill(col);
+            }
+            this.drawAxis(doc, x_offset, samplesPerClass);
+        }
+    }
+
+    drawPDF() {
+
+        let doc = new PDFDocument({  // eslint-disable-line
+            size: 'A4',
+            // margin: 0
+            margins: {
+                top: this.baseFontSize * this.fontRatios.huge,
+                bottom: this.baseFontSize * this.fontRatios.huge,
+                left: this.offset.x,
+                right: this.offset.x
+            }
+        });
+
+        for (let fd in this.fontData) {
+            let cfd = this.fontData[fd];
+            doc.registerFont(cfd.name, cfd.data);
+        }
+
+        this.stream = doc.pipe(blobStream());  // eslint-disable-line
+
+        // meta data
+        doc.info.Title = this.title;
+        doc.info.Author = this.author;
+        doc.info.Subject = this.description;
+
+        // title
+        doc.font(this.fontData.light.name)
+            // .fontSize(this.baseFontSize * this.fontRatios.huge)
+            .fontSize(this.baseFontSize * this.fontRatios.large)
+            .text(
+                this.title,
+                // this.offset.x,
+                // this.baseFontSize * this.fontRatios.huge,
+                { width: 500 }
+            );
+
+        // description
+        let desc = this.description[0] + ' ' +
+            this.investment.input.value + ' ' +
+            this.description[1] + ' ' +
+            this.selectedPeriod.value + ' ' +
+            this.labels.period + ' ' +
+            this.description[2] + ' ' +
+            this.investment.output.value + ' ' +
+            this.description[3];
+
+        doc.font(this.fontData.bold.name)
+            .fontSize(this.baseFontSize * this.fontRatios.medium);
+
+        doc.text(desc);
+
+        doc.fontSize(this.baseFontSize * this.fontRatios.small)
+            .fillColor('#333333')
+            .font(this.fontData.roman.name);
+
+        this.offset.table = 7;
+
+        doc.moveTo(this.offset.x, this.offset.y);
+
+        // reference classes
+        for (let i = 0; i < 2; ++i) {
+
+            // let so1 = this.investment.options[this.leftOptions[i].id].desc;
+            // let so2 = this.investment.options[this.rightOptions[i].id].desc;
+            let so1 = this.investment.options[this.samplers[i].investment.options[0].id].desc;
+            let so2 = this.investment.options[this.samplers[i].investment.options[1].id].desc;
+            let rc = this.referenceClasses.prefix + ' ' + this.samplers[i].samples.length + ' ' +
+                this.referenceClasses.infix + ' ' + this.investment.input.value + ' ' +
+                this.referenceClasses.suffix + '\n' +
+                this.samplers[i].getLeftOptionRatioRepr() + ' ' + so1 + ' – ' +
+                this.samplers[i].getRightOptionRatioRepr() + ' ' + so2;
+
+            rc = rc.replace(/\u2009/g, ' ');  // quick hack: Font does not support thin space character!?
+
+            doc.text(
+                rc,
+                this.offset.x + i * this.baseFontSize * 25,
+                this.offset.table * this.baseFontSize,
+                { width: this.baseFontSize * 25, align: 'left' }
+            );
+        }
+
+        if (this.iconArray.size === 1000) {
+            this.iconArray.y_offset = this.baseFontSize * 24;
+        } else {
+            this.iconArray.y_offset = this.baseFontSize * 24;
+        }
+
+        // draw icon arrays and 'axes'
+        this.createIconArray(doc);
+
+        // draw context
+        doc.font(this.fontData.roman.name)
+            .fontSize(this.baseFontSize * this.fontRatios.small);
+
+        // reset the text cursor??! for continuous text positioning. !@&^%
+        doc.text(
+            '',
+            this.offset.x,
+            this.height + this.iconArray.y_offset * 2.5
+        );
+
+        function parseText(text) {
+            let regexp = /^(.*)<a href="(.*?)".*>(.*)<\/a>(.*)$/;
+            let match = regexp.exec(text);
+
+            if (match !== null) {
+                return match[1] + ' ' + match[3] + ' ' + match[2] + match[4];  // pdfkit only allows for pragmatic lead desert
+            }
+            return text;
+        }
+
+        // Context: print structured text from sampling-info.json
+        for (let i = 0; i < this.context.length; ++i) {  // classes array
+            doc.font(this.fontData.roman.name);
+            doc.fontSize(this.baseFontSize * this.fontRatios.small);
+
+            let obj = this.context[i];
+
+            if (obj.type === 'list') {
+
+                let lst = obj.items.map(function(e) {
+                    return parseText(e);
+                });
+
+                doc.list(
+                    lst,
+                    { width: this.baseFontSize * 45, align: 'left' }  // in contrast to documentation no list style option seems to have any effect
+                );
+            } else {
+                if (obj.type === 'pageBreak' && i != this.context.length - 1) {  // don't add another page break at the end of the PDF file
+                    doc.addPage();
+                } else if (obj.type === 'heading') {
+                    if (obj.depth === 3) {
+                        doc.fontSize(this.baseFontSize * this.fontRatios.medium);
+                    }
+                    doc.font(this.fontData.bold.name);
+                }
+
+                doc.text(
+                    obj.text,
+                    { width: this.baseFontSize * 45, align: 'left' }
+                );
+            }
+            doc.moveDown();
+        }
+
+        doc.end();
+
+        this.stream.on('finish', () => {
+            let url = this.stream.toBlobURL('application/pdf');
+            this.controller.updatePDFLink(url, this.clickEvent);
+        });
+    }
+}

+ 106 - 0
src/js/sampler.js

@@ -0,0 +1,106 @@
+export class Sampler {
+
+
+    constructor(id, data, classes, investment, maxSamples) {
+        this.data = data;
+        this.samples = [];
+        this.classes = classes;
+        this.id = id;
+        this.investment = investment;
+        this.svgclass = 'sampler-' + this.id;
+        this.currentSample = { cid: undefined, yield: 0, id: undefined };
+        this.maxSamples = maxSamples;
+        this.THIN_SPACE = '\u2009';
+    }
+
+    // actual sampling implemented as importance sampling in sampling app
+    drawSample(idx) {
+
+        let d = this.data[idx];
+        let y = this.investment.ratio * d.values[0] + (1 - this.investment.ratio) * d.values[1];  // yield (percentage)
+        let c = (y + 1) * this.investment.input.value;  // calculate absolute result (input + yield)
+        let classid;
+
+        if (c >= this.investment.output.value) {
+            classid = this.classes[1].id;
+        } else {
+            classid = this.classes[0].id;
+        }
+
+        this.currentSample = {
+            cid: classid,
+            yield: y,
+            id: this.samples.length
+        };
+
+        this.samples.push(this.currentSample);
+    }
+
+    getCalculatedYield() {
+        let factor = Math.pow(10, 0);
+        let val = Math.round(this.currentSample.yield * 100 * factor) / factor;
+        let sign = '';
+        if (val > 0) {
+            sign = '+';
+        } else if (sign < 0) {
+            sign = '-';
+        }
+
+        let result = (sign + val + this.THIN_SPACE + '%').replace('.', ',');
+        return result;
+    }
+
+    get calculatedYield() {
+        return this.getCalculatedYield();
+    }
+
+    getLeftOptionRatioRepr() {
+        let val = Math.round(this.investment.ratio * 100000) / 1000;
+        return val + this.THIN_SPACE + '%';
+    }
+
+    get leftOptionRatioRepr() {
+        return this.getLeftOptionRatioRepr();
+    }
+
+    getRightOptionRatioRepr() {
+        let val = Math.round((1 - this.investment.ratio) * 100000) / 1000;
+        return val + this.THIN_SPACE + '%';
+    }
+
+    get rightOptionRatioRepr() {
+        return this.getRightOptionRatioRepr();
+    }
+
+    setPeriod(val) {
+        this.period = val;
+    }
+
+    setCurrentSample(idx) {
+        if (this.samples.length - 1 >= idx) {
+            this.currentSample = this.samples[idx];
+        }
+    }
+
+    samplesPerClass() {
+        let samplesIsolated = [];
+        let samples = [];
+        for (let s of this.samples) {  // deep copy of samples
+            samples.push(s);
+        }
+
+        for (let cls of this.classes) {
+            let arr = samples.filter(function(c) {
+                return c.cid === cls.id;
+            }, cls);
+
+            samplesIsolated.push(arr);
+        }
+        return samplesIsolated;
+    }
+
+    reset() {
+        this.samples = [];
+        this.currentSample = { cid: undefined, yield: 0, id: undefined };
+    }
+}

Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff