├── .gitignore ├── README.md ├── css └── index.css ├── index.html ├── js └── index.js ├── package-lock.json ├── package.json ├── screenshot.jpg ├── test.tsv ├── test.withoutHeader.tsv ├── ts ├── DataRecord.ts ├── DateRecord.ts ├── FoodRecord.ts ├── FreeStyleLibreLib.ts ├── GlucoseRecord.ts ├── GlucoseRecordType.ts ├── GlucoseUnit.ts ├── GlucoseValue.ts ├── InsulinRecord.ts ├── InsulinRecordType.ts ├── RecordType.ts ├── Report.ts └── SmoothInsulinRecord.ts ├── tsconfig.json └── typings.json /.gitignore: -------------------------------------------------------------------------------- 1 | .vscode 2 | js/freestylelibrelib.js 3 | node_modules 4 | typings -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Abbot FreeStyle Libre flash glucose meter Parser/Viewer 2 | 3 | ## Objective 4 | 5 | Create a library to read and manage TSV files created by the FreeStyle libre app to better understand and visualize the report data 6 | 7 | ## How to install 8 | 9 | `npm install` 10 | 11 | ## How to use the Viewer (user) 12 | 13 | Mount a local web-server (for example using node's `http-server`) and browse to the `index.html` (for example http://127.0.0.1:8080/index.html) to open the main view that lets you import a tsv file generated from the Abbott FreeStyle Libre app (or use the test.tsv example file) and visualize the data in the HighChart chart. 14 | 15 | ## How to use the FreeStyleLibreLib (developer) 16 | 17 | ```javascript 18 | var reader = new FileReader(); 19 | reader.readAsText(file); 20 | reader.onload = function() { 21 | var report = FreeStyleLibreLib.parseReport(reader.result); 22 | } 23 | ``` 24 | 25 | ## TSV File Format (Tab separated values, like a CSV but with tabs) 26 | This is the format of the exported file generated by the Abbot FreeStyle Libre app when running the `File->Export Data` menu option with the meter connected. 27 | 28 | - Line 1: 29 | - Patient name 30 | - **this non-standard tsv line, break standard parsers** 31 | - **(Is this line optional?)** 32 | - Line 2: 33 | - Headers 34 | - ID 35 | - Time **(Is YYYY/MM/DD HH:mm the only possible date format?)** 36 | - Record Type 37 | - 0: Historic Glucose 38 | - 1: Scan Glucose 39 | - 2: **?** 40 | - 3: **?** 41 | - 4: Insulin (Need to read if Rapid-Acting Insulin (units) or Long-Acting Insulin (units) has data to know witch is witch, probably appies to the "non numeric" ones too, but is not tested) 42 | - 5: Food 43 | - 6: Date change (Not implemented) 44 | - **Is there anything beyond type 6?** 45 | - Historic Glucose (mmol/L) 46 | - **Does the column name change if the meter units are not mmol/L?** 47 | - Scan Glucose (mmol/L) 48 | - **Does the column name change if the meter units are not mmol/L?** 49 | - Non-numeric Rapid-Acting Insulin 50 | - Rapid-Acting Insulin (units) 51 | - Non-numeric Food 52 | - Carbohydrates (grams) 53 | - Non-numeric Long-Acting Insulin 54 | - Long-Acting Insulin (units) 55 | - Notes 56 | - Strip Glucose (mmol/L) 57 | - **Does the column name change if the meter units are not mmol/L?** 58 | - Ketone (mmol/L) 59 | - **Does the column name change if the meter units are not mmol/L?** 60 | - Meal Insulin (units) 61 | - Correction Insulin (units) 62 | - **It seems that this is not used for insulin units** 63 | - User Change Insulin (units) 64 | - **It seems that this is not used for insulin units** 65 | - Previous Time 66 | - **For Record type 6** 67 | - Updated Time 68 | - **For Record type 6** 69 | - **Are these all the possible columns?** 70 | - **Can the columns have another name if the meter or app is set up in other language?** 71 | - Lines > 2 72 | - Data 73 | 74 | ## How it looks 75 | 76 | ![Alt text](screenshot.jpg?raw=true "Screeshot") 77 | -------------------------------------------------------------------------------- /css/index.css: -------------------------------------------------------------------------------- 1 | .chart { 2 | min-width: 310px; 3 | height: 600px; 4 | margin: 0 auto; 5 | } -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Freestyle Libre Parser/Viewer 8 | 9 | 10 | 11 | 15 | 16 | 17 |

Abbot FreeStyle Libre flash glucose meter Parser/Viewer

18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /js/index.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | 'use strict'; 3 | 4 | // TODO: Make these values UI configurable 5 | var HIPO_LIMIT = 4.0; 6 | var HIPER_LIMIT = 10.0; 7 | 8 | $('#file').change(function(evt) { 9 | var file = evt.target.files[0]; // FileList object 10 | var reader = new FileReader(); 11 | reader.readAsText(file); 12 | reader.onload = function() { 13 | 14 | // Create the report 15 | 16 | var report = FreeStyleLibreLib.parseReport(reader.result); 17 | 18 | // Define series and properties 19 | 20 | var highchartsData = [ 21 | { 22 | name: 'Glucose', 23 | color: '#FA5858', 24 | data: [], 25 | zones: [ 26 | { 27 | color: '#FA5858', 28 | value: HIPO_LIMIT 29 | }, 30 | { 31 | color: '#190707', 32 | value: HIPER_LIMIT 33 | }, 34 | ] 35 | }, 36 | { 37 | name: 'Rapid-Acting Insulin', 38 | color: '#FAAC58', 39 | data: [] 40 | }, 41 | { 42 | name: 'Long-Acting Insulin', 43 | color: '#BE81F7', 44 | data: [] 45 | }, 46 | { 47 | name: 'Food', 48 | color: '#000099', 49 | data: [], 50 | lineWidth: 0, 51 | marker: { 52 | enabled: true, 53 | radius: 4 54 | } 55 | }, 56 | { 57 | name: 'Rapid-Acting Insulin Injection', 58 | color: '#FAAC58', 59 | data: [], 60 | lineWidth: 0, 61 | marker: { 62 | enabled: true, 63 | radius: 4 64 | } 65 | }, 66 | { 67 | name: 'Long-Acting Insulin Injection', 68 | color: '#BE81F7', 69 | data: [], 70 | lineWidth: 0, 71 | marker: { 72 | enabled: true, 73 | radius: 4 74 | } 75 | }, 76 | { 77 | name: 'Hypo', 78 | color: '#F5A9A9', 79 | dashStyle: 'ShortDash', 80 | data: [] 81 | }, 82 | { 83 | name: 'Hyper', 84 | color: '#F5A9A9', 85 | dashStyle: 'ShortDash', 86 | data: [] 87 | } 88 | ]; 89 | 90 | // Add data points 91 | 92 | report.glucose.forEach(function(element) { 93 | var value = element.glucose.getValueAsMmolPerL(); 94 | highchartsData[0].data.push([element.date.valueOf(), value]); 95 | }, this); 96 | report.getSmoothRapidInsulin().forEach(function(element) { 97 | var value = element.units; 98 | highchartsData[1].data.push([element.date.valueOf(), value]); 99 | }, this); 100 | report.getSmoothLongInsulin().forEach(function(element) { 101 | var value = element.units; 102 | highchartsData[2].data.push([element.date.valueOf(), value]); 103 | }, this); 104 | report.food.forEach(function(element) { 105 | var value = element.carbs; 106 | highchartsData[3].data.push([element.date.valueOf(), (isNaN(value) ? 5 : value)]); 107 | }, this); 108 | report.insulin.forEach(function(element) { 109 | var value = element.units; 110 | if (element.insulinType == 0) { 111 | highchartsData[4].data.push([element.date.valueOf(), value]); 112 | } 113 | if (element.insulinType == 1) { 114 | highchartsData[5].data.push([element.date.valueOf(), value]); 115 | } 116 | }, this); 117 | highchartsData[6].data = [ 118 | [report.start.valueOf(), HIPO_LIMIT], 119 | [report.end.valueOf(), HIPO_LIMIT] 120 | ]; 121 | highchartsData[7].data = [ 122 | [report.start.valueOf(), HIPER_LIMIT], 123 | [report.end.valueOf(), HIPER_LIMIT] 124 | ]; 125 | 126 | // Create the Highcharts chart 127 | 128 | Highcharts.stockChart('container', { 129 | series: highchartsData, 130 | rangeSelector: { 131 | selected: 1, 132 | buttons: [{ 133 | type: 'day', 134 | count: 1, 135 | text: '1d' 136 | }, { 137 | type: 'day', 138 | count: 3, 139 | text: '3d' 140 | }, { 141 | type: 'day', 142 | count: 7, 143 | text: '1w' 144 | }, { 145 | type: 'month', 146 | count: 1, 147 | text: '1m' 148 | }, { 149 | type: 'month', 150 | count: 3, 151 | text: '3m' 152 | }, { 153 | type: 'all', 154 | text: 'All' 155 | }] 156 | }, 157 | legend: { 158 | enabled: true, 159 | layout: 'vertical', 160 | backgroundColor: '#FFFFFF', 161 | align: 'center', 162 | x: -10, 163 | y: 25, 164 | verticalAlign: 'top', 165 | floating: true, 166 | shadow: true 167 | }, 168 | }); 169 | }; 170 | }); 171 | })(); -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "freestyle-libre-parser-viewer", 3 | "version": "1.0.2", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "abbrev": { 8 | "version": "1.1.1", 9 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 10 | "integrity": "sha1-+PLIh60Qv2f2NPAFtph/7TF5qsg=", 11 | "dev": true 12 | }, 13 | "agent-base": { 14 | "version": "2.1.1", 15 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-2.1.1.tgz", 16 | "integrity": "sha1-1t4Q1a9hMtW9aSQn1G/FOFOQlMc=", 17 | "dev": true, 18 | "requires": { 19 | "extend": "~3.0.0", 20 | "semver": "~5.0.1" 21 | } 22 | }, 23 | "ansi-align": { 24 | "version": "2.0.0", 25 | "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", 26 | "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", 27 | "dev": true, 28 | "requires": { 29 | "string-width": "^2.0.0" 30 | } 31 | }, 32 | "ansi-escapes": { 33 | "version": "1.4.0", 34 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", 35 | "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", 36 | "dev": true 37 | }, 38 | "ansi-regex": { 39 | "version": "2.1.1", 40 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 41 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 42 | "dev": true 43 | }, 44 | "ansi-styles": { 45 | "version": "2.2.1", 46 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 47 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 48 | "dev": true 49 | }, 50 | "any-promise": { 51 | "version": "1.3.0", 52 | "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", 53 | "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", 54 | "dev": true 55 | }, 56 | "archy": { 57 | "version": "1.0.0", 58 | "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", 59 | "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", 60 | "dev": true 61 | }, 62 | "array-uniq": { 63 | "version": "1.0.3", 64 | "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", 65 | "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", 66 | "dev": true 67 | }, 68 | "async": { 69 | "version": "1.5.2", 70 | "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", 71 | "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" 72 | }, 73 | "asynckit": { 74 | "version": "0.4.0", 75 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 76 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", 77 | "dev": true 78 | }, 79 | "balanced-match": { 80 | "version": "1.0.0", 81 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 82 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 83 | "dev": true 84 | }, 85 | "bluebird": { 86 | "version": "3.5.1", 87 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", 88 | "integrity": "sha1-2VUfnemPH82h5oPRfukaBgLuLrk=", 89 | "dev": true 90 | }, 91 | "bootstrap": { 92 | "version": "3.3.7", 93 | "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.3.7.tgz", 94 | "integrity": "sha1-WjiTlFSfIzMIdaOxUGVldPip63E=", 95 | "dev": true 96 | }, 97 | "boxen": { 98 | "version": "1.2.2", 99 | "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.2.2.tgz", 100 | "integrity": "sha1-Px1AMsMP/qnUsCwyLq8up0HcvOU=", 101 | "dev": true, 102 | "requires": { 103 | "ansi-align": "^2.0.0", 104 | "camelcase": "^4.0.0", 105 | "chalk": "^2.0.1", 106 | "cli-boxes": "^1.0.0", 107 | "string-width": "^2.0.0", 108 | "term-size": "^1.2.0", 109 | "widest-line": "^1.0.0" 110 | }, 111 | "dependencies": { 112 | "ansi-styles": { 113 | "version": "3.2.0", 114 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", 115 | "integrity": "sha1-wVm41b4PnlpvNG2rlPFs4CIWG4g=", 116 | "dev": true, 117 | "requires": { 118 | "color-convert": "^1.9.0" 119 | } 120 | }, 121 | "chalk": { 122 | "version": "2.2.0", 123 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.0.tgz", 124 | "integrity": "sha512-0BMM/2hG3ZaoPfR6F+h/oWpZtsh3b/s62TjSM6MGCJWEbJDN1acqCXvyhhZsDSVFklpebUoQ5O1kKC7lOzrn9g==", 125 | "dev": true, 126 | "requires": { 127 | "ansi-styles": "^3.1.0", 128 | "escape-string-regexp": "^1.0.5", 129 | "supports-color": "^4.0.0" 130 | } 131 | }, 132 | "supports-color": { 133 | "version": "4.5.0", 134 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", 135 | "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", 136 | "dev": true, 137 | "requires": { 138 | "has-flag": "^2.0.0" 139 | } 140 | } 141 | } 142 | }, 143 | "brace-expansion": { 144 | "version": "1.1.8", 145 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", 146 | "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", 147 | "dev": true, 148 | "requires": { 149 | "balanced-match": "^1.0.0", 150 | "concat-map": "0.0.1" 151 | } 152 | }, 153 | "camelcase": { 154 | "version": "4.1.0", 155 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", 156 | "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", 157 | "dev": true 158 | }, 159 | "capture-stack-trace": { 160 | "version": "1.0.0", 161 | "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", 162 | "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", 163 | "dev": true 164 | }, 165 | "chalk": { 166 | "version": "1.1.3", 167 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 168 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 169 | "dev": true, 170 | "requires": { 171 | "ansi-styles": "^2.2.1", 172 | "escape-string-regexp": "^1.0.2", 173 | "has-ansi": "^2.0.0", 174 | "strip-ansi": "^3.0.0", 175 | "supports-color": "^2.0.0" 176 | } 177 | }, 178 | "cli-boxes": { 179 | "version": "1.0.0", 180 | "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", 181 | "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", 182 | "dev": true 183 | }, 184 | "cli-cursor": { 185 | "version": "1.0.2", 186 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", 187 | "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", 188 | "dev": true, 189 | "requires": { 190 | "restore-cursor": "^1.0.1" 191 | } 192 | }, 193 | "cli-truncate": { 194 | "version": "1.1.0", 195 | "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-1.1.0.tgz", 196 | "integrity": "sha1-Ky39g8U8/TVyuH/E1DCoCK+wQIY=", 197 | "dev": true, 198 | "requires": { 199 | "slice-ansi": "^1.0.0", 200 | "string-width": "^2.0.0" 201 | } 202 | }, 203 | "clone": { 204 | "version": "1.0.2", 205 | "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", 206 | "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=", 207 | "dev": true 208 | }, 209 | "code-point-at": { 210 | "version": "1.1.0", 211 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", 212 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", 213 | "dev": true 214 | }, 215 | "color-convert": { 216 | "version": "1.9.0", 217 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", 218 | "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", 219 | "dev": true, 220 | "requires": { 221 | "color-name": "^1.1.1" 222 | } 223 | }, 224 | "color-name": { 225 | "version": "1.1.3", 226 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 227 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 228 | "dev": true 229 | }, 230 | "colors": { 231 | "version": "1.0.3", 232 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", 233 | "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=" 234 | }, 235 | "columnify": { 236 | "version": "1.5.4", 237 | "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz", 238 | "integrity": "sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=", 239 | "dev": true, 240 | "requires": { 241 | "strip-ansi": "^3.0.0", 242 | "wcwidth": "^1.0.0" 243 | } 244 | }, 245 | "combined-stream": { 246 | "version": "1.0.5", 247 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", 248 | "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", 249 | "dev": true, 250 | "requires": { 251 | "delayed-stream": "~1.0.0" 252 | } 253 | }, 254 | "concat-map": { 255 | "version": "0.0.1", 256 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 257 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 258 | "dev": true 259 | }, 260 | "concat-stream": { 261 | "version": "1.6.0", 262 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", 263 | "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", 264 | "dev": true, 265 | "requires": { 266 | "inherits": "^2.0.3", 267 | "readable-stream": "^2.2.2", 268 | "typedarray": "^0.0.6" 269 | } 270 | }, 271 | "configstore": { 272 | "version": "3.1.1", 273 | "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz", 274 | "integrity": "sha1-CU7mYquD+tmRdnjeEU+q6o/NypA=", 275 | "dev": true, 276 | "requires": { 277 | "dot-prop": "^4.1.0", 278 | "graceful-fs": "^4.1.2", 279 | "make-dir": "^1.0.0", 280 | "unique-string": "^1.0.0", 281 | "write-file-atomic": "^2.0.0", 282 | "xdg-basedir": "^3.0.0" 283 | } 284 | }, 285 | "core-util-is": { 286 | "version": "1.0.2", 287 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 288 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 289 | "dev": true 290 | }, 291 | "corser": { 292 | "version": "2.0.1", 293 | "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", 294 | "integrity": "sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c=" 295 | }, 296 | "create-error-class": { 297 | "version": "3.0.2", 298 | "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", 299 | "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", 300 | "dev": true, 301 | "requires": { 302 | "capture-stack-trace": "^1.0.0" 303 | } 304 | }, 305 | "cross-spawn": { 306 | "version": "5.1.0", 307 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", 308 | "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", 309 | "dev": true, 310 | "requires": { 311 | "lru-cache": "^4.0.1", 312 | "shebang-command": "^1.2.0", 313 | "which": "^1.2.9" 314 | } 315 | }, 316 | "crypto-random-string": { 317 | "version": "1.0.0", 318 | "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", 319 | "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", 320 | "dev": true 321 | }, 322 | "debug": { 323 | "version": "2.6.9", 324 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 325 | "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", 326 | "requires": { 327 | "ms": "2.0.0" 328 | } 329 | }, 330 | "deep-extend": { 331 | "version": "0.4.2", 332 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", 333 | "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", 334 | "dev": true 335 | }, 336 | "defaults": { 337 | "version": "1.0.3", 338 | "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", 339 | "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", 340 | "dev": true, 341 | "requires": { 342 | "clone": "^1.0.2" 343 | } 344 | }, 345 | "delayed-stream": { 346 | "version": "1.0.0", 347 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 348 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", 349 | "dev": true 350 | }, 351 | "detect-indent": { 352 | "version": "5.0.0", 353 | "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", 354 | "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", 355 | "dev": true 356 | }, 357 | "dot-prop": { 358 | "version": "4.2.0", 359 | "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", 360 | "integrity": "sha1-HxngwuGqDjJ5fEl5nyg3rGr2nFc=", 361 | "dev": true, 362 | "requires": { 363 | "is-obj": "^1.0.0" 364 | } 365 | }, 366 | "duplexer3": { 367 | "version": "0.1.4", 368 | "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", 369 | "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", 370 | "dev": true 371 | }, 372 | "ecstatic": { 373 | "version": "2.2.1", 374 | "resolved": "https://registry.npmjs.org/ecstatic/-/ecstatic-2.2.1.tgz", 375 | "integrity": "sha512-ztE4WqheoWLh3wv+HQwy7dACnvNY620coWpa+XqY6R2cVWgaAT2lUISU1Uf7JpdLLJCURktJOaA9av2AOzsyYQ==", 376 | "requires": { 377 | "he": "^1.1.1", 378 | "mime": "^1.2.11", 379 | "minimist": "^1.1.0", 380 | "url-join": "^2.0.2" 381 | } 382 | }, 383 | "elegant-spinner": { 384 | "version": "1.0.1", 385 | "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", 386 | "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", 387 | "dev": true 388 | }, 389 | "error-ex": { 390 | "version": "1.3.1", 391 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", 392 | "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", 393 | "dev": true, 394 | "requires": { 395 | "is-arrayish": "^0.2.1" 396 | } 397 | }, 398 | "escape-string-regexp": { 399 | "version": "1.0.5", 400 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 401 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 402 | "dev": true 403 | }, 404 | "eventemitter3": { 405 | "version": "1.2.0", 406 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", 407 | "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=" 408 | }, 409 | "execa": { 410 | "version": "0.7.0", 411 | "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", 412 | "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", 413 | "dev": true, 414 | "requires": { 415 | "cross-spawn": "^5.0.1", 416 | "get-stream": "^3.0.0", 417 | "is-stream": "^1.1.0", 418 | "npm-run-path": "^2.0.0", 419 | "p-finally": "^1.0.0", 420 | "signal-exit": "^3.0.0", 421 | "strip-eof": "^1.0.0" 422 | } 423 | }, 424 | "exit-hook": { 425 | "version": "1.1.1", 426 | "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", 427 | "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", 428 | "dev": true 429 | }, 430 | "extend": { 431 | "version": "3.0.1", 432 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", 433 | "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", 434 | "dev": true 435 | }, 436 | "form-data": { 437 | "version": "2.3.1", 438 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", 439 | "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", 440 | "dev": true, 441 | "requires": { 442 | "asynckit": "^0.4.0", 443 | "combined-stream": "^1.0.5", 444 | "mime-types": "^2.1.12" 445 | } 446 | }, 447 | "fs.realpath": { 448 | "version": "1.0.0", 449 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 450 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 451 | "dev": true 452 | }, 453 | "function-bind": { 454 | "version": "1.1.1", 455 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 456 | "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=", 457 | "dev": true 458 | }, 459 | "get-stream": { 460 | "version": "3.0.0", 461 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", 462 | "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", 463 | "dev": true 464 | }, 465 | "glob": { 466 | "version": "7.1.2", 467 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 468 | "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", 469 | "dev": true, 470 | "requires": { 471 | "fs.realpath": "^1.0.0", 472 | "inflight": "^1.0.4", 473 | "inherits": "2", 474 | "minimatch": "^3.0.4", 475 | "once": "^1.3.0", 476 | "path-is-absolute": "^1.0.0" 477 | } 478 | }, 479 | "global-dirs": { 480 | "version": "0.1.0", 481 | "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.0.tgz", 482 | "integrity": "sha1-ENNAOeDfBCcuJizyQiT3IJQ0308=", 483 | "dev": true, 484 | "requires": { 485 | "ini": "^1.3.4" 486 | } 487 | }, 488 | "got": { 489 | "version": "6.7.1", 490 | "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", 491 | "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", 492 | "dev": true, 493 | "requires": { 494 | "create-error-class": "^3.0.0", 495 | "duplexer3": "^0.1.4", 496 | "get-stream": "^3.0.0", 497 | "is-redirect": "^1.0.0", 498 | "is-retry-allowed": "^1.0.0", 499 | "is-stream": "^1.0.0", 500 | "lowercase-keys": "^1.0.0", 501 | "safe-buffer": "^5.0.1", 502 | "timed-out": "^4.0.0", 503 | "unzip-response": "^2.0.1", 504 | "url-parse-lax": "^1.0.0" 505 | } 506 | }, 507 | "graceful-fs": { 508 | "version": "4.1.11", 509 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 510 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", 511 | "dev": true 512 | }, 513 | "has": { 514 | "version": "1.0.1", 515 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", 516 | "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", 517 | "dev": true, 518 | "requires": { 519 | "function-bind": "^1.0.2" 520 | } 521 | }, 522 | "has-ansi": { 523 | "version": "2.0.0", 524 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 525 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 526 | "dev": true, 527 | "requires": { 528 | "ansi-regex": "^2.0.0" 529 | } 530 | }, 531 | "has-flag": { 532 | "version": "2.0.0", 533 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", 534 | "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", 535 | "dev": true 536 | }, 537 | "has-unicode": { 538 | "version": "2.0.1", 539 | "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", 540 | "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", 541 | "dev": true 542 | }, 543 | "he": { 544 | "version": "1.1.1", 545 | "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", 546 | "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=" 547 | }, 548 | "highcharts": { 549 | "version": "5.0.15", 550 | "resolved": "https://registry.npmjs.org/highcharts/-/highcharts-5.0.15.tgz", 551 | "integrity": "sha512-+LTe57ntLyWgkjsHzLmvRspM3FVKtds7iDswOTwuTAmZD3FtG1I/DqHiVSRjX92RQmQMZ1M7dcoRb7T648m1xA==", 552 | "dev": true 553 | }, 554 | "http-proxy": { 555 | "version": "1.16.2", 556 | "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", 557 | "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", 558 | "requires": { 559 | "eventemitter3": "1.x.x", 560 | "requires-port": "1.x.x" 561 | } 562 | }, 563 | "http-proxy-agent": { 564 | "version": "1.0.0", 565 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-1.0.0.tgz", 566 | "integrity": "sha1-zBzjjkU7+YSg93AtLdWcc9CBKEo=", 567 | "dev": true, 568 | "requires": { 569 | "agent-base": "2", 570 | "debug": "2", 571 | "extend": "3" 572 | } 573 | }, 574 | "http-server": { 575 | "version": "0.10.0", 576 | "resolved": "https://registry.npmjs.org/http-server/-/http-server-0.10.0.tgz", 577 | "integrity": "sha1-sqRGsWqduH7TxiK6m+sbCFsSNKc=", 578 | "requires": { 579 | "colors": "1.0.3", 580 | "corser": "~2.0.0", 581 | "ecstatic": "^2.0.0", 582 | "http-proxy": "^1.8.1", 583 | "opener": "~1.4.0", 584 | "optimist": "0.6.x", 585 | "portfinder": "^1.0.13", 586 | "union": "~0.4.3" 587 | } 588 | }, 589 | "https-proxy-agent": { 590 | "version": "1.0.0", 591 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz", 592 | "integrity": "sha1-NffabEjOTdv6JkiRrFk+5f+GceY=", 593 | "dev": true, 594 | "requires": { 595 | "agent-base": "2", 596 | "debug": "2", 597 | "extend": "3" 598 | } 599 | }, 600 | "import-lazy": { 601 | "version": "2.1.0", 602 | "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", 603 | "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", 604 | "dev": true 605 | }, 606 | "imurmurhash": { 607 | "version": "0.1.4", 608 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 609 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 610 | "dev": true 611 | }, 612 | "inflight": { 613 | "version": "1.0.6", 614 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 615 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 616 | "dev": true, 617 | "requires": { 618 | "once": "^1.3.0", 619 | "wrappy": "1" 620 | } 621 | }, 622 | "inherits": { 623 | "version": "2.0.3", 624 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 625 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 626 | "dev": true 627 | }, 628 | "ini": { 629 | "version": "1.3.4", 630 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", 631 | "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", 632 | "dev": true 633 | }, 634 | "invariant": { 635 | "version": "2.2.2", 636 | "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", 637 | "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", 638 | "dev": true, 639 | "requires": { 640 | "loose-envify": "^1.0.0" 641 | } 642 | }, 643 | "is-absolute": { 644 | "version": "0.2.6", 645 | "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.2.6.tgz", 646 | "integrity": "sha1-IN5p89uULvLYe5wto28XIjWxtes=", 647 | "dev": true, 648 | "requires": { 649 | "is-relative": "^0.2.1", 650 | "is-windows": "^0.2.0" 651 | } 652 | }, 653 | "is-arrayish": { 654 | "version": "0.2.1", 655 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 656 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 657 | "dev": true 658 | }, 659 | "is-fullwidth-code-point": { 660 | "version": "2.0.0", 661 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 662 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 663 | "dev": true 664 | }, 665 | "is-installed-globally": { 666 | "version": "0.1.0", 667 | "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", 668 | "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", 669 | "dev": true, 670 | "requires": { 671 | "global-dirs": "^0.1.0", 672 | "is-path-inside": "^1.0.0" 673 | } 674 | }, 675 | "is-npm": { 676 | "version": "1.0.0", 677 | "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", 678 | "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", 679 | "dev": true 680 | }, 681 | "is-obj": { 682 | "version": "1.0.1", 683 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", 684 | "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", 685 | "dev": true 686 | }, 687 | "is-path-inside": { 688 | "version": "1.0.0", 689 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", 690 | "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", 691 | "dev": true, 692 | "requires": { 693 | "path-is-inside": "^1.0.1" 694 | } 695 | }, 696 | "is-plain-obj": { 697 | "version": "1.1.0", 698 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", 699 | "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", 700 | "dev": true 701 | }, 702 | "is-redirect": { 703 | "version": "1.0.0", 704 | "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", 705 | "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", 706 | "dev": true 707 | }, 708 | "is-relative": { 709 | "version": "0.2.1", 710 | "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz", 711 | "integrity": "sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU=", 712 | "dev": true, 713 | "requires": { 714 | "is-unc-path": "^0.1.1" 715 | } 716 | }, 717 | "is-retry-allowed": { 718 | "version": "1.1.0", 719 | "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", 720 | "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", 721 | "dev": true 722 | }, 723 | "is-stream": { 724 | "version": "1.1.0", 725 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 726 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", 727 | "dev": true 728 | }, 729 | "is-unc-path": { 730 | "version": "0.1.2", 731 | "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-0.1.2.tgz", 732 | "integrity": "sha1-arBTpyVzwQJQ/0FqOBTDUXivObk=", 733 | "dev": true, 734 | "requires": { 735 | "unc-path-regex": "^0.1.0" 736 | } 737 | }, 738 | "is-windows": { 739 | "version": "0.2.0", 740 | "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", 741 | "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", 742 | "dev": true 743 | }, 744 | "isarray": { 745 | "version": "1.0.0", 746 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 747 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 748 | "dev": true 749 | }, 750 | "isexe": { 751 | "version": "2.0.0", 752 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 753 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 754 | "dev": true 755 | }, 756 | "isobject": { 757 | "version": "3.0.1", 758 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 759 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 760 | "dev": true 761 | }, 762 | "jquery": { 763 | "version": "3.3.1", 764 | "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", 765 | "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==", 766 | "dev": true 767 | }, 768 | "js-tokens": { 769 | "version": "3.0.2", 770 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", 771 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", 772 | "dev": true 773 | }, 774 | "jspm-config": { 775 | "version": "0.3.4", 776 | "resolved": "https://registry.npmjs.org/jspm-config/-/jspm-config-0.3.4.tgz", 777 | "integrity": "sha1-RMJpAuSujs4jZs7cn/FrEKXzkcY=", 778 | "dev": true, 779 | "requires": { 780 | "any-promise": "^1.3.0", 781 | "graceful-fs": "^4.1.4", 782 | "make-error-cause": "^1.2.1", 783 | "object.pick": "^1.1.2", 784 | "parse-json": "^2.2.0", 785 | "strip-bom": "^3.0.0", 786 | "thenify": "^3.2.0", 787 | "throat": "^3.0.0", 788 | "xtend": "^4.0.1" 789 | } 790 | }, 791 | "latest-version": { 792 | "version": "3.1.0", 793 | "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", 794 | "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", 795 | "dev": true, 796 | "requires": { 797 | "package-json": "^4.0.0" 798 | } 799 | }, 800 | "listify": { 801 | "version": "1.0.0", 802 | "resolved": "https://registry.npmjs.org/listify/-/listify-1.0.0.tgz", 803 | "integrity": "sha1-A8p7otFQ1CZ3c/dOV1WNEFPSvuM=", 804 | "dev": true 805 | }, 806 | "lockfile": { 807 | "version": "1.0.3", 808 | "resolved": "https://registry.npmjs.org/lockfile/-/lockfile-1.0.3.tgz", 809 | "integrity": "sha1-Jjj8OaAzHpysGgS3F5mTHJxQ33k=", 810 | "dev": true 811 | }, 812 | "log-update": { 813 | "version": "1.0.2", 814 | "resolved": "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz", 815 | "integrity": "sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=", 816 | "dev": true, 817 | "requires": { 818 | "ansi-escapes": "^1.0.0", 819 | "cli-cursor": "^1.0.2" 820 | } 821 | }, 822 | "loose-envify": { 823 | "version": "1.3.1", 824 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", 825 | "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", 826 | "dev": true, 827 | "requires": { 828 | "js-tokens": "^3.0.0" 829 | } 830 | }, 831 | "lowercase-keys": { 832 | "version": "1.0.0", 833 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", 834 | "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", 835 | "dev": true 836 | }, 837 | "lru-cache": { 838 | "version": "4.1.1", 839 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", 840 | "integrity": "sha1-Yi4y6CSItJJ5EUpPns9F581rulU=", 841 | "dev": true, 842 | "requires": { 843 | "pseudomap": "^1.0.2", 844 | "yallist": "^2.1.2" 845 | } 846 | }, 847 | "make-dir": { 848 | "version": "1.0.0", 849 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.0.0.tgz", 850 | "integrity": "sha1-l6ARdR6R3YfPre9Ygy67BJNt6Xg=", 851 | "dev": true, 852 | "requires": { 853 | "pify": "^2.3.0" 854 | } 855 | }, 856 | "make-error": { 857 | "version": "1.3.0", 858 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.0.tgz", 859 | "integrity": "sha1-Uq06M5zPEM5itAQLcI/nByRLi5Y=", 860 | "dev": true 861 | }, 862 | "make-error-cause": { 863 | "version": "1.2.2", 864 | "resolved": "https://registry.npmjs.org/make-error-cause/-/make-error-cause-1.2.2.tgz", 865 | "integrity": "sha1-3wOI/NCzeBbf8KX7gQiTl3fcvJ0=", 866 | "dev": true, 867 | "requires": { 868 | "make-error": "^1.2.0" 869 | } 870 | }, 871 | "mime": { 872 | "version": "1.4.1", 873 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", 874 | "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" 875 | }, 876 | "mime-db": { 877 | "version": "1.30.0", 878 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", 879 | "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", 880 | "dev": true 881 | }, 882 | "mime-types": { 883 | "version": "2.1.17", 884 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", 885 | "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", 886 | "dev": true, 887 | "requires": { 888 | "mime-db": "~1.30.0" 889 | } 890 | }, 891 | "minimatch": { 892 | "version": "3.0.4", 893 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 894 | "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", 895 | "dev": true, 896 | "requires": { 897 | "brace-expansion": "^1.1.7" 898 | } 899 | }, 900 | "minimist": { 901 | "version": "1.2.0", 902 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 903 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" 904 | }, 905 | "mkdirp": { 906 | "version": "0.5.1", 907 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 908 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 909 | "requires": { 910 | "minimist": "0.0.8" 911 | }, 912 | "dependencies": { 913 | "minimist": { 914 | "version": "0.0.8", 915 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 916 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" 917 | } 918 | } 919 | }, 920 | "moment": { 921 | "version": "2.22.2", 922 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz", 923 | "integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y=", 924 | "dev": true 925 | }, 926 | "ms": { 927 | "version": "2.0.0", 928 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 929 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 930 | }, 931 | "nopt": { 932 | "version": "1.0.10", 933 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", 934 | "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", 935 | "dev": true, 936 | "requires": { 937 | "abbrev": "1" 938 | } 939 | }, 940 | "npm-run-path": { 941 | "version": "2.0.2", 942 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", 943 | "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", 944 | "dev": true, 945 | "requires": { 946 | "path-key": "^2.0.0" 947 | } 948 | }, 949 | "number-is-nan": { 950 | "version": "1.0.1", 951 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 952 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", 953 | "dev": true 954 | }, 955 | "object.pick": { 956 | "version": "1.3.0", 957 | "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", 958 | "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", 959 | "dev": true, 960 | "requires": { 961 | "isobject": "^3.0.1" 962 | } 963 | }, 964 | "once": { 965 | "version": "1.4.0", 966 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 967 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 968 | "dev": true, 969 | "requires": { 970 | "wrappy": "1" 971 | } 972 | }, 973 | "onetime": { 974 | "version": "1.1.0", 975 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", 976 | "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", 977 | "dev": true 978 | }, 979 | "opener": { 980 | "version": "1.4.3", 981 | "resolved": "https://registry.npmjs.org/opener/-/opener-1.4.3.tgz", 982 | "integrity": "sha1-XG2ixdflgx6P+jlklQ+NZnSskLg=" 983 | }, 984 | "optimist": { 985 | "version": "0.6.1", 986 | "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", 987 | "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", 988 | "requires": { 989 | "minimist": "~0.0.1", 990 | "wordwrap": "~0.0.2" 991 | }, 992 | "dependencies": { 993 | "minimist": { 994 | "version": "0.0.10", 995 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", 996 | "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" 997 | } 998 | } 999 | }, 1000 | "p-finally": { 1001 | "version": "1.0.0", 1002 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", 1003 | "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", 1004 | "dev": true 1005 | }, 1006 | "package-json": { 1007 | "version": "4.0.1", 1008 | "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", 1009 | "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", 1010 | "dev": true, 1011 | "requires": { 1012 | "got": "^6.7.1", 1013 | "registry-auth-token": "^3.0.1", 1014 | "registry-url": "^3.0.3", 1015 | "semver": "^5.1.0" 1016 | }, 1017 | "dependencies": { 1018 | "semver": { 1019 | "version": "5.4.1", 1020 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", 1021 | "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", 1022 | "dev": true 1023 | } 1024 | } 1025 | }, 1026 | "parse-json": { 1027 | "version": "2.2.0", 1028 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", 1029 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", 1030 | "dev": true, 1031 | "requires": { 1032 | "error-ex": "^1.2.0" 1033 | } 1034 | }, 1035 | "path-is-absolute": { 1036 | "version": "1.0.1", 1037 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1038 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1039 | "dev": true 1040 | }, 1041 | "path-is-inside": { 1042 | "version": "1.0.2", 1043 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", 1044 | "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", 1045 | "dev": true 1046 | }, 1047 | "path-key": { 1048 | "version": "2.0.1", 1049 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 1050 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", 1051 | "dev": true 1052 | }, 1053 | "pify": { 1054 | "version": "2.3.0", 1055 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 1056 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 1057 | "dev": true 1058 | }, 1059 | "popsicle": { 1060 | "version": "9.1.0", 1061 | "resolved": "https://registry.npmjs.org/popsicle/-/popsicle-9.1.0.tgz", 1062 | "integrity": "sha1-T5APONV6V07BcO2kBJbjZAgr/2Y=", 1063 | "dev": true, 1064 | "requires": { 1065 | "concat-stream": "^1.4.7", 1066 | "form-data": "^2.0.0", 1067 | "make-error-cause": "^1.2.1", 1068 | "tough-cookie": "^2.0.0" 1069 | } 1070 | }, 1071 | "popsicle-proxy-agent": { 1072 | "version": "3.0.0", 1073 | "resolved": "https://registry.npmjs.org/popsicle-proxy-agent/-/popsicle-proxy-agent-3.0.0.tgz", 1074 | "integrity": "sha1-uRM8VdlFdZq37mG3cRNkYg066tw=", 1075 | "dev": true, 1076 | "requires": { 1077 | "http-proxy-agent": "^1.0.0", 1078 | "https-proxy-agent": "^1.0.0" 1079 | } 1080 | }, 1081 | "popsicle-retry": { 1082 | "version": "3.2.1", 1083 | "resolved": "https://registry.npmjs.org/popsicle-retry/-/popsicle-retry-3.2.1.tgz", 1084 | "integrity": "sha1-4G6GZTO0KnoSPrMwy+Y6fOvLoQw=", 1085 | "dev": true, 1086 | "requires": { 1087 | "any-promise": "^1.1.0", 1088 | "xtend": "^4.0.1" 1089 | } 1090 | }, 1091 | "popsicle-rewrite": { 1092 | "version": "1.0.0", 1093 | "resolved": "https://registry.npmjs.org/popsicle-rewrite/-/popsicle-rewrite-1.0.0.tgz", 1094 | "integrity": "sha1-HdTo6pwxgjUfuCD4eTTZkvf7kAc=", 1095 | "dev": true 1096 | }, 1097 | "popsicle-status": { 1098 | "version": "2.0.1", 1099 | "resolved": "https://registry.npmjs.org/popsicle-status/-/popsicle-status-2.0.1.tgz", 1100 | "integrity": "sha1-jdcMT+fGlBCa3XhP/oDqysHnso0=", 1101 | "dev": true 1102 | }, 1103 | "portfinder": { 1104 | "version": "1.0.13", 1105 | "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", 1106 | "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", 1107 | "requires": { 1108 | "async": "^1.5.2", 1109 | "debug": "^2.2.0", 1110 | "mkdirp": "0.5.x" 1111 | } 1112 | }, 1113 | "prepend-http": { 1114 | "version": "1.0.4", 1115 | "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", 1116 | "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", 1117 | "dev": true 1118 | }, 1119 | "process-nextick-args": { 1120 | "version": "1.0.7", 1121 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", 1122 | "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", 1123 | "dev": true 1124 | }, 1125 | "promise-finally": { 1126 | "version": "3.0.0", 1127 | "resolved": "https://registry.npmjs.org/promise-finally/-/promise-finally-3.0.0.tgz", 1128 | "integrity": "sha1-3dXQ+JVDKxIGzrjaEnUGTRjnqiM=", 1129 | "dev": true 1130 | }, 1131 | "pseudomap": { 1132 | "version": "1.0.2", 1133 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 1134 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", 1135 | "dev": true 1136 | }, 1137 | "punycode": { 1138 | "version": "1.4.1", 1139 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", 1140 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", 1141 | "dev": true 1142 | }, 1143 | "qs": { 1144 | "version": "2.3.3", 1145 | "resolved": "https://registry.npmjs.org/qs/-/qs-2.3.3.tgz", 1146 | "integrity": "sha1-6eha2+ddoLvkyOBHaghikPhjtAQ=" 1147 | }, 1148 | "rc": { 1149 | "version": "1.2.2", 1150 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz", 1151 | "integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=", 1152 | "dev": true, 1153 | "requires": { 1154 | "deep-extend": "~0.4.0", 1155 | "ini": "~1.3.0", 1156 | "minimist": "^1.2.0", 1157 | "strip-json-comments": "~2.0.1" 1158 | } 1159 | }, 1160 | "readable-stream": { 1161 | "version": "2.3.3", 1162 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", 1163 | "integrity": "sha1-No8lEtefnUb9/HE0mueHi7weuVw=", 1164 | "dev": true, 1165 | "requires": { 1166 | "core-util-is": "~1.0.0", 1167 | "inherits": "~2.0.3", 1168 | "isarray": "~1.0.0", 1169 | "process-nextick-args": "~1.0.6", 1170 | "safe-buffer": "~5.1.1", 1171 | "string_decoder": "~1.0.3", 1172 | "util-deprecate": "~1.0.1" 1173 | } 1174 | }, 1175 | "registry-auth-token": { 1176 | "version": "3.3.1", 1177 | "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", 1178 | "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", 1179 | "dev": true, 1180 | "requires": { 1181 | "rc": "^1.1.6", 1182 | "safe-buffer": "^5.0.1" 1183 | } 1184 | }, 1185 | "registry-url": { 1186 | "version": "3.1.0", 1187 | "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", 1188 | "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", 1189 | "dev": true, 1190 | "requires": { 1191 | "rc": "^1.0.1" 1192 | } 1193 | }, 1194 | "requires-port": { 1195 | "version": "1.0.0", 1196 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", 1197 | "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" 1198 | }, 1199 | "restore-cursor": { 1200 | "version": "1.0.1", 1201 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", 1202 | "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", 1203 | "dev": true, 1204 | "requires": { 1205 | "exit-hook": "^1.0.0", 1206 | "onetime": "^1.0.0" 1207 | } 1208 | }, 1209 | "rimraf": { 1210 | "version": "2.6.2", 1211 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", 1212 | "integrity": "sha1-LtgVDSShbqhlHm1u8PR8QVjOejY=", 1213 | "dev": true, 1214 | "requires": { 1215 | "glob": "^7.0.5" 1216 | } 1217 | }, 1218 | "safe-buffer": { 1219 | "version": "5.1.1", 1220 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 1221 | "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=", 1222 | "dev": true 1223 | }, 1224 | "semver": { 1225 | "version": "5.0.3", 1226 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz", 1227 | "integrity": "sha1-d0Zt5YnNXTyV8TiqeLxWmjy10no=", 1228 | "dev": true 1229 | }, 1230 | "semver-diff": { 1231 | "version": "2.1.0", 1232 | "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", 1233 | "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", 1234 | "dev": true, 1235 | "requires": { 1236 | "semver": "^5.0.3" 1237 | } 1238 | }, 1239 | "shebang-command": { 1240 | "version": "1.2.0", 1241 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 1242 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 1243 | "dev": true, 1244 | "requires": { 1245 | "shebang-regex": "^1.0.0" 1246 | } 1247 | }, 1248 | "shebang-regex": { 1249 | "version": "1.0.0", 1250 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 1251 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", 1252 | "dev": true 1253 | }, 1254 | "signal-exit": { 1255 | "version": "3.0.2", 1256 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 1257 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", 1258 | "dev": true 1259 | }, 1260 | "slice-ansi": { 1261 | "version": "1.0.0", 1262 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", 1263 | "integrity": "sha1-BE8aSdiEL/MHqta1Be0Xi9lQE00=", 1264 | "dev": true, 1265 | "requires": { 1266 | "is-fullwidth-code-point": "^2.0.0" 1267 | } 1268 | }, 1269 | "sort-keys": { 1270 | "version": "1.1.2", 1271 | "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", 1272 | "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", 1273 | "dev": true, 1274 | "requires": { 1275 | "is-plain-obj": "^1.0.0" 1276 | } 1277 | }, 1278 | "string-template": { 1279 | "version": "1.0.0", 1280 | "resolved": "https://registry.npmjs.org/string-template/-/string-template-1.0.0.tgz", 1281 | "integrity": "sha1-np8iM9wA8hhxjsN5oopWc+zKi5Y=", 1282 | "dev": true 1283 | }, 1284 | "string-width": { 1285 | "version": "2.1.1", 1286 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 1287 | "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", 1288 | "dev": true, 1289 | "requires": { 1290 | "is-fullwidth-code-point": "^2.0.0", 1291 | "strip-ansi": "^4.0.0" 1292 | }, 1293 | "dependencies": { 1294 | "ansi-regex": { 1295 | "version": "3.0.0", 1296 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 1297 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 1298 | "dev": true 1299 | }, 1300 | "strip-ansi": { 1301 | "version": "4.0.0", 1302 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 1303 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 1304 | "dev": true, 1305 | "requires": { 1306 | "ansi-regex": "^3.0.0" 1307 | } 1308 | } 1309 | } 1310 | }, 1311 | "string_decoder": { 1312 | "version": "1.0.3", 1313 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 1314 | "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", 1315 | "dev": true, 1316 | "requires": { 1317 | "safe-buffer": "~5.1.0" 1318 | } 1319 | }, 1320 | "strip-ansi": { 1321 | "version": "3.0.1", 1322 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 1323 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 1324 | "dev": true, 1325 | "requires": { 1326 | "ansi-regex": "^2.0.0" 1327 | } 1328 | }, 1329 | "strip-bom": { 1330 | "version": "3.0.0", 1331 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 1332 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 1333 | "dev": true 1334 | }, 1335 | "strip-eof": { 1336 | "version": "1.0.0", 1337 | "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", 1338 | "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", 1339 | "dev": true 1340 | }, 1341 | "strip-json-comments": { 1342 | "version": "2.0.1", 1343 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 1344 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", 1345 | "dev": true 1346 | }, 1347 | "supports-color": { 1348 | "version": "2.0.0", 1349 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 1350 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 1351 | "dev": true 1352 | }, 1353 | "term-size": { 1354 | "version": "1.2.0", 1355 | "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", 1356 | "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", 1357 | "dev": true, 1358 | "requires": { 1359 | "execa": "^0.7.0" 1360 | } 1361 | }, 1362 | "thenify": { 1363 | "version": "3.3.0", 1364 | "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz", 1365 | "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", 1366 | "dev": true, 1367 | "requires": { 1368 | "any-promise": "^1.0.0" 1369 | } 1370 | }, 1371 | "throat": { 1372 | "version": "3.2.0", 1373 | "resolved": "https://registry.npmjs.org/throat/-/throat-3.2.0.tgz", 1374 | "integrity": "sha1-UMsGcO28QCN7njR9fh+I5GIK+DY=", 1375 | "dev": true 1376 | }, 1377 | "timed-out": { 1378 | "version": "4.0.1", 1379 | "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", 1380 | "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", 1381 | "dev": true 1382 | }, 1383 | "touch": { 1384 | "version": "1.0.0", 1385 | "resolved": "https://registry.npmjs.org/touch/-/touch-1.0.0.tgz", 1386 | "integrity": "sha1-RJy+LbrlqMgDjjDXH6D/RklHxN4=", 1387 | "dev": true, 1388 | "requires": { 1389 | "nopt": "~1.0.10" 1390 | } 1391 | }, 1392 | "tough-cookie": { 1393 | "version": "2.3.3", 1394 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", 1395 | "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", 1396 | "dev": true, 1397 | "requires": { 1398 | "punycode": "^1.4.1" 1399 | } 1400 | }, 1401 | "typedarray": { 1402 | "version": "0.0.6", 1403 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 1404 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", 1405 | "dev": true 1406 | }, 1407 | "typescript": { 1408 | "version": "2.9.2", 1409 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz", 1410 | "integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==", 1411 | "dev": true 1412 | }, 1413 | "typings": { 1414 | "version": "2.1.1", 1415 | "resolved": "https://registry.npmjs.org/typings/-/typings-2.1.1.tgz", 1416 | "integrity": "sha1-usxp0lWXCkeOCfdsf2iZddU1p4o=", 1417 | "dev": true, 1418 | "requires": { 1419 | "archy": "^1.0.0", 1420 | "bluebird": "^3.1.1", 1421 | "chalk": "^1.0.0", 1422 | "cli-truncate": "^1.0.0", 1423 | "columnify": "^1.5.2", 1424 | "elegant-spinner": "^1.0.1", 1425 | "has-unicode": "^2.0.1", 1426 | "listify": "^1.0.0", 1427 | "log-update": "^1.0.2", 1428 | "minimist": "^1.2.0", 1429 | "promise-finally": "^3.0.0", 1430 | "typings-core": "^2.3.3", 1431 | "update-notifier": "^2.0.0", 1432 | "wordwrap": "^1.0.0", 1433 | "xtend": "^4.0.1" 1434 | }, 1435 | "dependencies": { 1436 | "wordwrap": { 1437 | "version": "1.0.0", 1438 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", 1439 | "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", 1440 | "dev": true 1441 | } 1442 | } 1443 | }, 1444 | "typings-core": { 1445 | "version": "2.3.3", 1446 | "resolved": "https://registry.npmjs.org/typings-core/-/typings-core-2.3.3.tgz", 1447 | "integrity": "sha1-CexUzVsR3V8e8vwKsx03ACyita0=", 1448 | "dev": true, 1449 | "requires": { 1450 | "array-uniq": "^1.0.2", 1451 | "configstore": "^3.0.0", 1452 | "debug": "^2.2.0", 1453 | "detect-indent": "^5.0.0", 1454 | "graceful-fs": "^4.1.2", 1455 | "has": "^1.0.1", 1456 | "invariant": "^2.2.0", 1457 | "is-absolute": "^0.2.3", 1458 | "jspm-config": "^0.3.0", 1459 | "listify": "^1.0.0", 1460 | "lockfile": "^1.0.1", 1461 | "make-error-cause": "^1.2.1", 1462 | "mkdirp": "^0.5.1", 1463 | "object.pick": "^1.1.1", 1464 | "parse-json": "^2.2.0", 1465 | "popsicle": "^9.0.0", 1466 | "popsicle-proxy-agent": "^3.0.0", 1467 | "popsicle-retry": "^3.2.0", 1468 | "popsicle-rewrite": "^1.0.0", 1469 | "popsicle-status": "^2.0.0", 1470 | "promise-finally": "^3.0.0", 1471 | "rc": "^1.1.5", 1472 | "rimraf": "^2.4.4", 1473 | "sort-keys": "^1.0.0", 1474 | "string-template": "^1.0.0", 1475 | "strip-bom": "^3.0.0", 1476 | "thenify": "^3.1.0", 1477 | "throat": "^3.0.0", 1478 | "touch": "^1.0.0", 1479 | "typescript": "^2.1.4", 1480 | "xtend": "^4.0.0", 1481 | "zip-object": "^0.1.0" 1482 | } 1483 | }, 1484 | "unc-path-regex": { 1485 | "version": "0.1.2", 1486 | "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", 1487 | "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", 1488 | "dev": true 1489 | }, 1490 | "union": { 1491 | "version": "0.4.6", 1492 | "resolved": "https://registry.npmjs.org/union/-/union-0.4.6.tgz", 1493 | "integrity": "sha1-GY+9rrolTniLDvy2MLwR8kopWeA=", 1494 | "requires": { 1495 | "qs": "~2.3.3" 1496 | } 1497 | }, 1498 | "unique-string": { 1499 | "version": "1.0.0", 1500 | "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", 1501 | "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", 1502 | "dev": true, 1503 | "requires": { 1504 | "crypto-random-string": "^1.0.0" 1505 | } 1506 | }, 1507 | "unzip-response": { 1508 | "version": "2.0.1", 1509 | "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", 1510 | "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", 1511 | "dev": true 1512 | }, 1513 | "update-notifier": { 1514 | "version": "2.3.0", 1515 | "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.3.0.tgz", 1516 | "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=", 1517 | "dev": true, 1518 | "requires": { 1519 | "boxen": "^1.2.1", 1520 | "chalk": "^2.0.1", 1521 | "configstore": "^3.0.0", 1522 | "import-lazy": "^2.1.0", 1523 | "is-installed-globally": "^0.1.0", 1524 | "is-npm": "^1.0.0", 1525 | "latest-version": "^3.0.0", 1526 | "semver-diff": "^2.0.0", 1527 | "xdg-basedir": "^3.0.0" 1528 | }, 1529 | "dependencies": { 1530 | "ansi-styles": { 1531 | "version": "3.2.0", 1532 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", 1533 | "integrity": "sha1-wVm41b4PnlpvNG2rlPFs4CIWG4g=", 1534 | "dev": true, 1535 | "requires": { 1536 | "color-convert": "^1.9.0" 1537 | } 1538 | }, 1539 | "chalk": { 1540 | "version": "2.2.0", 1541 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.0.tgz", 1542 | "integrity": "sha512-0BMM/2hG3ZaoPfR6F+h/oWpZtsh3b/s62TjSM6MGCJWEbJDN1acqCXvyhhZsDSVFklpebUoQ5O1kKC7lOzrn9g==", 1543 | "dev": true, 1544 | "requires": { 1545 | "ansi-styles": "^3.1.0", 1546 | "escape-string-regexp": "^1.0.5", 1547 | "supports-color": "^4.0.0" 1548 | } 1549 | }, 1550 | "supports-color": { 1551 | "version": "4.5.0", 1552 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", 1553 | "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", 1554 | "dev": true, 1555 | "requires": { 1556 | "has-flag": "^2.0.0" 1557 | } 1558 | } 1559 | } 1560 | }, 1561 | "url-join": { 1562 | "version": "2.0.2", 1563 | "resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.2.tgz", 1564 | "integrity": "sha1-wHJ1aWetJLi1nldBVRyqx49QuLc=" 1565 | }, 1566 | "url-parse-lax": { 1567 | "version": "1.0.0", 1568 | "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", 1569 | "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", 1570 | "dev": true, 1571 | "requires": { 1572 | "prepend-http": "^1.0.1" 1573 | } 1574 | }, 1575 | "util-deprecate": { 1576 | "version": "1.0.2", 1577 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1578 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 1579 | "dev": true 1580 | }, 1581 | "wcwidth": { 1582 | "version": "1.0.1", 1583 | "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", 1584 | "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", 1585 | "dev": true, 1586 | "requires": { 1587 | "defaults": "^1.0.3" 1588 | } 1589 | }, 1590 | "which": { 1591 | "version": "1.3.0", 1592 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", 1593 | "integrity": "sha1-/wS9/AEO5UfXgL7DjhrBwnd9JTo=", 1594 | "dev": true, 1595 | "requires": { 1596 | "isexe": "^2.0.0" 1597 | } 1598 | }, 1599 | "widest-line": { 1600 | "version": "1.0.0", 1601 | "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz", 1602 | "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=", 1603 | "dev": true, 1604 | "requires": { 1605 | "string-width": "^1.0.1" 1606 | }, 1607 | "dependencies": { 1608 | "is-fullwidth-code-point": { 1609 | "version": "1.0.0", 1610 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", 1611 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", 1612 | "dev": true, 1613 | "requires": { 1614 | "number-is-nan": "^1.0.0" 1615 | } 1616 | }, 1617 | "string-width": { 1618 | "version": "1.0.2", 1619 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", 1620 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", 1621 | "dev": true, 1622 | "requires": { 1623 | "code-point-at": "^1.0.0", 1624 | "is-fullwidth-code-point": "^1.0.0", 1625 | "strip-ansi": "^3.0.0" 1626 | } 1627 | } 1628 | } 1629 | }, 1630 | "wordwrap": { 1631 | "version": "0.0.3", 1632 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", 1633 | "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" 1634 | }, 1635 | "wrappy": { 1636 | "version": "1.0.2", 1637 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1638 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 1639 | "dev": true 1640 | }, 1641 | "write-file-atomic": { 1642 | "version": "2.3.0", 1643 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", 1644 | "integrity": "sha1-H/YVdcLipOjlENb6TiQ8zhg5mas=", 1645 | "dev": true, 1646 | "requires": { 1647 | "graceful-fs": "^4.1.11", 1648 | "imurmurhash": "^0.1.4", 1649 | "signal-exit": "^3.0.2" 1650 | } 1651 | }, 1652 | "xdg-basedir": { 1653 | "version": "3.0.0", 1654 | "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", 1655 | "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", 1656 | "dev": true 1657 | }, 1658 | "xtend": { 1659 | "version": "4.0.1", 1660 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", 1661 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", 1662 | "dev": true 1663 | }, 1664 | "yallist": { 1665 | "version": "2.1.2", 1666 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 1667 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", 1668 | "dev": true 1669 | }, 1670 | "zip-object": { 1671 | "version": "0.1.0", 1672 | "resolved": "https://registry.npmjs.org/zip-object/-/zip-object-0.1.0.tgz", 1673 | "integrity": "sha1-waDaBMiMg3dW4khoCgP/kC7D9To=", 1674 | "dev": true 1675 | } 1676 | } 1677 | } 1678 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "freestyle-libre-parser-viewer", 3 | "version": "1.0.2", 4 | "description": "A parser library and viewer for CSV generated by the Abbot Freestyle Libre flash glucose meter.", 5 | "main": "index.html", 6 | "repository": { 7 | "type": "git", 8 | "url": "git://github.com/nahog/freestyle-libre-parser-viewer.git" 9 | }, 10 | "scripts": { 11 | "postinstall": "typings install && tsc" 12 | }, 13 | "author": "Nicolas Padula ", 14 | "license": "MIT", 15 | "devDependencies": { 16 | "bootstrap": "^3.3.7", 17 | "highcharts": "^5.0.15", 18 | "jquery": "^3.3.1", 19 | "moment": "^2.22.2", 20 | "typescript": "^2.9.2", 21 | "typings": "^2.1.0" 22 | }, 23 | "dependencies": { 24 | "http-server": "^0.10.0" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /screenshot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nahog/freestyle-libre-parser-viewer/fc9ab38f6d36ca770b0064f9c9a7b02d6e578571/screenshot.jpg -------------------------------------------------------------------------------- /test.tsv: -------------------------------------------------------------------------------- 1 | Patient Name 2 | ID Time Record Type Historic Glucose (mmol/L) Scan Glucose (mmol/L) Non-numeric Rapid-Acting Insulin Rapid-Acting Insulin (units) Non-numeric Food Carbohydrates (grams) Non-numeric Long-Acting Insulin Long-Acting Insulin (units) Notes Strip Glucose (mmol/L) Ketone (mmol/L) Meal Insulin (units) Correction Insulin (units) User Change Insulin (units) Previous Time Updated Time 3 | 147 2016/11/15 00:04 1 6.4 4 | 150 2016/11/15 00:08 0 6.2 5 | 151 2016/11/15 00:33 1 6.2 6 | 153 2016/11/15 00:23 0 6.1 7 | 154 2016/11/15 00:38 0 5.2 8 | 155 2016/11/15 01:07 1 4.7 9 | 157 2016/11/15 00:55 0 4.9 10 | 158 2016/11/15 01:10 0 5.8 11 | 159 2016/11/15 01:25 0 6.3 12 | 160 2016/11/15 01:40 0 6.5 13 | 161 2016/11/15 01:55 0 6.5 14 | 162 2016/11/15 02:10 0 6.1 15 | 163 2016/11/15 02:25 0 5.4 16 | 164 2016/11/15 02:40 0 5.2 17 | 165 2016/11/15 02:57 1 6.5 18 | 167 2016/11/15 02:57 0 5.2 19 | 168 2016/11/15 03:12 0 4.5 20 | 169 2016/11/15 03:27 0 4.4 21 | 170 2016/11/15 03:42 0 4.3 22 | 171 2016/11/15 03:57 0 4.4 23 | 172 2016/11/15 04:12 0 4.9 24 | 173 2016/11/15 04:27 0 5.6 25 | 174 2016/11/15 04:42 0 5.9 26 | 175 2016/11/15 04:57 0 5.6 27 | 176 2016/11/15 05:12 0 5.3 28 | 177 2016/11/15 05:27 0 5.3 29 | 178 2016/11/15 05:42 0 5.4 30 | 179 2016/11/15 05:57 0 5.4 31 | 180 2016/11/15 06:12 0 5.7 32 | 181 2016/11/15 06:27 0 6.1 33 | 182 2016/11/15 06:42 0 6.1 34 | 183 2016/11/15 06:57 0 5.4 35 | 184 2016/11/15 07:12 0 5.3 36 | 185 2016/11/15 07:30 1 6.6 37 | 187 2016/11/15 07:27 0 6.4 38 | 188 2016/11/15 07:42 0 6.5 39 | 189 2016/11/15 07:57 0 6.4 40 | 190 2016/11/15 08:12 0 6.4 41 | 191 2016/11/15 08:27 0 6.3 42 | 192 2016/11/15 08:42 0 6.5 43 | 193 2016/11/15 08:57 0 6.6 44 | 194 2016/11/15 09:12 0 6.7 45 | 195 2016/11/15 09:27 0 7.1 46 | 196 2016/11/15 09:42 0 7.4 47 | 197 2016/11/15 10:00 1 6.3 48 | 199 2016/11/15 10:01 1 6.3 49 | 201 2016/11/15 09:58 0 7.6 50 | 202 2016/11/15 10:13 0 8.6 51 | 203 2016/11/15 10:28 0 8.3 52 | 204 2016/11/15 10:52 1 7.9 53 | 206 2016/11/15 10:43 0 6.8 54 | 207 2016/11/15 11:00 4 1.0 55 | 207 2016/11/15 11:00 4 32.0 56 | 207 2016/11/15 11:00 1 8.3 57 | 210 2016/11/15 10:59 0 8.3 58 | 211 2016/11/15 11:14 0 8.9 59 | 212 2016/11/15 11:29 0 9.2 60 | 213 2016/11/15 11:44 0 9.4 61 | 214 2016/11/15 11:59 0 9.3 62 | 215 2016/11/15 12:14 0 8.9 63 | 216 2016/11/15 12:29 0 8.4 64 | 217 2016/11/15 12:44 0 8.4 65 | 218 2016/11/15 13:08 4 6.0 66 | 218 2016/11/15 13:08 5 1 67 | 218 2016/11/15 13:08 1 8.2 68 | 221 2016/11/15 13:00 0 8.1 69 | 222 2016/11/15 13:15 0 7.7 70 | 223 2016/11/15 13:30 0 7.7 71 | 224 2016/11/15 13:45 0 8.6 72 | 225 2016/11/15 14:00 0 9.9 73 | 226 2016/11/15 14:21 4 2.0 74 | 226 2016/11/15 14:21 1 11.5 75 | 229 2016/11/15 14:15 0 11.6 76 | 230 2016/11/15 14:30 0 12.1 77 | 231 2016/11/15 14:45 0 11.8 78 | 232 2016/11/15 15:11 1 11.4 79 | 234 2016/11/15 15:01 0 11.7 80 | 235 2016/11/15 15:16 0 11.6 81 | 236 2016/11/15 15:31 0 11.1 82 | 237 2016/11/15 15:57 1 9.9 83 | 239 2016/11/15 15:46 0 10.1 84 | 240 2016/11/15 16:01 0 9.7 85 | 241 2016/11/15 16:16 0 9.3 86 | 242 2016/11/15 16:44 1 8.6 87 | 244 2016/11/15 16:31 0 8.6 88 | 245 2016/11/15 16:46 0 8.9 89 | 246 2016/11/15 17:01 0 9.8 90 | 247 2016/11/15 17:16 0 10.4 91 | 248 2016/11/15 17:31 0 10.8 92 | 249 2016/11/15 17:50 4 3.0 93 | 249 2016/11/15 17:50 1 11.7 94 | 252 2016/11/15 17:46 0 11.7 95 | 253 2016/11/15 18:01 0 12.2 96 | 254 2016/11/15 18:21 1 11.3 97 | 256 2016/11/15 18:17 0 11.5 98 | 257 2016/11/15 18:32 0 10.9 99 | 258 2016/11/15 18:47 0 10.9 100 | 259 2016/11/15 19:07 1 11.0 101 | 261 2016/11/15 19:12 4 5.0 102 | 261 2016/11/15 19:12 5 1 103 | 261 2016/11/15 19:12 1 10.5 104 | 264 2016/11/15 19:02 0 10.3 105 | 265 2016/11/15 19:17 0 9.6 106 | 266 2016/11/15 19:32 0 9.5 107 | 267 2016/11/15 19:47 0 9.6 108 | 268 2016/11/15 20:02 0 9.6 109 | 269 2016/11/15 20:19 1 9.7 110 | 271 2016/11/15 20:18 0 10.2 111 | 272 2016/11/15 20:33 0 10.8 112 | 273 2016/11/15 20:53 1 10.9 113 | 275 2016/11/15 20:48 0 11.1 114 | 276 2016/11/15 21:03 0 11.6 115 | 277 2016/11/15 21:20 4 4.0 116 | 277 2016/11/15 21:20 1 12.1 117 | 280 2016/11/15 21:18 0 12.1 118 | 281 2016/11/15 21:33 0 12.3 119 | 282 2016/11/15 21:48 0 12.4 120 | 283 2016/11/15 22:13 4 6.0 121 | 283 2016/11/15 22:13 1 13.3 122 | 286 2016/11/15 22:03 0 12.6 123 | 287 2016/11/15 22:18 0 12.8 124 | 288 2016/11/15 22:33 0 12.9 125 | 289 2016/11/15 22:57 1 13.4 126 | 291 2016/11/15 22:48 0 12.9 127 | 292 2016/11/15 23:05 1 12.6 128 | 294 2016/11/15 23:04 0 12.4 129 | 295 2016/11/15 23:23 1 10.8 130 | 297 2016/11/15 23:19 0 11.7 131 | 298 2016/11/15 23:34 0 11.4 132 | 299 2016/11/15 23:54 1 11.1 133 | 301 2016/11/15 23:49 0 11.7 134 | 302 2016/11/16 00:09 1 10.8 135 | 304 2016/11/16 00:04 0 10.9 136 | 305 2016/11/16 00:19 0 10.6 137 | 306 2016/11/16 00:41 1 9.9 138 | 308 2016/11/16 00:36 0 10.4 139 | 309 2016/11/16 00:51 0 8.9 140 | 310 2016/11/16 01:06 0 8.2 141 | 311 2016/11/16 01:21 0 9.3 142 | 312 2016/11/16 01:36 0 9.6 143 | 313 2016/11/16 01:51 0 9.3 144 | 314 2016/11/16 02:06 0 9.8 145 | 315 2016/11/16 02:21 0 10.6 146 | 316 2016/11/16 02:36 0 11.1 147 | 317 2016/11/16 02:51 0 11.3 148 | 318 2016/11/16 03:06 0 10.9 149 | 319 2016/11/16 03:21 0 10.2 150 | 320 2016/11/16 03:36 0 10.2 151 | 321 2016/11/16 03:51 0 10.7 152 | 322 2016/11/16 04:06 0 10.1 153 | 323 2016/11/16 04:21 0 9.1 154 | 324 2016/11/16 04:36 0 9.5 155 | 325 2016/11/16 04:51 0 10.1 156 | 326 2016/11/16 05:06 0 10.3 157 | 327 2016/11/16 05:22 1 10.6 158 | 329 2016/11/16 05:23 0 10.2 159 | 330 2016/11/16 05:38 0 9.1 160 | 331 2016/11/16 05:53 0 8.9 161 | 332 2016/11/16 06:08 0 9.1 162 | 333 2016/11/16 06:23 0 9.4 163 | 334 2016/11/16 06:38 0 10.2 164 | 335 2016/11/16 06:53 0 10.7 165 | 336 2016/11/16 07:08 0 10.8 166 | 337 2016/11/16 07:23 0 10.9 167 | 338 2016/11/16 07:47 1 10.3 168 | 340 2016/11/16 07:38 0 10.7 169 | 341 2016/11/16 07:53 0 10.3 170 | 342 2016/11/16 08:08 0 10.3 171 | 343 2016/11/16 08:23 0 11.6 172 | 344 2016/11/16 08:38 0 12.2 173 | 345 2016/11/16 08:57 4 4.0 174 | 345 2016/11/16 08:57 1 12.5 175 | 348 2016/11/16 08:54 0 12.5 176 | 349 2016/11/16 09:09 0 12.2 177 | 350 2016/11/16 09:24 0 11.3 178 | 351 2016/11/16 09:39 0 10.4 179 | 352 2016/11/16 09:54 0 10.2 180 | 353 2016/11/16 10:09 0 9.7 181 | 354 2016/11/16 10:24 0 8.9 182 | 355 2016/11/16 10:39 0 9.1 183 | 356 2016/11/16 10:54 0 9.1 184 | 357 2016/11/16 11:09 4 33.0 185 | 357 2016/11/16 11:09 1 8.6 186 | 360 2016/11/16 11:09 0 8.4 187 | 361 2016/11/16 11:24 0 7.9 188 | 362 2016/11/16 11:39 0 7.7 189 | 363 2016/11/16 11:54 0 7.2 190 | 364 2016/11/16 12:09 0 6.6 191 | 365 2016/11/16 12:36 1 6.7 192 | 367 2016/11/16 12:24 0 6.6 193 | 368 2016/11/16 12:39 0 6.4 194 | 369 2016/11/16 12:57 1 5.6 195 | 371 2016/11/16 12:55 0 5.6 196 | 372 2016/11/16 13:10 0 5.0 197 | 373 2016/11/16 13:25 1 4.7 198 | 375 2016/11/16 13:35 4 6.0 199 | 375 2016/11/16 13:35 5 1 200 | 375 2016/11/16 13:35 1 5.2 201 | 378 2016/11/16 13:25 0 4.9 202 | 379 2016/11/16 13:40 0 5.0 203 | 380 2016/11/16 13:55 0 5.2 204 | 381 2016/11/16 14:11 1 7.0 205 | 383 2016/11/16 14:11 0 7.2 206 | 384 2016/11/16 14:26 0 8.4 207 | 385 2016/11/16 14:41 0 8.5 208 | 386 2016/11/16 14:59 1 7.2 209 | 388 2016/11/16 14:56 0 8.3 210 | 389 2016/11/16 15:11 0 8.6 211 | 390 2016/11/16 15:33 1 9.0 212 | 392 2016/11/16 15:26 0 9.4 213 | 393 2016/11/16 15:41 0 10.6 214 | 394 2016/11/16 15:57 4 3.0 215 | 394 2016/11/16 15:57 1 11.3 216 | 397 2016/11/16 15:56 0 11.7 217 | 398 2016/11/16 16:11 0 12.7 218 | 399 2016/11/16 16:26 4 2.0 219 | 399 2016/11/16 16:26 1 13.3 220 | 402 2016/11/16 16:26 0 13.2 221 | 403 2016/11/16 16:50 1 12.7 222 | 405 2016/11/16 16:41 0 13.2 223 | 406 2016/11/16 16:56 1 12.3 224 | 408 2016/11/16 16:57 0 12.0 225 | 409 2016/11/16 17:12 0 11.1 226 | 410 2016/11/16 17:41 1 10.7 227 | 412 2016/11/16 17:27 0 10.3 228 | 413 2016/11/16 17:42 0 9.6 229 | 414 2016/11/16 18:08 1 7.8 230 | 416 2016/11/16 17:57 0 7.8 231 | 417 2016/11/16 18:12 0 6.8 232 | 418 2016/11/16 18:35 1 6.3 233 | 420 2016/11/16 18:28 0 6.3 234 | 421 2016/11/16 18:56 1 5.9 235 | 423 2016/11/16 18:43 0 5.9 236 | 424 2016/11/16 18:58 0 6.1 237 | 425 2016/11/16 19:13 0 6.6 238 | 426 2016/11/16 19:28 0 7.4 239 | 427 2016/11/16 19:47 4 4.0 240 | 427 2016/11/16 19:47 1 8.9 241 | 430 2016/11/16 19:43 0 8.7 242 | 431 2016/11/16 19:58 0 9.4 243 | 432 2016/11/16 20:19 1 9.7 244 | 434 2016/11/16 20:13 0 9.8 245 | 435 2016/11/16 20:28 0 9.8 246 | 436 2016/11/16 20:54 1 8.9 247 | 438 2016/11/16 20:44 0 9.6 248 | 439 2016/11/16 20:59 0 9.2 249 | 440 2016/11/16 21:14 0 8.8 250 | 441 2016/11/16 21:30 4 7.0 251 | 441 2016/11/16 21:30 5 1 252 | 441 2016/11/16 21:30 1 8.2 253 | 444 2016/11/16 21:29 0 8.2 254 | 445 2016/11/16 21:44 0 8.3 255 | 446 2016/11/16 21:59 0 8.7 256 | 447 2016/11/16 22:16 1 9.5 257 | 449 2016/11/16 22:15 0 9.2 258 | 450 2016/11/16 22:30 0 9.6 259 | 451 2016/11/16 22:45 0 10.6 260 | 452 2016/11/16 23:00 4 2.0 261 | 452 2016/11/16 23:00 1 10.7 262 | 455 2016/11/16 23:00 0 10.5 263 | 456 2016/11/16 23:15 0 10.0 264 | 457 2016/11/16 23:30 0 9.4 265 | 458 2016/11/16 23:45 0 9.2 266 | 459 2016/11/17 00:09 1 9.2 267 | 461 2016/11/17 00:00 0 9.6 268 | 462 2016/11/17 00:15 0 9.7 269 | 463 2016/11/17 00:39 1 9.2 270 | 465 2016/11/17 00:30 0 9.5 271 | 466 2016/11/17 00:45 0 9.1 272 | 467 2016/11/17 01:01 1 8.1 273 | 469 2016/11/17 01:01 0 8.2 274 | 470 2016/11/17 01:16 0 7.9 275 | 471 2016/11/17 01:31 0 7.5 276 | 472 2016/11/17 02:00 1 7.7 277 | 474 2016/11/17 01:47 0 7.6 278 | 475 2016/11/17 02:02 0 7.8 279 | 476 2016/11/17 02:17 0 7.6 280 | 477 2016/11/17 02:32 0 7.4 281 | 478 2016/11/17 02:47 0 7.3 282 | 479 2016/11/17 03:02 0 7.2 283 | 480 2016/11/17 03:17 0 7.9 284 | 481 2016/11/17 03:32 0 9.4 285 | 482 2016/11/17 03:47 0 10.2 286 | 483 2016/11/17 04:02 0 9.7 287 | 484 2016/11/17 04:17 0 10.2 288 | 485 2016/11/17 04:32 0 10.4 289 | 486 2016/11/17 04:47 0 10.3 290 | 487 2016/11/17 05:02 0 11.1 291 | 488 2016/11/17 05:17 0 11.0 292 | 489 2016/11/17 05:32 0 9.8 293 | 490 2016/11/17 05:47 0 9.7 294 | 491 2016/11/17 06:02 0 10.3 295 | 492 2016/11/17 06:29 4 2.0 296 | 492 2016/11/17 06:29 1 11.3 297 | 495 2016/11/17 06:18 0 11.3 298 | 496 2016/11/17 06:33 0 12.2 299 | 497 2016/11/17 06:48 0 11.7 300 | 498 2016/11/17 07:03 0 10.6 301 | 499 2016/11/17 07:18 0 10.5 302 | 500 2016/11/17 07:33 0 11.2 303 | 501 2016/11/17 07:55 1 11.4 304 | 503 2016/11/17 07:49 0 11.2 305 | 504 2016/11/17 08:04 0 10.2 306 | 505 2016/11/17 08:19 0 10.4 307 | 506 2016/11/17 08:34 0 11.7 308 | 507 2016/11/17 08:49 0 11.9 309 | 508 2016/11/17 09:04 0 11.9 310 | 509 2016/11/17 09:19 0 12.1 311 | 510 2016/11/17 09:34 0 11.6 312 | 511 2016/11/17 09:49 0 10.5 313 | 512 2016/11/17 10:04 0 11.2 314 | 513 2016/11/17 10:19 0 12.6 315 | 514 2016/11/17 10:34 0 12.7 316 | 515 2016/11/17 10:59 4 2.0 317 | 515 2016/11/17 10:59 4 33.0 318 | 515 2016/11/17 10:59 1 11.6 319 | 518 2016/11/17 10:50 0 11.9 320 | 519 2016/11/17 11:05 0 12.4 321 | 520 2016/11/17 11:20 0 12.3 322 | 521 2016/11/17 11:35 0 11.8 323 | 522 2016/11/17 12:02 1 12.6 324 | 524 2016/11/17 11:50 0 12.2 325 | 525 2016/11/17 12:06 1 12.2 326 | 527 2016/11/17 12:06 0 10.8 327 | 528 2016/11/17 12:21 0 9.7 328 | 529 2016/11/17 12:36 0 10.1 329 | 530 2016/11/17 12:51 0 9.8 330 | 531 2016/11/17 13:06 0 9.1 331 | 532 2016/11/17 13:24 1 8.3 332 | 534 2016/11/17 13:22 0 8.4 333 | 535 2016/11/17 13:37 0 7.6 334 | 536 2016/11/17 13:52 0 7.3 335 | 537 2016/11/17 14:07 0 7.2 336 | 538 2016/11/17 14:22 0 6.9 337 | 539 2016/11/17 14:37 0 6.5 338 | 540 2016/11/17 14:52 0 6.3 339 | 541 2016/11/17 15:07 0 6.2 340 | 542 2016/11/17 15:26 4 6.0 341 | 542 2016/11/17 15:26 5 1 342 | 542 2016/11/17 15:26 1 6.2 343 | 545 2016/11/17 15:22 0 6.1 344 | 546 2016/11/17 15:37 0 5.8 345 | 547 2016/11/17 15:52 0 5.8 346 | 548 2016/11/17 16:07 0 6.8 347 | 549 2016/11/17 16:22 0 7.9 348 | 550 2016/11/17 16:39 1 8.6 349 | 552 2016/11/17 16:38 0 8.7 350 | 553 2016/11/17 16:53 0 8.7 351 | 554 2016/11/17 17:08 0 8.8 352 | 555 2016/11/17 17:23 0 9.6 353 | 556 2016/11/17 17:40 4 3.0 354 | 556 2016/11/17 17:40 1 10.7 355 | 559 2016/11/17 17:38 0 10.7 356 | 560 2016/11/17 17:53 0 11.3 357 | 561 2016/11/17 18:18 1 11.9 358 | 563 2016/11/17 18:08 0 11.8 359 | 564 2016/11/17 18:23 0 12.1 360 | 565 2016/11/17 18:39 1 11.9 361 | 567 2016/11/17 18:39 0 11.8 362 | 568 2016/11/17 18:54 0 11.8 363 | 569 2016/11/17 19:22 1 10.9 364 | 571 2016/11/17 19:09 0 11.4 365 | 572 2016/11/17 19:24 0 11.2 366 | 573 2016/11/17 19:39 0 10.7 367 | 574 2016/11/17 19:54 0 10.6 368 | 575 2016/11/17 20:10 4 3.0 369 | 575 2016/11/17 20:10 1 10.0 370 | 578 2016/11/17 20:09 0 9.9 371 | 579 2016/11/17 20:24 0 9.6 372 | 580 2016/11/17 20:52 1 8.7 373 | 582 2016/11/17 20:39 0 9.3 374 | 583 2016/11/17 20:54 0 8.8 375 | 584 2016/11/17 21:18 1 7.9 376 | 586 2016/11/17 21:09 0 8.2 377 | 587 2016/11/17 21:24 0 8.1 378 | 588 2016/11/17 21:50 4 8.0 379 | 588 2016/11/17 21:50 5 1 380 | 588 2016/11/17 21:50 1 7.8 381 | 591 2016/11/17 21:39 0 8.0 382 | 592 2016/11/17 21:54 0 7.9 383 | 593 2016/11/17 22:09 0 8.2 384 | 594 2016/11/17 22:35 1 9.1 385 | 596 2016/11/17 22:25 0 8.7 386 | 597 2016/11/17 22:40 0 8.7 387 | 598 2016/11/17 23:09 1 8.1 388 | 600 2016/11/17 22:56 0 7.9 389 | 601 2016/11/17 23:11 0 6.9 390 | 602 2016/11/17 23:26 0 6.2 391 | 603 2016/11/17 23:41 0 6.1 392 | 604 2016/11/17 23:58 1 5.7 393 | 606 2016/11/17 23:56 0 5.8 394 | 607 2016/11/18 00:11 0 5.8 395 | 608 2016/11/18 00:26 0 6.7 396 | 609 2016/11/18 00:49 1 8.2 397 | 611 2016/11/18 00:41 0 8.1 398 | 612 2016/11/18 00:56 0 8.4 399 | 613 2016/11/18 01:12 1 6.4 400 | 615 2016/11/18 01:15 0 7.2 401 | 616 2016/11/18 01:30 0 7.5 402 | 617 2016/11/18 01:45 0 7.3 403 | 618 2016/11/18 02:00 0 6.8 404 | 619 2016/11/18 02:15 0 6.9 405 | 620 2016/11/18 02:30 0 6.5 406 | 621 2016/11/18 02:45 0 5.8 407 | 622 2016/11/18 03:00 0 5.8 408 | 623 2016/11/18 03:15 0 6.3 409 | 624 2016/11/18 03:30 0 6.8 410 | 625 2016/11/18 03:45 0 6.9 411 | 626 2016/11/18 04:00 0 7.3 412 | 627 2016/11/18 04:15 0 7.7 413 | 628 2016/11/18 04:30 0 7.8 414 | 629 2016/11/18 04:45 0 7.1 415 | 630 2016/11/18 05:00 0 6.4 416 | 631 2016/11/18 05:15 0 6.0 417 | 632 2016/11/18 05:30 0 6.1 418 | 633 2016/11/18 05:45 0 6.2 419 | 634 2016/11/18 06:00 0 6.3 420 | 635 2016/11/18 06:15 0 6.2 421 | 636 2016/11/18 06:30 0 6.0 422 | 637 2016/11/18 06:45 0 6.0 423 | 638 2016/11/18 07:00 0 6.3 424 | 639 2016/11/18 07:15 0 6.4 425 | 640 2016/11/18 07:30 0 5.9 426 | 641 2016/11/18 07:45 0 5.8 427 | 642 2016/11/18 08:00 0 5.8 428 | 643 2016/11/18 08:15 0 5.7 429 | 644 2016/11/18 08:30 0 5.7 430 | 645 2016/11/18 08:45 0 5.7 431 | 646 2016/11/18 09:00 1 5.4 432 | 648 2016/11/18 09:00 0 5.2 433 | 649 2016/11/18 09:28 1 5.3 434 | 651 2016/11/18 09:15 0 5.7 435 | 652 2016/11/18 09:30 0 5.6 436 | 653 2016/11/18 09:45 0 5.2 437 | 654 2016/11/18 10:00 0 5.4 438 | 655 2016/11/18 10:15 0 5.5 439 | 656 2016/11/18 10:30 0 5.4 440 | 657 2016/11/18 10:45 0 5.3 441 | 658 2016/11/18 11:00 4 33.0 442 | 658 2016/11/18 11:00 1 5.6 443 | 660 2016/11/18 11:01 0 5.8 444 | 661 2016/11/18 11:16 0 6.6 445 | 662 2016/11/18 11:31 0 7.3 446 | 663 2016/11/18 11:54 1 7.6 447 | 665 2016/11/18 11:46 0 7.5 448 | 666 2016/11/18 12:01 0 7.3 449 | 667 2016/11/18 12:16 0 7.2 450 | 668 2016/11/18 12:32 1 7.1 451 | 670 2016/11/18 12:31 0 7.2 452 | 671 2016/11/18 12:51 4 7.0 453 | 671 2016/11/18 12:51 1 6.9 454 | 674 2016/11/18 12:47 0 6.9 455 | 675 2016/11/18 13:02 0 7.2 456 | 676 2016/11/18 13:17 0 8.6 457 | 677 2016/11/18 13:32 0 10.3 458 | 678 2016/11/18 13:47 0 11.2 459 | 679 2016/11/18 14:15 1 10.4 460 | 681 2016/11/18 14:02 0 10.8 461 | 682 2016/11/18 14:17 0 10.2 462 | 683 2016/11/18 14:36 1 9.3 463 | 685 2016/11/18 14:33 0 9.3 464 | 686 2016/11/18 14:48 0 8.4 465 | 687 2016/11/18 15:03 0 8.1 466 | 688 2016/11/18 15:21 1 7.7 467 | 690 2016/11/18 15:17 0 7.7 468 | 691 2016/11/18 15:33 4 2.0 469 | 691 2016/11/18 15:33 1 7.7 470 | 694 2016/11/18 15:32 0 7.7 471 | 695 2016/11/18 15:47 0 7.4 472 | 696 2016/11/18 16:02 0 7.2 473 | 697 2016/11/18 16:31 4 2.0 474 | 697 2016/11/18 16:31 1 8.5 475 | 700 2016/11/18 16:18 0 7.9 476 | 701 2016/11/18 16:33 0 8.5 477 | 702 2016/11/18 17:00 1 8.2 478 | 704 2016/11/18 16:49 0 8.2 479 | 705 2016/11/18 17:04 0 7.6 480 | 706 2016/11/18 17:19 0 7.0 481 | 707 2016/11/18 17:34 0 6.8 482 | 708 2016/11/18 17:49 0 6.8 483 | 709 2016/11/18 18:04 0 6.8 484 | 710 2016/11/18 18:19 0 6.7 485 | 711 2016/11/18 18:37 1 6.6 486 | 713 2016/11/18 18:34 0 6.4 487 | 714 2016/11/18 18:59 1 6.1 488 | 716 2016/11/18 18:49 0 5.8 489 | 717 2016/11/18 19:04 0 4.8 490 | 718 2016/11/18 19:19 0 4.7 491 | 719 2016/11/18 19:34 0 4.6 492 | 720 2016/11/18 19:57 1 4.2 493 | 722 2016/11/18 19:50 0 4.1 494 | 723 2016/11/18 20:05 0 3.9 495 | 724 2016/11/18 20:28 1 4.8 496 | 726 2016/11/18 20:19 0 4.4 497 | 727 2016/11/18 20:42 1 5.0 498 | 729 2016/11/18 20:35 0 4.8 499 | 730 2016/11/18 20:57 4 6.0 500 | 730 2016/11/18 20:57 5 1 501 | 730 2016/11/18 20:57 1 5.9 502 | 733 2016/11/18 20:50 0 5.8 503 | 734 2016/11/18 21:05 0 7.8 504 | 735 2016/11/18 21:20 0 10.0 505 | 736 2016/11/18 21:41 4 3.0 506 | 736 2016/11/18 21:41 1 13.2 507 | 739 2016/11/18 21:35 0 12.3 508 | 740 2016/11/18 21:50 0 13.5 509 | 741 2016/11/18 22:05 0 14.1 510 | 742 2016/11/18 22:26 1 14.8 511 | 744 2016/11/18 22:21 0 14.7 512 | 745 2016/11/18 22:36 0 15.1 513 | 746 2016/11/18 22:51 0 15.7 514 | 747 2016/11/18 23:08 4 3.0 515 | 747 2016/11/18 23:08 1 16.2 516 | 751 2016/11/18 23:06 0 16.8 517 | 752 2016/11/18 23:21 0 16.9 518 | 753 2016/11/18 23:36 0 16.3 519 | 754 2016/11/19 00:04 1 14.1 520 | 756 2016/11/19 00:04 1 14.1 521 | 758 2016/11/18 23:51 0 15.0 522 | 759 2016/11/19 00:06 1 13.8 523 | 761 2016/11/19 00:15 1 12.6 524 | 763 2016/11/19 00:06 0 13.2 525 | 764 2016/11/19 00:21 0 11.8 526 | 765 2016/11/19 00:41 4 4.0 527 | 765 2016/11/19 00:41 5 1 528 | 765 2016/11/19 00:41 1 11.5 529 | 768 2016/11/19 00:37 0 11.3 530 | 769 2016/11/19 00:52 0 11.4 531 | 770 2016/11/19 01:07 0 12.3 532 | 771 2016/11/19 01:22 0 13.2 533 | 772 2016/11/19 01:37 1 12.7 534 | 774 2016/11/19 01:51 4 4.0 535 | 774 2016/11/19 01:51 1 13.3 536 | 777 2016/11/19 01:38 0 13.3 537 | 778 2016/11/19 01:53 0 12.4 538 | 779 2016/11/19 02:08 0 10.8 539 | 780 2016/11/19 02:23 0 9.7 540 | 781 2016/11/19 02:38 0 8.8 541 | 782 2016/11/19 02:53 0 7.9 542 | 783 2016/11/19 03:08 0 7.3 543 | 784 2016/11/19 03:23 0 6.8 544 | 785 2016/11/19 03:47 1 6.1 545 | 787 2016/11/19 03:41 0 6.5 546 | 788 2016/11/19 03:56 0 6.2 547 | 789 2016/11/19 04:11 0 5.7 548 | 790 2016/11/19 04:26 0 5.6 549 | 791 2016/11/19 04:41 0 5.8 550 | 792 2016/11/19 04:56 0 5.9 551 | 793 2016/11/19 05:11 0 6.1 552 | 794 2016/11/19 05:26 0 6.3 553 | 795 2016/11/19 05:41 0 6.4 554 | 796 2016/11/19 05:56 0 6.9 555 | 797 2016/11/19 06:11 0 7.5 556 | 798 2016/11/19 06:26 0 8.2 557 | 799 2016/11/19 06:41 0 8.3 558 | 800 2016/11/19 06:56 0 8.3 559 | 801 2016/11/19 07:11 0 8.7 560 | 802 2016/11/19 07:26 0 8.2 561 | 803 2016/11/19 07:41 0 7.3 562 | 804 2016/11/19 07:56 0 7.9 563 | 805 2016/11/19 08:11 0 9.5 564 | 806 2016/11/19 08:26 0 10.2 565 | 807 2016/11/19 08:41 0 10.1 566 | 808 2016/11/19 08:56 0 10.4 567 | 809 2016/11/19 09:11 0 11.7 568 | 810 2016/11/19 09:26 0 12.6 569 | 811 2016/11/19 09:52 4 4.0 570 | 811 2016/11/19 09:52 1 12.9 571 | 814 2016/11/19 09:41 0 12.8 572 | 815 2016/11/19 09:56 0 12.7 573 | 816 2016/11/19 10:11 0 12.4 574 | 817 2016/11/19 10:26 0 11.7 575 | 818 2016/11/19 10:41 0 10.6 576 | 819 2016/11/19 10:59 4 33.0 577 | 819 2016/11/19 10:59 1 10.2 578 | 821 2016/11/19 10:58 0 10.5 579 | 822 2016/11/19 11:13 0 10.3 580 | 823 2016/11/19 11:28 0 10.3 581 | 824 2016/11/19 11:43 0 9.8 582 | 825 2016/11/19 11:58 0 9.4 583 | 826 2016/11/19 12:13 0 9.2 584 | 827 2016/11/19 12:28 0 8.6 585 | 828 2016/11/19 12:43 0 8.1 586 | 829 2016/11/19 12:58 0 7.8 587 | 830 2016/11/19 13:25 1 7.7 588 | 832 2016/11/19 13:13 0 7.7 589 | 833 2016/11/19 13:28 0 7.7 590 | 834 2016/11/19 13:49 4 6.0 591 | 834 2016/11/19 13:49 1 7.2 592 | 837 2016/11/19 13:43 0 7.3 593 | 838 2016/11/19 13:58 0 7.4 594 | 839 2016/11/19 14:13 0 7.7 595 | 840 2016/11/19 14:40 1 7.9 596 | 842 2016/11/19 14:29 0 7.7 597 | 843 2016/11/19 14:44 0 7.3 598 | 844 2016/11/19 14:59 0 6.4 599 | 845 2016/11/19 15:18 1 5.6 600 | 847 2016/11/19 15:13 0 5.4 601 | 848 2016/11/19 15:28 0 5.3 602 | 849 2016/11/19 15:43 0 5.5 603 | 850 2016/11/19 16:03 1 5.2 604 | 852 2016/11/19 15:58 0 5.2 605 | 853 2016/11/19 16:13 0 4.6 606 | 854 2016/11/19 16:28 0 4.2 607 | 855 2016/11/19 16:49 1 4.3 608 | 857 2016/11/19 16:45 0 4.2 609 | 858 2016/11/19 17:00 0 4.2 610 | 859 2016/11/19 17:21 1 4.7 611 | 861 2016/11/19 17:15 0 4.7 612 | 862 2016/11/19 17:30 0 5.9 613 | 863 2016/11/19 17:45 0 7.4 614 | 864 2016/11/19 18:00 0 8.7 615 | 865 2016/11/19 18:15 0 10.4 616 | 866 2016/11/19 18:30 0 12.3 617 | 867 2016/11/19 18:45 0 13.3 618 | 868 2016/11/19 19:05 4 5.0 619 | 868 2016/11/19 19:05 1 13.9 620 | 871 2016/11/19 19:01 0 13.9 621 | 872 2016/11/19 19:16 0 14.3 622 | 873 2016/11/19 19:31 1 14.1 623 | 875 2016/11/19 19:31 0 13.7 624 | 876 2016/11/19 19:46 0 13.1 625 | 877 2016/11/19 20:14 1 10.8 626 | 879 2016/11/19 20:00 0 11.9 627 | 880 2016/11/19 20:27 1 10.0 628 | 882 2016/11/19 20:16 0 10.4 629 | 883 2016/11/19 20:31 0 9.6 630 | 884 2016/11/19 20:51 4 6.0 631 | 884 2016/11/19 20:51 5 1 632 | 884 2016/11/19 20:51 1 9.2 633 | 887 2016/11/19 20:46 0 9.2 634 | 888 2016/11/19 21:01 0 8.8 635 | 889 2016/11/19 21:16 0 8.4 636 | 890 2016/11/19 21:32 1 9.5 637 | 892 2016/11/19 21:31 0 9.3 638 | 893 2016/11/19 21:46 0 8.4 639 | 894 2016/11/19 22:01 0 7.6 640 | 895 2016/11/19 22:20 1 8.1 641 | 897 2016/11/19 22:17 0 8.1 642 | 898 2016/11/19 22:32 0 9.3 643 | 899 2016/11/19 22:47 0 10.0 644 | 900 2016/11/19 23:09 4 3.0 645 | 900 2016/11/19 23:09 1 10.6 646 | 903 2016/11/19 23:02 0 10.4 647 | 904 2016/11/19 23:17 0 10.8 648 | 905 2016/11/19 23:46 1 13.2 649 | 907 2016/11/19 23:32 0 11.2 650 | 908 2016/11/19 23:47 4 2.0 651 | 908 2016/11/19 23:47 1 13.1 652 | 911 2016/11/19 23:47 0 12.6 653 | 912 2016/11/20 00:15 1 14.8 654 | 914 2016/11/20 00:03 0 14.3 655 | 915 2016/11/20 00:18 0 14.8 656 | 916 2016/11/20 00:33 0 14.2 657 | 917 2016/11/20 00:57 1 13.9 658 | 919 2016/11/20 00:48 0 13.8 659 | 920 2016/11/20 01:03 0 14.1 660 | 921 2016/11/20 01:18 0 14.8 661 | 922 2016/11/20 01:45 4 5.0 662 | 922 2016/11/20 01:45 1 17.1 663 | 925 2016/11/20 01:33 0 16.4 664 | 926 2016/11/20 01:48 0 17.1 665 | 927 2016/11/20 02:03 0 17.0 666 | 928 2016/11/20 02:29 1 15.6 667 | 930 2016/11/20 02:20 0 16.2 668 | 931 2016/11/20 02:35 0 15.2 669 | 932 2016/11/20 02:50 0 14.5 670 | 933 2016/11/20 03:05 0 14.7 671 | 934 2016/11/20 03:20 0 14.4 672 | 935 2016/11/20 03:35 0 13.4 673 | 936 2016/11/20 03:50 0 13.4 674 | 937 2016/11/20 04:05 0 13.8 675 | 938 2016/11/20 04:20 0 13.4 676 | 939 2016/11/20 04:35 0 13.4 677 | 940 2016/11/20 04:50 0 13.8 678 | 941 2016/11/20 05:05 0 13.3 679 | 942 2016/11/20 05:20 0 12.7 680 | 943 2016/11/20 05:38 1 12.1 681 | 945 2016/11/20 05:36 0 12.6 682 | 946 2016/11/20 05:51 0 12.0 683 | 947 2016/11/20 06:06 0 11.5 684 | 948 2016/11/20 06:21 0 11.3 685 | 949 2016/11/20 06:36 0 11.6 686 | 950 2016/11/20 06:51 0 11.7 687 | 951 2016/11/20 07:06 0 11.1 688 | 952 2016/11/20 07:21 0 11.3 689 | 953 2016/11/20 07:36 0 11.8 690 | 954 2016/11/20 07:51 0 11.8 691 | 955 2016/11/20 08:06 0 11.3 692 | 956 2016/11/20 08:21 0 11.1 693 | 957 2016/11/20 08:36 0 11.2 694 | 958 2016/11/20 08:51 0 11.2 695 | 959 2016/11/20 09:06 0 11.1 696 | 960 2016/11/20 09:21 0 11.1 697 | 961 2016/11/20 09:36 0 11.0 698 | 962 2016/11/20 09:51 0 10.7 699 | 963 2016/11/20 10:08 4 3.0 700 | 963 2016/11/20 10:08 1 11.2 701 | 966 2016/11/20 10:07 0 11.2 702 | 967 2016/11/20 10:22 0 11.4 703 | 968 2016/11/20 10:37 0 11.2 704 | 969 2016/11/20 11:04 4 33.0 705 | 969 2016/11/20 11:04 1 10.0 706 | 971 2016/11/20 10:53 0 10.3 707 | 972 2016/11/20 11:08 0 9.8 708 | 973 2016/11/20 11:23 0 9.4 709 | 974 2016/11/20 11:38 0 8.8 710 | 975 2016/11/20 11:53 0 8.7 711 | 976 2016/11/20 12:08 0 8.4 712 | 977 2016/11/20 12:23 0 7.7 713 | 978 2016/11/20 12:38 0 7.7 714 | 979 2016/11/20 12:53 0 7.3 715 | 980 2016/11/20 13:08 0 6.6 716 | 981 2016/11/20 13:23 0 6.4 717 | 982 2016/11/20 13:42 1 6.5 718 | 984 2016/11/20 13:39 0 6.2 719 | 985 2016/11/20 13:54 0 5.7 720 | 986 2016/11/20 14:13 4 6.0 721 | 986 2016/11/20 14:13 5 1 722 | 986 2016/11/20 14:13 1 5.5 723 | 989 2016/11/20 14:09 0 5.4 724 | 990 2016/11/20 14:24 0 5.6 725 | 991 2016/11/20 14:39 0 5.9 726 | 992 2016/11/20 15:03 1 5.0 727 | 994 2016/11/20 14:54 0 5.3 728 | 995 2016/11/20 15:09 0 4.3 729 | 996 2016/11/20 15:24 1 4.7 730 | 998 2016/11/20 15:24 0 4.5 731 | 999 2016/11/20 15:45 1 4.2 732 | 1001 2016/11/20 15:39 0 4.2 733 | 1002 2016/11/20 15:54 0 4.4 734 | 1003 2016/11/20 16:09 0 4.7 735 | 1004 2016/11/20 16:30 1 4.6 736 | 1006 2016/11/20 16:26 0 4.8 737 | 1007 2016/11/20 16:41 0 5.3 738 | 1008 2016/11/20 16:56 0 5.7 739 | 1009 2016/11/20 17:11 0 5.8 740 | 1010 2016/11/20 17:26 0 5.8 741 | 1011 2016/11/20 17:49 1 6.1 742 | 1013 2016/11/20 17:41 0 5.9 743 | 1014 2016/11/20 17:56 0 5.6 744 | 1015 2016/11/20 18:19 4 2.0 745 | 1015 2016/11/20 18:19 1 5.2 746 | 1018 2016/11/20 18:11 0 5.3 747 | 1019 2016/11/20 18:26 0 5.8 748 | 1020 2016/11/20 18:41 0 6.6 749 | 1021 2016/11/20 19:09 1 8.3 750 | 1023 2016/11/20 18:57 0 7.6 751 | 1024 2016/11/20 19:12 0 8.3 752 | 1025 2016/11/20 19:27 0 9.0 753 | 1026 2016/11/20 19:42 0 9.7 754 | 1027 2016/11/20 20:05 1 8.8 755 | 1029 2016/11/20 19:57 0 9.2 756 | 1030 2016/11/20 20:12 0 7.8 757 | 1031 2016/11/20 20:33 1 6.0 758 | 1033 2016/11/20 20:27 0 6.2 759 | 1034 2016/11/20 20:42 0 5.7 760 | 1035 2016/11/20 20:57 0 5.5 761 | 1036 2016/11/20 21:12 0 5.6 762 | 1037 2016/11/20 21:27 0 5.8 763 | 1038 2016/11/20 21:42 0 6.0 764 | 1039 2016/11/20 21:57 4 7.0 765 | 1039 2016/11/20 21:57 5 1 766 | 1039 2016/11/20 21:57 1 6.9 767 | 1042 2016/11/20 21:58 0 7.4 768 | 1043 2016/11/20 22:13 0 8.8 769 | 1044 2016/11/20 22:28 0 9.8 770 | 1045 2016/11/20 22:57 1 11.0 771 | 1047 2016/11/20 22:42 0 10.7 772 | 1048 2016/11/20 22:57 0 11.2 773 | 1049 2016/11/20 23:12 0 11.3 774 | 1050 2016/11/20 23:28 1 12.0 775 | 1052 2016/11/20 23:28 0 12.0 776 | 1053 2016/11/20 23:55 4 3.0 777 | 1053 2016/11/20 23:55 1 12.6 778 | 1056 2016/11/20 23:44 0 12.1 779 | 1057 2016/11/20 23:59 0 12.1 780 | 1058 2016/11/21 00:24 1 12.8 781 | 1060 2016/11/21 00:14 0 12.9 782 | 1061 2016/11/21 00:29 0 12.7 783 | 1062 2016/11/21 00:44 0 11.6 784 | 1063 2016/11/21 00:59 0 10.7 785 | 1064 2016/11/21 01:24 4 3.0 786 | 1064 2016/11/21 01:24 1 11.9 787 | 1067 2016/11/21 01:17 0 11.6 788 | 1068 2016/11/21 01:32 0 11.9 789 | 1069 2016/11/21 01:47 0 10.9 790 | 1070 2016/11/21 02:02 0 9.7 791 | 1071 2016/11/21 02:17 0 8.8 792 | 1072 2016/11/21 02:32 0 7.9 793 | 1073 2016/11/21 02:47 0 7.3 794 | 1074 2016/11/21 03:02 0 7.2 795 | 1075 2016/11/21 03:17 0 6.9 796 | 1076 2016/11/21 03:32 0 6.6 797 | 1077 2016/11/21 03:47 0 6.1 798 | 1078 2016/11/21 04:02 0 5.5 799 | 1079 2016/11/21 04:17 0 5.6 800 | 1080 2016/11/21 04:32 0 5.9 801 | 1081 2016/11/21 04:47 0 5.9 802 | 1082 2016/11/21 05:02 0 5.7 803 | 1083 2016/11/21 05:17 0 5.4 804 | 1084 2016/11/21 05:32 0 5.2 805 | 1085 2016/11/21 05:47 0 5.2 806 | 1086 2016/11/21 06:02 0 5.4 807 | 1087 2016/11/21 06:17 0 5.7 808 | 1088 2016/11/21 06:32 0 5.4 809 | 1089 2016/11/21 06:47 0 5.1 810 | 1090 2016/11/21 07:02 0 4.9 811 | 1091 2016/11/21 07:17 0 4.7 812 | 1092 2016/11/21 07:40 1 5.2 813 | 1094 2016/11/21 07:33 0 4.9 814 | 1095 2016/11/21 07:48 0 4.6 815 | 1096 2016/11/21 08:03 0 4.2 816 | 1097 2016/11/21 08:18 0 4.0 817 | 1098 2016/11/21 08:33 0 3.8 818 | 1099 2016/11/21 08:48 0 3.8 819 | 1100 2016/11/21 09:03 0 3.9 820 | 1101 2016/11/21 09:18 0 3.8 821 | 1102 2016/11/21 09:33 0 3.5 822 | 1103 2016/11/21 09:48 0 3.3 823 | 1104 2016/11/21 10:10 1 3.6 824 | 1106 2016/11/21 10:03 0 3.4 825 | 1107 2016/11/21 10:18 0 4.3 826 | 1108 2016/11/21 10:33 0 5.6 827 | 1109 2016/11/21 10:48 0 7.1 828 | 1110 2016/11/21 11:10 4 3.0 829 | 1110 2016/11/21 11:10 4 34.0 830 | 1110 2016/11/21 11:10 1 9.4 831 | 1113 2016/11/21 11:04 0 9.4 832 | 1114 2016/11/21 11:19 0 11.1 833 | 1115 2016/11/21 11:34 0 12.4 834 | 1116 2016/11/21 11:50 4 2.0 835 | 1116 2016/11/21 11:50 1 12.0 836 | 1119 2016/11/21 11:49 0 12.1 837 | 1120 2016/11/21 12:04 0 11.6 838 | 1121 2016/11/21 12:19 0 10.9 839 | 1122 2016/11/21 12:41 1 10.4 840 | 1124 2016/11/21 12:34 0 9.6 841 | 1125 2016/11/21 12:49 0 8.7 842 | 1126 2016/11/21 13:16 1 7.9 843 | 1128 2016/11/21 13:05 0 8.6 844 | 1129 2016/11/21 13:20 0 8.6 845 | 1130 2016/11/21 13:45 4 8.0 846 | 1130 2016/11/21 13:45 5 1 847 | 1130 2016/11/21 13:45 1 7.7 848 | 1133 2016/11/21 13:34 0 8.0 849 | 1134 2016/11/21 13:49 0 7.1 850 | 1135 2016/11/21 14:04 0 6.4 851 | 1136 2016/11/21 14:25 1 6.6 852 | 1138 2016/11/21 14:21 0 6.8 853 | 1139 2016/11/21 14:36 0 7.4 854 | 1140 2016/11/21 14:51 0 7.4 855 | 1141 2016/11/21 15:06 0 7.4 856 | 1142 2016/11/21 15:35 1 7.3 857 | 1144 2016/11/21 15:21 0 7.4 858 | 1145 2016/11/21 15:36 0 7.3 859 | 1146 2016/11/21 15:51 0 7.3 860 | 1147 2016/11/21 16:06 0 7.7 861 | 1148 2016/11/21 16:31 4 4.0 862 | 1148 2016/11/21 16:31 1 10.1 863 | 1151 2016/11/21 16:21 0 9.2 864 | 1152 2016/11/21 16:36 0 10.6 865 | 1153 2016/11/21 16:51 0 11.3 866 | 1154 2016/11/21 17:19 1 11.8 867 | 1156 2016/11/21 17:07 0 11.6 868 | 1157 2016/11/21 17:22 0 11.3 869 | 1158 2016/11/21 17:37 0 11.1 870 | 1159 2016/11/21 17:52 0 10.9 871 | 1160 2016/11/21 18:07 0 10.7 872 | 1161 2016/11/21 18:23 4 2.0 873 | 1161 2016/11/21 18:23 1 10.7 874 | 1164 2016/11/21 18:22 0 10.7 875 | 1165 2016/11/21 18:37 0 10.8 876 | 1166 2016/11/21 18:52 0 10.6 877 | 1167 2016/11/21 19:07 0 10.1 878 | 1168 2016/11/21 19:22 0 10.0 879 | 1169 2016/11/21 19:37 0 10.0 880 | 1170 2016/11/21 19:57 1 10.1 881 | 1172 2016/11/21 19:53 0 10.3 882 | 1173 2016/11/21 20:16 4 2.0 883 | 1173 2016/11/21 20:16 1 10.8 884 | 1176 2016/11/21 20:08 0 10.7 885 | 1177 2016/11/21 20:23 0 11.3 886 | 1178 2016/11/21 20:38 0 11.8 887 | 1179 2016/11/21 20:53 0 11.8 888 | 1180 2016/11/21 21:08 0 11.5 889 | 1181 2016/11/21 21:23 0 11.3 890 | 1182 2016/11/21 21:47 4 7.0 891 | 1182 2016/11/21 21:47 5 1 892 | 1182 2016/11/21 21:47 1 10.4 893 | 1185 2016/11/21 21:38 0 10.9 894 | 1186 2016/11/21 21:53 0 10.5 895 | 1187 2016/11/21 22:08 0 10.3 896 | 1188 2016/11/21 22:23 0 10.5 897 | 1189 2016/11/21 22:38 0 10.5 898 | 1190 2016/11/21 22:55 1 10.0 899 | 1192 2016/11/21 22:54 0 10.3 900 | 1193 2016/11/21 23:09 0 10.3 901 | 1194 2016/11/21 23:24 0 10.6 902 | 1195 2016/11/21 23:44 1 9.6 903 | 1197 2016/11/21 23:39 0 10.2 904 | 1198 2016/11/21 23:54 0 10.1 -------------------------------------------------------------------------------- /test.withoutHeader.tsv: -------------------------------------------------------------------------------- 1 | ID Time Record Type Historic Glucose (mmol/L) Scan Glucose (mmol/L) Non-numeric Rapid-Acting Insulin Rapid-Acting Insulin (units) Non-numeric Food Carbohydrates (grams) Non-numeric Long-Acting Insulin Long-Acting Insulin (units) Notes Strip Glucose (mmol/L) Ketone (mmol/L) Meal Insulin (units) Correction Insulin (units) User Change Insulin (units) Previous Time Updated Time 2 | 147 2016/11/15 00:04 1 6.4 3 | 150 2016/11/15 00:08 0 6.2 4 | 151 2016/11/15 00:33 1 6.2 5 | 153 2016/11/15 00:23 0 6.1 6 | 154 2016/11/15 00:38 0 5.2 7 | 155 2016/11/15 01:07 1 4.7 8 | 157 2016/11/15 00:55 0 4.9 9 | 158 2016/11/15 01:10 0 5.8 10 | 159 2016/11/15 01:25 0 6.3 11 | 160 2016/11/15 01:40 0 6.5 12 | 161 2016/11/15 01:55 0 6.5 13 | 162 2016/11/15 02:10 0 6.1 14 | 163 2016/11/15 02:25 0 5.4 15 | 164 2016/11/15 02:40 0 5.2 16 | 165 2016/11/15 02:57 1 6.5 17 | 167 2016/11/15 02:57 0 5.2 18 | 168 2016/11/15 03:12 0 4.5 19 | 169 2016/11/15 03:27 0 4.4 20 | 170 2016/11/15 03:42 0 4.3 21 | 171 2016/11/15 03:57 0 4.4 22 | 172 2016/11/15 04:12 0 4.9 23 | 173 2016/11/15 04:27 0 5.6 24 | 174 2016/11/15 04:42 0 5.9 25 | 175 2016/11/15 04:57 0 5.6 26 | 176 2016/11/15 05:12 0 5.3 27 | 177 2016/11/15 05:27 0 5.3 28 | 178 2016/11/15 05:42 0 5.4 29 | 179 2016/11/15 05:57 0 5.4 30 | 180 2016/11/15 06:12 0 5.7 31 | 181 2016/11/15 06:27 0 6.1 32 | 182 2016/11/15 06:42 0 6.1 33 | 183 2016/11/15 06:57 0 5.4 34 | 184 2016/11/15 07:12 0 5.3 35 | 185 2016/11/15 07:30 1 6.6 36 | 187 2016/11/15 07:27 0 6.4 37 | 188 2016/11/15 07:42 0 6.5 38 | 189 2016/11/15 07:57 0 6.4 39 | 190 2016/11/15 08:12 0 6.4 40 | 191 2016/11/15 08:27 0 6.3 41 | 192 2016/11/15 08:42 0 6.5 42 | 193 2016/11/15 08:57 0 6.6 43 | 194 2016/11/15 09:12 0 6.7 44 | 195 2016/11/15 09:27 0 7.1 45 | 196 2016/11/15 09:42 0 7.4 46 | 197 2016/11/15 10:00 1 6.3 47 | 199 2016/11/15 10:01 1 6.3 48 | 201 2016/11/15 09:58 0 7.6 49 | 202 2016/11/15 10:13 0 8.6 50 | 203 2016/11/15 10:28 0 8.3 51 | 204 2016/11/15 10:52 1 7.9 52 | 206 2016/11/15 10:43 0 6.8 53 | 207 2016/11/15 11:00 4 1.0 54 | 207 2016/11/15 11:00 4 32.0 55 | 207 2016/11/15 11:00 1 8.3 56 | 210 2016/11/15 10:59 0 8.3 57 | 211 2016/11/15 11:14 0 8.9 58 | 212 2016/11/15 11:29 0 9.2 59 | 213 2016/11/15 11:44 0 9.4 60 | 214 2016/11/15 11:59 0 9.3 61 | 215 2016/11/15 12:14 0 8.9 62 | 216 2016/11/15 12:29 0 8.4 63 | 217 2016/11/15 12:44 0 8.4 64 | 218 2016/11/15 13:08 4 6.0 65 | 218 2016/11/15 13:08 5 1 66 | 218 2016/11/15 13:08 1 8.2 67 | 221 2016/11/15 13:00 0 8.1 68 | 222 2016/11/15 13:15 0 7.7 69 | 223 2016/11/15 13:30 0 7.7 70 | 224 2016/11/15 13:45 0 8.6 71 | 225 2016/11/15 14:00 0 9.9 72 | 226 2016/11/15 14:21 4 2.0 73 | 226 2016/11/15 14:21 1 11.5 74 | 229 2016/11/15 14:15 0 11.6 75 | 230 2016/11/15 14:30 0 12.1 76 | 231 2016/11/15 14:45 0 11.8 77 | 232 2016/11/15 15:11 1 11.4 78 | 234 2016/11/15 15:01 0 11.7 79 | 235 2016/11/15 15:16 0 11.6 80 | 236 2016/11/15 15:31 0 11.1 81 | 237 2016/11/15 15:57 1 9.9 82 | 239 2016/11/15 15:46 0 10.1 83 | 240 2016/11/15 16:01 0 9.7 84 | 241 2016/11/15 16:16 0 9.3 85 | 242 2016/11/15 16:44 1 8.6 86 | 244 2016/11/15 16:31 0 8.6 87 | 245 2016/11/15 16:46 0 8.9 88 | 246 2016/11/15 17:01 0 9.8 89 | 247 2016/11/15 17:16 0 10.4 90 | 248 2016/11/15 17:31 0 10.8 91 | 249 2016/11/15 17:50 4 3.0 92 | 249 2016/11/15 17:50 1 11.7 93 | 252 2016/11/15 17:46 0 11.7 94 | 253 2016/11/15 18:01 0 12.2 95 | 254 2016/11/15 18:21 1 11.3 96 | 256 2016/11/15 18:17 0 11.5 97 | 257 2016/11/15 18:32 0 10.9 98 | 258 2016/11/15 18:47 0 10.9 99 | 259 2016/11/15 19:07 1 11.0 100 | 261 2016/11/15 19:12 4 5.0 101 | 261 2016/11/15 19:12 5 1 102 | 261 2016/11/15 19:12 1 10.5 103 | 264 2016/11/15 19:02 0 10.3 104 | 265 2016/11/15 19:17 0 9.6 105 | 266 2016/11/15 19:32 0 9.5 106 | 267 2016/11/15 19:47 0 9.6 107 | 268 2016/11/15 20:02 0 9.6 108 | 269 2016/11/15 20:19 1 9.7 109 | 271 2016/11/15 20:18 0 10.2 110 | 272 2016/11/15 20:33 0 10.8 111 | 273 2016/11/15 20:53 1 10.9 112 | 275 2016/11/15 20:48 0 11.1 113 | 276 2016/11/15 21:03 0 11.6 114 | 277 2016/11/15 21:20 4 4.0 115 | 277 2016/11/15 21:20 1 12.1 116 | 280 2016/11/15 21:18 0 12.1 117 | 281 2016/11/15 21:33 0 12.3 118 | 282 2016/11/15 21:48 0 12.4 119 | 283 2016/11/15 22:13 4 6.0 120 | 283 2016/11/15 22:13 1 13.3 121 | 286 2016/11/15 22:03 0 12.6 122 | 287 2016/11/15 22:18 0 12.8 123 | 288 2016/11/15 22:33 0 12.9 124 | 289 2016/11/15 22:57 1 13.4 125 | 291 2016/11/15 22:48 0 12.9 126 | 292 2016/11/15 23:05 1 12.6 127 | 294 2016/11/15 23:04 0 12.4 128 | 295 2016/11/15 23:23 1 10.8 129 | 297 2016/11/15 23:19 0 11.7 130 | 298 2016/11/15 23:34 0 11.4 131 | 299 2016/11/15 23:54 1 11.1 132 | 301 2016/11/15 23:49 0 11.7 133 | 302 2016/11/16 00:09 1 10.8 134 | 304 2016/11/16 00:04 0 10.9 135 | 305 2016/11/16 00:19 0 10.6 136 | 306 2016/11/16 00:41 1 9.9 137 | 308 2016/11/16 00:36 0 10.4 138 | 309 2016/11/16 00:51 0 8.9 139 | 310 2016/11/16 01:06 0 8.2 140 | 311 2016/11/16 01:21 0 9.3 141 | 312 2016/11/16 01:36 0 9.6 142 | 313 2016/11/16 01:51 0 9.3 143 | 314 2016/11/16 02:06 0 9.8 144 | 315 2016/11/16 02:21 0 10.6 145 | 316 2016/11/16 02:36 0 11.1 146 | 317 2016/11/16 02:51 0 11.3 147 | 318 2016/11/16 03:06 0 10.9 148 | 319 2016/11/16 03:21 0 10.2 149 | 320 2016/11/16 03:36 0 10.2 150 | 321 2016/11/16 03:51 0 10.7 151 | 322 2016/11/16 04:06 0 10.1 152 | 323 2016/11/16 04:21 0 9.1 153 | 324 2016/11/16 04:36 0 9.5 154 | 325 2016/11/16 04:51 0 10.1 155 | 326 2016/11/16 05:06 0 10.3 156 | 327 2016/11/16 05:22 1 10.6 157 | 329 2016/11/16 05:23 0 10.2 158 | 330 2016/11/16 05:38 0 9.1 159 | 331 2016/11/16 05:53 0 8.9 160 | 332 2016/11/16 06:08 0 9.1 161 | 333 2016/11/16 06:23 0 9.4 162 | 334 2016/11/16 06:38 0 10.2 163 | 335 2016/11/16 06:53 0 10.7 164 | 336 2016/11/16 07:08 0 10.8 165 | 337 2016/11/16 07:23 0 10.9 166 | 338 2016/11/16 07:47 1 10.3 167 | 340 2016/11/16 07:38 0 10.7 168 | 341 2016/11/16 07:53 0 10.3 169 | 342 2016/11/16 08:08 0 10.3 170 | 343 2016/11/16 08:23 0 11.6 171 | 344 2016/11/16 08:38 0 12.2 172 | 345 2016/11/16 08:57 4 4.0 173 | 345 2016/11/16 08:57 1 12.5 174 | 348 2016/11/16 08:54 0 12.5 175 | 349 2016/11/16 09:09 0 12.2 176 | 350 2016/11/16 09:24 0 11.3 177 | 351 2016/11/16 09:39 0 10.4 178 | 352 2016/11/16 09:54 0 10.2 179 | 353 2016/11/16 10:09 0 9.7 180 | 354 2016/11/16 10:24 0 8.9 181 | 355 2016/11/16 10:39 0 9.1 182 | 356 2016/11/16 10:54 0 9.1 183 | 357 2016/11/16 11:09 4 33.0 184 | 357 2016/11/16 11:09 1 8.6 185 | 360 2016/11/16 11:09 0 8.4 186 | 361 2016/11/16 11:24 0 7.9 187 | 362 2016/11/16 11:39 0 7.7 188 | 363 2016/11/16 11:54 0 7.2 189 | 364 2016/11/16 12:09 0 6.6 190 | 365 2016/11/16 12:36 1 6.7 191 | 367 2016/11/16 12:24 0 6.6 192 | 368 2016/11/16 12:39 0 6.4 193 | 369 2016/11/16 12:57 1 5.6 194 | 371 2016/11/16 12:55 0 5.6 195 | 372 2016/11/16 13:10 0 5.0 196 | 373 2016/11/16 13:25 1 4.7 197 | 375 2016/11/16 13:35 4 6.0 198 | 375 2016/11/16 13:35 5 1 199 | 375 2016/11/16 13:35 1 5.2 200 | 378 2016/11/16 13:25 0 4.9 201 | 379 2016/11/16 13:40 0 5.0 202 | 380 2016/11/16 13:55 0 5.2 203 | 381 2016/11/16 14:11 1 7.0 204 | 383 2016/11/16 14:11 0 7.2 205 | 384 2016/11/16 14:26 0 8.4 206 | 385 2016/11/16 14:41 0 8.5 207 | 386 2016/11/16 14:59 1 7.2 208 | 388 2016/11/16 14:56 0 8.3 209 | 389 2016/11/16 15:11 0 8.6 210 | 390 2016/11/16 15:33 1 9.0 211 | 392 2016/11/16 15:26 0 9.4 212 | 393 2016/11/16 15:41 0 10.6 213 | 394 2016/11/16 15:57 4 3.0 214 | 394 2016/11/16 15:57 1 11.3 215 | 397 2016/11/16 15:56 0 11.7 216 | 398 2016/11/16 16:11 0 12.7 217 | 399 2016/11/16 16:26 4 2.0 218 | 399 2016/11/16 16:26 1 13.3 219 | 402 2016/11/16 16:26 0 13.2 220 | 403 2016/11/16 16:50 1 12.7 221 | 405 2016/11/16 16:41 0 13.2 222 | 406 2016/11/16 16:56 1 12.3 223 | 408 2016/11/16 16:57 0 12.0 224 | 409 2016/11/16 17:12 0 11.1 225 | 410 2016/11/16 17:41 1 10.7 226 | 412 2016/11/16 17:27 0 10.3 227 | 413 2016/11/16 17:42 0 9.6 228 | 414 2016/11/16 18:08 1 7.8 229 | 416 2016/11/16 17:57 0 7.8 230 | 417 2016/11/16 18:12 0 6.8 231 | 418 2016/11/16 18:35 1 6.3 232 | 420 2016/11/16 18:28 0 6.3 233 | 421 2016/11/16 18:56 1 5.9 234 | 423 2016/11/16 18:43 0 5.9 235 | 424 2016/11/16 18:58 0 6.1 236 | 425 2016/11/16 19:13 0 6.6 237 | 426 2016/11/16 19:28 0 7.4 238 | 427 2016/11/16 19:47 4 4.0 239 | 427 2016/11/16 19:47 1 8.9 240 | 430 2016/11/16 19:43 0 8.7 241 | 431 2016/11/16 19:58 0 9.4 242 | 432 2016/11/16 20:19 1 9.7 243 | 434 2016/11/16 20:13 0 9.8 244 | 435 2016/11/16 20:28 0 9.8 245 | 436 2016/11/16 20:54 1 8.9 246 | 438 2016/11/16 20:44 0 9.6 247 | 439 2016/11/16 20:59 0 9.2 248 | 440 2016/11/16 21:14 0 8.8 249 | 441 2016/11/16 21:30 4 7.0 250 | 441 2016/11/16 21:30 5 1 251 | 441 2016/11/16 21:30 1 8.2 252 | 444 2016/11/16 21:29 0 8.2 253 | 445 2016/11/16 21:44 0 8.3 254 | 446 2016/11/16 21:59 0 8.7 255 | 447 2016/11/16 22:16 1 9.5 256 | 449 2016/11/16 22:15 0 9.2 257 | 450 2016/11/16 22:30 0 9.6 258 | 451 2016/11/16 22:45 0 10.6 259 | 452 2016/11/16 23:00 4 2.0 260 | 452 2016/11/16 23:00 1 10.7 261 | 455 2016/11/16 23:00 0 10.5 262 | 456 2016/11/16 23:15 0 10.0 263 | 457 2016/11/16 23:30 0 9.4 264 | 458 2016/11/16 23:45 0 9.2 265 | 459 2016/11/17 00:09 1 9.2 266 | 461 2016/11/17 00:00 0 9.6 267 | 462 2016/11/17 00:15 0 9.7 268 | 463 2016/11/17 00:39 1 9.2 269 | 465 2016/11/17 00:30 0 9.5 270 | 466 2016/11/17 00:45 0 9.1 271 | 467 2016/11/17 01:01 1 8.1 272 | 469 2016/11/17 01:01 0 8.2 273 | 470 2016/11/17 01:16 0 7.9 274 | 471 2016/11/17 01:31 0 7.5 275 | 472 2016/11/17 02:00 1 7.7 276 | 474 2016/11/17 01:47 0 7.6 277 | 475 2016/11/17 02:02 0 7.8 278 | 476 2016/11/17 02:17 0 7.6 279 | 477 2016/11/17 02:32 0 7.4 280 | 478 2016/11/17 02:47 0 7.3 281 | 479 2016/11/17 03:02 0 7.2 282 | 480 2016/11/17 03:17 0 7.9 283 | 481 2016/11/17 03:32 0 9.4 284 | 482 2016/11/17 03:47 0 10.2 285 | 483 2016/11/17 04:02 0 9.7 286 | 484 2016/11/17 04:17 0 10.2 287 | 485 2016/11/17 04:32 0 10.4 288 | 486 2016/11/17 04:47 0 10.3 289 | 487 2016/11/17 05:02 0 11.1 290 | 488 2016/11/17 05:17 0 11.0 291 | 489 2016/11/17 05:32 0 9.8 292 | 490 2016/11/17 05:47 0 9.7 293 | 491 2016/11/17 06:02 0 10.3 294 | 492 2016/11/17 06:29 4 2.0 295 | 492 2016/11/17 06:29 1 11.3 296 | 495 2016/11/17 06:18 0 11.3 297 | 496 2016/11/17 06:33 0 12.2 298 | 497 2016/11/17 06:48 0 11.7 299 | 498 2016/11/17 07:03 0 10.6 300 | 499 2016/11/17 07:18 0 10.5 301 | 500 2016/11/17 07:33 0 11.2 302 | 501 2016/11/17 07:55 1 11.4 303 | 503 2016/11/17 07:49 0 11.2 304 | 504 2016/11/17 08:04 0 10.2 305 | 505 2016/11/17 08:19 0 10.4 306 | 506 2016/11/17 08:34 0 11.7 307 | 507 2016/11/17 08:49 0 11.9 308 | 508 2016/11/17 09:04 0 11.9 309 | 509 2016/11/17 09:19 0 12.1 310 | 510 2016/11/17 09:34 0 11.6 311 | 511 2016/11/17 09:49 0 10.5 312 | 512 2016/11/17 10:04 0 11.2 313 | 513 2016/11/17 10:19 0 12.6 314 | 514 2016/11/17 10:34 0 12.7 315 | 515 2016/11/17 10:59 4 2.0 316 | 515 2016/11/17 10:59 4 33.0 317 | 515 2016/11/17 10:59 1 11.6 318 | 518 2016/11/17 10:50 0 11.9 319 | 519 2016/11/17 11:05 0 12.4 320 | 520 2016/11/17 11:20 0 12.3 321 | 521 2016/11/17 11:35 0 11.8 322 | 522 2016/11/17 12:02 1 12.6 323 | 524 2016/11/17 11:50 0 12.2 324 | 525 2016/11/17 12:06 1 12.2 325 | 527 2016/11/17 12:06 0 10.8 326 | 528 2016/11/17 12:21 0 9.7 327 | 529 2016/11/17 12:36 0 10.1 328 | 530 2016/11/17 12:51 0 9.8 329 | 531 2016/11/17 13:06 0 9.1 330 | 532 2016/11/17 13:24 1 8.3 331 | 534 2016/11/17 13:22 0 8.4 332 | 535 2016/11/17 13:37 0 7.6 333 | 536 2016/11/17 13:52 0 7.3 334 | 537 2016/11/17 14:07 0 7.2 335 | 538 2016/11/17 14:22 0 6.9 336 | 539 2016/11/17 14:37 0 6.5 337 | 540 2016/11/17 14:52 0 6.3 338 | 541 2016/11/17 15:07 0 6.2 339 | 542 2016/11/17 15:26 4 6.0 340 | 542 2016/11/17 15:26 5 1 341 | 542 2016/11/17 15:26 1 6.2 342 | 545 2016/11/17 15:22 0 6.1 343 | 546 2016/11/17 15:37 0 5.8 344 | 547 2016/11/17 15:52 0 5.8 345 | 548 2016/11/17 16:07 0 6.8 346 | 549 2016/11/17 16:22 0 7.9 347 | 550 2016/11/17 16:39 1 8.6 348 | 552 2016/11/17 16:38 0 8.7 349 | 553 2016/11/17 16:53 0 8.7 350 | 554 2016/11/17 17:08 0 8.8 351 | 555 2016/11/17 17:23 0 9.6 352 | 556 2016/11/17 17:40 4 3.0 353 | 556 2016/11/17 17:40 1 10.7 354 | 559 2016/11/17 17:38 0 10.7 355 | 560 2016/11/17 17:53 0 11.3 356 | 561 2016/11/17 18:18 1 11.9 357 | 563 2016/11/17 18:08 0 11.8 358 | 564 2016/11/17 18:23 0 12.1 359 | 565 2016/11/17 18:39 1 11.9 360 | 567 2016/11/17 18:39 0 11.8 361 | 568 2016/11/17 18:54 0 11.8 362 | 569 2016/11/17 19:22 1 10.9 363 | 571 2016/11/17 19:09 0 11.4 364 | 572 2016/11/17 19:24 0 11.2 365 | 573 2016/11/17 19:39 0 10.7 366 | 574 2016/11/17 19:54 0 10.6 367 | 575 2016/11/17 20:10 4 3.0 368 | 575 2016/11/17 20:10 1 10.0 369 | 578 2016/11/17 20:09 0 9.9 370 | 579 2016/11/17 20:24 0 9.6 371 | 580 2016/11/17 20:52 1 8.7 372 | 582 2016/11/17 20:39 0 9.3 373 | 583 2016/11/17 20:54 0 8.8 374 | 584 2016/11/17 21:18 1 7.9 375 | 586 2016/11/17 21:09 0 8.2 376 | 587 2016/11/17 21:24 0 8.1 377 | 588 2016/11/17 21:50 4 8.0 378 | 588 2016/11/17 21:50 5 1 379 | 588 2016/11/17 21:50 1 7.8 380 | 591 2016/11/17 21:39 0 8.0 381 | 592 2016/11/17 21:54 0 7.9 382 | 593 2016/11/17 22:09 0 8.2 383 | 594 2016/11/17 22:35 1 9.1 384 | 596 2016/11/17 22:25 0 8.7 385 | 597 2016/11/17 22:40 0 8.7 386 | 598 2016/11/17 23:09 1 8.1 387 | 600 2016/11/17 22:56 0 7.9 388 | 601 2016/11/17 23:11 0 6.9 389 | 602 2016/11/17 23:26 0 6.2 390 | 603 2016/11/17 23:41 0 6.1 391 | 604 2016/11/17 23:58 1 5.7 392 | 606 2016/11/17 23:56 0 5.8 393 | 607 2016/11/18 00:11 0 5.8 394 | 608 2016/11/18 00:26 0 6.7 395 | 609 2016/11/18 00:49 1 8.2 396 | 611 2016/11/18 00:41 0 8.1 397 | 612 2016/11/18 00:56 0 8.4 398 | 613 2016/11/18 01:12 1 6.4 399 | 615 2016/11/18 01:15 0 7.2 400 | 616 2016/11/18 01:30 0 7.5 401 | 617 2016/11/18 01:45 0 7.3 402 | 618 2016/11/18 02:00 0 6.8 403 | 619 2016/11/18 02:15 0 6.9 404 | 620 2016/11/18 02:30 0 6.5 405 | 621 2016/11/18 02:45 0 5.8 406 | 622 2016/11/18 03:00 0 5.8 407 | 623 2016/11/18 03:15 0 6.3 408 | 624 2016/11/18 03:30 0 6.8 409 | 625 2016/11/18 03:45 0 6.9 410 | 626 2016/11/18 04:00 0 7.3 411 | 627 2016/11/18 04:15 0 7.7 412 | 628 2016/11/18 04:30 0 7.8 413 | 629 2016/11/18 04:45 0 7.1 414 | 630 2016/11/18 05:00 0 6.4 415 | 631 2016/11/18 05:15 0 6.0 416 | 632 2016/11/18 05:30 0 6.1 417 | 633 2016/11/18 05:45 0 6.2 418 | 634 2016/11/18 06:00 0 6.3 419 | 635 2016/11/18 06:15 0 6.2 420 | 636 2016/11/18 06:30 0 6.0 421 | 637 2016/11/18 06:45 0 6.0 422 | 638 2016/11/18 07:00 0 6.3 423 | 639 2016/11/18 07:15 0 6.4 424 | 640 2016/11/18 07:30 0 5.9 425 | 641 2016/11/18 07:45 0 5.8 426 | 642 2016/11/18 08:00 0 5.8 427 | 643 2016/11/18 08:15 0 5.7 428 | 644 2016/11/18 08:30 0 5.7 429 | 645 2016/11/18 08:45 0 5.7 430 | 646 2016/11/18 09:00 1 5.4 431 | 648 2016/11/18 09:00 0 5.2 432 | 649 2016/11/18 09:28 1 5.3 433 | 651 2016/11/18 09:15 0 5.7 434 | 652 2016/11/18 09:30 0 5.6 435 | 653 2016/11/18 09:45 0 5.2 436 | 654 2016/11/18 10:00 0 5.4 437 | 655 2016/11/18 10:15 0 5.5 438 | 656 2016/11/18 10:30 0 5.4 439 | 657 2016/11/18 10:45 0 5.3 440 | 658 2016/11/18 11:00 4 33.0 441 | 658 2016/11/18 11:00 1 5.6 442 | 660 2016/11/18 11:01 0 5.8 443 | 661 2016/11/18 11:16 0 6.6 444 | 662 2016/11/18 11:31 0 7.3 445 | 663 2016/11/18 11:54 1 7.6 446 | 665 2016/11/18 11:46 0 7.5 447 | 666 2016/11/18 12:01 0 7.3 448 | 667 2016/11/18 12:16 0 7.2 449 | 668 2016/11/18 12:32 1 7.1 450 | 670 2016/11/18 12:31 0 7.2 451 | 671 2016/11/18 12:51 4 7.0 452 | 671 2016/11/18 12:51 1 6.9 453 | 674 2016/11/18 12:47 0 6.9 454 | 675 2016/11/18 13:02 0 7.2 455 | 676 2016/11/18 13:17 0 8.6 456 | 677 2016/11/18 13:32 0 10.3 457 | 678 2016/11/18 13:47 0 11.2 458 | 679 2016/11/18 14:15 1 10.4 459 | 681 2016/11/18 14:02 0 10.8 460 | 682 2016/11/18 14:17 0 10.2 461 | 683 2016/11/18 14:36 1 9.3 462 | 685 2016/11/18 14:33 0 9.3 463 | 686 2016/11/18 14:48 0 8.4 464 | 687 2016/11/18 15:03 0 8.1 465 | 688 2016/11/18 15:21 1 7.7 466 | 690 2016/11/18 15:17 0 7.7 467 | 691 2016/11/18 15:33 4 2.0 468 | 691 2016/11/18 15:33 1 7.7 469 | 694 2016/11/18 15:32 0 7.7 470 | 695 2016/11/18 15:47 0 7.4 471 | 696 2016/11/18 16:02 0 7.2 472 | 697 2016/11/18 16:31 4 2.0 473 | 697 2016/11/18 16:31 1 8.5 474 | 700 2016/11/18 16:18 0 7.9 475 | 701 2016/11/18 16:33 0 8.5 476 | 702 2016/11/18 17:00 1 8.2 477 | 704 2016/11/18 16:49 0 8.2 478 | 705 2016/11/18 17:04 0 7.6 479 | 706 2016/11/18 17:19 0 7.0 480 | 707 2016/11/18 17:34 0 6.8 481 | 708 2016/11/18 17:49 0 6.8 482 | 709 2016/11/18 18:04 0 6.8 483 | 710 2016/11/18 18:19 0 6.7 484 | 711 2016/11/18 18:37 1 6.6 485 | 713 2016/11/18 18:34 0 6.4 486 | 714 2016/11/18 18:59 1 6.1 487 | 716 2016/11/18 18:49 0 5.8 488 | 717 2016/11/18 19:04 0 4.8 489 | 718 2016/11/18 19:19 0 4.7 490 | 719 2016/11/18 19:34 0 4.6 491 | 720 2016/11/18 19:57 1 4.2 492 | 722 2016/11/18 19:50 0 4.1 493 | 723 2016/11/18 20:05 0 3.9 494 | 724 2016/11/18 20:28 1 4.8 495 | 726 2016/11/18 20:19 0 4.4 496 | 727 2016/11/18 20:42 1 5.0 497 | 729 2016/11/18 20:35 0 4.8 498 | 730 2016/11/18 20:57 4 6.0 499 | 730 2016/11/18 20:57 5 1 500 | 730 2016/11/18 20:57 1 5.9 501 | 733 2016/11/18 20:50 0 5.8 502 | 734 2016/11/18 21:05 0 7.8 503 | 735 2016/11/18 21:20 0 10.0 504 | 736 2016/11/18 21:41 4 3.0 505 | 736 2016/11/18 21:41 1 13.2 506 | 739 2016/11/18 21:35 0 12.3 507 | 740 2016/11/18 21:50 0 13.5 508 | 741 2016/11/18 22:05 0 14.1 509 | 742 2016/11/18 22:26 1 14.8 510 | 744 2016/11/18 22:21 0 14.7 511 | 745 2016/11/18 22:36 0 15.1 512 | 746 2016/11/18 22:51 0 15.7 513 | 747 2016/11/18 23:08 4 3.0 514 | 747 2016/11/18 23:08 1 16.2 515 | 751 2016/11/18 23:06 0 16.8 516 | 752 2016/11/18 23:21 0 16.9 517 | 753 2016/11/18 23:36 0 16.3 518 | 754 2016/11/19 00:04 1 14.1 519 | 756 2016/11/19 00:04 1 14.1 520 | 758 2016/11/18 23:51 0 15.0 521 | 759 2016/11/19 00:06 1 13.8 522 | 761 2016/11/19 00:15 1 12.6 523 | 763 2016/11/19 00:06 0 13.2 524 | 764 2016/11/19 00:21 0 11.8 525 | 765 2016/11/19 00:41 4 4.0 526 | 765 2016/11/19 00:41 5 1 527 | 765 2016/11/19 00:41 1 11.5 528 | 768 2016/11/19 00:37 0 11.3 529 | 769 2016/11/19 00:52 0 11.4 530 | 770 2016/11/19 01:07 0 12.3 531 | 771 2016/11/19 01:22 0 13.2 532 | 772 2016/11/19 01:37 1 12.7 533 | 774 2016/11/19 01:51 4 4.0 534 | 774 2016/11/19 01:51 1 13.3 535 | 777 2016/11/19 01:38 0 13.3 536 | 778 2016/11/19 01:53 0 12.4 537 | 779 2016/11/19 02:08 0 10.8 538 | 780 2016/11/19 02:23 0 9.7 539 | 781 2016/11/19 02:38 0 8.8 540 | 782 2016/11/19 02:53 0 7.9 541 | 783 2016/11/19 03:08 0 7.3 542 | 784 2016/11/19 03:23 0 6.8 543 | 785 2016/11/19 03:47 1 6.1 544 | 787 2016/11/19 03:41 0 6.5 545 | 788 2016/11/19 03:56 0 6.2 546 | 789 2016/11/19 04:11 0 5.7 547 | 790 2016/11/19 04:26 0 5.6 548 | 791 2016/11/19 04:41 0 5.8 549 | 792 2016/11/19 04:56 0 5.9 550 | 793 2016/11/19 05:11 0 6.1 551 | 794 2016/11/19 05:26 0 6.3 552 | 795 2016/11/19 05:41 0 6.4 553 | 796 2016/11/19 05:56 0 6.9 554 | 797 2016/11/19 06:11 0 7.5 555 | 798 2016/11/19 06:26 0 8.2 556 | 799 2016/11/19 06:41 0 8.3 557 | 800 2016/11/19 06:56 0 8.3 558 | 801 2016/11/19 07:11 0 8.7 559 | 802 2016/11/19 07:26 0 8.2 560 | 803 2016/11/19 07:41 0 7.3 561 | 804 2016/11/19 07:56 0 7.9 562 | 805 2016/11/19 08:11 0 9.5 563 | 806 2016/11/19 08:26 0 10.2 564 | 807 2016/11/19 08:41 0 10.1 565 | 808 2016/11/19 08:56 0 10.4 566 | 809 2016/11/19 09:11 0 11.7 567 | 810 2016/11/19 09:26 0 12.6 568 | 811 2016/11/19 09:52 4 4.0 569 | 811 2016/11/19 09:52 1 12.9 570 | 814 2016/11/19 09:41 0 12.8 571 | 815 2016/11/19 09:56 0 12.7 572 | 816 2016/11/19 10:11 0 12.4 573 | 817 2016/11/19 10:26 0 11.7 574 | 818 2016/11/19 10:41 0 10.6 575 | 819 2016/11/19 10:59 4 33.0 576 | 819 2016/11/19 10:59 1 10.2 577 | 821 2016/11/19 10:58 0 10.5 578 | 822 2016/11/19 11:13 0 10.3 579 | 823 2016/11/19 11:28 0 10.3 580 | 824 2016/11/19 11:43 0 9.8 581 | 825 2016/11/19 11:58 0 9.4 582 | 826 2016/11/19 12:13 0 9.2 583 | 827 2016/11/19 12:28 0 8.6 584 | 828 2016/11/19 12:43 0 8.1 585 | 829 2016/11/19 12:58 0 7.8 586 | 830 2016/11/19 13:25 1 7.7 587 | 832 2016/11/19 13:13 0 7.7 588 | 833 2016/11/19 13:28 0 7.7 589 | 834 2016/11/19 13:49 4 6.0 590 | 834 2016/11/19 13:49 1 7.2 591 | 837 2016/11/19 13:43 0 7.3 592 | 838 2016/11/19 13:58 0 7.4 593 | 839 2016/11/19 14:13 0 7.7 594 | 840 2016/11/19 14:40 1 7.9 595 | 842 2016/11/19 14:29 0 7.7 596 | 843 2016/11/19 14:44 0 7.3 597 | 844 2016/11/19 14:59 0 6.4 598 | 845 2016/11/19 15:18 1 5.6 599 | 847 2016/11/19 15:13 0 5.4 600 | 848 2016/11/19 15:28 0 5.3 601 | 849 2016/11/19 15:43 0 5.5 602 | 850 2016/11/19 16:03 1 5.2 603 | 852 2016/11/19 15:58 0 5.2 604 | 853 2016/11/19 16:13 0 4.6 605 | 854 2016/11/19 16:28 0 4.2 606 | 855 2016/11/19 16:49 1 4.3 607 | 857 2016/11/19 16:45 0 4.2 608 | 858 2016/11/19 17:00 0 4.2 609 | 859 2016/11/19 17:21 1 4.7 610 | 861 2016/11/19 17:15 0 4.7 611 | 862 2016/11/19 17:30 0 5.9 612 | 863 2016/11/19 17:45 0 7.4 613 | 864 2016/11/19 18:00 0 8.7 614 | 865 2016/11/19 18:15 0 10.4 615 | 866 2016/11/19 18:30 0 12.3 616 | 867 2016/11/19 18:45 0 13.3 617 | 868 2016/11/19 19:05 4 5.0 618 | 868 2016/11/19 19:05 1 13.9 619 | 871 2016/11/19 19:01 0 13.9 620 | 872 2016/11/19 19:16 0 14.3 621 | 873 2016/11/19 19:31 1 14.1 622 | 875 2016/11/19 19:31 0 13.7 623 | 876 2016/11/19 19:46 0 13.1 624 | 877 2016/11/19 20:14 1 10.8 625 | 879 2016/11/19 20:00 0 11.9 626 | 880 2016/11/19 20:27 1 10.0 627 | 882 2016/11/19 20:16 0 10.4 628 | 883 2016/11/19 20:31 0 9.6 629 | 884 2016/11/19 20:51 4 6.0 630 | 884 2016/11/19 20:51 5 1 631 | 884 2016/11/19 20:51 1 9.2 632 | 887 2016/11/19 20:46 0 9.2 633 | 888 2016/11/19 21:01 0 8.8 634 | 889 2016/11/19 21:16 0 8.4 635 | 890 2016/11/19 21:32 1 9.5 636 | 892 2016/11/19 21:31 0 9.3 637 | 893 2016/11/19 21:46 0 8.4 638 | 894 2016/11/19 22:01 0 7.6 639 | 895 2016/11/19 22:20 1 8.1 640 | 897 2016/11/19 22:17 0 8.1 641 | 898 2016/11/19 22:32 0 9.3 642 | 899 2016/11/19 22:47 0 10.0 643 | 900 2016/11/19 23:09 4 3.0 644 | 900 2016/11/19 23:09 1 10.6 645 | 903 2016/11/19 23:02 0 10.4 646 | 904 2016/11/19 23:17 0 10.8 647 | 905 2016/11/19 23:46 1 13.2 648 | 907 2016/11/19 23:32 0 11.2 649 | 908 2016/11/19 23:47 4 2.0 650 | 908 2016/11/19 23:47 1 13.1 651 | 911 2016/11/19 23:47 0 12.6 652 | 912 2016/11/20 00:15 1 14.8 653 | 914 2016/11/20 00:03 0 14.3 654 | 915 2016/11/20 00:18 0 14.8 655 | 916 2016/11/20 00:33 0 14.2 656 | 917 2016/11/20 00:57 1 13.9 657 | 919 2016/11/20 00:48 0 13.8 658 | 920 2016/11/20 01:03 0 14.1 659 | 921 2016/11/20 01:18 0 14.8 660 | 922 2016/11/20 01:45 4 5.0 661 | 922 2016/11/20 01:45 1 17.1 662 | 925 2016/11/20 01:33 0 16.4 663 | 926 2016/11/20 01:48 0 17.1 664 | 927 2016/11/20 02:03 0 17.0 665 | 928 2016/11/20 02:29 1 15.6 666 | 930 2016/11/20 02:20 0 16.2 667 | 931 2016/11/20 02:35 0 15.2 668 | 932 2016/11/20 02:50 0 14.5 669 | 933 2016/11/20 03:05 0 14.7 670 | 934 2016/11/20 03:20 0 14.4 671 | 935 2016/11/20 03:35 0 13.4 672 | 936 2016/11/20 03:50 0 13.4 673 | 937 2016/11/20 04:05 0 13.8 674 | 938 2016/11/20 04:20 0 13.4 675 | 939 2016/11/20 04:35 0 13.4 676 | 940 2016/11/20 04:50 0 13.8 677 | 941 2016/11/20 05:05 0 13.3 678 | 942 2016/11/20 05:20 0 12.7 679 | 943 2016/11/20 05:38 1 12.1 680 | 945 2016/11/20 05:36 0 12.6 681 | 946 2016/11/20 05:51 0 12.0 682 | 947 2016/11/20 06:06 0 11.5 683 | 948 2016/11/20 06:21 0 11.3 684 | 949 2016/11/20 06:36 0 11.6 685 | 950 2016/11/20 06:51 0 11.7 686 | 951 2016/11/20 07:06 0 11.1 687 | 952 2016/11/20 07:21 0 11.3 688 | 953 2016/11/20 07:36 0 11.8 689 | 954 2016/11/20 07:51 0 11.8 690 | 955 2016/11/20 08:06 0 11.3 691 | 956 2016/11/20 08:21 0 11.1 692 | 957 2016/11/20 08:36 0 11.2 693 | 958 2016/11/20 08:51 0 11.2 694 | 959 2016/11/20 09:06 0 11.1 695 | 960 2016/11/20 09:21 0 11.1 696 | 961 2016/11/20 09:36 0 11.0 697 | 962 2016/11/20 09:51 0 10.7 698 | 963 2016/11/20 10:08 4 3.0 699 | 963 2016/11/20 10:08 1 11.2 700 | 966 2016/11/20 10:07 0 11.2 701 | 967 2016/11/20 10:22 0 11.4 702 | 968 2016/11/20 10:37 0 11.2 703 | 969 2016/11/20 11:04 4 33.0 704 | 969 2016/11/20 11:04 1 10.0 705 | 971 2016/11/20 10:53 0 10.3 706 | 972 2016/11/20 11:08 0 9.8 707 | 973 2016/11/20 11:23 0 9.4 708 | 974 2016/11/20 11:38 0 8.8 709 | 975 2016/11/20 11:53 0 8.7 710 | 976 2016/11/20 12:08 0 8.4 711 | 977 2016/11/20 12:23 0 7.7 712 | 978 2016/11/20 12:38 0 7.7 713 | 979 2016/11/20 12:53 0 7.3 714 | 980 2016/11/20 13:08 0 6.6 715 | 981 2016/11/20 13:23 0 6.4 716 | 982 2016/11/20 13:42 1 6.5 717 | 984 2016/11/20 13:39 0 6.2 718 | 985 2016/11/20 13:54 0 5.7 719 | 986 2016/11/20 14:13 4 6.0 720 | 986 2016/11/20 14:13 5 1 721 | 986 2016/11/20 14:13 1 5.5 722 | 989 2016/11/20 14:09 0 5.4 723 | 990 2016/11/20 14:24 0 5.6 724 | 991 2016/11/20 14:39 0 5.9 725 | 992 2016/11/20 15:03 1 5.0 726 | 994 2016/11/20 14:54 0 5.3 727 | 995 2016/11/20 15:09 0 4.3 728 | 996 2016/11/20 15:24 1 4.7 729 | 998 2016/11/20 15:24 0 4.5 730 | 999 2016/11/20 15:45 1 4.2 731 | 1001 2016/11/20 15:39 0 4.2 732 | 1002 2016/11/20 15:54 0 4.4 733 | 1003 2016/11/20 16:09 0 4.7 734 | 1004 2016/11/20 16:30 1 4.6 735 | 1006 2016/11/20 16:26 0 4.8 736 | 1007 2016/11/20 16:41 0 5.3 737 | 1008 2016/11/20 16:56 0 5.7 738 | 1009 2016/11/20 17:11 0 5.8 739 | 1010 2016/11/20 17:26 0 5.8 740 | 1011 2016/11/20 17:49 1 6.1 741 | 1013 2016/11/20 17:41 0 5.9 742 | 1014 2016/11/20 17:56 0 5.6 743 | 1015 2016/11/20 18:19 4 2.0 744 | 1015 2016/11/20 18:19 1 5.2 745 | 1018 2016/11/20 18:11 0 5.3 746 | 1019 2016/11/20 18:26 0 5.8 747 | 1020 2016/11/20 18:41 0 6.6 748 | 1021 2016/11/20 19:09 1 8.3 749 | 1023 2016/11/20 18:57 0 7.6 750 | 1024 2016/11/20 19:12 0 8.3 751 | 1025 2016/11/20 19:27 0 9.0 752 | 1026 2016/11/20 19:42 0 9.7 753 | 1027 2016/11/20 20:05 1 8.8 754 | 1029 2016/11/20 19:57 0 9.2 755 | 1030 2016/11/20 20:12 0 7.8 756 | 1031 2016/11/20 20:33 1 6.0 757 | 1033 2016/11/20 20:27 0 6.2 758 | 1034 2016/11/20 20:42 0 5.7 759 | 1035 2016/11/20 20:57 0 5.5 760 | 1036 2016/11/20 21:12 0 5.6 761 | 1037 2016/11/20 21:27 0 5.8 762 | 1038 2016/11/20 21:42 0 6.0 763 | 1039 2016/11/20 21:57 4 7.0 764 | 1039 2016/11/20 21:57 5 1 765 | 1039 2016/11/20 21:57 1 6.9 766 | 1042 2016/11/20 21:58 0 7.4 767 | 1043 2016/11/20 22:13 0 8.8 768 | 1044 2016/11/20 22:28 0 9.8 769 | 1045 2016/11/20 22:57 1 11.0 770 | 1047 2016/11/20 22:42 0 10.7 771 | 1048 2016/11/20 22:57 0 11.2 772 | 1049 2016/11/20 23:12 0 11.3 773 | 1050 2016/11/20 23:28 1 12.0 774 | 1052 2016/11/20 23:28 0 12.0 775 | 1053 2016/11/20 23:55 4 3.0 776 | 1053 2016/11/20 23:55 1 12.6 777 | 1056 2016/11/20 23:44 0 12.1 778 | 1057 2016/11/20 23:59 0 12.1 779 | 1058 2016/11/21 00:24 1 12.8 780 | 1060 2016/11/21 00:14 0 12.9 781 | 1061 2016/11/21 00:29 0 12.7 782 | 1062 2016/11/21 00:44 0 11.6 783 | 1063 2016/11/21 00:59 0 10.7 784 | 1064 2016/11/21 01:24 4 3.0 785 | 1064 2016/11/21 01:24 1 11.9 786 | 1067 2016/11/21 01:17 0 11.6 787 | 1068 2016/11/21 01:32 0 11.9 788 | 1069 2016/11/21 01:47 0 10.9 789 | 1070 2016/11/21 02:02 0 9.7 790 | 1071 2016/11/21 02:17 0 8.8 791 | 1072 2016/11/21 02:32 0 7.9 792 | 1073 2016/11/21 02:47 0 7.3 793 | 1074 2016/11/21 03:02 0 7.2 794 | 1075 2016/11/21 03:17 0 6.9 795 | 1076 2016/11/21 03:32 0 6.6 796 | 1077 2016/11/21 03:47 0 6.1 797 | 1078 2016/11/21 04:02 0 5.5 798 | 1079 2016/11/21 04:17 0 5.6 799 | 1080 2016/11/21 04:32 0 5.9 800 | 1081 2016/11/21 04:47 0 5.9 801 | 1082 2016/11/21 05:02 0 5.7 802 | 1083 2016/11/21 05:17 0 5.4 803 | 1084 2016/11/21 05:32 0 5.2 804 | 1085 2016/11/21 05:47 0 5.2 805 | 1086 2016/11/21 06:02 0 5.4 806 | 1087 2016/11/21 06:17 0 5.7 807 | 1088 2016/11/21 06:32 0 5.4 808 | 1089 2016/11/21 06:47 0 5.1 809 | 1090 2016/11/21 07:02 0 4.9 810 | 1091 2016/11/21 07:17 0 4.7 811 | 1092 2016/11/21 07:40 1 5.2 812 | 1094 2016/11/21 07:33 0 4.9 813 | 1095 2016/11/21 07:48 0 4.6 814 | 1096 2016/11/21 08:03 0 4.2 815 | 1097 2016/11/21 08:18 0 4.0 816 | 1098 2016/11/21 08:33 0 3.8 817 | 1099 2016/11/21 08:48 0 3.8 818 | 1100 2016/11/21 09:03 0 3.9 819 | 1101 2016/11/21 09:18 0 3.8 820 | 1102 2016/11/21 09:33 0 3.5 821 | 1103 2016/11/21 09:48 0 3.3 822 | 1104 2016/11/21 10:10 1 3.6 823 | 1106 2016/11/21 10:03 0 3.4 824 | 1107 2016/11/21 10:18 0 4.3 825 | 1108 2016/11/21 10:33 0 5.6 826 | 1109 2016/11/21 10:48 0 7.1 827 | 1110 2016/11/21 11:10 4 3.0 828 | 1110 2016/11/21 11:10 4 34.0 829 | 1110 2016/11/21 11:10 1 9.4 830 | 1113 2016/11/21 11:04 0 9.4 831 | 1114 2016/11/21 11:19 0 11.1 832 | 1115 2016/11/21 11:34 0 12.4 833 | 1116 2016/11/21 11:50 4 2.0 834 | 1116 2016/11/21 11:50 1 12.0 835 | 1119 2016/11/21 11:49 0 12.1 836 | 1120 2016/11/21 12:04 0 11.6 837 | 1121 2016/11/21 12:19 0 10.9 838 | 1122 2016/11/21 12:41 1 10.4 839 | 1124 2016/11/21 12:34 0 9.6 840 | 1125 2016/11/21 12:49 0 8.7 841 | 1126 2016/11/21 13:16 1 7.9 842 | 1128 2016/11/21 13:05 0 8.6 843 | 1129 2016/11/21 13:20 0 8.6 844 | 1130 2016/11/21 13:45 4 8.0 845 | 1130 2016/11/21 13:45 5 1 846 | 1130 2016/11/21 13:45 1 7.7 847 | 1133 2016/11/21 13:34 0 8.0 848 | 1134 2016/11/21 13:49 0 7.1 849 | 1135 2016/11/21 14:04 0 6.4 850 | 1136 2016/11/21 14:25 1 6.6 851 | 1138 2016/11/21 14:21 0 6.8 852 | 1139 2016/11/21 14:36 0 7.4 853 | 1140 2016/11/21 14:51 0 7.4 854 | 1141 2016/11/21 15:06 0 7.4 855 | 1142 2016/11/21 15:35 1 7.3 856 | 1144 2016/11/21 15:21 0 7.4 857 | 1145 2016/11/21 15:36 0 7.3 858 | 1146 2016/11/21 15:51 0 7.3 859 | 1147 2016/11/21 16:06 0 7.7 860 | 1148 2016/11/21 16:31 4 4.0 861 | 1148 2016/11/21 16:31 1 10.1 862 | 1151 2016/11/21 16:21 0 9.2 863 | 1152 2016/11/21 16:36 0 10.6 864 | 1153 2016/11/21 16:51 0 11.3 865 | 1154 2016/11/21 17:19 1 11.8 866 | 1156 2016/11/21 17:07 0 11.6 867 | 1157 2016/11/21 17:22 0 11.3 868 | 1158 2016/11/21 17:37 0 11.1 869 | 1159 2016/11/21 17:52 0 10.9 870 | 1160 2016/11/21 18:07 0 10.7 871 | 1161 2016/11/21 18:23 4 2.0 872 | 1161 2016/11/21 18:23 1 10.7 873 | 1164 2016/11/21 18:22 0 10.7 874 | 1165 2016/11/21 18:37 0 10.8 875 | 1166 2016/11/21 18:52 0 10.6 876 | 1167 2016/11/21 19:07 0 10.1 877 | 1168 2016/11/21 19:22 0 10.0 878 | 1169 2016/11/21 19:37 0 10.0 879 | 1170 2016/11/21 19:57 1 10.1 880 | 1172 2016/11/21 19:53 0 10.3 881 | 1173 2016/11/21 20:16 4 2.0 882 | 1173 2016/11/21 20:16 1 10.8 883 | 1176 2016/11/21 20:08 0 10.7 884 | 1177 2016/11/21 20:23 0 11.3 885 | 1178 2016/11/21 20:38 0 11.8 886 | 1179 2016/11/21 20:53 0 11.8 887 | 1180 2016/11/21 21:08 0 11.5 888 | 1181 2016/11/21 21:23 0 11.3 889 | 1182 2016/11/21 21:47 4 7.0 890 | 1182 2016/11/21 21:47 5 1 891 | 1182 2016/11/21 21:47 1 10.4 892 | 1185 2016/11/21 21:38 0 10.9 893 | 1186 2016/11/21 21:53 0 10.5 894 | 1187 2016/11/21 22:08 0 10.3 895 | 1188 2016/11/21 22:23 0 10.5 896 | 1189 2016/11/21 22:38 0 10.5 897 | 1190 2016/11/21 22:55 1 10.0 898 | 1192 2016/11/21 22:54 0 10.3 899 | 1193 2016/11/21 23:09 0 10.3 900 | 1194 2016/11/21 23:24 0 10.6 901 | 1195 2016/11/21 23:44 1 9.6 902 | 1197 2016/11/21 23:39 0 10.2 903 | 1198 2016/11/21 23:54 0 10.1 -------------------------------------------------------------------------------- /ts/DataRecord.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | class DataRecord extends DateRecord { 4 | readonly id: number; 5 | 6 | constructor(id: number, date: moment.Moment, type: RecordType) { 7 | super(date, type); 8 | this.id = id; 9 | } 10 | } -------------------------------------------------------------------------------- /ts/DateRecord.ts: -------------------------------------------------------------------------------- 1 | class DateRecord { 2 | readonly date: moment.Moment; 3 | readonly type: RecordType; 4 | 5 | constructor(date: moment.Moment, type: RecordType) { 6 | this.date = date; 7 | this.type = type; 8 | } 9 | } -------------------------------------------------------------------------------- /ts/FoodRecord.ts: -------------------------------------------------------------------------------- 1 | class FoodRecord extends DataRecord { 2 | readonly carbs?: number; 3 | 4 | constructor(id: number, date: moment.Moment, carbs?: number) { 5 | super(id, date, RecordType.Food); 6 | this.carbs = carbs; 7 | } 8 | } -------------------------------------------------------------------------------- /ts/FreeStyleLibreLib.ts: -------------------------------------------------------------------------------- 1 | class FreeStyleLibreLib { 2 | 3 | /** 4 | * Parses a text file with a CVS with Freestyle Libre app report data 5 | * 6 | * @returns A Report object will all the data on it 7 | */ 8 | public static parseReport(reportFile: string): Report { 9 | var rawJson = FreeStyleLibreLib._parseCsv(reportFile); 10 | var patient:string = null; 11 | if (rawJson != null && rawJson[0] != null && typeof rawJson[0] == 'string') { 12 | patient = rawJson[0]; 13 | } 14 | return FreeStyleLibreLib._createReport(patient, rawJson); 15 | } 16 | 17 | private static _createReport(patient: string, rawJson: any): Report { 18 | var glucose: GlucoseRecord[] = []; 19 | var food: FoodRecord[] = []; 20 | var insulin: InsulinRecord[] = []; 21 | rawJson.forEach(function(element) { 22 | var record = FreeStyleLibreLib._parseRecord(element); 23 | if (record != null) { 24 | switch (record.type) { 25 | case RecordType.Glucose: 26 | glucose.push(record as GlucoseRecord); 27 | break; 28 | case RecordType.Food: 29 | food.push(record as FoodRecord); 30 | break; 31 | case RecordType.Insulin: 32 | insulin.push(record as InsulinRecord); 33 | break; 34 | } 35 | } 36 | }, this); 37 | return new Report(patient, glucose, food, insulin); 38 | } 39 | 40 | private static _parseRecord(element: any): DataRecord { 41 | // TODO: Allow settings to format date in other ways 42 | var date = moment(element.Time, "YYYY/MM/DD HH:mm"); 43 | switch (element.RecordType) { 44 | case "0": 45 | return new GlucoseRecord(parseFloat(element.ID), date, GlucoseRecordType.History, new GlucoseValue(parseFloat(element.HistoricGlucose), GlucoseUnit.MmolPerL)); 46 | case "1": 47 | return new GlucoseRecord(parseFloat(element.ID), date, GlucoseRecordType.Scan, new GlucoseValue(parseFloat(element.ScanGlucose), GlucoseUnit.MmolPerL)); 48 | case "4": 49 | if (element.RapidActingInsulinUnits.trim() != "") return new InsulinRecord(parseFloat(element.ID), date, InsulinRecordType.Rapid, parseFloat(element.RapidActingInsulinUnits)); 50 | if (element.LongActingInsulinUnits.trim() != "") return new InsulinRecord(parseFloat(element.ID), date, InsulinRecordType.Long, parseFloat(element.LongActingInsulinUnits)); 51 | break; 52 | case "5": 53 | return new FoodRecord(parseFloat(element.ID), date, parseFloat(element.Carbs)); 54 | } 55 | return null; 56 | } 57 | 58 | private static _parseCsv(csvFile: string): Array { 59 | var lines = csvFile.split("\n"); 60 | var result = []; 61 | var init = 0; 62 | 63 | if (lines[0].indexOf("\t") < 0) { 64 | result.push(lines[0]); 65 | init = 1; 66 | } 67 | var headers = lines[init].split("\t"); 68 | var sanitizedHeaders = []; 69 | headers.forEach(function(header) { 70 | sanitizedHeaders.push(header.replace(/ /g,'') 71 | .replace(/-/g,'') 72 | .replace(/\(grams\)/g,'') 73 | .replace(/\(mmol\/L\)/g,'') 74 | .replace(/\(units\)/g,'Units')); 75 | }, this); 76 | 77 | for (var i = 1 + init; i < lines.length; i++) { 78 | var obj = {}; 79 | var row = lines[i]; 80 | var queryIdx = 0; 81 | var startValueIdx = 0; 82 | var idx = 0; 83 | 84 | while (idx < row.length) { 85 | // If we meet a double quote we skip until the next one 86 | var c = row[idx]; 87 | 88 | if (c === '"') { 89 | do { 90 | c = row[++idx]; 91 | } while (c !== '"' && idx < row.length - 1); 92 | } 93 | 94 | if (c === '\t' || /* handle end of line with no comma */ idx === row.length - 1) { 95 | // We've got a value! 96 | var value = row.substr(startValueIdx, idx - startValueIdx).trim(); 97 | 98 | // Skip first double quote 99 | if (value[0] === '"') { 100 | value = value.substr(1); 101 | } 102 | // Skip last comma 103 | if (value[value.length - 1] === '\t') { 104 | value = value.substr(0, value.length - 1); 105 | } 106 | // Skip last double quote 107 | if (value[value.length - 1] === '"') { 108 | value = value.substr(0, value.length - 1); 109 | } 110 | 111 | var key = sanitizedHeaders[queryIdx++]; 112 | obj[key] = value.trim(); 113 | startValueIdx = idx + 1; 114 | } 115 | 116 | ++idx; 117 | } 118 | 119 | result.push(obj); 120 | } 121 | return result; 122 | } 123 | 124 | } -------------------------------------------------------------------------------- /ts/GlucoseRecord.ts: -------------------------------------------------------------------------------- 1 | class GlucoseRecord extends DataRecord { 2 | readonly glucose: GlucoseValue; 3 | readonly glucoseType: GlucoseRecordType; 4 | 5 | constructor(id: number, date: moment.Moment, glucoseType: GlucoseRecordType, glucose: GlucoseValue) { 6 | super(id, date, RecordType.Glucose); 7 | this.glucoseType = glucoseType; 8 | this.glucose = glucose; 9 | } 10 | } -------------------------------------------------------------------------------- /ts/GlucoseRecordType.ts: -------------------------------------------------------------------------------- 1 | enum GlucoseRecordType { 2 | History, 3 | Scan, 4 | Strip 5 | } -------------------------------------------------------------------------------- /ts/GlucoseUnit.ts: -------------------------------------------------------------------------------- 1 | enum GlucoseUnit { 2 | MmolPerL, 3 | MgPerDl 4 | } -------------------------------------------------------------------------------- /ts/GlucoseValue.ts: -------------------------------------------------------------------------------- 1 | class GlucoseValue { 2 | private _value: number; 3 | readonly unit: GlucoseUnit; 4 | 5 | constructor(value: number, unit: GlucoseUnit) { 6 | this._value = value; 7 | this.unit = unit; 8 | } 9 | 10 | public getValueAsMmolPerL(): number { 11 | if (this.unit == GlucoseUnit.MmolPerL) 12 | return this._value; 13 | 14 | return this._value * 18; 15 | } 16 | 17 | public getValueAsMgPerDl(): number { 18 | if (this.unit == GlucoseUnit.MgPerDl) 19 | return this._value; 20 | 21 | return this._value / 18; 22 | } 23 | } -------------------------------------------------------------------------------- /ts/InsulinRecord.ts: -------------------------------------------------------------------------------- 1 | class InsulinRecord extends DataRecord { 2 | readonly units: number; 3 | readonly insulinType: InsulinRecordType; 4 | 5 | constructor(id: number, date: moment.Moment, insulinType: InsulinRecordType, units: number) { 6 | super(id, date, RecordType.Insulin); 7 | this.insulinType = insulinType; 8 | this.units = units; 9 | } 10 | } -------------------------------------------------------------------------------- /ts/InsulinRecordType.ts: -------------------------------------------------------------------------------- 1 | enum InsulinRecordType { 2 | Rapid, 3 | Long 4 | } -------------------------------------------------------------------------------- /ts/RecordType.ts: -------------------------------------------------------------------------------- 1 | enum RecordType { 2 | Glucose, 3 | Food, 4 | Insulin, 5 | SmoothInsulin 6 | } -------------------------------------------------------------------------------- /ts/Report.ts: -------------------------------------------------------------------------------- 1 | class Report { 2 | readonly patient: string; 3 | readonly glucose: GlucoseRecord[]; 4 | readonly food: FoodRecord[]; 5 | readonly insulin: InsulinRecord[]; 6 | readonly start: moment.Moment; 7 | readonly end: moment.Moment; 8 | 9 | private _smoothRapidInsulinByDate = []; 10 | private _smoothLongInsulinByDate = []; 11 | private _smoothRapidInsulin = []; 12 | private _smoothLongInsulin = []; 13 | 14 | constructor(patient: string = null, glucose: GlucoseRecord[] = [], food: FoodRecord[] = [], insulin: InsulinRecord[] = []) 15 | { 16 | this.patient = patient; 17 | this.glucose = glucose.sort(function(a, b) { return a.date.valueOf() - b.date.valueOf(); }); 18 | this.insulin = insulin.sort(function(a, b) { return a.date.valueOf() - b.date.valueOf(); }); 19 | this.food = food.sort(function(a, b) { return a.date.valueOf() - b.date.valueOf(); }); 20 | 21 | var start = this.glucose[0].date; 22 | start = this.insulin[0].date < start ? this.insulin[0].date : start; 23 | start = this.food[0].date < start ? this.food[0].date : start; 24 | this.start = start; 25 | 26 | var end = this.glucose[this.glucose.length - 1].date; 27 | end = this.insulin[this.insulin.length - 1].date > end ? this.insulin[0].date : end; 28 | end = this.food[this.food.length - 1].date > end ? this.food[0].date : end; 29 | this.end = end; 30 | } 31 | 32 | /** 33 | * Generate a list of points with spreading the insulin value using a custom curve to estimate the insulin/minute (Based on NovoRapid) 34 | * Start acting 15m-30m after application, peaks at 1.5h-2h, lose effect arround 4h-5h (effect multiplied by scale factor). 35 | * 36 | * @param scale A number to mutiply the insulin effective value 37 | * @returns A list of SmoothInsulinRecord (date, value) with the insuling effect. 38 | */ 39 | public getSmoothRapidInsulin(scale = 1) { 40 | if (this._smoothRapidInsulin.length != 0) 41 | return this._smoothRapidInsulin; 42 | 43 | this.insulin.forEach(function(element) { 44 | if (element.insulinType == InsulinRecordType.Rapid) { 45 | var minutes = element.date.minutes(); 46 | var firstPoint = moment(element.date).startOf('hour'); 47 | if (minutes >= 15 && minutes <= 29) firstPoint.add(15, "minutes"); 48 | if (minutes >= 30 && minutes <= 44) firstPoint.add(30, "minutes"); 49 | if (minutes >= 45 && minutes <= 59) firstPoint.add(45, "minutes"); 50 | 51 | // TODO: This function needs some backup from studies, rigth now is a "guess" 52 | this._addSmoothPoint(this._smoothRapidInsulinByDate, moment(firstPoint).add( 0, "minutes"), element.units * 0.001 * scale); 53 | this._addSmoothPoint(this._smoothRapidInsulinByDate, moment(firstPoint).add( 15, "minutes"), element.units * 0.001 * scale); 54 | this._addSmoothPoint(this._smoothRapidInsulinByDate, moment(firstPoint).add( 30, "minutes"), element.units * 0.005 * scale); 55 | this._addSmoothPoint(this._smoothRapidInsulinByDate, moment(firstPoint).add( 45, "minutes"), element.units * 0.023 * scale); 56 | this._addSmoothPoint(this._smoothRapidInsulinByDate, moment(firstPoint).add( 60, "minutes"), element.units * 0.057 * scale); 57 | this._addSmoothPoint(this._smoothRapidInsulinByDate, moment(firstPoint).add( 60+15, "minutes"), element.units * 0.079 * scale); 58 | this._addSmoothPoint(this._smoothRapidInsulinByDate, moment(firstPoint).add( 60+30, "minutes"), element.units * 0.101 * scale); 59 | this._addSmoothPoint(this._smoothRapidInsulinByDate, moment(firstPoint).add( 60+45, "minutes"), element.units * 0.111 * scale); 60 | this._addSmoothPoint(this._smoothRapidInsulinByDate, moment(firstPoint).add( 120, "minutes"), element.units * 0.106 * scale); 61 | this._addSmoothPoint(this._smoothRapidInsulinByDate, moment(firstPoint).add( 120+15, "minutes"), element.units * 0.101 * scale); 62 | this._addSmoothPoint(this._smoothRapidInsulinByDate, moment(firstPoint).add( 120+30, "minutes"), element.units * 0.095 * scale); 63 | this._addSmoothPoint(this._smoothRapidInsulinByDate, moment(firstPoint).add( 120+45, "minutes"), element.units * 0.084 * scale); 64 | this._addSmoothPoint(this._smoothRapidInsulinByDate, moment(firstPoint).add( 180, "minutes"), element.units * 0.068 * scale); 65 | this._addSmoothPoint(this._smoothRapidInsulinByDate, moment(firstPoint).add( 180+15, "minutes"), element.units * 0.051 * scale); 66 | this._addSmoothPoint(this._smoothRapidInsulinByDate, moment(firstPoint).add( 180+30, "minutes"), element.units * 0.045 * scale); 67 | this._addSmoothPoint(this._smoothRapidInsulinByDate, moment(firstPoint).add( 180+45, "minutes"), element.units * 0.033 * scale); 68 | this._addSmoothPoint(this._smoothRapidInsulinByDate, moment(firstPoint).add( 240, "minutes"), element.units * 0.022 * scale); 69 | this._addSmoothPoint(this._smoothRapidInsulinByDate, moment(firstPoint).add( 240+15, "minutes"), element.units * 0.011 * scale); 70 | this._addSmoothPoint(this._smoothRapidInsulinByDate, moment(firstPoint).add( 240+30, "minutes"), element.units * 0.005 * scale); 71 | this._addSmoothPoint(this._smoothRapidInsulinByDate, moment(firstPoint).add( 240+45, "minutes"), element.units * 0.001 * scale); 72 | } 73 | }, this); 74 | 75 | for (var key in this._smoothRapidInsulinByDate) { 76 | var date = moment(parseInt(key)); 77 | if (date != undefined) { 78 | this._smoothRapidInsulin.push(new SmoothInsulinRecord(date, this._smoothRapidInsulinByDate[key])); 79 | } 80 | } 81 | return this._smoothRapidInsulin; 82 | } 83 | 84 | /** 85 | * Generate a list of points with spreading the insulin value using a custom curve to estimate the insulin/hour (Based on Lantus) 86 | * Start acting 4h-5h after application, peaks at 6h-7h, lose effect arround 20h-22h (effect multiplied by scale factor). 87 | * 88 | * @param scale A number to mutiply the insulin effective value 89 | * @returns A list of SmoothInsulinRecord (date, value) with the insuling effect. 90 | */ 91 | public getSmoothLongInsulin(scale = 1) { 92 | if (this._smoothLongInsulin.length != 0) 93 | return this._smoothLongInsulin; 94 | 95 | this.insulin.forEach(function(element) { 96 | if (element.insulinType == InsulinRecordType.Long) { 97 | var minutes = element.date.minutes(); 98 | var firstPoint = moment(element.date).startOf('hour'); 99 | 100 | // TODO: This function needs some backup from studies, rigth now is a "guess" 101 | this._addSmoothPoint(this._smoothLongInsulinByDate, moment(firstPoint).add( 0, "hour"), element.units * 0.000 * scale); 102 | this._addSmoothPoint(this._smoothLongInsulinByDate, moment(firstPoint).add( 1, "hour"), element.units * 0.000 * scale); 103 | this._addSmoothPoint(this._smoothLongInsulinByDate, moment(firstPoint).add( 2, "hour"), element.units * 0.002 * scale); 104 | this._addSmoothPoint(this._smoothLongInsulinByDate, moment(firstPoint).add( 3, "hour"), element.units * 0.014 * scale); 105 | this._addSmoothPoint(this._smoothLongInsulinByDate, moment(firstPoint).add( 4, "hour"), element.units * 0.027 * scale); 106 | this._addSmoothPoint(this._smoothLongInsulinByDate, moment(firstPoint).add( 5, "hour"), element.units * 0.055 * scale); 107 | this._addSmoothPoint(this._smoothLongInsulinByDate, moment(firstPoint).add( 6, "hour"), element.units * 0.091 * scale); 108 | this._addSmoothPoint(this._smoothLongInsulinByDate, moment(firstPoint).add( 7, "hour"), element.units * 0.091 * scale); 109 | this._addSmoothPoint(this._smoothLongInsulinByDate, moment(firstPoint).add( 8, "hour"), element.units * 0.084 * scale); 110 | this._addSmoothPoint(this._smoothLongInsulinByDate, moment(firstPoint).add( 9, "hour"), element.units * 0.075 * scale); 111 | this._addSmoothPoint(this._smoothLongInsulinByDate, moment(firstPoint).add( 10, "hour"), element.units * 0.069 * scale); 112 | this._addSmoothPoint(this._smoothLongInsulinByDate, moment(firstPoint).add( 11, "hour"), element.units * 0.068 * scale); 113 | this._addSmoothPoint(this._smoothLongInsulinByDate, moment(firstPoint).add( 12, "hour"), element.units * 0.067 * scale); 114 | this._addSmoothPoint(this._smoothLongInsulinByDate, moment(firstPoint).add( 13, "hour"), element.units * 0.056 * scale); 115 | this._addSmoothPoint(this._smoothLongInsulinByDate, moment(firstPoint).add( 14, "hour"), element.units * 0.052 * scale); 116 | this._addSmoothPoint(this._smoothLongInsulinByDate, moment(firstPoint).add( 15, "hour"), element.units * 0.049 * scale); 117 | this._addSmoothPoint(this._smoothLongInsulinByDate, moment(firstPoint).add( 16, "hour"), element.units * 0.044 * scale); 118 | this._addSmoothPoint(this._smoothLongInsulinByDate, moment(firstPoint).add( 17, "hour"), element.units * 0.039 * scale); 119 | this._addSmoothPoint(this._smoothLongInsulinByDate, moment(firstPoint).add( 18, "hour"), element.units * 0.038 * scale); 120 | this._addSmoothPoint(this._smoothLongInsulinByDate, moment(firstPoint).add( 19, "hour"), element.units * 0.036 * scale); 121 | this._addSmoothPoint(this._smoothLongInsulinByDate, moment(firstPoint).add( 20, "hour"), element.units * 0.027 * scale); 122 | this._addSmoothPoint(this._smoothLongInsulinByDate, moment(firstPoint).add( 21, "hour"), element.units * 0.014 * scale); 123 | this._addSmoothPoint(this._smoothLongInsulinByDate, moment(firstPoint).add( 22, "hour"), element.units * 0.002 * scale); 124 | this._addSmoothPoint(this._smoothLongInsulinByDate, moment(firstPoint).add( 23, "hour"), element.units * 0.000 * scale); 125 | } 126 | }, this); 127 | 128 | for (var key in this._smoothLongInsulinByDate) { 129 | var date = moment(parseInt(key)); 130 | if (date != undefined) { 131 | this._smoothLongInsulin.push(new SmoothInsulinRecord(date, this._smoothLongInsulinByDate[key])); 132 | } 133 | } 134 | return this._smoothLongInsulin; 135 | } 136 | 137 | private _addSmoothPoint(smoothInsulin: Array, point: moment.Moment, value: number) { 138 | var initialValue = smoothInsulin[point.valueOf()]; 139 | if (initialValue == undefined) { 140 | smoothInsulin[point.valueOf()] = value; 141 | } else { 142 | smoothInsulin[point.valueOf()] = initialValue + value; 143 | } 144 | } 145 | } -------------------------------------------------------------------------------- /ts/SmoothInsulinRecord.ts: -------------------------------------------------------------------------------- 1 | class SmoothInsulinRecord extends DateRecord { 2 | readonly units: number; 3 | 4 | constructor(date: moment.Moment, units: number) { 5 | super(date, RecordType.SmoothInsulin); 6 | this.units = units; 7 | } 8 | } -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "system", 4 | "preserveConstEnums": true, 5 | "outFile": "js/freestylelibrelib.js", 6 | "sourceMap": false 7 | }, 8 | "include": [ 9 | "ts/**/*", 10 | "typings/index.d.ts" 11 | ], 12 | "exclude": [ 13 | "**/*.spec.ts" 14 | ] 15 | } -------------------------------------------------------------------------------- /typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "moment": "registry:dt/moment#2.11.1+20161010105546" 4 | } 5 | } 6 | --------------------------------------------------------------------------------