diff --git a/jest.setup.ts b/jest.setup.ts index a4c688a80..b2230c454 100644 --- a/jest.setup.ts +++ b/jest.setup.ts @@ -31,3 +31,26 @@ Object.defineProperty(window, 'matchMedia', { * https://github.com/jsdom/jsdom/issues/3363 */ global.structuredClone = jest.fn(val => JSON.parse(JSON.stringify(val))); + +/** + * Polyfill `crypto.randomUUID` which jsdom's `crypto` implementation does not + * provide. Uses an incrementing counter so IDs are unique and deterministic + * within a test run. + */ +if (typeof globalThis.crypto?.randomUUID !== 'function') { + let uuidCounter = 0; + Object.defineProperty( + globalThis.crypto ?? (globalThis.crypto = {} as Crypto), + 'randomUUID', + { + configurable: true, + value: () => + `00000000-0000-0000-0000-${(uuidCounter += 1) + .toString() + .padStart( + 12, + '0' + )}` as `${string}-${string}-${string}-${string}-${string}`, + } + ); +} diff --git a/package-lock.json b/package-lock.json index cd997a26d..4bd221f9e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -102,7 +102,6 @@ "node_modules/@adobe/react-spectrum": { "version": "3.47.0", "license": "Apache-2.0", - "peer": true, "dependencies": { "@internationalized/date": "^3.12.1", "@react-types/shared": "^3.34.0", @@ -167,7 +166,6 @@ "version": "7.29.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", @@ -726,7 +724,6 @@ "version": "7.28.6", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, @@ -1538,7 +1535,6 @@ "version": "7.28.6", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "@babel/helper-module-imports": "^7.28.6", @@ -1995,6 +1991,7 @@ "version": "2.0.8", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@cacheable/utils": "^2.4.0", "@keyv/bigmap": "^1.3.1", @@ -2006,6 +2003,7 @@ "version": "1.3.1", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "hashery": "^1.4.0", "hookified": "^1.15.0" @@ -2030,6 +2028,7 @@ "version": "2.4.1", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "hashery": "^1.5.1", "keyv": "^5.6.0" @@ -2039,6 +2038,7 @@ "version": "5.6.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@keyv/serialize": "^1.1.1" } @@ -2067,6 +2067,7 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=20.19.0" }, @@ -2111,6 +2112,7 @@ } ], "license": "MIT-0", + "peer": true, "peerDependencies": { "css-tree": "^3.2.1" }, @@ -2153,6 +2155,7 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=20.19.0" }, @@ -2175,6 +2178,7 @@ } ], "license": "MIT-0", + "peer": true, "engines": { "node": ">=20.19.0" }, @@ -2196,6 +2200,7 @@ } ], "license": "MIT-0", + "peer": true, "engines": { "node": ">=20.19.0" }, @@ -2249,7 +2254,7 @@ } }, "node_modules/@deephaven/chart": { - "version": "1.23.0", + "version": "1.26.0", "license": "Apache-2.0", "dependencies": { "@deephaven/components": "^1.22.1", @@ -2424,11 +2429,11 @@ } }, "node_modules/@deephaven/console": { - "version": "1.23.0", + "version": "1.26.0", "license": "Apache-2.0", "dependencies": { "@astral-sh/ruff-wasm-web": "0.6.4", - "@deephaven/chart": "^1.23.0", + "@deephaven/chart": "^1.26.0", "@deephaven/components": "^1.22.1", "@deephaven/icons": "^1.2.0", "@deephaven/jsapi-bootstrap": "^1.23.0", @@ -2477,8 +2482,6 @@ }, "node_modules/@deephaven/dashboard": { "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@deephaven/dashboard/-/dashboard-1.24.0.tgz", - "integrity": "sha512-M8OOJBufss/XfFXuISRQd6WySPyBowQz+BKp8LkmN8xmMpZpOH5WNtLE/ZfmusTT0yUlRJ+5yGdpKAO6Jx/Yfg==", "license": "Apache-2.0", "dependencies": { "@deephaven/components": "^1.22.1", @@ -2505,27 +2508,25 @@ } }, "node_modules/@deephaven/dashboard-core-plugins": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@deephaven/dashboard-core-plugins/-/dashboard-core-plugins-1.24.0.tgz", - "integrity": "sha512-RVbuTWhu8QOik5nTNqQicRNQgS/XGTeSspeohXPPweG8go996CtvygpXJVILcMFX7FehxDgWdQZ3TWgYRbY+7A==", + "version": "1.26.0", "license": "Apache-2.0", "dependencies": { - "@deephaven/chart": "^1.23.0", + "@deephaven/chart": "^1.26.0", "@deephaven/components": "^1.22.1", - "@deephaven/console": "^1.23.0", + "@deephaven/console": "^1.26.0", "@deephaven/dashboard": "^1.24.0", "@deephaven/file-explorer": "^1.22.1", "@deephaven/filters": "^1.1.0", "@deephaven/golden-layout": "^1.24.0", - "@deephaven/grid": "^1.23.0", + "@deephaven/grid": "^1.25.0", "@deephaven/icons": "^1.2.0", - "@deephaven/iris-grid": "^1.23.0", + "@deephaven/iris-grid": "^1.26.0", "@deephaven/jsapi-bootstrap": "^1.23.0", "@deephaven/jsapi-components": "^1.23.0", "@deephaven/jsapi-types": "^1.0.0-dev0.40.4", "@deephaven/jsapi-utils": "^1.23.0", "@deephaven/log": "^1.8.0", - "@deephaven/plugin": "^1.24.0", + "@deephaven/plugin": "^1.26.0", "@deephaven/react-hooks": "^1.21.1", "@deephaven/redux": "^1.23.0", "@deephaven/storage": "^1.8.0", @@ -2637,8 +2638,6 @@ }, "node_modules/@deephaven/golden-layout": { "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@deephaven/golden-layout/-/golden-layout-1.24.0.tgz", - "integrity": "sha512-TNAZXtVpp3XNB0iJx7Av2EWZtWEj63sbvw7/HMk7KKhujcyPQjH7dF+5pr0EAY+8WehzDcQ6nuEigJhot+X4Cg==", "license": "Apache-2.0", "dependencies": { "@deephaven/components": "^1.22.1", @@ -2667,7 +2666,7 @@ } }, "node_modules/@deephaven/grid": { - "version": "1.23.0", + "version": "1.25.0", "license": "Apache-2.0", "dependencies": { "@deephaven/utils": "^1.10.0", @@ -2698,13 +2697,13 @@ } }, "node_modules/@deephaven/iris-grid": { - "version": "1.23.0", + "version": "1.26.0", "license": "Apache-2.0", "dependencies": { "@deephaven/components": "^1.22.1", - "@deephaven/console": "^1.23.0", + "@deephaven/console": "^1.26.0", "@deephaven/filters": "^1.1.0", - "@deephaven/grid": "^1.23.0", + "@deephaven/grid": "^1.25.0", "@deephaven/icons": "^1.2.0", "@deephaven/jsapi-components": "^1.23.0", "@deephaven/jsapi-types": "^1.0.0-dev0.40.4", @@ -2888,17 +2887,15 @@ } }, "node_modules/@deephaven/plugin": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@deephaven/plugin/-/plugin-1.24.0.tgz", - "integrity": "sha512-RQQMyiWmtTnXdUgfWXSxT/7RB0jV5f6AexQ4Wwr5bPFVsUF1FOhw1PMaHLPdY3LWgXhSMLTpy3tA+81mUmxzEA==", + "version": "1.26.0", "license": "Apache-2.0", "dependencies": { "@deephaven/components": "^1.22.1", "@deephaven/dashboard": "^1.24.0", "@deephaven/golden-layout": "^1.24.0", - "@deephaven/grid": "^1.23.0", + "@deephaven/grid": "^1.25.0", "@deephaven/icons": "^1.2.0", - "@deephaven/iris-grid": "^1.23.0", + "@deephaven/iris-grid": "^1.26.0", "@deephaven/jsapi-types": "^1.0.0-dev0.40.4", "@deephaven/log": "^1.8.0", "@deephaven/react-hooks": "^1.21.1", @@ -2956,7 +2953,7 @@ } }, "node_modules/@deephaven/react-hooks/node_modules/nanoid": { - "version": "5.1.16", + "version": "5.1.9", "funding": [ { "type": "github", @@ -3065,7 +3062,6 @@ "node_modules/@dnd-kit/core": { "version": "6.3.1", "license": "MIT", - "peer": true, "dependencies": { "@dnd-kit/accessibility": "^3.1.1", "@dnd-kit/utilities": "^3.2.2", @@ -3550,6 +3546,8 @@ }, "node_modules/@eslint/eslintrc/node_modules/ajv": { "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", "dev": true, "license": "MIT", "dependencies": { @@ -3565,6 +3563,8 @@ }, "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, "license": "MIT" }, @@ -3635,7 +3635,6 @@ "node_modules/@fortawesome/fontawesome-svg-core": { "version": "6.7.2", "license": "MIT", - "peer": true, "dependencies": { "@fortawesome/fontawesome-common-types": "6.7.2" }, @@ -3646,7 +3645,6 @@ "node_modules/@fortawesome/react-fontawesome": { "version": "0.2.6", "license": "MIT", - "peer": true, "dependencies": { "prop-types": "^15.8.1" }, @@ -3701,8 +3699,7 @@ }, "node_modules/@hello-pangea/dnd/node_modules/redux": { "version": "5.0.1", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@humanwhocodes/config-array": { "version": "0.13.0", @@ -4650,7 +4647,8 @@ "node_modules/@keyv/serialize": { "version": "1.1.1", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@mapbox/geojson-rewind": { "version": "0.5.2", @@ -5571,6 +5569,9 @@ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -5585,6 +5586,9 @@ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -5599,6 +5603,9 @@ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -5613,6 +5620,9 @@ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -5659,7 +5669,6 @@ "version": "5.2.2", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@octokit/auth-token": "^4.0.0", "@octokit/graphql": "^7.1.0", @@ -5921,6 +5930,9 @@ "arm" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -5942,6 +5954,9 @@ "arm" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -5963,6 +5978,9 @@ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -5984,6 +6002,9 @@ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -6005,6 +6026,9 @@ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -6026,6 +6050,9 @@ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -6118,6 +6145,7 @@ "version": "0.1.2", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, @@ -6595,6 +6623,9 @@ "arm" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -6608,6 +6639,9 @@ "cpu": [ "arm64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -6621,6 +6655,9 @@ "cpu": [ "arm64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -6635,6 +6672,9 @@ "loong64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -6649,6 +6689,9 @@ "loong64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -6663,6 +6706,9 @@ "ppc64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -6677,6 +6723,9 @@ "ppc64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -6690,6 +6739,9 @@ "cpu": [ "riscv64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -6704,6 +6756,9 @@ "riscv64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -6718,6 +6773,9 @@ "s390x" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -6731,6 +6789,9 @@ "cpu": [ "x64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -6744,6 +6805,9 @@ "cpu": [ "x64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -6994,6 +7058,7 @@ "version": "4.0.0", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=18" }, @@ -7137,6 +7202,9 @@ "cpu": [ "arm64" ], + "libc": [ + "glibc" + ], "license": "Apache-2.0 AND MIT", "optional": true, "os": [ @@ -7153,6 +7221,9 @@ "cpu": [ "arm64" ], + "libc": [ + "musl" + ], "license": "Apache-2.0 AND MIT", "optional": true, "os": [ @@ -7170,6 +7241,9 @@ "ppc64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "Apache-2.0 AND MIT", "optional": true, "os": [ @@ -7187,6 +7261,9 @@ "s390x" ], "dev": true, + "libc": [ + "glibc" + ], "license": "Apache-2.0 AND MIT", "optional": true, "os": [ @@ -7203,6 +7280,9 @@ "cpu": [ "x64" ], + "libc": [ + "glibc" + ], "license": "Apache-2.0 AND MIT", "optional": true, "os": [ @@ -7219,6 +7299,9 @@ "cpu": [ "x64" ], + "libc": [ + "musl" + ], "license": "Apache-2.0 AND MIT", "optional": true, "os": [ @@ -7316,6 +7399,9 @@ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "Apache-2.0 AND MIT", "optional": true, "os": [ @@ -7333,6 +7419,9 @@ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "Apache-2.0 AND MIT", "optional": true, "os": [ @@ -7350,6 +7439,9 @@ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "Apache-2.0 AND MIT", "optional": true, "os": [ @@ -7367,6 +7459,9 @@ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "Apache-2.0 AND MIT", "optional": true, "os": [ @@ -7681,7 +7776,8 @@ "node_modules/@types/aria-query": { "version": "5.0.4", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@types/babel__core": { "version": "7.20.5", @@ -7923,7 +8019,6 @@ "version": "20.19.39", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "undici-types": "~6.21.0" } @@ -8111,7 +8206,6 @@ "version": "5.62.0", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "5.62.0", "@typescript-eslint/types": "5.62.0", @@ -8368,7 +8462,6 @@ "node_modules/acorn": { "version": "8.16.0", "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -8497,6 +8590,8 @@ }, "node_modules/ajv": { "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", "dev": true, "license": "MIT", "dependencies": { @@ -8800,6 +8895,7 @@ "version": "2.0.0", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8" } @@ -9288,7 +9384,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.10.12", "caniuse-lite": "^1.0.30001782", @@ -9471,6 +9566,7 @@ "version": "2.3.4", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@cacheable/memory": "^2.0.8", "@cacheable/utils": "^2.4.0", @@ -9483,6 +9579,7 @@ "version": "5.6.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@keyv/serialize": "^1.1.1" } @@ -9873,7 +9970,8 @@ "node_modules/colord": { "version": "2.9.3", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/columnify": { "version": "1.6.0", @@ -10238,6 +10336,7 @@ "version": "3.3.3", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" } @@ -10960,6 +11059,7 @@ "version": "5.20.1", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.0" @@ -11708,7 +11808,6 @@ "version": "8.57.1", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -11801,7 +11900,6 @@ "version": "8.3.0", "dev": true, "license": "MIT", - "peer": true, "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -11880,6 +11978,7 @@ "version": "3.5.0", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "debug": "^4.3.4", "enhanced-resolve": "^5.10.0", @@ -11904,6 +12003,7 @@ "version": "13.2.2", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "dir-glob": "^3.0.1", "fast-glob": "^3.3.0", @@ -11922,6 +12022,7 @@ "version": "4.0.0", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -11993,7 +12094,6 @@ "version": "2.32.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", @@ -12068,7 +12168,6 @@ "version": "6.10.2", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "aria-query": "^5.3.2", "array-includes": "^3.1.8", @@ -12105,6 +12204,7 @@ "version": "5.5.5", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "prettier-linter-helpers": "^1.0.1", "synckit": "^0.11.12" @@ -12134,6 +12234,7 @@ "version": "0.2.9", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, @@ -12145,6 +12246,7 @@ "version": "0.11.12", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@pkgr/core": "^0.2.9" }, @@ -12159,7 +12261,6 @@ "version": "7.37.5", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "array-includes": "^3.1.8", "array.prototype.findlast": "^1.2.5", @@ -12191,7 +12292,6 @@ "version": "4.6.2", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10" }, @@ -12280,6 +12380,7 @@ "version": "2.1.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "eslint-visitor-keys": "^1.1.0" }, @@ -12294,6 +12395,7 @@ "version": "1.3.0", "dev": true, "license": "Apache-2.0", + "peer": true, "engines": { "node": ">=4" } @@ -12311,6 +12413,8 @@ }, "node_modules/eslint/node_modules/ajv": { "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", "dev": true, "license": "MIT", "dependencies": { @@ -12356,6 +12460,8 @@ }, "node_modules/eslint/node_modules/json-schema-traverse": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, "license": "MIT" }, @@ -12560,7 +12666,8 @@ "node_modules/fast-diff": { "version": "1.3.0", "dev": true, - "license": "Apache-2.0" + "license": "Apache-2.0", + "peer": true }, "node_modules/fast-glob": { "version": "3.3.3", @@ -12628,6 +12735,7 @@ "version": "1.0.16", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 4.9.1" } @@ -13005,6 +13113,7 @@ "version": "1.5.0", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=18" }, @@ -13178,6 +13287,7 @@ "version": "4.14.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "resolve-pkg-maps": "^1.0.0" }, @@ -13342,6 +13452,7 @@ "version": "2.0.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "global-prefix": "^3.0.0" }, @@ -13353,6 +13464,7 @@ "version": "3.0.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "ini": "^1.3.5", "kind-of": "^6.0.2", @@ -13366,6 +13478,7 @@ "version": "1.3.1", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "isexe": "^2.0.0" }, @@ -13424,7 +13537,8 @@ "node_modules/globjoin": { "version": "0.1.4", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/glsl-inject-defines": { "version": "1.0.3", @@ -13778,6 +13892,7 @@ "version": "1.5.1", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "hookified": "^1.15.0" }, @@ -13881,7 +13996,8 @@ "node_modules/hookified": { "version": "1.15.1", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/hosted-git-info": { "version": "9.0.2", @@ -13921,6 +14037,7 @@ "version": "5.1.0", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=20.10" }, @@ -14106,6 +14223,7 @@ "version": "4.2.0", "dev": true, "license": "MIT", + "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -14580,6 +14698,7 @@ "version": "5.0.0", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -14887,7 +15006,6 @@ "version": "29.7.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", @@ -16132,8 +16250,7 @@ }, "node_modules/jquery": { "version": "3.7.1", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/js-cookie": { "version": "3.0.5", @@ -16239,6 +16356,8 @@ }, "node_modules/json-schema-traverse": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true, "license": "MIT" }, @@ -16929,7 +17048,8 @@ "node_modules/lodash.truncate": { "version": "4.4.2", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/log-symbols": { "version": "4.1.0", @@ -16998,6 +17118,7 @@ "version": "1.5.0", "dev": true, "license": "MIT", + "peer": true, "bin": { "lz-string": "bin/bin.js" } @@ -17262,6 +17383,7 @@ "version": "4.0.0", "dev": true, "license": "MIT", + "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -17483,7 +17605,8 @@ "node_modules/mdn-data": { "version": "2.27.1", "dev": true, - "license": "CC0-1.0" + "license": "CC0-1.0", + "peer": true }, "node_modules/memoize-one": { "version": "5.2.1", @@ -19098,7 +19221,6 @@ "dev": true, "hasInstallScript": true, "license": "MIT", - "peer": true, "dependencies": { "@napi-rs/wasm-runtime": "0.2.4", "@yarnpkg/lockfile": "^1.1.0", @@ -20158,7 +20280,6 @@ "node_modules/plotly.js": { "version": "3.5.0", "license": "MIT", - "peer": true, "dependencies": { "@plotly/d3": "3.8.2", "@plotly/d3-sankey": "0.7.2", @@ -20230,7 +20351,6 @@ "node_modules/popper.js": { "version": "1.16.1", "license": "MIT", - "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" @@ -20261,7 +20381,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -20289,6 +20408,7 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=18.0" }, @@ -20300,7 +20420,6 @@ "version": "7.1.1", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -20312,7 +20431,8 @@ "node_modules/postcss-value-parser": { "version": "4.2.0", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/potpack": { "version": "1.0.2", @@ -20330,7 +20450,6 @@ "version": "3.0.0", "dev": true, "license": "MIT", - "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -20345,6 +20464,7 @@ "version": "1.0.1", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "fast-diff": "^1.1.2" }, @@ -20356,6 +20476,7 @@ "version": "27.5.1", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", @@ -20369,6 +20490,7 @@ "version": "5.2.0", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=10" }, @@ -20541,6 +20663,7 @@ "version": "0.9.1", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "hookified": "^2.1.1" }, @@ -20551,7 +20674,8 @@ "node_modules/qified/node_modules/hookified": { "version": "2.1.1", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/querystringify": { "version": "2.2.0", @@ -20602,7 +20726,6 @@ "node_modules/react": { "version": "18.3.1", "license": "MIT", - "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -20648,7 +20771,6 @@ "node_modules/react-dom": { "version": "18.3.1", "license": "MIT", - "peer": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" @@ -20659,8 +20781,7 @@ }, "node_modules/react-is": { "version": "17.0.2", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/react-markdown": { "version": "8.0.7", @@ -20709,7 +20830,6 @@ "node_modules/react-redux": { "version": "7.2.9", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.15.4", "@types/react-redux": "^7.1.20", @@ -21015,7 +21135,6 @@ "node_modules/redux": { "version": "4.2.1", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.9.2" } @@ -21086,6 +21205,7 @@ "version": "3.2.0", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8" }, @@ -21339,6 +21459,7 @@ "version": "1.0.0", "dev": true, "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } @@ -21510,6 +21631,9 @@ "arm" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -21524,6 +21648,9 @@ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -21538,6 +21665,9 @@ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -21552,6 +21682,9 @@ "riscv64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -21566,6 +21699,9 @@ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -21580,6 +21716,9 @@ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -21762,7 +21901,6 @@ "version": "1.99.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "chokidar": "^4.0.0", "immutable": "^5.1.5", @@ -21994,6 +22132,7 @@ "version": "4.0.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -22482,6 +22621,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "@csstools/css-calc": "^3.1.1", "@csstools/css-parser-algorithms": "^4.0.0", @@ -22531,6 +22671,7 @@ "version": "6.2.2", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -22542,6 +22683,7 @@ "version": "9.0.1", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", @@ -22567,6 +22709,7 @@ "version": "11.1.2", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "flat-cache": "^6.1.20" } @@ -22575,6 +22718,7 @@ "version": "6.1.22", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "cacheable": "^2.3.4", "flatted": "^3.4.2", @@ -22585,6 +22729,7 @@ "version": "16.2.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@sindresorhus/merge-streams": "^4.0.0", "fast-glob": "^3.3.3", @@ -22604,6 +22749,7 @@ "version": "7.0.5", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 4" } @@ -22612,6 +22758,7 @@ "version": "4.0.0", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -22623,6 +22770,7 @@ "version": "14.1.0", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=20" }, @@ -22634,6 +22782,7 @@ "version": "4.1.0", "dev": true, "license": "ISC", + "peer": true, "engines": { "node": ">=14" }, @@ -22645,6 +22794,7 @@ "version": "5.1.0", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=14.16" }, @@ -22656,6 +22806,7 @@ "version": "8.2.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "get-east-asian-width": "^1.5.0", "strip-ansi": "^7.1.2" @@ -22671,6 +22822,7 @@ "version": "7.2.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "ansi-regex": "^6.2.2" }, @@ -22685,6 +22837,7 @@ "version": "7.0.1", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "signal-exit": "^4.0.1" }, @@ -22722,6 +22875,7 @@ "version": "4.4.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "has-flag": "^5.0.1", "supports-color": "^10.2.2" @@ -22737,6 +22891,7 @@ "version": "5.0.1", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -22748,6 +22903,7 @@ "version": "10.2.2", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=18" }, @@ -22799,7 +22955,8 @@ }, "node_modules/svg-tags": { "version": "1.0.0", - "dev": true + "dev": true, + "peer": true }, "node_modules/symbol-tree": { "version": "3.2.4", @@ -22809,6 +22966,7 @@ "version": "0.8.8", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@pkgr/core": "^0.1.0", "tslib": "^2.6.2" @@ -22824,6 +22982,7 @@ "version": "6.9.0", "dev": true, "license": "BSD-3-Clause", + "peer": true, "dependencies": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", @@ -22835,10 +22994,27 @@ "node": ">=10.0.0" } }, + "node_modules/table/node_modules/ajv": { + "version": "8.18.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/tapable": { "version": "2.3.2", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=6" }, @@ -23011,7 +23187,6 @@ "version": "4.0.4", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -23326,7 +23501,6 @@ "version": "5.9.3", "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -23409,6 +23583,7 @@ "version": "0.4.0", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=20" }, @@ -23582,6 +23757,8 @@ }, "node_modules/uri-js": { "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -23690,7 +23867,6 @@ "version": "5.4.21", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.43", @@ -24252,31 +24428,126 @@ "react-dom": "^18.0.0 || ^19.0.0" } }, - "plugins/pivot-builder/src/js/node_modules/@deephaven/js-plugin-pivot": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@deephaven/js-plugin-pivot/-/js-plugin-pivot-0.5.0.tgz", - "integrity": "sha512-KWTTQEQou3UijSttjEpU4CLpWtpqzwUJrljyCh5/GSSA6wRKh9FUn9rDajMh3SptxI51MOm0C58T4TQzO2oQcw==", + "plugins/pivot-builder/src/js/node_modules/@deephaven/dashboard-core-plugins": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@deephaven/dashboard-core-plugins/-/dashboard-core-plugins-1.24.0.tgz", + "integrity": "sha512-RVbuTWhu8QOik5nTNqQicRNQgS/XGTeSspeohXPPweG8go996CtvygpXJVILcMFX7FehxDgWdQZ3TWgYRbY+7A==", "license": "Apache-2.0", "dependencies": { + "@deephaven/chart": "^1.23.0", "@deephaven/components": "^1.22.1", + "@deephaven/console": "^1.23.0", "@deephaven/dashboard": "^1.24.0", - "@deephaven/dashboard-core-plugins": "^1.24.0", + "@deephaven/file-explorer": "^1.22.1", + "@deephaven/filters": "^1.1.0", + "@deephaven/golden-layout": "^1.24.0", "@deephaven/grid": "^1.23.0", "@deephaven/icons": "^1.2.0", "@deephaven/iris-grid": "^1.23.0", "@deephaven/jsapi-bootstrap": "^1.23.0", + "@deephaven/jsapi-components": "^1.23.0", + "@deephaven/jsapi-types": "^1.0.0-dev0.40.4", "@deephaven/jsapi-utils": "^1.23.0", "@deephaven/log": "^1.8.0", "@deephaven/plugin": "^1.24.0", + "@deephaven/react-hooks": "^1.21.1", + "@deephaven/redux": "^1.23.0", + "@deephaven/storage": "^1.8.0", "@deephaven/utils": "^1.10.0", + "@fortawesome/react-fontawesome": "^0.2.0", + "classnames": "^2.3.1", + "fast-deep-equal": "^3.1.3", "lodash.clamp": "^4.0.3", + "lodash.debounce": "^4.0.8", "lodash.throttle": "^4.1.1", "memoize-one": "^5.1.1", - "nanoid": "^5.1.5" + "memoizee": "^0.4.15", + "nanoid": "^5.0.7", + "prop-types": "^15.7.2", + "react-markdown": "^8.0.7", + "redux": "^4.2.0", + "redux-thunk": "^2.4.1", + "rehype-mathjax": "^4.0.3", + "remark-gfm": "^3.0.1", + "remark-math": "^5.1.1" + }, + "engines": { + "node": ">=16" }, "peerDependencies": { - "react": "^18.0.0 || ^19.0.0", - "react-dom": "^18.0.0 || ^19.0.0" + "react": ">=16.8.0", + "react-dom": ">=16.8.0", + "react-redux": "^7.2.4" + } + }, + "plugins/pivot-builder/src/js/node_modules/@deephaven/iris-grid": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@deephaven/iris-grid/-/iris-grid-1.23.0.tgz", + "integrity": "sha512-/9/gyJqCA3QM1pVorb6nlMKbmy5W1JhSJqYrRQez4uhS1fF9blroNTQwN6mdfVkw+03V0fbuoc8pHfuhQ+Kb7A==", + "license": "Apache-2.0", + "dependencies": { + "@deephaven/components": "^1.22.1", + "@deephaven/console": "^1.23.0", + "@deephaven/filters": "^1.1.0", + "@deephaven/grid": "^1.23.0", + "@deephaven/icons": "^1.2.0", + "@deephaven/jsapi-components": "^1.23.0", + "@deephaven/jsapi-types": "^1.0.0-dev0.40.4", + "@deephaven/jsapi-utils": "^1.23.0", + "@deephaven/log": "^1.8.0", + "@deephaven/react-hooks": "^1.21.1", + "@deephaven/storage": "^1.8.0", + "@deephaven/utils": "^1.10.0", + "@dnd-kit/core": "^6.1.0", + "@dnd-kit/modifiers": "^9.0.0", + "@dnd-kit/sortable": "^10.0.0", + "@dnd-kit/utilities": "^3.2.2", + "@fortawesome/react-fontawesome": "^0.2.0", + "@hello-pangea/dnd": "^18.0.1", + "@tanstack/react-virtual": "^3.13.12", + "classnames": "^2.3.1", + "fast-deep-equal": "^3.1.3", + "lodash.clamp": "^4.0.3", + "lodash.debounce": "^4.0.8", + "lodash.throttle": "^4.1.1", + "memoize-one": "^5.1.1", + "memoizee": "^0.4.15", + "monaco-editor": "^0.43.0", + "nanoid": "^5.0.7", + "react-transition-group": "^4.4.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, + "plugins/pivot-builder/src/js/node_modules/@deephaven/plugin": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@deephaven/plugin/-/plugin-1.24.0.tgz", + "integrity": "sha512-RQQMyiWmtTnXdUgfWXSxT/7RB0jV5f6AexQ4Wwr5bPFVsUF1FOhw1PMaHLPdY3LWgXhSMLTpy3tA+81mUmxzEA==", + "license": "Apache-2.0", + "dependencies": { + "@deephaven/components": "^1.22.1", + "@deephaven/dashboard": "^1.24.0", + "@deephaven/golden-layout": "^1.24.0", + "@deephaven/grid": "^1.23.0", + "@deephaven/icons": "^1.2.0", + "@deephaven/iris-grid": "^1.23.0", + "@deephaven/jsapi-types": "^1.0.0-dev0.40.4", + "@deephaven/log": "^1.8.0", + "@deephaven/react-hooks": "^1.21.1", + "@fortawesome/fontawesome-common-types": "^6.1.1", + "@fortawesome/react-fontawesome": "^0.2.0", + "nanoid": "^5.0.7" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "react": ">=16.8.0" } }, "plugins/pivot-builder/src/js/node_modules/nanoid": { @@ -24457,16 +24728,16 @@ "version": "0.19.2", "license": "Apache-2.0", "dependencies": { - "@deephaven/chart": "^1.17.0", - "@deephaven/components": "^1.17.0", - "@deephaven/dashboard": "^1.17.1", - "@deephaven/dashboard-core-plugins": "^1.18.0", + "@deephaven/chart": "^1.26.0", + "@deephaven/components": "^1.22.1", + "@deephaven/dashboard": "^1.24.0", + "@deephaven/dashboard-core-plugins": "^1.26.0", "@deephaven/icons": "^1.2.0", - "@deephaven/jsapi-bootstrap": "^1.17.0", - "@deephaven/jsapi-utils": "^1.16.0", + "@deephaven/jsapi-bootstrap": "^1.23.0", + "@deephaven/jsapi-utils": "^1.23.0", "@deephaven/log": "^1.8.0", - "@deephaven/plugin": "^1.18.0", - "@deephaven/redux": "^1.17.0", + "@deephaven/plugin": "^1.26.0", + "@deephaven/redux": "^1.23.0", "@deephaven/utils": "^1.10.0", "deep-equal": "^2.2.1", "memoizee": "^0.4.17", diff --git a/plans/DH-22030-plotly-events.md b/plans/DH-22030-plotly-events.md new file mode 100644 index 000000000..1e10943d9 --- /dev/null +++ b/plans/DH-22030-plotly-events.md @@ -0,0 +1,827 @@ +# DH-22030: Plotly Express Chart Events + +## Overview + +This plan adds event callback parameters to all plotly-express chart functions (`scatter`, `bar`, `sunburst`, etc.), `layer`, and `make_subplots`. When a user interacts with a chart in the browser (click, select, pan/zoom, etc.), a Python callback fires server-side. The architecture is designed so that additional events can be added later without structural changes. + +--- + +# Part 1: Specification + +## Events + +All event callbacks default to `None`. Most are typed `ChartEventCallback | None`. Preventable events are typed `ChartPreventableEventCallback | None` (see [Callbacks That Control Default Behavior](#callbacks-that-control-default-behavior)). + +| Python param | Plotly event | Description | Applies to | +| ------------------------ | -------------------------- | ------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `on_click` | `plotly_click` | Point click. On hierarchical charts, return `False` to prevent drill-down. | All charts | +| `on_press` | `plotly_click` | Alias for `on_click` | All charts | +| `on_double_click` | `plotly_doubleclick` | Double click on chart area. Only fires in zoom/pan mode. `on_deselect` is triggered on double-click in select mode. | Charts with axes (Cartesian, polar, ternary, 3D, geo) | +| `on_double_press` | `plotly_doubleclick` | Alias for `on_double_click` | Charts with axes (Cartesian, polar, ternary, 3D, geo) | +| `on_selected` | `plotly_selected` | Selection complete (box or lasso). See [Selection Modebar Buttons](#selection-modebar-buttons) | Charts with box/lasso select (Cartesian, polar, ternary) | +| `on_deselect` | `plotly_deselect` | Selection cleared. Fires instead of `on_double_click` in select mode. | Charts with box/lasso select (Cartesian, polar, ternary) | +| `on_relayout` | `plotly_relayout` | Layout changed (pan, zoom, axis reset, dragmode switch, etc.) | Charts with interactive layout (Cartesian, polar, ternary, 3D, geo, mapbox) | +| `on_legend_click` | `plotly_legendclick` | Legend item clicked. Return `False` to prevent trace toggle. | Charts with legends (i.e. multiple traces) | +| `on_legend_double_click` | `plotly_legenddoubleclick` | Legend item double-clicked. Return `False` to prevent isolate/show-all toggle. | Charts with legends (i.e. multiple traces) | +| `on_click_annotation` | `plotly_clickannotation` | Annotation clicked | Charts with annotations | +| `on_web_gl_context_lost` | `plotly_webglcontextlost` | WebGL context lost (GPU reclaims resources) | WebGL-supporting plots only | + +**Notes:** + +- **`on_click`** fires on all chart types including hierarchical charts (`sunburst`, `treemap`, `icicle`) and pie. The point payload varies by chart type. On hierarchical charts, the event data includes a `next_level` field and returning `False` prevents drill-down. The return value is ignored on non-hierarchical charts. +- **`on_double_click`** requires the chart to be in zoom/pan dragmode. Charts without axes (pie, hierarchical) don't support dragmode. +- **`on_selected` / `on_deselect`** require box/lasso selection support. This exists on Cartesian, polar, and ternary charts. 3D, geo, mapbox, pie, and hierarchical charts do not support box/lasso selection. +- **`on_relayout`** fires from user-driven layout interactions (pan, zoom, scroll-zoom, double-click reset, dragmode change, 3D camera rotation, geo/mapbox viewport change). It does **not** fire on window resize, pie charts, or hierarchical charts. The JS implementation debounces `on_relayout` before sending to Python (see [Debouncing](#on_relayout-debouncing)). +- **`on_web_gl_context_lost`** is only added to chart functions that support WebGL rendering (e.g. `scattergl`, `scatter3d`, or charts with `render_mode='webgl'`). Chrome limits WebGL context count, after which older contexts are silently lost. + +### Callbacks That Control Default Behavior + +Three events support returning a `bool` from the callback to control whether the default client-side behavior occurs: + +| Callback | Default behavior prevented when returning `False` | +| ------------------------ | ------------------------------------------------------------- | +| `on_click` | Drill-down animation (hierarchical charts, ignored elsewhere) | +| `on_legend_click` | Legend trace visibility toggle | +| `on_legend_double_click` | Legend trace isolate/show-all toggle | + +These callbacks are typed `ChartPreventableEventCallback` (see below). When the callback returns `False`, the default behavior is suppressed. When it returns `True` or `None` (or has no return value), the default behavior proceeds after a brief delay (network round-trip to Python and back). For `on_click`, the return value is only meaningful on hierarchical charts (`sunburst`, `treemap`, `icicle`). On all other chart types, the return value is ignored. + +**No delay without handlers:** Charts without event handlers are completely unaffected. No interception is installed and Plotly's defaults execute synchronously with zero overhead. + +**Legend click discrimination:** When `on_legend_click` is registered, single-clicks are debounced (~300ms, matching Plotly's native `doubleClickDelay`) to distinguish from double-clicks. This ensures only one of `on_legend_click` or `on_legend_double_click` fires per interaction. See [Legend Click/Double-Click Discrimination](#legend-clickdouble-click-discrimination) in Part 2 for details. + +--- + +## API + +### Callback Types + +All event callbacks accept a single optional positional argument, the event data. + +```python +ChartEventCallback = Callable[..., None] +ChartPreventableEventCallback = Callable[..., bool | None] +``` + +`ChartPreventableEventCallback` is used for the 3 events that can return `False` to prevent default behavior (`on_click`, `on_legend_click`, `on_legend_double_click`). For `on_click`, the return value only has meaning on hierarchical charts (sunburst, treemap, icicle) where it controls drill-down. All other events use `ChartEventCallback`. + +### Chart Function Signature (example: `scatter`) + +```python +def scatter( + table: PartitionableTableLike, + x: str | list[str] | None = None, + y: str | list[str] | None = None, + # ... (other existing params) + unsafe_update_figure: Callable = default_callback, + # Event callbacks (all default to None) + on_click: ChartPreventableEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + # ... (all other event params) +) -> DeephavenFigure: + ... +``` + +### `layer` Signature + +```python +def layer( + *figs: DeephavenFigure | Figure, + which_layout: int | None = None, + specs: list[LayerSpecDict] | None = None, + unsafe_update_figure: Callable = default_callback, + title: str | None = None, + # All universal event params + on_click: ChartPreventableEventCallback | None = None, + # ... (all other event params) +) -> DeephavenFigure: + ... +``` + +### `make_subplots` Signature + +```python +def make_subplots( + *figs: Figure | DeephavenFigure, + rows: int = 0, + cols: int = 0, + # ... (other existing params) + # All universal event params + on_click: ChartPreventableEventCallback | None = None, + # ... (all other event params) +) -> DeephavenFigure: + ... +``` + +--- + +## Event Data Schemas + +All point-bearing events include data-space values matching the column types from the source table (e.g. if `x` is a `long` column, `point["x"]` is an `int`; if it's a `double` column, it's a `float`). `point_index` is excluded as it refers to the rendered trace data and should not be used for server-side logic. `curve_number`, on the other hand, is included to disambiguate points when multiple traces share the same `trace_name`, although will need a note in the docs to be used with caution in case traces shift. + +**Note:** The fields present in each point vary by chart type. The schema below shows a typical Cartesian chart. Other chart types include additional or different fields — for example, geo charts include `lat`/`lon`/`location`, polar charts include `r`/`theta`, OHLC/candlestick charts include `open`/`high`/`low`/`close`, and hierarchical charts include `label`/`parent`/`value`/`id`. The JS serializer includes all relevant data-space fields from the Plotly point object. + +All events that originate from a user interaction include a `modifiers` dict with keyboard state: + +```python +"modifiers": { + "shift": False, + "ctrl": False, # Cmd on macOS + "alt": False, + "meta": False, +} +``` + +### Point Events (`on_click`, `on_selected`) + +```python +{ + "points": [ + { + "x": 5, # Data-space value, matches column type + "y": 0.479, # Data-space value, matches column type + "z": None, # Only for 3D charts + "trace_name": "DOG", # The trace name (partition/by key value, or Plotly trace name) + "trace_type": "scatter", # The Plotly trace type (scatter, bar, sunburst, etc.) + "curve_number": 0, # Trace index, useful when multiple traces share the same trace_name + } + ], + # Only for on_selected with box select: + "range": {"x": [0, 10], "y": [0.0, 5.0]}, + # Only for on_selected with lasso select: + "lasso_points": {"x": [...], "y": [...]}, + "modifiers": {"shift": False, "ctrl": False, "alt": False, "meta": False}, +} +``` + +`trace_name` is the Plotly trace name, which for Deephaven charts is the `by` column value (or partition key) that identifies the trace. If the chart has no `by`/partitioning, `trace_name` is the default Plotly trace name. + +`trace_type` is the Plotly trace type string (e.g. `"scatter"`, `"bar"`, `"sunburst"`, `"scattergeo"`, `"ohlc"`), taken from `data[curveNumber].type`. This is included for convenience so consumers can branch on chart type without looking up the curve number in the figure data. + +### Layout Events (`on_relayout`) + +`on_relayout` fires whenever Plotly's layout is programmatically or interactively changed. The event data is a flat dict of the layout keys that changed. This includes but is not limited to: + +- **Pan/zoom** — axis range changes (`xaxis.range[0]`, `xaxis.range[1]`, etc.) +- **Axis reset** — double-click to reset (`xaxis.autorange`, `yaxis.autorange`) +- **3D camera** — rotation/orbit on 3D charts (`scene.camera.eye`, `scene.camera.center`, etc.) +- **Geo/mapbox** — map panning and zooming (`geo.center.lat`, `geo.center.lon`, `geo.projection.rotation`, `mapbox.center`, `mapbox.zoom`) +- **Dragmode change** — user switches between pan/zoom/select via modebar (`dragmode`) +- **Shape editing** — user moves or resizes a shape (`shapes[0].x0`, `shapes[0].y0`, etc.) + +The dict contains only the keys that changed. The consumer should check which keys are present to determine the type of layout change: + +```python +{ + # Example: pan/zoom (axis range change) + "xaxis.range[0]": 0, + "xaxis.range[1]": 100, + "yaxis.range[0]": -1, + "yaxis.range[1]": 1, + "modifiers": {"shift": False, "ctrl": False, "alt": False, "meta": False}, +} +``` + +```python +{ + # Example: axis reset (double-click to reset zoom) + "xaxis.autorange": True, + "yaxis.autorange": True, + "modifiers": {"shift": False, "ctrl": False, "alt": False, "meta": False}, +} +``` + +```python +{ + # Example: 3D camera rotation + "scene.camera": { + "eye": {"x": 1.25, "y": 1.25, "z": 1.25}, + "center": {"x": 0, "y": 0, "z": 0}, + }, + "modifiers": {"shift": False, "ctrl": False, "alt": False, "meta": False}, +} +``` + +### Legend Events (`on_legend_click`, `on_legend_double_click`) + +By default, `on_legend_click` toggles the visibility of the corresponding trace. `on_legend_double_click` toggles between isolating the clicked trace and showing all. Specifically, if other visible traces exist, they are hidden (isolate). If the trace is already isolated (all others are `'legendonly'`), all traces are shown. If the callback returns `False`, the default behavior is prevented. + +```python +{ + "trace_name": "DOG", # The trace name of the legend item clicked + "curve_number": 0, # The index of the trace in the Plotly data array + "modifiers": {"shift": False, "ctrl": False, "alt": False, "meta": False}, +} +``` + +### Hierarchical Click Data (additional fields in `on_click`) + +When `on_click` fires on a hierarchical chart (`sunburst`, `treemap`, `icicle`), the event data includes an additional `next_level` field. Returning `False` prevents the drill-down animation. + +```python +{ + "points": [ + { + "label": "A", + "parent": "", + "value": 10, + "id": "A", + "curve_number": 0, + "trace_type": "sunburst", + } + ], + "next_level": "A", # The level that would be drilled into (None for leaves/root) + "modifiers": {"shift": False, "ctrl": False, "alt": False, "meta": False}, +} +``` + +### Annotation Events (`on_click_annotation`) + +Although we don't directly support an API for annotations in `dx` charts, they are easily added through `unsafe_update_figure`, so the `on_click_annotation` event can be used to interact with these annotations once they are added. + +```python +{ + "index": 0, + "annotation": {"text": "Label", "x": 1.0, "y": 2.0}, + "modifiers": {"shift": False, "ctrl": False, "alt": False, "meta": False}, +} +``` + +### Double-Click Event (`on_double_click`, `on_double_press`) + +Fires on double-click, which by default resets the axes. No point data is included. + +```python +{"modifiers": {"shift": False, "ctrl": False, "alt": False, "meta": False}} +``` + +### Deselect Event (`on_deselect`) + +Fires when the current selection is cleared (e.g. by double clicking on an empty area). + +```python +{"modifiers": {"shift": False, "ctrl": False, "alt": False, "meta": False}} +``` + +### System Events (`on_web_gl_context_lost`) + +Fires when the WebGL rendering context is lost (e.g. GPU reclaims resources). Chrome limits WebGL context count, after which older contexts are silently lost — data disappears from charts with no indication. This event lets users detect and respond to context loss (e.g. show a warning). No modifiers as this doesn't involve user interaction directly. + +```python +{} # No event data +``` + +--- + +## Examples + +Each example below has two parts: a **Justification** explaining why the event is included (i.e. what Deephaven workflows it enables), and a **Code** snippet that is a minimal illustration of wiring up the callback. + +### `on_click` — Basic Click Handler + +**Justification:** Filter a table to show rows matching the clicked point, open a `dh.ui` detail panel for that data point, or trigger any point-specific server-side logic. + +#### Code + +```python +import deephaven.plot.express as dx + +stocks = dx.data.stocks() +dog_prices = stocks.where("Sym = `DOG`") + + +def handle_click(event): + point = event["points"][0] + print(f"Clicked: x={point['x']}, y={point['y']}, trace={point['trace_name']}") + + +fig = dx.scatter(dog_prices, x="Timestamp", y="Price", on_click=handle_click) +``` + +### `on_selected` — Selection + +**Justification:** Bulk-select data points to feed into a downstream computation. Select outliers for review, filter a related table to the selected subset, or populate a `dh.ui` form with the selected rows. + +#### Code + +```python +import deephaven.plot.express as dx + +stocks = dx.data.stocks() + + +def handle_selection(event): + print(f"Selected {len(event['points'])} points") + if "range" in event: + print(f"Range: x={event['range']['x']}, y={event['range']['y']}") + + +fig = dx.scatter( + stocks, x="Timestamp", y="Price", by="Sym", on_selected=handle_selection +) +``` + +### `on_relayout` — Layout Change (Pan/Zoom) + +**Justification:** Synchronize the visible time range across multiple charts (e.g. pan one chart, update all others to the same window) or filter tables to the visible range. + +#### Code + +```python +import deephaven.plot.express as dx + +stocks = dx.data.stocks() + + +def handle_relayout(event): + if "xaxis.range[0]" in event: + print(f"Visible range: {event['xaxis.range[0]']} to {event['xaxis.range[1]']}") + elif "xaxis.autorange" in event: + print("Axes were reset") + + +fig = dx.line(stocks, x="Timestamp", y="Price", by="Sym", on_relayout=handle_relayout) +``` + +### `on_legend_click` — Legend Click (Preventable) + +**Justification:** Control whether a legend click toggles visibility. Return `False` to prevent the toggle and implement custom logic instead (e.g. show a confirmation dialog, or only allow hiding if at least 2 traces remain visible). + +#### Code + +```python +import deephaven.plot.express as dx + +stocks = dx.data.stocks() + + +def handle_legend_click(event): + print(f"Legend clicked: {event['trace_name']} (curve {event['curve_number']})") + # Return False to prevent the default visibility toggle + # Return True or None to allow it + return True + + +fig = dx.scatter( + stocks, x="Timestamp", y="Price", by="Sym", on_legend_click=handle_legend_click +) +``` + +### `on_legend_double_click` — Legend Double-Click (Preventable) + +**Justification:** Control whether double-clicking isolates a trace. Return `False` to prevent isolation and implement custom behavior instead. + +#### Code + +```python +import deephaven.plot.express as dx + +stocks = dx.data.stocks() + + +def handle_legend_double_click(event): + print(f"Double-clicked: {event['trace_name']}") + # Return False to prevent the default isolate behavior + return False + + +fig = dx.scatter( + stocks, + x="Timestamp", + y="Price", + by="Sym", + on_legend_double_click=handle_legend_double_click, +) +``` + +### `on_click` with Hierarchical Chart - Prevent Drill-Down + +**Justification:** Control drill-down behavior. Click a category to filter related tables to that branch. Return `False` to prevent drill-down when you want the chart to stay at the current level. + +#### Code + +```python +import deephaven.plot.express as dx + +gapminder = dx.data.gapminder() +pop_by_continent = gapminder.last_by("Country").sum_by(["Continent"]) + + +def handle_click(event): + point = event["points"][0] + print(f"Clicked: {point['label']} (parent: {point['parent']})") + print(f"Next level: {event.get('next_level')}") + # Return False to prevent drill-down, True/None to allow + return True + + +fig = dx.sunburst( + pop_by_continent, + names="Continent", + values="Pop", + on_click=handle_click, +) +``` + +### `on_click_annotation` — Annotation Click + +**Justification:** Pop up a `dh.ui` panel with detailed analysis about the annotated data point or region (e.g. clicking an "Anomaly" annotation shows the anomaly detection results). + +#### Code + +```python +import deephaven.plot.express as dx + +stocks = dx.data.stocks() +dog_prices = stocks.where("Sym = `DOG`") + + +def handle_annotation_click(event): + ann = event["annotation"] + print( + f"Annotation #{event['index']} clicked: '{ann['text']}' at ({ann['x']}, {ann['y']})" + ) + + +fig = dx.line( + dog_prices, x="Timestamp", y="Price", on_click_annotation=handle_annotation_click +) +``` + +--- + +# Part 2: Implementation + +## Approach + +The system mirrors the ui plugin's callback pattern (callback IDs, signature-adaptive `wrap_callable`) but is implemented independently. The ui plugin's system (`NodeEncoder`, `ElementMessageStream`, JSON-RPC `callCallable`) is tightly coupled to its React element-tree pipeline and cannot be reused. plotly-express already has its own `MessageStream`-based protocol, so we extend it with a new `CALLABLE_EVENT` message type. + +| Concept | ui plugin | plotly-express (new) | +| ---------------------------- | ------------------------------------------------------- | ----------------------------------------------------------------- | +| Callback ID assignment | `NodeEncoder._convert_callable` assigns `cb0`, `cb1`, … | `DeephavenFigure._register_callback` assigns `cb_0`, `cb_1`, … | +| Callback ID sent to frontend | `{__dhCbid: "cb0"}` in element tree | `deephaven.callbacks: {"on_click": "cb_0"}` in figure JSON | +| Frontend invokes callback | `jsonClient.request('callCallable', [id, args])` | `widget.sendMessage({type: "CALLABLE_EVENT", callback_id, args})` | +| Signature flexibility | `wrap_callable` inspects signature, filters args | Same pattern in plotly-express `types/callbacks.py` | + +## Phase 1 — Callback Storage in `DeephavenFigure` + +**File:** [DeephavenFigure.py](../plugins/plotly-express/src/deephaven/plot/express/deephaven_figure/DeephavenFigure.py) + +1. Add `_callbacks: dict[str, Callable]` (keyed by event name), `_callback_ids: dict[str, str]` (event name → stable ID), and `_next_callback_id: int` counter to `__init__`. +2. Add `_register_callback(event_name: str, fn: Callable) -> None` — assigns the next ID, stores `fn` and the ID. +3. Add `get_callback_by_id(callback_id: str) -> Callable | None` for use in the listener. +4. In `to_json()`, if `_callback_ids` is non-empty, add `deephaven["callbacks"] = self._callback_ids` and `deephaven["preventable_callbacks"] = [id for name, id in self._callback_ids.items() if self._is_preventable(name)]`. The `_is_preventable` check returns `True` for `on_legend_click` and `on_legend_double_click` always, and for `on_click` only when the figure contains hierarchical traces (sunburst, treemap, icicle). +5. In `copy()`, shallow-copy `_callbacks`, `_callback_ids`, and `_next_callback_id` so per-session copies share callable references. + +## Phase 2 — Callback Type Utilities + +**New file:** `plugins/plotly-express/src/deephaven/plot/express/types/callbacks.py` + +6. Define `ChartEventCallback = Callable[..., None]` and `ChartPreventableEventCallback = Callable[..., bool | None]`. +7. Implement `wrap_callable(fn: Callable) -> Callable`: + + ```python + def wrap_callable(fn: Callable) -> Callable: + sig = signature(fn) + max_args = 0 + accepts_var_positional = False + for param in sig.parameters.values(): + if param.kind in (POSITIONAL_ONLY, POSITIONAL_OR_KEYWORD): + max_args += 1 + elif param.kind == VAR_POSITIONAL: + accepts_var_positional = True + + def _wrapper(*args: Any) -> Any: + if accepts_var_positional: + return fn(*args) + else: + return fn(*args[:max_args]) + + return _wrapper + ``` + +8. Export from `types/__init__.py`. + +## Phase 3 — Event Parameters on Chart Functions + +9. Add all event params to every chart function in `plots/`. `on_click` is typed `ChartPreventableEventCallback | None` (return value meaningful only on hierarchical charts), `on_legend_click` and `on_legend_double_click` are typed `ChartPreventableEventCallback | None`, others `ChartEventCallback | None`. All default to `None`. +10. After building the `DeephavenFigure`, call `fig._register_callback(event_name, fn)` for each non-`None` callback kwarg. Mark preventable callbacks in the callback registry so the JS knows to use request-response. For `on_click`, it is only marked preventable when the chart is hierarchical (sunburst, treemap, icicle). +11. `layer()` and `make_subplots()` accept the full event param set. + +The architecture supports adding Deephaven-specific events later by simply adding new params to chart functions and firing callbacks at the appropriate points (server-side in `DeephavenFigureListener` or JS-side via `CALLABLE_EVENT`). No infrastructure changes needed. + +## Phase 3.5 — Selection Modebar Buttons + +**File:** `packages/chart/src/Chart.tsx` (in `web-client-ui`) + +The `select2d` and `lasso2d` modebar buttons are currently not included in `web-client-ui`'s chart config because without event handlers they serve no purpose. When `on_selected` or `on_deselect` callbacks are registered, these buttons need to be conditionally added to the modebar so users can switch to box/lasso select mode. + +26. In `Chart.tsx`, read the callback map from the model (via `getCallbackMap()` or a convenience like `hasSelectionCallbacks()`). +27. If selection callbacks are present, add `"select2d"` and `"lasso2d"` to the Plotly config's `modeBarButtonsToAdd` (or remove them from `modeBarButtonsToRemove` if that's how they're currently suppressed). +28. If no selection callbacks are registered, keep the current behaviour (buttons hidden). + +## Phase 4 — Callback Merging in `layer` and `make_subplots` + +**Files:** [\_layer.py](../plugins/plotly-express/src/deephaven/plot/express/plots/_layer.py), [subplots.py](../plugins/plotly-express/src/deephaven/plot/express/plots/subplots.py) + +12. In `atomic_layer()`, iterate input `DeephavenFigure` args in order and merge `_callbacks` / `_callback_ids` — last figure wins for overlapping event names (matches layout merging). +13. Same merging in `atomic_make_subplots()`. +14. Callbacks passed directly to `layer()` / `make_subplots()` are registered _after_ the merge, so they always win. + +## Phase 5 — Message Handling (`CALLABLE_EVENT`) + +**File:** [DeephavenFigureListener.py](../plugins/plotly-express/src/deephaven/plot/express/communication/DeephavenFigureListener.py) + +15. Add handling in `process_message()`: + + ```python + if message["type"] == "...": + ... + elif message["type"] == "CALLABLE_EVENT": + callback_id = message.get("callback_id") + args = message.get("args", {}) + request_id = message.get("request_id") # present for preventable events + fn = self._figure.get_callback_by_id(callback_id) + result = None + if fn is not None: + try: + result = wrap_callable(fn)(args) + except Exception: + logger.exception("Error in plotly event callback %s", callback_id) + # For preventable events, send back the result + if request_id is not None: + response = json.dumps( + {"type": "CALLABLE_RESPONSE", "request_id": request_id, "result": result} + ) + return response.encode(), [] + return b"", [] + ``` + +16. The `CALLABLE_RESPONSE` message type is new. It carries `request_id` (matching the request) and `result` (`True`/`None` = allow default, `False` = prevent). Fire-and-forget events omit `request_id` and get no response. + +## Phase 6 — JavaScript: Model Updates + +**File:** [PlotlyExpressChartModel.ts](../plugins/plotly-express/src/js/src/PlotlyExpressChartModel.ts) + +18. Parse `figure.deephaven.callbacks?: Record` in `handleWidgetUpdated()` and store as `this.callbackMap: Map` (event name → callback ID). Also parse `figure.deephaven.preventable_callbacks?: string[]` listing callback IDs that use request-response. +19. Add `getCallbackMap(): Map` and `isPreventable(callbackId: string): boolean`. +20. Add fire-and-forget and request-response methods: + + ```typescript + sendEventCallback(callbackId: string, args: unknown): void { + this.widget?.sendMessage( + JSON.stringify({ type: 'CALLABLE_EVENT', callback_id: callbackId, args }) + ); + } + + async sendEventCallbackWithResponse(callbackId: string, args: unknown): Promise { + const requestId = crypto.randomUUID(); + const responsePromise = new Promise((resolve) => { + this.pendingResponses.set(requestId, resolve); + // Timeout after 5s — allow default if Python doesn't respond + setTimeout(() => { + if (this.pendingResponses.delete(requestId)) resolve(true); + }, 5000); + }); + this.widget?.sendMessage( + JSON.stringify({ type: 'CALLABLE_EVENT', callback_id: callbackId, args, request_id: requestId }) + ); + return responsePromise; + } + ``` + +21. Handle `CALLABLE_RESPONSE` messages in the widget message handler: + + ```typescript + if (parsed.type === 'CALLABLE_RESPONSE') { + const resolver = this.pendingResponses.get(parsed.request_id); + if (resolver) { + this.pendingResponses.delete(parsed.request_id); + resolver(parsed.result !== false); + } + } + ``` + +## Preventable Events: Always-Prevent + Conditional Re-trigger + +Since preventable callbacks run server-side (Python) and the Plotly event handler must return synchronously, the JS uses a request-response pattern: + +1. JS always returns `false` from the specialized Plotly event (immediately preventing default) +2. JS sends a `CALLABLE_EVENT` message with a `request_id` to Python and awaits a response +3. Python callback runs and returns `True`/`None` (allow) or `False` (prevent) +4. If the response is `True`/`None`, JS programmatically re-triggers the default behavior: + - **Drill-down** (hierarchical `on_click`): `Plotly.animate(gd, {data: [{level: nextLevel}], traces: [traceIdx]}, animOpts)` + - **Legend toggle**: `Plotly.restyle(gd, {visible: nextVis}, [curveNumber])` — toggles `true` ↔ `'legendonly'` + - **Legend double-click**: If the clicked trace is already isolated (all other visible traces are `'legendonly'`), show all (`Plotly.restyle(gd, {visible: true})`). Otherwise, isolate (`Plotly.restyle(gd, {visible: [true, 'legendonly', ...]})` with only clicked trace visible). This replicates Plotly's built-in `toggleothers` mode. + +When no preventable callback is registered for an event, the JS does not intercept it at all — no listener is attached, Plotly's default executes synchronously. + +### Legend Click/Double-Click Discrimination + +Plotly's legend event dispatch (from `components/legend/draw.js`) has a critical interaction: + +```js +function clickOrDoubleClick(gd, legend, legendItem, numClicks, evt) { + var clickVal = Events.triggerHandler(gd, 'plotly_legendclick', evtData); + if(numClicks === 1) { + if(clickVal === false) return; + legend._clickTimeout = setTimeout(function() { handleClick(..., 1); }, doubleClickDelay); + } else if(numClicks === 2) { + clearTimeout(legend._clickTimeout); + var dblClickVal = Events.triggerHandler(gd, 'plotly_legenddoubleclick', evtData); + if(dblClickVal !== false && clickVal !== false) handleClick(..., 2); + } +} +``` + +Key facts: + +1. **`plotly_legendclick` fires on EVERY click** — both the first and second clicks of a double-click +2. **Returning `false` from `plotly_legendclick` also blocks the default double-click behavior** (because of the `clickVal !== false` check on the numClicks=2 branch) +3. On a double-click: `plotly_legendclick` fires twice (once per mouseup), `plotly_legenddoubleclick` fires once (on the second mouseup) + +**Problem:** Without discrimination, a double-click would trigger 2 single-click sends + 1 double-click send = 2 toggles + 1 isolate. + +**Solution — Debounced single-click with double-click cancellation:** + +When `on_legend_click` is registered, JS **always** registers handlers for both `plotly_legendclick` and `plotly_legenddoubleclick`: + +- **`plotly_legendclick` handler**: Returns `false`. Starts/resets a debounce timer (~300ms = Plotly's `doubleClickDelay`). Does NOT send to Python yet. +- **`plotly_legenddoubleclick` handler**: Returns `false`. Cancels the pending single-click timer. Then: + - If `on_legend_double_click` is registered: sends to Python (request-response) + - If `on_legend_double_click` is NOT registered: programmatically performs default double-click behavior immediately (since returning `false` from `plotly_legendclick` blocked it) +- **On timer expiry** (no double-click detected): sends the single-click to Python (request-response) + +| Handlers registered | Single-click | Double-click | +| ----------------------------- | ----------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | +| Only `on_legend_click` | Debounced ~300ms, then sent to Python | Pending single-click cancelled; default isolate/show-all performed immediately (no Python round-trip) | +| Only `on_legend_double_click` | No interception — Plotly default toggle runs natively | Sent to Python; re-trigger if allowed | +| Both | Debounced ~300ms, then sent to Python | Pending single-click cancelled; sent to Python; re-trigger if allowed | + +The ~300ms delay matches Plotly's own built-in `doubleClickDelay`. The demo at [plotly-events-return-false-demo.html](./plotly-events-return-false-demo.html) verifies this pattern. + +## Phase 7 — JavaScript: Event Wiring Hook + +**New file:** `plugins/plotly-express/src/js/src/usePlotlyEventCallbacks.ts` + +22. Accepts `(plotlyDiv: HTMLElement | null, callbackMap: Map, model: PlotlyExpressChartModel, dataMappings: DataMapping[])`. +23. Uses `useEffect` to attach Plotly native event listeners via `plotlyDiv.on('plotly_click', handler)` and return cleanup. +24. Serializers per event group: + - **Strip Plotly internals**: `pointIndex`, `pointNumber`, `fullData`, `xaxis`, `yaxis` are not sent. `curve_number` is kept to disambiguate traces that share the same `trace_name`. + - **Data-space values**: `x`, `y`, `z` are sent as-is from Plotly (these already match the column data since they come from the table subscription). + - **`trace_name`**: Passed through directly from Plotly's `data.name` field. For Deephaven charts this is the partition/`by` key value. + - **`trace_type`**: Taken from `data[curveNumber].type`. Included for convenience so consumers can branch on chart type. + - **`modifiers`**: Captured from the native DOM event (`event.shiftKey`, `event.ctrlKey`, `event.altKey`, `event.metaKey`) at the time the Plotly event fires. Attached to every user-interaction event. + - **Hierarchical click (preventable `on_click`)**: On sunburst/treemap/icicle charts, when `on_click` is registered as preventable, JS intercepts `plotly_sunburstclick`/`plotly_treemapclick`/`plotly_icicleclick` (which fire INSTEAD of `plotly_click` on these charts), returns `false` to prevent drill-down, sends the click event (with `next_level`) via `model.sendEventCallbackWithResponse()`, and conditionally re-triggers drill-down via `Plotly.animate` if the response allows it. + - **Legend click/double-click discrimination**: Since `plotly_legendclick` fires on every click (including both clicks of a double-click) and returning `false` blocks both single and double-click defaults: + - When `on_legend_click` is registered: ALWAYS register handlers for both `plotly_legendclick` and `plotly_legenddoubleclick` + - `plotly_legendclick` handler: returns `false`, starts a debounce timer (~300ms = Plotly's `doubleClickDelay`) + - `plotly_legenddoubleclick` handler: returns `false`, cancels pending single-click timer, then either sends double-click to Python (if `on_legend_double_click` registered) or performs default isolate/show-all directly + - On timer expiry (confirmed single-click): sends single-click to Python via `model.sendEventCallbackWithResponse()` + - When only `on_legend_double_click` is registered (no `on_legend_click`): only register `plotly_legenddoubleclick` handler — Plotly handles single-clicks natively + - **Re-trigger logic**: + - Legend click: `Plotly.restyle(gd, {visible: toggled}, [curveNumber])` — toggles `true` ↔ `'legendonly'` + - Legend double-click: Check if trace is already isolated (all other visible traces are `'legendonly'`). If yes → show all (`Plotly.restyle(gd, {visible: true})`). If no → isolate (`Plotly.restyle(gd, {visible: [true, 'legendonly', ...]})` with only clicked trace visible). This exactly replicates Plotly's built-in `toggleothers` mode. + - Hierarchical click (on_click): `Plotly.animate(gd, {data: [{level: nextLevel}], traces: [traceIdx]}, transitionOpts)` + - **No handler = no interception**: Event listeners for preventable events are only attached when the corresponding callback is in `preventable_callbacks`. Without a handler, Plotly's native behavior runs synchronously with zero overhead. + - **`on_relayout` debouncing**: The `plotly_relayout` handler is debounced (e.g., 150ms trailing) before sending to Python. During a pan/zoom drag, Plotly fires `plotly_relayout` on every frame. The debounce coalesces these into a single callback at the end of the interaction. Since different relayout events carry different keys (axis ranges vs. camera vs. dragmode), the debounce merges keys from all events within the window via `Object.assign`, ensuring no data is lost. Discrete events like axis reset or dragmode change are rare enough that the debounce window doesn't noticeably delay them. +25. Constant lookup table maps Plotly event name → Python param name. + +**File:** [PlotlyExpressChart.tsx](../plugins/plotly-express/src/js/src/PlotlyExpressChart.tsx) + +26. Call `usePlotlyEventCallbacks(containerRef.current, model.getCallbackMap(), model)`. + +--- + +## Affected Files + +### Python + +| File | Change | +| --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | +| [DeephavenFigure.py](../plugins/plotly-express/src/deephaven/plot/express/deephaven_figure/DeephavenFigure.py) | Add `_callbacks`, `_callback_ids`, `_next_callback_id`; `_register_callback`; `get_callback_by_id`; update `to_json` and `copy` | +| [DeephavenFigureListener.py](../plugins/plotly-express/src/deephaven/plot/express/communication/DeephavenFigureListener.py) | Add `CALLABLE_EVENT` branch in `process_message`; return `CALLABLE_RESPONSE` for preventable events | +| `types/callbacks.py` _(new)_ | `ChartEventCallback`, `ChartPreventableEventCallback`, `wrap_callable` | +| [types/\_\_init\_\_.py](../plugins/plotly-express/src/deephaven/plot/express/types/__init__.py) | Export new symbols | +| All files in `plots/` | Add event callback params; register non-`None` callbacks | +| [\_layer.py](../plugins/plotly-express/src/deephaven/plot/express/plots/_layer.py) | Merge child callbacks in `atomic_layer`; accept event params in `layer` | +| [subplots.py](../plugins/plotly-express/src/deephaven/plot/express/plots/subplots.py) | Merge child callbacks in `atomic_make_subplots`; accept event params in `make_subplots` | + +### JavaScript + +| File | Change | +| --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| [PlotlyExpressChartModel.ts](../plugins/plotly-express/src/js/src/PlotlyExpressChartModel.ts) | Parse `callbacks`/`preventable_callbacks`, add `getCallbackMap`, `sendEventCallback`, `sendEventCallbackWithResponse`, handle `CALLABLE_RESPONSE` | +| `usePlotlyEventCallbacks.ts` _(new)_ | Hook: attach/detach Plotly event listeners, serialize event data, request-response for preventable events, programmatic re-triggers | +| [PlotlyExpressChart.tsx](../plugins/plotly-express/src/js/src/PlotlyExpressChart.tsx) | Call `usePlotlyEventCallbacks` | +| `packages/chart/src/Chart.tsx` _(web-client-ui)_ | Conditionally add `select2d`/`lasso2d` modebar buttons when selection callbacks are present | + +--- + +## Verification + +### Python Unit Tests + +- `wrap_callable` correctly trims excess positional args for 0-arg, 1-arg, and variadic functions. +- `wrap_callable` propagates return values from the wrapped function. +- `_register_callback` assigns stable, incrementing IDs. +- `to_json` includes `deephaven.callbacks` when callbacks are registered, omits it when none are. +- `to_json` includes `deephaven.preventable_callbacks` listing IDs of preventable-event callbacks. +- `layer` with two figures that both have `on_click`: resulting figure uses the last figure's callback. +- `layer` with a direct `on_click` kwarg: direct kwarg wins. +- `make_subplots` follows the same merging rules. +- `process_message` with a `CALLABLE_EVENT` (no `request_id`) calls the correct Python function, returns empty. +- `process_message` with a `CALLABLE_EVENT` (with `request_id`) calls the function and returns `CALLABLE_RESPONSE` with the result. +- Preventable callback returning `False` → response `result` is `False`. +- Preventable callback returning `True`/`None` → response `result` is `True`/`None`. +- Unknown `callback_id` does not raise. +- Exception inside a callback does not crash the connection. + +### e2e Tests + +- `scatter` with `on_click`: click a point → callback fires with `points[0].x` and `points[0].y`. +- `scatter` with `on_selected`: box-select → callback fires with multiple points. +- `sunburst` with `on_click` returning `False`: click → no drill-down occurs, event data includes `next_level`. +- `sunburst` with `on_click` returning `True`: click → drill-down proceeds after response. +- `scatter` with `on_click` returning `False`: click → return value ignored, no effect on behavior. +- `scatter` with `on_legend_click` returning `False`: click legend → trace stays visible. +- `scatter` with `on_legend_click` returning `True`: click legend → trace toggles. +- `scatter` with `on_legend_click` + `on_legend_double_click`: single-click → only `on_legend_click` fires (after debounce). double-click → only `on_legend_double_click` fires (pending single-click cancelled). +- `scatter` with `on_legend_click` only: single-click → `on_legend_click` fires. double-click → default isolate/show-all behavior occurs (no Python round-trip). +- `layer(fig_a, fig_b, on_click=cb)`: direct kwarg fires on click. +- `layer(fig_a_with_click, fig_b_with_click)`: last child's callback fires. +- `treemap` with `on_click`: same as sunburst. +- `icicle` with `on_click`: same as sunburst. +- `on_legend_click` returning `False`: legend click → toggle prevented. +- `on_legend_click` returning `True`: legend click → toggle proceeds after response. +- `make_subplots` with `on_relayout`: pan a subplot → callback fires. + +--- + +## Decisions + +### Cannot Reuse ui Plugin Callbacks + +The ui plugin's system is coupled to its JSON-RPC / `NodeEncoder` / `ElementMessageStream` pipeline. plotly-express uses a `MessageStream` protocol with different message types. The pattern is mirrored but implemented independently. + +### Excluded Events + +The following Plotly events are excluded from the initial implementation but can be added later if needed: `on_after_plot`, `on_button_clicked`, `on_click_anywhere`, `on_before_export`, `on_after_export`, `on_auto_size`, `on_hover`, `on_unhover`, `on_hover_anywhere`, `on_before_hover`, `on_selecting`, `on_redraw`, `on_restyle`, `on_slider_change`, `on_slider_start`, `on_slider_end`, `on_animated`, `on_animating_frame`, `on_animation_interrupted`, `on_transitioning`, `on_transition_interrupted`. These would fire too frequently (especially without user interaction), are currently using functionality we don't expose and don't encourage, or are otherwise unreliable and/or internal. Adding any of these later requires only adding the param to chart function signatures and wiring the Plotly event in the JS hook — the callback infrastructure handles it automatically. + +### `on_framework` — Excluded + +`plotly_framework` is an internal Plotly.js hook with no user-facing semantics. + +### Preventable Events Use Request-Response + +Three events (`on_click` on hierarchical charts, `on_legend_click`, `on_legend_double_click`) use a request-response pattern instead of fire-and-forget. The JS always prevents the default behavior immediately, sends the event to Python, awaits the callback's return value, and conditionally re-triggers the default programmatically. This introduces a small delay but allows Python to make per-interaction decisions about whether to allow the default behavior. For `on_click` on non-hierarchical charts, the callback is fire-and-forget (return value ignored). + +### Legend Click/Double-Click Interaction + +Plotly fires `plotly_legendclick` on **every** click (including both clicks of a double-click) and returning `false` from it blocks both the single and double-click defaults. This creates a coupling: registering `on_legend_click` requires also handling double-clicks to preserve correct behavior. + +**Rules:** + +- When `on_legend_click` is registered: JS always registers handlers for BOTH `plotly_legendclick` and `plotly_legenddoubleclick`, even if `on_legend_double_click` is not registered +- Single-clicks are debounced by `doubleClickDelay` (~300ms) before sending to Python +- Double-clicks cancel the pending single-click and are handled separately +- When only `on_legend_double_click` is registered: JS only registers `plotly_legenddoubleclick` — Plotly handles single-clicks natively + +The ~300ms debounce matches Plotly's own internal delay for the same discrimination purpose — users already experience this delay in standard Plotly charts. + +### Hierarchical Charts Use `on_click` for Drill-Down Control + +On hierarchical charts (sunburst, treemap, icicle), Plotly fires `plotly_sunburstclick` / `plotly_treemapclick` / `plotly_icicleclick` INSTEAD of `plotly_click`. Rather than exposing separate per-chart-type events, `on_click` handles all of these uniformly. The JS intercepts the specialized event, serializes it as an `on_click` event with an additional `next_level` field, and uses request-response to control drill-down. This keeps the API simple — one event covers both the click data and the drill-down control. + +### Last-Wins Merging + +Consistent with how layout properties merge in `layer` and `make_subplots`. Direct kwargs always take precedence. + +### Stable Callback IDs + +IDs are assigned at construction time and don't change when data refreshes. The frontend re-reads the map on each `NEW_FIGURE` but the IDs remain the same. + +### Fire-and-Forget vs Request-Response + +Most callbacks are fire-and-forget (return `None`, exceptions caught and logged). Three preventable event callbacks (`on_click` on hierarchical charts, `on_legend_click`, `on_legend_double_click`) use request-response — the JS awaits the Python return value before deciding whether to re-trigger the default behavior. If the response times out or errors, the default behavior proceeds (fail-open). `on_click` on non-hierarchical charts is fire-and-forget (the return value is ignored even if present). + +### `on_relayout` Debouncing + +`plotly_relayout` can fire many times per second during continuous interactions (e.g., pan drag, scroll zoom). Without debouncing, every frame would send a message to Python and execute the callback — flooding the connection and the Python thread. The JS debounces with a ~150ms trailing window, merging event data keys from all firings within the window via `Object.assign`. This means: + +- During a pan drag, only one callback fires at the end (with the final axis ranges) +- During scroll zoom, rapid events coalesce into one callback per ~150ms pause +- Discrete events (axis reset, dragmode change) are delayed by at most 150ms, which is imperceptible + +The merge is safe because `plotly_relayout` data is a flat dict of changed keys — later values for the same key overwrite earlier ones, which is the correct semantic (you want the final state, not intermediate). Different keys from overlapping events are preserved (e.g., if both `xaxis.range` and `dragmode` change in the same window, both appear in the merged dict). + +### No Overhead Without Handlers + +When no event callbacks are registered, zero event listeners are attached to the Plotly div. When only fire-and-forget callbacks are registered, only those specific listeners are attached. Preventable event interception is installed only when `preventable_callbacks` is non-empty for that specific event. Charts without any event handlers have exactly the same performance as before this feature. + +### Future Deephaven-Specific Events + +The architecture supports two patterns for Deephaven-specific events when they are added: (1) server-side events fired directly in `DeephavenFigureListener` with no JS round-trip, and (2) JS-originated events sent via `CALLABLE_EVENT` message. No infrastructure changes needed — just add the param and fire the callback. diff --git a/plugins/plotly-express/docs/events.md b/plugins/plotly-express/docs/events.md new file mode 100644 index 000000000..6f0b1230c --- /dev/null +++ b/plugins/plotly-express/docs/events.md @@ -0,0 +1,649 @@ +# Chart Events + +Chart events allow you to respond to user interactions on a chart with callback functions. Supported events include clicks, selections, layout changes (pan/zoom), and legend interactions. + +## Example + +```python order=fig,click_history,stocks +import deephaven.plot.express as dx +from deephaven import input_table, new_table, dtypes as dht +from deephaven.column import string_col, double_col + +stocks = dx.data.stocks() + +# Create an input table to accumulate clicked points +click_history = input_table({"Sym": dht.string, "Price": dht.double}) + + +def handle_click(event): + point = event["points"][0] + click_history.add( + new_table( + [ + string_col("Sym", [point["trace_name"]]), + double_col("Price", [point["y"]]), + ] + ) + ) + + +fig = dx.scatter(stocks, x="Timestamp", y="Price", by="Sym", on_click=handle_click) +``` + +## What are chart events useful for? + +- **Filtering related tables** when a user clicks a data point (e.g., click a point to show details in another panel) +- **Bulk-selecting data** to feed into downstream computations or analysis +- **Synchronizing multiple components** by responding to pan/zoom events +- **Controlling legend behavior** (e.g., prevent hiding a trace if it's the last one visible) +- **Controlling drill-down** on hierarchical charts (sunburst, treemap, icicle) +- **Responding to annotation clicks** for interactive dashboards + +## Available Events + +All event callbacks are optional keyword arguments that default to `None`. + +| Parameter | Description | +| ------------------------ | -------------------------------------------------------------------------- | +| `on_click` | Point click. On hierarchical charts, return `False` to prevent drill-down. | +| `on_press` | Alias for `on_click` | +| `on_double_click` | Double-click (resets axes in zoom/pan mode) | +| `on_double_press` | Alias for `on_double_click` | +| `on_selected` | Box/lasso selection complete | +| `on_deselect` | Selection cleared | +| `on_relayout` | Layout changed (pan, zoom, axis reset) | +| `on_legend_click` | Legend item clicked. Return `False` to prevent toggle. | +| `on_legend_double_click` | Legend item double-clicked. Return `False` to prevent isolate/show-all. | +| `on_click_annotation` | Annotation clicked | +| `on_web_gl_context_lost` | WebGL context lost | + +> [!NOTE] +> All events are accepted by all chart types. Some combinations have no natural top-level trigger (such as `on_click_annotation`), but may become relevant if you add elements via [unsafe_update_figure](unsafe-update-figure.md). + +## Preventable Events + +Three events can optionally return a `bool` to control default behavior: + +```python +def handle_legend_click(event): + # Return False to prevent the default visibility toggle + # Return True or None to allow it + return True +``` + +- **`on_click`**: returning `False` prevents drill-down on hierarchical charts (sunburst, treemap, icicle). The return value is ignored on other chart types. +- **`on_legend_click`**: returning `False` prevents the trace visibility toggle. +- **`on_legend_double_click`**: returning `False` prevents the isolate/show-all toggle. + +> [!WARNING] +> Preventable event callbacks block the default behavior until the Python function returns. Avoid heavy synchronous computation inside these callbacks. If the function takes too long, the chart will feel unresponsive. + +## Event Data + +Every event payload includes a `modifiers` dict describing which keyboard modifier keys were held during the interaction. + +```python +{"shift": False, "ctrl": False, "alt": False, "meta": False} +``` + +For example, use `modifiers` to branch on shift-click: + +```python order=fig,gapminder_hierarchy,gapminder +import deephaven.plot.express as dx + +gapminder = dx.data.gapminder() + +# Build a drillable hierarchy: World > Continent > Country +gapminder_hierarchy = gapminder.last_by("Country").update_view("World = `World`") + + +def handle_click(event): + if event["modifiers"]["shift"]: + # Only drill up or down if shift is held + return True + else: + return False + + +fig = dx.sunburst( + gapminder_hierarchy, + path=["World", "Continent", "Country"], + values="Pop", + on_click=handle_click, +) +``` + +### Click events (`on_click`, `on_press`) + +`on_press` is an alias for `on_click` and receives the same payload. + +```python +{ + "points": [ + { + "x": 5, + "y": 0.479, + "trace_name": "DOG", + "trace_type": "scatter", + "curve_number": 0, + } + ], + "modifiers": {"shift": False, "ctrl": False, "alt": False, "meta": False}, +} +``` + +On hierarchical charts, an additional `next_level` field is included, which indicates the label of the next level that would be drilled into if the click is allowed: + +```python +{ + "points": [{"label": "A", "parent": "", "value": 10, "trace_type": "sunburst"}], + "next_level": "A", + "modifiers": {"shift": False, "ctrl": False, "alt": False, "meta": False}, +} +``` + +Certain event functionality currently requires updating the layout via [unsafe_update_figure](unsafe-update-figure.md), which is generally safe. When the `clickanywhere` layout option is set to `True` via `unsafe_update_figure`, clicking empty space fires with an empty `points` list plus `xvals` and `yvals`. + +```python +{ + "points": [], + "xvals": [5], # cursor x in data space, one per x-axis + "yvals": [0.479], # cursor y in data space, one per y-axis + "modifiers": {"shift": False, "ctrl": False, "alt": False, "meta": False}, +} +``` + +### Double-click events (`on_double_click`, `on_double_press`) + +`on_double_press` is an alias for `on_double_click` and receives the same payload. This event fires when the user double-clicks the plot area (commonly used to reset axes in zoom/pan mode). + +```python +{ + "modifiers": {"shift": False, "ctrl": False, "alt": False, "meta": False}, +} +``` + +### Selection events (`on_selected`) + +On box or lasso selection, the event includes an array of selected points and the selection box range (box select only): + +```python +{ + "points": [{"x": 1, "y": 2, "trace_name": "DOG", "curve_number": 0}, ...], + "range": {"x": [0, 10], "y": [0.0, 5.0]}, # box select only + "modifiers": {"shift": False, "ctrl": False, "alt": False, "meta": False}, +} +``` + +> [!WARNING] +> Selection has several caveats: +> +> 1. Selection sends details on every point within the selection box/lasso. Use this event only when you expect a small number of selected points. +> 2. Only points drawn as markers can be selected. Traces that render as lines only (such as `dx.line`) contribute no points to the selection. To make a line chart selectable, add markers, such as with `markers=True`. +> 3. The selection will be misleading if the chart is downsampled. + +### Deselect events (`on_deselect`) + +When the user clicks outside the selected area or presses escape, the selection is cleared and the event fires with modifiers only: + +```python +{ + "modifiers": {"shift": False, "ctrl": False, "alt": False, "meta": False}, +} +``` + +### Layout events (`on_relayout`) + +When the user pans or zooms, the event contains the new axis ranges: + +```python +{ + "xaxis.range[0]": 0, + "xaxis.range[1]": 100, + "modifiers": {"shift": False, "ctrl": False, "alt": False, "meta": False}, +} +``` + +When the user resets the axes (e.g., by double-clicking), the event contains autorange fields instead: + +```python +{ + "xaxis.autorange": True, + "yaxis.autorange": True, + "modifiers": {"shift": False, "ctrl": False, "alt": False, "meta": False}, +} +``` + +### Legend events (`on_legend_click`, `on_legend_double_click`) + +```python +{ + "trace_name": "DOG", + "curve_number": 0, + "modifiers": {"shift": False, "ctrl": False, "alt": False, "meta": False}, +} +``` + +### Annotation events (`on_click_annotation`) + +```python +{ + "index": 0, + "annotation": { + "text": "Spike", + "x": "2018-06-01 08:00:30", + "y": 25, + }, + "modifiers": {"shift": False, "ctrl": False, "alt": False, "meta": False}, +} +``` + +## Examples + +Many of the following examples use [`deephaven.ui`](https://deephaven.io/core/docs/client-libraries/deephaven-ui/). `deephaven.ui` is a library for building complex interactive web apps, which naturally complements event-driven charts. + +### Filter a table on click + +Use `on_click` to capture the clicked data point and use that information to filter a related table. + +```python order=stock_detail_panel,stocks +import deephaven.plot.express as dx +from deephaven import ui + +stocks = dx.data.stocks() + + +@ui.component +def stock_detail(): + selected, set_selected = ui.use_state(None) + + # Memoize the callback so it has a stable identity across renders. + handle_click = ui.use_callback( + lambda event: set_selected(event["points"][0]["trace_name"]), [] + ) + + # Memoize the figure so it isn't recreated (and reset) when state changes. + # The figure only needs to be recreated if the callback changes. + fig = ui.use_memo( + lambda: dx.scatter( + stocks, x="Timestamp", y="Price", by="Sym", on_click=handle_click + ), + [handle_click], + ) + + # Derive the filtered table from state + detail_table = ui.use_memo( + lambda: stocks.where(f"Sym = `{selected}`") if selected else stocks.head(0), + [selected], + ) + + return ui.flex(fig, ui.table(detail_table), direction="column") + + +stock_detail_panel = stock_detail() +``` + +### Prevent drill-down on hierarchical charts on click + +Return `False` from the `on_click` handler to prevent drill-down on hierarchical charts of type sunburst, treemap, or icicle. + +```python order=fig,gapminder_hierarchy,gapminder +import deephaven.plot.express as dx + +gapminder = dx.data.gapminder() + +# Build a multi-level hierarchy: World > Continent > Country +gapminder_hierarchy = gapminder.last_by("Country").update_view("World = `World`") + + +def handle_click(event): + # Returning False prevents drill-down. Returning True or None allows it. + return False + + +fig = dx.icicle( + gapminder_hierarchy, + path=["World", "Continent", "Country"], + values="Pop", + on_click=handle_click, +) +``` + +### Capture selected points into a table on box/lasso select + +Use `on_selected` to capture the points within the selection box/lasso and build a new table from those points. + +```python order=selection_panel_instance,stocks +import deephaven.plot.express as dx +from deephaven import ui, new_table +from deephaven.column import double_col + +stocks = dx.data.stocks() + + +@ui.component +def selection_panel(): + selected_points, set_selected_points = ui.use_state([]) + + # Memoize callbacks for stable identity + handle_selected = ui.use_callback( + lambda event: set_selected_points(event.get("points", [])), [] + ) + # Clear selected points on deselect (double click) + handle_deselect = ui.use_callback(lambda _event: set_selected_points([]), []) + + # Memoize figure so it doesn't reset on state change + fig = ui.use_memo( + lambda: dx.scatter( + stocks, + x="Price", + y="Dollars", + by="Sym", + on_selected=handle_selected, + on_deselect=handle_deselect, + ), + [handle_selected, handle_deselect], + ) + + # Build a table directly from the selected points. + selected_table = ui.use_memo( + lambda: new_table( + [ + double_col("Price", [p["x"] for p in selected_points]), + double_col("Dollars", [p["y"] for p in selected_points]), + ] + ), + [selected_points], + ) + + return ui.flex( + fig, + ui.table(selected_table), + direction="column", + ) + + +selection_panel_instance = selection_panel() +``` + +### Sync visible data to a table on pan/zoom + +Use `on_relayout` to capture the new axis ranges when the user pans or zooms, and use that information to filter a related table to only the visible data. + +```python order=synced_chart_panel,stocks +import deephaven.plot.express as dx +from deephaven import ui + +stocks = dx.data.stocks() + + +def make_relayout_handler(set_ranges): + """Create a relayout handler that merges axis ranges into state. + + Defined outside the component so it doesn't get recreated each render. + The set_ranges function from use_state is stable and safe to capture. + """ + + def handle_relayout(event): + # Ignore non-range events like dragmode changes + if "xaxis.autorange" in event or "yaxis.autorange" in event: + # User double-clicked to reset axes + set_ranges(None) + return + x = ( + (event["xaxis.range[0]"], event["xaxis.range[1]"]) + if "xaxis.range[0]" in event + else None + ) + y = ( + (event["yaxis.range[0]"], event["yaxis.range[1]"]) + if "yaxis.range[0]" in event + else None + ) + if x or y: + # Merge new range with previous state so that + # zooming on one axis doesn't lose the other axis's range + set_ranges( + lambda prev: { + "x": x if x else (prev or {}).get("x"), + "y": y if y else (prev or {}).get("y"), + } + ) + + return handle_relayout + + +def filter_by_ranges(table, ranges): + """Filter a table to rows within the given x/y ranges.""" + if ranges is None: + return table + filters = [] + if ranges.get("x"): + filters.append(f"Price >= {ranges['x'][0]} && Price <= {ranges['x'][1]}") + if ranges.get("y"): + filters.append(f"Dollars >= {ranges['y'][0]} && Dollars <= {ranges['y'][1]}") + return table.where(filters) if filters else table + + +@ui.component +def synced_chart(): + ranges, set_ranges = ui.use_state(None) + + handle_relayout = ui.use_callback(make_relayout_handler(set_ranges), []) + + # Memoize figure to prevent reset on state change + fig = ui.use_memo( + lambda: dx.scatter( + stocks, x="Price", y="Dollars", by="Sym", on_relayout=handle_relayout + ), + [handle_relayout], + ) + + # Derive filtered table from ranges state + visible = ui.use_memo(lambda: filter_by_ranges(stocks, ranges), [ranges]) + + return ui.flex(fig, ui.table(visible), direction="column") + + +synced_chart_panel = synced_chart() +``` + +### Prevent legend toggle on click + +Use `on_legend_click` to prevent the default trace visibility toggle when a user clicks a legend item. + +```python order=fig,stocks +import deephaven.plot.express as dx + +stocks = dx.data.stocks() + + +def handle_legend_click(event): + # Returning False prevents the default trace visibility toggle + return False + + +fig = dx.scatter( + stocks, x="Timestamp", y="Price", by="Sym", on_legend_click=handle_legend_click +) +``` + +### Prevent legend double-click (isolate/show-all) toggle + +Use `on_legend_double_click` to prevent the default isolate/show-all toggle when a user double-clicks a legend item. + +```python order=fig,stocks +import deephaven.plot.express as dx + +stocks = dx.data.stocks() + + +def handle_legend_double_click(event): + # Returning False prevents the default isolate/show-all toggle + return False + + +fig = dx.scatter( + stocks, + x="Timestamp", + y="Price", + by="Sym", + on_legend_double_click=handle_legend_double_click, +) +``` + +### Respond to annotation clicks + +Annotations are added via `unsafe_update_figure`. The `on_click_annotation` event fires when clicking on an annotation. + +```python order=fig,annotation_clicks,dog_prices,stocks +import deephaven.plot.express as dx +from deephaven import input_table, new_table, dtypes as dht +from deephaven.column import string_col, double_col + +stocks = dx.data.stocks() +dog_prices = stocks.where("Sym = `DOG`") + + +def add_annotations(fig): + fig.add_annotation( + x="2018-06-01 08:00:30", + y=25, + text="Spike", + showarrow=True, + arrowhead=2, + # captureevents=True is required for on_click_annotation to fire. + # Without it, Plotly does not emit the plotly_clickannotation event. + captureevents=True, + ) + + +# Track which annotations have been clicked +annotation_clicks = input_table({"Text": dht.string, "X": dht.string, "Y": dht.double}) + + +def handle_annotation_click(event): + ann = event["annotation"] + annotation_clicks.add( + new_table( + [ + string_col("Text", [ann["text"]]), + string_col("X", [str(ann["x"])]), + double_col("Y", [ann["y"]]), + ] + ) + ) + + +fig = dx.line( + dog_prices, + x="Timestamp", + y="Price", + unsafe_update_figure=add_annotations, + on_click_annotation=handle_annotation_click, +) +``` + +### Add an annotation wherever you click + +By default, `on_click` only fires when a data point is clicked. Enable Plotly's `clickanywhere` layout option (via `unsafe_update_figure`) so the callback also fires on empty plot area, where the payload carries `xvals`/`yvals` (the cursor position in data space). + +```python order=annotated_chart_panel,click_points,stocks +import deephaven.plot.express as dx +from deephaven import ui, input_table, new_table, dtypes as dht +from deephaven.column import double_col + +stocks = dx.data.stocks().where("Sym = `DOG`") + +# Accumulate the coordinates of every click +click_points = input_table({"X": dht.double, "Y": dht.double}) + + +def handle_click(event): + # Clicking a data point populates points + # clicking empty plot area (with clickanywhere enabled) + # populates xvals/yvals instead. + if event.get("points"): + point = event["points"][0] + x, y = point["x"], point["y"] + elif event.get("xvals") and event.get("yvals"): + x, y = event["xvals"][0], event["yvals"][0] + else: + return + click_points.add(new_table([double_col("X", [x]), double_col("Y", [y])])) + + +@ui.component +def annotated_chart(): + # Listen to the accumulated clicks. Rebuilding the figure re-sends it, + # which is required because annotations live in the figure. + points = ui.use_table_data(click_points) + + def add_annotations(fig): + # Enable clickanywhere so clicks off a data point still fire on_click + fig.update_layout(clickanywhere=True) + if points is not None: + for x, y in zip(points["X"], points["Y"]): + fig.add_annotation( + x=x, y=y, text="Clicked", showarrow=True, arrowhead=2 + ) + + # Recreate the figure whenever a new click is recorded via points as a dependency + return ui.use_memo( + lambda: dx.scatter( + stocks, + x="Price", + y="Dollars", + on_click=handle_click, + unsafe_update_figure=add_annotations, + ), + [points], + ) + + +annotated_chart_panel = annotated_chart() +``` + +## Events with `layer` and `make_subplots` + +Event callbacks can be passed directly to `layer` and `make_subplots`. Passing in callbacks directly takes priority over callbacks derived from the child figures. If multiple children set the same callback, the callback from the last subplot passed in will take priority. + +```python order=layered,points,trend,smoothed,layer_clicks,stocks +import deephaven.plot.express as dx +from deephaven import input_table, new_table, dtypes as dht +from deephaven.column import long_col, double_col +from deephaven.updateby import rolling_avg_tick + +stocks = dx.data.stocks().where("Sym == `CAT`") + +# Add a smoothed trend line +smoothed = stocks.update_by(rolling_avg_tick("AvgPrice = Price", rev_ticks=20)) + +# Log clicks from either layer into an input table +layer_clicks = input_table({"CurveNum": dht.long, "Price": dht.double}) + + +def handle_click(event): + point = event["points"][0] + layer_clicks.add( + new_table( + [ + long_col("CurveNum", [point["curve_number"]]), + double_col("Price", [point["y"]]), + ] + ) + ) + + +# Raw trades as points, plus the moving average as a line +points = dx.scatter(smoothed, x="Timestamp", y="Price") +trend = dx.line(smoothed, x="Timestamp", y="AvgPrice") + +layered = dx.layer(points, trend, on_click=handle_click) +``` + +## API Reference + +```{eval-rst} +.. dhautofunction:: deephaven.plot.express.scatter +``` diff --git a/plugins/plotly-express/docs/sidebar.json b/plugins/plotly-express/docs/sidebar.json index 18068425e..c3dc17ab8 100644 --- a/plugins/plotly-express/docs/sidebar.json +++ b/plugins/plotly-express/docs/sidebar.json @@ -170,6 +170,10 @@ { "label": "Static Image Export", "path": "static-image-export.md" + }, + { + "label": "Events", + "path": "events.md" } ] }, diff --git a/plugins/plotly-express/docs/snapshots/078770b164cf556e2640872db1939265.json b/plugins/plotly-express/docs/snapshots/078770b164cf556e2640872db1939265.json new file mode 100644 index 000000000..141095172 --- /dev/null +++ b/plugins/plotly-express/docs/snapshots/078770b164cf556e2640872db1939265.json @@ -0,0 +1 @@ +{"file":"events.md","objects":{}} \ No newline at end of file diff --git a/plugins/plotly-express/docs/snapshots/284ef15b901e382a6fed030219f07e89.json b/plugins/plotly-express/docs/snapshots/284ef15b901e382a6fed030219f07e89.json new file mode 100644 index 000000000..141095172 --- /dev/null +++ b/plugins/plotly-express/docs/snapshots/284ef15b901e382a6fed030219f07e89.json @@ -0,0 +1 @@ +{"file":"events.md","objects":{}} \ No newline at end of file diff --git a/plugins/plotly-express/docs/snapshots/2b9bab9f185215272891f8e88c7b9753.json b/plugins/plotly-express/docs/snapshots/2b9bab9f185215272891f8e88c7b9753.json new file mode 100644 index 000000000..141095172 --- /dev/null +++ b/plugins/plotly-express/docs/snapshots/2b9bab9f185215272891f8e88c7b9753.json @@ -0,0 +1 @@ +{"file":"events.md","objects":{}} \ No newline at end of file diff --git a/plugins/plotly-express/docs/snapshots/2c468d86fb12d60546c09253574edc70.json b/plugins/plotly-express/docs/snapshots/2c468d86fb12d60546c09253574edc70.json new file mode 100644 index 000000000..141095172 --- /dev/null +++ b/plugins/plotly-express/docs/snapshots/2c468d86fb12d60546c09253574edc70.json @@ -0,0 +1 @@ +{"file":"events.md","objects":{}} \ No newline at end of file diff --git a/plugins/plotly-express/docs/snapshots/39dd5d266917e44fc7359b4a1ab6c8ff.json b/plugins/plotly-express/docs/snapshots/39dd5d266917e44fc7359b4a1ab6c8ff.json new file mode 100644 index 000000000..55b91e563 --- /dev/null +++ b/plugins/plotly-express/docs/snapshots/39dd5d266917e44fc7359b4a1ab6c8ff.json @@ -0,0 +1 @@ +{"file":"events.md","objects":{"stocks":{"type":"Table","data":{"columns":[{"name":"Timestamp","type":"java.time.Instant"},{"name":"Sym","type":"java.lang.String"},{"name":"Exchange","type":"java.lang.String"},{"name":"Size","type":"long"},{"name":"Price","type":"double"},{"name":"Dollars","type":"double"},{"name":"Side","type":"java.lang.String"},{"name":"SPet500","type":"double"},{"name":"Index","type":"long"},{"name":"Random","type":"double"}],"rows":[[{"value":"2018-06-01 08:00:00.000"},{"value":"BIRD"},{"value":"TPET"},{"value":"245"},{"value":"164.6300"},{"value":"40,334.3500"},{"value":"buy"},{"value":"150.6253"},{"value":"0"},{"value":"0.6253"}],[{"value":"2018-06-01 08:00:00.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,150"},{"value":"102.4700"},{"value":"322,780.5000"},{"value":"buy"},{"value":"150.8910"},{"value":"1"},{"value":"1.4656"}],[{"value":"2018-06-01 08:00:00.200"},{"value":"LIZARD"},{"value":"TPET"},{"value":"100"},{"value":"224.8800"},{"value":"22,488.0000"},{"value":"sell"},{"value":"151.0861"},{"value":"2"},{"value":"-0.1232"}],[{"value":"2018-06-01 08:00:00.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"77"},{"value":"102.5100"},{"value":"7,893.2700"},{"value":"buy"},{"value":"151.3228"},{"value":"3"},{"value":"0.4242"}],[{"value":"2018-06-01 08:00:00.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"848"},{"value":"102.4500"},{"value":"86,877.6000"},{"value":"sell"},{"value":"151.3451"},{"value":"4"},{"value":"-0.9462"}],[{"value":"2018-06-01 08:00:00.500"},{"value":"FISH"},{"value":"PETX"},{"value":"15"},{"value":"127.2400"},{"value":"1,908.6000"},{"value":"buy"},{"value":"151.4074"},{"value":"5"},{"value":"0.2434"}],[{"value":"2018-06-01 08:00:00.600"},{"value":"BIRD"},{"value":"TPET"},{"value":"2,908"},{"value":"164.4900"},{"value":"478,336.9200"},{"value":"sell"},{"value":"151.1998"},{"value":"6"},{"value":"-1.4273"}],[{"value":"2018-06-01 08:00:00.700"},{"value":"DOG"},{"value":"PETX"},{"value":"111"},{"value":"108.4800"},{"value":"12,041.2800"},{"value":"buy"},{"value":"151.1169"},{"value":"7"},{"value":"0.4805"}],[{"value":"2018-06-01 08:00:00.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"102.5300"},{"value":"10,253.0000"},{"value":"buy"},{"value":"151.2862"},{"value":"8"},{"value":"1.3088"}],[{"value":"2018-06-01 08:00:00.900"},{"value":"DOG"},{"value":"PETX"},{"value":"88"},{"value":"108.4400"},{"value":"9,542.7200"},{"value":"sell"},{"value":"151.3445"},{"value":"9"},{"value":"-0.4436"}],[{"value":"2018-06-01 08:00:01.000"},{"value":"FISH"},{"value":"PETX"},{"value":"102"},{"value":"127.2900"},{"value":"12,983.5800"},{"value":"buy"},{"value":"151.4768"},{"value":"10"},{"value":"0.4669"}],[{"value":"2018-06-01 08:00:01.100"},{"value":"DOG"},{"value":"PETX"},{"value":"1,791"},{"value":"108.2800"},{"value":"193,929.4800"},{"value":"sell"},{"value":"151.3650"},{"value":"11"},{"value":"-1.2143"}],[{"value":"2018-06-01 08:00:01.200"},{"value":"DOG"},{"value":"PETX"},{"value":"28"},{"value":"108.1200"},{"value":"3,027.3600"},{"value":"sell"},{"value":"151.2188"},{"value":"12"},{"value":"-0.3019"}],[{"value":"2018-06-01 08:00:01.300"},{"value":"CAT"},{"value":"PETX"},{"value":"1,090"},{"value":"102.7000"},{"value":"111,943.0000"},{"value":"buy"},{"value":"151.2854"},{"value":"13"},{"value":"1.0280"}],[{"value":"2018-06-01 08:00:01.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,600"},{"value":"102.9900"},{"value":"370,764.0000"},{"value":"buy"},{"value":"151.6178"},{"value":"14"},{"value":"1.5331"}],[{"value":"2018-06-01 08:00:01.500"},{"value":"LIZARD"},{"value":"TPET"},{"value":"227"},{"value":"224.9300"},{"value":"51,059.1100"},{"value":"buy"},{"value":"152.0005"},{"value":"15"},{"value":"0.6095"}],[{"value":"2018-06-01 08:00:01.600"},{"value":"DOG"},{"value":"PETX"},{"value":"35"},{"value":"107.9300"},{"value":"3,777.5500"},{"value":"sell"},{"value":"152.2546"},{"value":"16"},{"value":"-0.3267"}],[{"value":"2018-06-01 08:00:01.700"},{"value":"DOG"},{"value":"PETX"},{"value":"2"},{"value":"107.8400"},{"value":"215.6800"},{"value":"buy"},{"value":"152.6027"},{"value":"17"},{"value":"0.7731"}],[{"value":"2018-06-01 08:00:01.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,350"},{"value":"103.4000"},{"value":"346,390.0000"},{"value":"buy"},{"value":"153.1590"},{"value":"18"},{"value":"1.4963"}],[{"value":"2018-06-01 08:00:01.900"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.2900"},{"value":"12,729.0000"},{"value":"sell"},{"value":"153.5402"},{"value":"19"},{"value":"-0.4094"}],[{"value":"2018-06-01 08:00:02.000"},{"value":"LIZARD"},{"value":"TPET"},{"value":"15"},{"value":"225.0100"},{"value":"3,375.1500"},{"value":"buy"},{"value":"153.8970"},{"value":"20"},{"value":"0.2463"}],[{"value":"2018-06-01 08:00:02.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,780"},{"value":"103.9200"},{"value":"392,817.6000"},{"value":"buy"},{"value":"154.4713"},{"value":"21"},{"value":"1.5570"}],[{"value":"2018-06-01 08:00:02.200"},{"value":"LIZARD"},{"value":"TPET"},{"value":"727"},{"value":"225.1600"},{"value":"163,691.3200"},{"value":"buy"},{"value":"155.1045"},{"value":"22"},{"value":"0.8989"}],[{"value":"2018-06-01 08:00:02.300"},{"value":"LIZARD"},{"value":"TPET"},{"value":"2,250"},{"value":"225.4300"},{"value":"507,217.5000"},{"value":"buy"},{"value":"155.8603"},{"value":"23"},{"value":"1.3097"}],[{"value":"2018-06-01 08:00:02.400"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.3400"},{"value":"12,734.0000"},{"value":"buy"},{"value":"156.5817"},{"value":"24"},{"value":"0.5662"}],[{"value":"2018-06-01 08:00:02.500"},{"value":"DOG"},{"value":"PETX"},{"value":"1,491"},{"value":"107.6500"},{"value":"160,506.1500"},{"value":"sell"},{"value":"156.9654"},{"value":"25"},{"value":"-1.1422"}],[{"value":"2018-06-01 08:00:02.600"},{"value":"FISH"},{"value":"PETX"},{"value":"367"},{"value":"127.3300"},{"value":"46,730.1100"},{"value":"sell"},{"value":"157.1497"},{"value":"26"},{"value":"-0.7155"}],[{"value":"2018-06-01 08:00:02.700"},{"value":"FISH"},{"value":"PETX"},{"value":"293"},{"value":"127.2500"},{"value":"37,284.2500"},{"value":"sell"},{"value":"157.1804"},{"value":"27"},{"value":"-0.6637"}],[{"value":"2018-06-01 08:00:02.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"104.2600"},{"value":"10,426.0000"},{"value":"sell"},{"value":"156.9481"},{"value":"28"},{"value":"-1.4200"}],[{"value":"2018-06-01 08:00:02.900"},{"value":"DOG"},{"value":"PETX"},{"value":"1,798"},{"value":"107.3600"},{"value":"193,033.2800"},{"value":"sell"},{"value":"156.5375"},{"value":"29"},{"value":"-1.2159"}],[{"value":"2018-06-01 08:00:03.000"},{"value":"DOG"},{"value":"PETX"},{"value":"410"},{"value":"107.1700"},{"value":"43,939.7000"},{"value":"buy"},{"value":"156.3359"},{"value":"30"},{"value":"0.7425"}],[{"value":"2018-06-01 08:00:03.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,510"},{"value":"104.6700"},{"value":"158,051.7000"},{"value":"buy"},{"value":"156.3789"},{"value":"31"},{"value":"1.1473"}],[{"value":"2018-06-01 08:00:03.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"21"},{"value":"105.0200"},{"value":"2,205.4200"},{"value":"sell"},{"value":"156.3644"},{"value":"32"},{"value":"-0.2738"}],[{"value":"2018-06-01 08:00:03.300"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.1800"},{"value":"12,718.0000"},{"value":"buy"},{"value":"156.3572"},{"value":"33"},{"value":"0.0258"}],[{"value":"2018-06-01 08:00:03.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"106.9800"},{"value":"10,698.0000"},{"value":"sell"},{"value":"156.3239"},{"value":"34"},{"value":"-0.1515"}],[{"value":"2018-06-01 08:00:03.500"},{"value":"DOG"},{"value":"PETX"},{"value":"650"},{"value":"106.8900"},{"value":"69,478.5000"},{"value":"buy"},{"value":"156.4535"},{"value":"35"},{"value":"0.8659"}],[{"value":"2018-06-01 08:00:03.600"},{"value":"DOG"},{"value":"PETX"},{"value":"155"},{"value":"106.7600"},{"value":"16,547.8000"},{"value":"sell"},{"value":"156.4623"},{"value":"36"},{"value":"-0.5371"}],[{"value":"2018-06-01 08:00:03.700"},{"value":"FISH"},{"value":"PETX"},{"value":"12"},{"value":"127.0900"},{"value":"1,525.0800"},{"value":"sell"},{"value":"156.4283"},{"value":"37"},{"value":"-0.2274"}],[{"value":"2018-06-01 08:00:03.800"},{"value":"FISH"},{"value":"PETX"},{"value":"7"},{"value":"127.0300"},{"value":"889.2100"},{"value":"buy"},{"value":"156.4335"},{"value":"38"},{"value":"0.1822"}],[{"value":"2018-06-01 08:00:03.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,310"},{"value":"105.4400"},{"value":"138,126.4000"},{"value":"buy"},{"value":"156.6358"},{"value":"39"},{"value":"1.0928"}],[{"value":"2018-06-01 08:00:04.000"},{"value":"DOG"},{"value":"PETX"},{"value":"1,629"},{"value":"106.5400"},{"value":"173,553.6600"},{"value":"sell"},{"value":"156.5882"},{"value":"40"},{"value":"-1.1765"}],[{"value":"2018-06-01 08:00:04.100"},{"value":"DOG"},{"value":"PETX"},{"value":"4"},{"value":"106.3100"},{"value":"425.2400"},{"value":"sell"},{"value":"156.5216"},{"value":"41"},{"value":"-0.1522"}],[{"value":"2018-06-01 08:00:04.200"},{"value":"FISH"},{"value":"PETX"},{"value":"1"},{"value":"126.9800"},{"value":"126.9800"},{"value":"buy"},{"value":"156.4686"},{"value":"42"},{"value":"0.0083"}],[{"value":"2018-06-01 08:00:04.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"1"},{"value":"105.8200"},{"value":"105.8200"},{"value":"buy"},{"value":"156.4396"},{"value":"43"},{"value":"0.0791"}],[{"value":"2018-06-01 08:00:04.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"106.0100"},{"value":"10,601.0000"},{"value":"sell"},{"value":"156.2255"},{"value":"44"},{"value":"-1.0499"}],[{"value":"2018-06-01 08:00:04.500"},{"value":"CAT"},{"value":"PETX"},{"value":"2"},{"value":"106.1800"},{"value":"212.3600"},{"value":"buy"},{"value":"156.0723"},{"value":"45"},{"value":"0.1217"}],[{"value":"2018-06-01 08:00:04.600"},{"value":"BIRD"},{"value":"TPET"},{"value":"6"},{"value":"164.3500"},{"value":"986.1000"},{"value":"sell"},{"value":"155.9141"},{"value":"46"},{"value":"-0.1806"}],[{"value":"2018-06-01 08:00:04.700"},{"value":"DOG"},{"value":"PETX"},{"value":"3,485"},{"value":"105.6000"},{"value":"368,016.0000"},{"value":"sell"},{"value":"155.5098"},{"value":"47"},{"value":"-1.5161"}],[{"value":"2018-06-01 08:00:04.800"},{"value":"DOG"},{"value":"PETX"},{"value":"727"},{"value":"105.1300"},{"value":"76,429.5100"},{"value":"sell"},{"value":"155.0158"},{"value":"48"},{"value":"-0.8990"}],[{"value":"2018-06-01 08:00:04.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"5,421"},{"value":"106.3400"},{"value":"576,469.1400"},{"value":"sell"},{"value":"154.2929"},{"value":"49"},{"value":"-1.7566"}],[{"value":"2018-06-01 08:00:05.000"},{"value":"DOG"},{"value":"PETX"},{"value":"2,113"},{"value":"104.5900"},{"value":"220,998.6700"},{"value":"sell"},{"value":"153.4685"},{"value":"50"},{"value":"-1.2830"}],[{"value":"2018-06-01 08:00:05.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,130"},{"value":"106.5900"},{"value":"120,446.7000"},{"value":"buy"},{"value":"152.9825"},{"value":"51"},{"value":"1.0424"}],[{"value":"2018-06-01 08:00:05.200"},{"value":"LIZARD"},{"value":"TPET"},{"value":"2"},{"value":"225.5600"},{"value":"451.1200"},{"value":"sell"},{"value":"152.3781"},{"value":"52"},{"value":"-1.1386"}],[{"value":"2018-06-01 08:00:05.300"},{"value":"FISH"},{"value":"PETX"},{"value":"529"},{"value":"127.0100"},{"value":"67,188.2900"},{"value":"buy"},{"value":"152.0299"},{"value":"53"},{"value":"0.8084"}],[{"value":"2018-06-01 08:00:05.400"},{"value":"LIZARD"},{"value":"TPET"},{"value":"293"},{"value":"225.7400"},{"value":"66,141.8200"},{"value":"buy"},{"value":"151.8651"},{"value":"54"},{"value":"0.6639"}],[{"value":"2018-06-01 08:00:05.500"},{"value":"CAT"},{"value":"NYPE"},{"value":"123"},{"value":"106.7600"},{"value":"13,131.4800"},{"value":"sell"},{"value":"151.6401"},{"value":"55"},{"value":"-0.4972"}],[{"value":"2018-06-01 08:00:05.600"},{"value":"LIZARD"},{"value":"TPET"},{"value":"100"},{"value":"225.7600"},{"value":"22,576.0000"},{"value":"sell"},{"value":"151.1844"},{"value":"56"},{"value":"-1.4976"}],[{"value":"2018-06-01 08:00:05.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,990"},{"value":"107.0300"},{"value":"212,989.7000"},{"value":"buy"},{"value":"151.0393"},{"value":"57"},{"value":"1.2576"}],[{"value":"2018-06-01 08:00:05.800"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.0700"},{"value":"12,707.0000"},{"value":"buy"},{"value":"150.9961"},{"value":"58"},{"value":"0.4170"}],[{"value":"2018-06-01 08:00:05.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"140"},{"value":"107.3300"},{"value":"15,026.2000"},{"value":"buy"},{"value":"151.0546"},{"value":"59"},{"value":"0.5181"}],[{"value":"2018-06-01 08:00:06.000"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"104.3000"},{"value":"10,430.0000"},{"value":"buy"},{"value":"151.4827"},{"value":"60"},{"value":"2.0973"}],[{"value":"2018-06-01 08:00:06.100"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"103.9800"},{"value":"10,398.0000"},{"value":"sell"},{"value":"151.7109"},{"value":"61"},{"value":"-0.6743"}],[{"value":"2018-06-01 08:00:06.200"},{"value":"LIZARD"},{"value":"TPET"},{"value":"8"},{"value":"225.7600"},{"value":"1,806.0800"},{"value":"sell"},{"value":"151.8624"},{"value":"62"},{"value":"-0.1954"}],[{"value":"2018-06-01 08:00:06.300"},{"value":"DOG"},{"value":"PETX"},{"value":"4,262"},{"value":"103.5300"},{"value":"441,244.8600"},{"value":"sell"},{"value":"151.6925"},{"value":"63"},{"value":"-1.6213"}],[{"value":"2018-06-01 08:00:06.400"},{"value":"DOG"},{"value":"PETX"},{"value":"35"},{"value":"103.1500"},{"value":"3,610.2500"},{"value":"buy"},{"value":"151.6126"},{"value":"64"},{"value":"0.3264"}],[{"value":"2018-06-01 08:00:06.500"},{"value":"DOG"},{"value":"PETX"},{"value":"20"},{"value":"102.8600"},{"value":"2,057.2000"},{"value":"buy"},{"value":"151.6337"},{"value":"65"},{"value":"0.4772"}],[{"value":"2018-06-01 08:00:06.600"},{"value":"CAT"},{"value":"NYPE"},{"value":"534"},{"value":"107.6800"},{"value":"57,501.1200"},{"value":"buy"},{"value":"151.7980"},{"value":"66"},{"value":"0.8109"}],[{"value":"2018-06-01 08:00:06.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"711"},{"value":"108.0800"},{"value":"76,844.8800"},{"value":"buy"},{"value":"152.0942"},{"value":"67"},{"value":"0.8923"}],[{"value":"2018-06-01 08:00:06.800"},{"value":"FISH"},{"value":"PETX"},{"value":"88"},{"value":"127.0900"},{"value":"11,183.9200"},{"value":"sell"},{"value":"152.2562"},{"value":"68"},{"value":"-0.4441"}],[{"value":"2018-06-01 08:00:06.900"},{"value":"FISH"},{"value":"PETX"},{"value":"3,070"},{"value":"127.2500"},{"value":"390,657.5000"},{"value":"buy"},{"value":"152.6523"},{"value":"69"},{"value":"1.4534"}],[{"value":"2018-06-01 08:00:07.000"},{"value":"LIZARD"},{"value":"TPET"},{"value":"300"},{"value":"225.8000"},{"value":"67,740.0000"},{"value":"buy"},{"value":"153.0397"},{"value":"70"},{"value":"0.3482"}],[{"value":"2018-06-01 08:00:07.100"},{"value":"DOG"},{"value":"PETX"},{"value":"371"},{"value":"102.6600"},{"value":"38,086.8600"},{"value":"buy"},{"value":"153.4871"},{"value":"71"},{"value":"0.7180"}],[{"value":"2018-06-01 08:00:07.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"7,480"},{"value":"108.6300"},{"value":"812,552.4000"},{"value":"buy"},{"value":"154.2078"},{"value":"72"},{"value":"1.9555"}],[{"value":"2018-06-01 08:00:07.300"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"102.3600"},{"value":"10,236.0000"},{"value":"sell"},{"value":"154.5609"},{"value":"73"},{"value":"-1.3072"}],[{"value":"2018-06-01 08:00:07.400"},{"value":"BIRD"},{"value":"TPET"},{"value":"428"},{"value":"164.2900"},{"value":"70,316.1200"},{"value":"buy"},{"value":"154.9867"},{"value":"74"},{"value":"0.7535"}],[{"value":"2018-06-01 08:00:07.500"},{"value":"DOG"},{"value":"PETX"},{"value":"99"},{"value":"102.1200"},{"value":"10,109.8800"},{"value":"buy"},{"value":"155.4189"},{"value":"75"},{"value":"0.4616"}],[{"value":"2018-06-01 08:00:07.600"},{"value":"DOG"},{"value":"PETX"},{"value":"347"},{"value":"101.9800"},{"value":"35,387.0600"},{"value":"buy"},{"value":"155.9001"},{"value":"76"},{"value":"0.7026"}],[{"value":"2018-06-01 08:00:07.700"},{"value":"BIRD"},{"value":"TPET"},{"value":"500"},{"value":"164.2600"},{"value":"82,130.0000"},{"value":"buy"},{"value":"156.3253"},{"value":"77"},{"value":"0.1723"}],[{"value":"2018-06-01 08:00:07.800"},{"value":"BIRD"},{"value":"TPET"},{"value":"2,128"},{"value":"164.1100"},{"value":"349,226.0800"},{"value":"sell"},{"value":"156.4403"},{"value":"78"},{"value":"-1.2862"}],[{"value":"2018-06-01 08:00:07.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"12,212"},{"value":"108.9100"},{"value":"1,330,008.9200"},{"value":"sell"},{"value":"156.1171"},{"value":"79"},{"value":"-2.3028"}],[{"value":"2018-06-01 08:00:08.000"},{"value":"CAT"},{"value":"PETX"},{"value":"9"},{"value":"109.1800"},{"value":"982.6200"},{"value":"buy"},{"value":"155.8891"},{"value":"80"},{"value":"0.2025"}],[{"value":"2018-06-01 08:00:08.100"},{"value":"DOG"},{"value":"PETX"},{"value":"98"},{"value":"101.9000"},{"value":"9,986.2000"},{"value":"buy"},{"value":"155.7859"},{"value":"81"},{"value":"0.4606"}],[{"value":"2018-06-01 08:00:08.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"489"},{"value":"109.3400"},{"value":"53,467.2600"},{"value":"sell"},{"value":"155.5587"},{"value":"82"},{"value":"-0.7874"}],[{"value":"2018-06-01 08:00:08.300"},{"value":"DOG"},{"value":"PETX"},{"value":"436"},{"value":"101.7500"},{"value":"44,363.0000"},{"value":"sell"},{"value":"155.2354"},{"value":"83"},{"value":"-0.7578"}],[{"value":"2018-06-01 08:00:08.400"},{"value":"FISH"},{"value":"PETX"},{"value":"2"},{"value":"127.2100"},{"value":"254.4200"},{"value":"sell"},{"value":"154.6404"},{"value":"84"},{"value":"-1.8217"}],[{"value":"2018-06-01 08:00:08.500"},{"value":"CAT"},{"value":"NYPE"},{"value":"309"},{"value":"109.4300"},{"value":"33,813.8700"},{"value":"sell"},{"value":"154.0307"},{"value":"85"},{"value":"-0.6757"}],[{"value":"2018-06-01 08:00:08.600"},{"value":"BIRD"},{"value":"TPET"},{"value":"3,273"},{"value":"163.8300"},{"value":"536,215.5900"},{"value":"sell"},{"value":"153.2625"},{"value":"86"},{"value":"-1.4847"}],[{"value":"2018-06-01 08:00:08.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"28"},{"value":"109.4800"},{"value":"3,065.4400"},{"value":"sell"},{"value":"152.5787"},{"value":"87"},{"value":"-0.3026"}],[{"value":"2018-06-01 08:00:08.800"},{"value":"DOG"},{"value":"PETX"},{"value":"4,020"},{"value":"101.7700"},{"value":"409,115.4000"},{"value":"buy"},{"value":"152.3070"},{"value":"88"},{"value":"1.5903"}],[{"value":"2018-06-01 08:00:08.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"50"},{"value":"109.4200"},{"value":"5,471.0000"},{"value":"sell"},{"value":"151.8779"},{"value":"89"},{"value":"-1.1409"}],[{"value":"2018-06-01 08:00:09.000"},{"value":"CAT"},{"value":"NYPE"},{"value":"12,540"},{"value":"109.5900"},{"value":"1,374,258.6000"},{"value":"buy"},{"value":"151.9476"},{"value":"90"},{"value":"2.3232"}],[{"value":"2018-06-01 08:00:09.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"109.7100"},{"value":"10,971.0000"},{"value":"sell"},{"value":"151.9575"},{"value":"91"},{"value":"-0.2603"}],[{"value":"2018-06-01 08:00:09.200"},{"value":"DOG"},{"value":"PETX"},{"value":"4,143"},{"value":"101.6300"},{"value":"421,053.0900"},{"value":"sell"},{"value":"151.6745"},{"value":"92"},{"value":"-1.6061"}],[{"value":"2018-06-01 08:00:09.300"},{"value":"LIZARD"},{"value":"TPET"},{"value":"947"},{"value":"225.7400"},{"value":"213,775.7800"},{"value":"sell"},{"value":"151.2648"},{"value":"93"},{"value":"-0.9818"}],[{"value":"2018-06-01 08:00:09.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"101.5900"},{"value":"10,159.0000"},{"value":"buy"},{"value":"151.0986"},{"value":"94"},{"value":"0.9333"}],[{"value":"2018-06-01 08:00:09.500"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.1200"},{"value":"12,712.0000"},{"value":"sell"},{"value":"150.8477"},{"value":"95"},{"value":"-0.6329"}],[{"value":"2018-06-01 08:00:09.600"},{"value":"DOG"},{"value":"PETX"},{"value":"2,887"},{"value":"101.4200"},{"value":"292,799.5400"},{"value":"sell"},{"value":"150.3843"},{"value":"96"},{"value":"-1.4239"}],[{"value":"2018-06-01 08:00:09.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"20"},{"value":"109.8000"},{"value":"2,196.0000"},{"value":"sell"},{"value":"149.9563"},{"value":"97"},{"value":"-0.2677"}],[{"value":"2018-06-01 08:00:09.800"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"101.3200"},{"value":"10,132.0000"},{"value":"buy"},{"value":"149.6898"},{"value":"98"},{"value":"0.4629"}],[{"value":"2018-06-01 08:00:09.900"},{"value":"DOG"},{"value":"PETX"},{"value":"1,130"},{"value":"101.1200"},{"value":"114,265.6000"},{"value":"sell"},{"value":"149.2828"},{"value":"99"},{"value":"-1.0415"}]]}},"fig":{"type":"deephaven.plot.express.DeephavenFigure","data":{"data":[{"hovertemplate":"Sym=BIRD
Timestamp=%{x}
Price=%{y}","legendgroup":"BIRD","marker":{"symbol":"circle"},"mode":"markers","name":"BIRD","showlegend":true,"x":["2018-06-01 12:00:00.000000","2018-06-01 12:00:00.600000","2018-06-01 12:00:04.600000","2018-06-01 12:00:07.400000","2018-06-01 12:00:07.700000","2018-06-01 12:00:07.800000","2018-06-01 12:00:08.600000","2018-06-01 12:00:10.500000","2018-06-01 12:00:11.100000","2018-06-01 12:00:11.500000","2018-06-01 12:00:11.600000","2018-06-01 12:00:14.000000","2018-06-01 12:00:14.500000","2018-06-01 12:00:15.000000","2018-06-01 12:00:17.000000","2018-06-01 12:00:17.100000","2018-06-01 12:00:17.400000","2018-06-01 12:00:18.800000","2018-06-01 12:00:19.400000","2018-06-01 12:00:21.600000","2018-06-01 12:00:22.200000","2018-06-01 12:00:23.100000","2018-06-01 12:00:23.800000","2018-06-01 12:00:24.000000","2018-06-01 12:00:24.800000","2018-06-01 12:00:25.200000","2018-06-01 12:00:26.500000","2018-06-01 12:00:27.000000","2018-06-01 12:00:28.900000","2018-06-01 12:00:29.500000","2018-06-01 12:00:31.100000","2018-06-01 12:00:32.200000","2018-06-01 12:00:32.700000","2018-06-01 12:00:32.900000","2018-06-01 12:00:33.100000","2018-06-01 12:00:34.500000","2018-06-01 12:00:34.800000","2018-06-01 12:00:35.000000","2018-06-01 12:00:35.100000","2018-06-01 12:00:35.200000","2018-06-01 12:00:36.300000","2018-06-01 12:00:36.400000","2018-06-01 12:00:36.800000","2018-06-01 12:00:36.900000","2018-06-01 12:00:38.800000","2018-06-01 12:00:40.200000","2018-06-01 12:00:40.800000","2018-06-01 12:00:40.900000","2018-06-01 12:00:41.300000","2018-06-01 12:00:41.500000","2018-06-01 12:00:44.600000","2018-06-01 12:00:47.200000","2018-06-01 12:00:48.700000","2018-06-01 12:00:49.200000","2018-06-01 12:00:49.300000","2018-06-01 12:00:50.000000","2018-06-01 12:00:51.600000","2018-06-01 12:00:51.700000","2018-06-01 12:00:52.500000","2018-06-01 12:00:52.800000","2018-06-01 12:00:53.000000","2018-06-01 12:00:54.300000","2018-06-01 12:00:55.000000","2018-06-01 12:00:56.600000","2018-06-01 12:00:58.700000","2018-06-01 12:00:59.800000","2018-06-01 12:01:01.200000","2018-06-01 12:01:02.800000","2018-06-01 12:01:03.100000","2018-06-01 12:01:05.500000","2018-06-01 12:01:06.300000","2018-06-01 12:01:06.400000","2018-06-01 12:01:07.100000","2018-06-01 12:01:08.800000","2018-06-01 12:01:09.200000","2018-06-01 12:01:09.800000","2018-06-01 12:01:10.400000","2018-06-01 12:01:10.500000","2018-06-01 12:01:11.400000","2018-06-01 12:01:12.400000","2018-06-01 12:01:12.700000","2018-06-01 12:01:13.800000","2018-06-01 12:01:15.500000","2018-06-01 12:01:16.700000","2018-06-01 12:01:18.600000","2018-06-01 12:01:19.300000","2018-06-01 12:01:19.900000","2018-06-01 12:01:21.300000","2018-06-01 12:01:21.500000","2018-06-01 12:01:24.200000","2018-06-01 12:01:24.800000","2018-06-01 12:01:25.000000","2018-06-01 12:01:25.200000","2018-06-01 12:01:26.100000","2018-06-01 12:01:26.700000","2018-06-01 12:01:27.800000","2018-06-01 12:01:28.400000","2018-06-01 12:01:29.900000","2018-06-01 12:01:31.700000","2018-06-01 12:01:31.800000","2018-06-01 12:01:32.300000","2018-06-01 12:01:33.100000","2018-06-01 12:01:33.500000","2018-06-01 12:01:36.400000","2018-06-01 12:01:36.800000","2018-06-01 12:01:37.000000","2018-06-01 12:01:37.600000","2018-06-01 12:01:38.400000","2018-06-01 12:01:38.900000","2018-06-01 12:01:39.000000","2018-06-01 12:01:39.900000","2018-06-01 12:01:40.000000","2018-06-01 12:01:40.100000","2018-06-01 12:01:40.700000","2018-06-01 12:01:42.400000","2018-06-01 12:01:43.400000","2018-06-01 12:01:44.400000","2018-06-01 12:01:45.700000","2018-06-01 12:01:46.500000","2018-06-01 12:01:46.600000","2018-06-01 12:01:47.200000","2018-06-01 12:01:47.400000","2018-06-01 12:01:48.000000","2018-06-01 12:01:51.600000","2018-06-01 12:01:52.900000","2018-06-01 12:01:53.900000","2018-06-01 12:01:54.700000","2018-06-01 12:01:56.500000","2018-06-01 12:01:56.700000","2018-06-01 12:01:56.900000","2018-06-01 12:01:57.600000","2018-06-01 12:02:00.300000","2018-06-01 12:02:00.900000","2018-06-01 12:02:01.200000","2018-06-01 12:02:01.900000","2018-06-01 12:02:04.700000","2018-06-01 12:02:05.200000","2018-06-01 12:02:07.300000","2018-06-01 12:02:08.000000","2018-06-01 12:02:08.800000","2018-06-01 12:02:09.000000","2018-06-01 12:02:09.400000","2018-06-01 12:02:10.100000","2018-06-01 12:02:10.200000","2018-06-01 12:02:10.600000","2018-06-01 12:02:11.300000","2018-06-01 12:02:11.800000","2018-06-01 12:02:13.800000","2018-06-01 12:02:14.200000","2018-06-01 12:02:16.000000","2018-06-01 12:02:16.200000","2018-06-01 12:02:18.600000","2018-06-01 12:02:18.700000","2018-06-01 12:02:20.400000","2018-06-01 12:02:21.200000","2018-06-01 12:02:21.400000","2018-06-01 12:02:21.500000","2018-06-01 12:02:21.800000","2018-06-01 12:02:22.300000","2018-06-01 12:02:23.000000","2018-06-01 12:02:23.600000","2018-06-01 12:02:24.100000","2018-06-01 12:02:26.800000","2018-06-01 12:02:28.600000","2018-06-01 12:02:28.700000","2018-06-01 12:02:29.300000","2018-06-01 12:02:29.600000","2018-06-01 12:02:30.900000","2018-06-01 12:02:31.500000","2018-06-01 12:02:32.500000","2018-06-01 12:02:33.200000","2018-06-01 12:02:33.300000","2018-06-01 12:02:34.700000","2018-06-01 12:02:35.100000","2018-06-01 12:02:35.800000","2018-06-01 12:02:35.900000","2018-06-01 12:02:37.700000","2018-06-01 12:02:38.000000","2018-06-01 12:02:38.400000","2018-06-01 12:02:39.400000","2018-06-01 12:02:39.700000","2018-06-01 12:02:40.200000","2018-06-01 12:02:41.700000","2018-06-01 12:02:42.300000","2018-06-01 12:02:43.500000","2018-06-01 12:02:43.600000","2018-06-01 12:02:44.000000","2018-06-01 12:02:44.100000","2018-06-01 12:02:45.300000","2018-06-01 12:02:45.800000","2018-06-01 12:02:46.100000","2018-06-01 12:02:46.700000","2018-06-01 12:02:46.900000","2018-06-01 12:02:47.000000","2018-06-01 12:02:47.400000","2018-06-01 12:02:49.200000","2018-06-01 12:02:49.900000","2018-06-01 12:02:50.900000","2018-06-01 12:02:51.100000","2018-06-01 12:02:51.400000","2018-06-01 12:02:51.700000","2018-06-01 12:02:52.100000","2018-06-01 12:02:52.200000","2018-06-01 12:02:53.500000","2018-06-01 12:02:54.900000","2018-06-01 12:02:56.400000","2018-06-01 12:02:56.800000","2018-06-01 12:02:57.800000","2018-06-01 12:02:58.500000","2018-06-01 12:02:58.800000","2018-06-01 12:02:59.100000","2018-06-01 12:02:59.500000","2018-06-01 12:03:00.500000","2018-06-01 12:03:01.900000","2018-06-01 12:03:02.200000","2018-06-01 12:03:02.500000","2018-06-01 12:03:03.300000","2018-06-01 12:03:03.500000","2018-06-01 12:03:04.000000","2018-06-01 12:03:04.600000","2018-06-01 12:03:04.800000","2018-06-01 12:03:06.000000","2018-06-01 12:03:06.100000","2018-06-01 12:03:06.900000","2018-06-01 12:03:07.300000","2018-06-01 12:03:07.600000","2018-06-01 12:03:08.000000","2018-06-01 12:03:08.400000","2018-06-01 12:03:09.500000","2018-06-01 12:03:13.000000","2018-06-01 12:03:13.100000","2018-06-01 12:03:14.200000","2018-06-01 12:03:14.600000","2018-06-01 12:03:16.600000","2018-06-01 12:03:17.600000","2018-06-01 12:03:18.200000","2018-06-01 12:03:18.600000","2018-06-01 12:03:18.800000","2018-06-01 12:03:20.800000","2018-06-01 12:03:21.900000","2018-06-01 12:03:22.100000","2018-06-01 12:03:23.200000","2018-06-01 12:03:23.500000","2018-06-01 12:03:23.600000","2018-06-01 12:03:24.200000","2018-06-01 12:03:25.600000","2018-06-01 12:03:26.200000","2018-06-01 12:03:26.300000","2018-06-01 12:03:26.800000","2018-06-01 12:03:27.300000","2018-06-01 12:03:29.200000","2018-06-01 12:03:29.900000","2018-06-01 12:03:30.300000","2018-06-01 12:03:30.700000","2018-06-01 12:03:30.800000","2018-06-01 12:03:32.100000","2018-06-01 12:03:34.400000","2018-06-01 12:03:34.600000","2018-06-01 12:03:34.800000","2018-06-01 12:03:34.900000","2018-06-01 12:03:35.700000","2018-06-01 12:03:36.100000","2018-06-01 12:03:36.800000","2018-06-01 12:03:37.000000","2018-06-01 12:03:38.800000","2018-06-01 12:03:39.200000","2018-06-01 12:03:42.700000","2018-06-01 12:03:43.100000","2018-06-01 12:03:43.400000","2018-06-01 12:03:49.100000","2018-06-01 12:03:49.400000","2018-06-01 12:03:50.200000","2018-06-01 12:03:51.300000","2018-06-01 12:03:51.600000","2018-06-01 12:03:54.100000","2018-06-01 12:03:55.200000","2018-06-01 12:03:55.600000","2018-06-01 12:03:55.700000","2018-06-01 12:03:56.600000","2018-06-01 12:03:57.800000","2018-06-01 12:03:58.900000","2018-06-01 12:03:59.200000","2018-06-01 12:04:01.000000","2018-06-01 12:04:01.400000","2018-06-01 12:04:01.500000","2018-06-01 12:04:01.600000","2018-06-01 12:04:01.800000","2018-06-01 12:04:03.600000","2018-06-01 12:04:04.800000","2018-06-01 12:04:06.100000","2018-06-01 12:04:07.400000","2018-06-01 12:04:07.600000","2018-06-01 12:04:08.100000","2018-06-01 12:04:09.000000","2018-06-01 12:04:09.200000","2018-06-01 12:04:10.000000","2018-06-01 12:04:10.500000","2018-06-01 12:04:11.100000","2018-06-01 12:04:11.900000","2018-06-01 12:04:14.000000","2018-06-01 12:04:14.100000","2018-06-01 12:04:14.500000","2018-06-01 12:04:14.800000","2018-06-01 12:04:15.000000","2018-06-01 12:04:15.100000","2018-06-01 12:04:16.700000","2018-06-01 12:04:17.300000","2018-06-01 12:04:18.200000","2018-06-01 12:04:18.300000","2018-06-01 12:04:19.600000","2018-06-01 12:04:20.100000","2018-06-01 12:04:20.300000","2018-06-01 12:04:20.600000","2018-06-01 12:04:20.800000","2018-06-01 12:04:21.000000","2018-06-01 12:04:21.700000","2018-06-01 12:04:22.300000","2018-06-01 12:04:22.600000","2018-06-01 12:04:23.400000","2018-06-01 12:04:24.100000","2018-06-01 12:04:24.400000","2018-06-01 12:04:24.800000","2018-06-01 12:04:26.100000","2018-06-01 12:04:26.600000","2018-06-01 12:04:27.900000","2018-06-01 12:04:31.200000","2018-06-01 12:04:31.900000","2018-06-01 12:04:32.300000","2018-06-01 12:04:34.100000","2018-06-01 12:04:34.400000","2018-06-01 12:04:34.800000","2018-06-01 12:04:35.100000","2018-06-01 12:04:36.200000","2018-06-01 12:04:38.600000","2018-06-01 12:04:38.900000","2018-06-01 12:04:39.900000","2018-06-01 12:04:40.900000","2018-06-01 12:04:41.500000","2018-06-01 12:04:41.700000","2018-06-01 12:04:43.200000","2018-06-01 12:04:48.100000","2018-06-01 12:04:49.200000","2018-06-01 12:04:49.300000","2018-06-01 12:04:50.300000","2018-06-01 12:04:51.200000","2018-06-01 12:04:51.500000","2018-06-01 12:04:51.700000","2018-06-01 12:04:52.300000","2018-06-01 12:04:53.000000","2018-06-01 12:04:53.200000","2018-06-01 12:04:54.900000","2018-06-01 12:04:56.700000","2018-06-01 12:04:57.000000","2018-06-01 12:04:57.200000","2018-06-01 12:04:57.300000","2018-06-01 12:04:58.900000","2018-06-01 12:04:59.300000"],"xaxis":"x","y":[164.63,164.49,164.35,164.29,164.26,164.11,163.83,163.5,163.19,162.92,162.76,162.66,162.59,162.38,162.17,161.93,161.8,161.59,161.53,161.38,161.14,160.84,160.71,160.39,160.19,160.06,159.71,159.46,159.18,158.89,158.63,158.39,158.25,158.21,158.2,158.36,158.55,158.76,158.82,159.02,159.18,159.17,159.23,159.29,159.42,159.64,159.75,159.77,159.67,159.53,159.3,158.99,158.68,158.44,158.24,158.05,157.89,157.83,157.76,157.65,157.43,157.13,156.81,156.64,156.42,156.24,156.03,155.78,155.61,155.42,155.35,155.46,155.54,155.72,155.81,155.93,155.96,155.92,156.06,155.97,155.93,155.82,155.74,155.66,155.57,155.42,155.07,154.81,154.46,154.07,153.59,153.12,152.66,152.22,151.68,151.14,150.54,150.09,149.66,149.49,149.34,149.21,149.05,148.83,148.71,148.52,148.34,147.99,147.66,147.35,147.17,146.93,146.74,146.62,146.58,146.77,146.99,147.12,147.19,147.13,147.07,147.04,146.94,146.73,146.67,146.75,146.87,147.04,147.17,147.36,147.66,148.1,148.43,148.77,148.98,149.16,149.33,149.58,149.73,149.82,149.85,149.72,149.64,149.65,149.58,149.6,149.71,149.85,149.98,150.02,149.98,149.92,149.76,149.8,150.03,150.16,150.37,150.6,150.86,151.07,151.18,151.38,151.49,151.56,151.72,151.9,151.94,152.04,152.23,152.6,152.96,153.24,153.57,153.81,154.16,154.53,154.88,155.22,155.48,155.89,156.24,156.39,156.45,156.42,156.34,156.43,156.64,156.88,157.09,157.34,157.57,157.78,157.96,158.04,157.95,157.78,157.62,157.43,157.25,156.96,156.61,156.3,156,155.89,155.78,155.68,155.5,155.16,154.83,154.53,154.34,154.2,154.01,153.7,153.31,152.95,152.54,151.99,151.36,150.66,149.87,149.25,148.8,148.37,147.97,147.7,147.64,147.71,147.91,148.1,148.39,148.61,148.94,149.03,149.07,149.14,149.16,149.19,149.32,149.39,149.54,149.68,149.56,149.3,149.05,148.79,148.62,148.4,148.24,147.96,147.63,147.29,146.95,146.75,146.54,146.38,146.2,146.3,146.3,146.2,146.14,146.1,146.17,146.26,146.41,146.74,146.96,147.29,147.56,147.83,147.96,148.03,148.07,148.27,148.46,148.58,148.71,148.87,149.15,149.31,149.46,149.4,149.25,149.14,149.01,148.84,148.81,148.75,148.71,148.71,148.73,148.93,148.98,149.05,149.03,149.07,149.14,149.25,149.33,149.31,149.32,149.14,148.89,148.52,148.25,148.22,148.17,148.03,147.93,147.81,147.79,147.81,147.75,147.63,147.56,147.25,146.95,146.67,146.28,145.9,145.7,145.6,145.42,145.1,144.73,144.42,144.26,144.28,144.36,144.43,144.56,144.63,144.66,144.67,144.59,144.66,144.65,144.66,144.79,144.95,145.07,145.02,144.99,145.02,145.11,145.42,145.77,145.96,146.06,146.22,146.45,146.77,147,147.2,147.45,147.57,147.75],"yaxis":"y","type":"scatter"},{"hovertemplate":"Sym=CAT
Timestamp=%{x}
Price=%{y}","legendgroup":"CAT","marker":{"symbol":"circle"},"mode":"markers","name":"CAT","showlegend":true,"x":["2018-06-01 12:00:00.100000","2018-06-01 12:00:00.300000","2018-06-01 12:00:00.400000","2018-06-01 12:00:00.800000","2018-06-01 12:00:01.300000","2018-06-01 12:00:01.400000","2018-06-01 12:00:01.800000","2018-06-01 12:00:02.100000","2018-06-01 12:00:02.800000","2018-06-01 12:00:03.100000","2018-06-01 12:00:03.200000","2018-06-01 12:00:03.900000","2018-06-01 12:00:04.300000","2018-06-01 12:00:04.500000","2018-06-01 12:00:04.900000","2018-06-01 12:00:05.100000","2018-06-01 12:00:05.500000","2018-06-01 12:00:05.700000","2018-06-01 12:00:05.900000","2018-06-01 12:00:06.600000","2018-06-01 12:00:06.700000","2018-06-01 12:00:07.200000","2018-06-01 12:00:07.900000","2018-06-01 12:00:08.000000","2018-06-01 12:00:08.200000","2018-06-01 12:00:08.500000","2018-06-01 12:00:08.700000","2018-06-01 12:00:08.900000","2018-06-01 12:00:09.000000","2018-06-01 12:00:09.100000","2018-06-01 12:00:09.700000","2018-06-01 12:00:10.000000","2018-06-01 12:00:10.200000","2018-06-01 12:00:10.700000","2018-06-01 12:00:10.800000","2018-06-01 12:00:11.300000","2018-06-01 12:00:11.400000","2018-06-01 12:00:11.700000","2018-06-01 12:00:12.100000","2018-06-01 12:00:12.300000","2018-06-01 12:00:12.700000","2018-06-01 12:00:13.700000","2018-06-01 12:00:13.800000","2018-06-01 12:00:13.900000","2018-06-01 12:00:14.600000","2018-06-01 12:00:14.900000","2018-06-01 12:00:15.400000","2018-06-01 12:00:16.000000","2018-06-01 12:00:16.200000","2018-06-01 12:00:16.400000","2018-06-01 12:00:16.500000","2018-06-01 12:00:16.600000","2018-06-01 12:00:16.700000","2018-06-01 12:00:16.900000","2018-06-01 12:00:17.600000","2018-06-01 12:00:18.000000","2018-06-01 12:00:18.300000","2018-06-01 12:00:19.000000","2018-06-01 12:00:19.800000","2018-06-01 12:00:20.000000","2018-06-01 12:00:20.100000","2018-06-01 12:00:20.300000","2018-06-01 12:00:20.600000","2018-06-01 12:00:21.300000","2018-06-01 12:00:21.500000","2018-06-01 12:00:22.100000","2018-06-01 12:00:22.400000","2018-06-01 12:00:23.900000","2018-06-01 12:00:24.500000","2018-06-01 12:00:24.900000","2018-06-01 12:00:25.500000","2018-06-01 12:00:25.900000","2018-06-01 12:00:26.000000","2018-06-01 12:00:26.700000","2018-06-01 12:00:26.900000","2018-06-01 12:00:27.300000","2018-06-01 12:00:27.400000","2018-06-01 12:00:28.100000","2018-06-01 12:00:28.400000","2018-06-01 12:00:29.400000","2018-06-01 12:00:29.600000","2018-06-01 12:00:29.800000","2018-06-01 12:00:30.300000","2018-06-01 12:00:30.400000","2018-06-01 12:00:30.500000","2018-06-01 12:00:30.800000","2018-06-01 12:00:30.900000","2018-06-01 12:00:31.400000","2018-06-01 12:00:31.600000","2018-06-01 12:00:31.900000","2018-06-01 12:00:32.600000","2018-06-01 12:00:33.200000","2018-06-01 12:00:33.500000","2018-06-01 12:00:33.600000","2018-06-01 12:00:33.700000","2018-06-01 12:00:33.800000","2018-06-01 12:00:33.900000","2018-06-01 12:00:34.200000","2018-06-01 12:00:34.300000","2018-06-01 12:00:35.300000","2018-06-01 12:00:35.400000","2018-06-01 12:00:35.500000","2018-06-01 12:00:35.700000","2018-06-01 12:00:35.900000","2018-06-01 12:00:36.600000","2018-06-01 12:00:36.700000","2018-06-01 12:00:37.000000","2018-06-01 12:00:37.200000","2018-06-01 12:00:37.300000","2018-06-01 12:00:37.500000","2018-06-01 12:00:37.700000","2018-06-01 12:00:37.800000","2018-06-01 12:00:37.900000","2018-06-01 12:00:38.200000","2018-06-01 12:00:39.600000","2018-06-01 12:00:39.700000","2018-06-01 12:00:39.900000","2018-06-01 12:00:40.300000","2018-06-01 12:00:40.400000","2018-06-01 12:00:40.500000","2018-06-01 12:00:41.000000","2018-06-01 12:00:41.100000","2018-06-01 12:00:41.600000","2018-06-01 12:00:42.000000","2018-06-01 12:00:42.600000","2018-06-01 12:00:42.700000","2018-06-01 12:00:42.800000","2018-06-01 12:00:43.000000","2018-06-01 12:00:43.300000","2018-06-01 12:00:43.800000","2018-06-01 12:00:44.000000","2018-06-01 12:00:44.100000","2018-06-01 12:00:44.900000","2018-06-01 12:00:45.000000","2018-06-01 12:00:45.100000","2018-06-01 12:00:45.300000","2018-06-01 12:00:45.800000","2018-06-01 12:00:46.300000","2018-06-01 12:00:46.400000","2018-06-01 12:00:46.500000","2018-06-01 12:00:46.700000","2018-06-01 12:00:46.900000","2018-06-01 12:00:47.000000","2018-06-01 12:00:47.400000","2018-06-01 12:00:48.500000","2018-06-01 12:00:48.600000","2018-06-01 12:00:48.800000","2018-06-01 12:00:49.700000","2018-06-01 12:00:49.900000","2018-06-01 12:00:50.300000","2018-06-01 12:00:50.500000","2018-06-01 12:00:51.100000","2018-06-01 12:00:51.200000","2018-06-01 12:00:51.300000","2018-06-01 12:00:51.500000","2018-06-01 12:00:52.100000","2018-06-01 12:00:52.200000","2018-06-01 12:00:52.400000","2018-06-01 12:00:53.200000","2018-06-01 12:00:53.500000","2018-06-01 12:00:53.800000","2018-06-01 12:00:54.500000","2018-06-01 12:00:54.600000","2018-06-01 12:00:54.700000","2018-06-01 12:00:55.200000","2018-06-01 12:00:55.500000","2018-06-01 12:00:55.700000","2018-06-01 12:00:55.900000","2018-06-01 12:00:56.700000","2018-06-01 12:00:56.800000","2018-06-01 12:00:57.000000","2018-06-01 12:00:57.100000","2018-06-01 12:00:58.200000","2018-06-01 12:00:58.500000","2018-06-01 12:00:58.900000","2018-06-01 12:00:59.000000","2018-06-01 12:00:59.200000","2018-06-01 12:00:59.400000","2018-06-01 12:00:59.700000","2018-06-01 12:01:00.100000","2018-06-01 12:01:00.300000","2018-06-01 12:01:00.400000","2018-06-01 12:01:00.500000","2018-06-01 12:01:00.800000","2018-06-01 12:01:01.400000","2018-06-01 12:01:01.500000","2018-06-01 12:01:01.600000","2018-06-01 12:01:02.000000","2018-06-01 12:01:02.300000","2018-06-01 12:01:02.400000","2018-06-01 12:01:02.900000","2018-06-01 12:01:03.300000","2018-06-01 12:01:03.400000","2018-06-01 12:01:03.600000","2018-06-01 12:01:04.000000","2018-06-01 12:01:04.500000","2018-06-01 12:01:05.100000","2018-06-01 12:01:05.200000","2018-06-01 12:01:05.800000","2018-06-01 12:01:06.000000","2018-06-01 12:01:06.700000","2018-06-01 12:01:07.200000","2018-06-01 12:01:07.500000","2018-06-01 12:01:07.600000","2018-06-01 12:01:07.800000","2018-06-01 12:01:09.600000","2018-06-01 12:01:09.700000","2018-06-01 12:01:10.000000","2018-06-01 12:01:10.300000","2018-06-01 12:01:10.700000","2018-06-01 12:01:10.800000","2018-06-01 12:01:11.600000","2018-06-01 12:01:11.700000","2018-06-01 12:01:11.800000","2018-06-01 12:01:12.100000","2018-06-01 12:01:12.500000","2018-06-01 12:01:12.600000","2018-06-01 12:01:13.600000","2018-06-01 12:01:13.700000","2018-06-01 12:01:13.900000","2018-06-01 12:01:14.100000","2018-06-01 12:01:14.500000","2018-06-01 12:01:14.800000","2018-06-01 12:01:15.400000","2018-06-01 12:01:15.900000","2018-06-01 12:01:16.000000","2018-06-01 12:01:16.100000","2018-06-01 12:01:16.500000","2018-06-01 12:01:16.800000","2018-06-01 12:01:16.900000","2018-06-01 12:01:17.200000","2018-06-01 12:01:17.300000","2018-06-01 12:01:17.700000","2018-06-01 12:01:17.800000","2018-06-01 12:01:18.000000","2018-06-01 12:01:18.100000","2018-06-01 12:01:20.100000","2018-06-01 12:01:20.300000","2018-06-01 12:01:20.900000","2018-06-01 12:01:21.100000","2018-06-01 12:01:21.200000","2018-06-01 12:01:21.600000","2018-06-01 12:01:21.700000","2018-06-01 12:01:22.000000","2018-06-01 12:01:22.500000","2018-06-01 12:01:22.800000","2018-06-01 12:01:22.900000","2018-06-01 12:01:23.000000","2018-06-01 12:01:23.100000","2018-06-01 12:01:24.000000","2018-06-01 12:01:24.500000","2018-06-01 12:01:24.600000","2018-06-01 12:01:24.900000","2018-06-01 12:01:25.500000","2018-06-01 12:01:25.600000","2018-06-01 12:01:26.000000","2018-06-01 12:01:27.000000","2018-06-01 12:01:27.300000","2018-06-01 12:01:27.700000","2018-06-01 12:01:27.900000","2018-06-01 12:01:28.600000","2018-06-01 12:01:28.800000","2018-06-01 12:01:29.000000","2018-06-01 12:01:29.200000","2018-06-01 12:01:29.600000","2018-06-01 12:01:29.700000","2018-06-01 12:01:30.300000","2018-06-01 12:01:30.600000","2018-06-01 12:01:30.900000","2018-06-01 12:01:31.300000","2018-06-01 12:01:31.400000","2018-06-01 12:01:31.500000","2018-06-01 12:01:32.200000","2018-06-01 12:01:32.900000","2018-06-01 12:01:33.600000","2018-06-01 12:01:34.400000","2018-06-01 12:01:34.600000","2018-06-01 12:01:34.700000","2018-06-01 12:01:35.000000","2018-06-01 12:01:35.200000","2018-06-01 12:01:35.300000","2018-06-01 12:01:35.400000","2018-06-01 12:01:36.200000","2018-06-01 12:01:36.500000","2018-06-01 12:01:36.600000","2018-06-01 12:01:37.100000","2018-06-01 12:01:37.300000","2018-06-01 12:01:38.600000","2018-06-01 12:01:39.100000","2018-06-01 12:01:39.300000","2018-06-01 12:01:39.500000","2018-06-01 12:01:39.800000","2018-06-01 12:01:40.900000","2018-06-01 12:01:41.500000","2018-06-01 12:01:41.900000","2018-06-01 12:01:42.000000","2018-06-01 12:01:42.200000","2018-06-01 12:01:42.500000","2018-06-01 12:01:42.600000","2018-06-01 12:01:42.700000","2018-06-01 12:01:43.700000","2018-06-01 12:01:43.800000","2018-06-01 12:01:44.200000","2018-06-01 12:01:44.700000","2018-06-01 12:01:44.800000","2018-06-01 12:01:45.100000","2018-06-01 12:01:45.400000","2018-06-01 12:01:45.500000","2018-06-01 12:01:45.600000","2018-06-01 12:01:45.900000","2018-06-01 12:01:46.000000","2018-06-01 12:01:46.200000","2018-06-01 12:01:46.300000","2018-06-01 12:01:46.400000","2018-06-01 12:01:46.700000","2018-06-01 12:01:47.100000","2018-06-01 12:01:47.800000","2018-06-01 12:01:48.200000","2018-06-01 12:01:48.300000","2018-06-01 12:01:48.700000","2018-06-01 12:01:49.500000","2018-06-01 12:01:49.800000","2018-06-01 12:01:50.400000","2018-06-01 12:01:50.800000","2018-06-01 12:01:51.100000","2018-06-01 12:01:51.300000","2018-06-01 12:01:51.500000","2018-06-01 12:01:51.800000","2018-06-01 12:01:51.900000","2018-06-01 12:01:52.500000","2018-06-01 12:01:52.600000","2018-06-01 12:01:52.800000","2018-06-01 12:01:53.600000","2018-06-01 12:01:54.200000","2018-06-01 12:01:54.500000","2018-06-01 12:01:55.000000","2018-06-01 12:01:55.100000","2018-06-01 12:01:55.300000","2018-06-01 12:01:55.500000","2018-06-01 12:01:55.900000","2018-06-01 12:01:56.300000","2018-06-01 12:01:56.400000","2018-06-01 12:01:57.000000","2018-06-01 12:01:57.400000","2018-06-01 12:01:58.500000","2018-06-01 12:01:58.600000","2018-06-01 12:01:59.600000","2018-06-01 12:02:00.100000","2018-06-01 12:02:00.800000","2018-06-01 12:02:01.000000","2018-06-01 12:02:02.000000","2018-06-01 12:02:02.100000","2018-06-01 12:02:02.400000","2018-06-01 12:02:02.800000","2018-06-01 12:02:02.900000","2018-06-01 12:02:03.700000","2018-06-01 12:02:03.800000","2018-06-01 12:02:03.900000","2018-06-01 12:02:04.200000","2018-06-01 12:02:04.400000","2018-06-01 12:02:04.600000","2018-06-01 12:02:05.000000","2018-06-01 12:02:05.800000","2018-06-01 12:02:06.000000","2018-06-01 12:02:06.100000","2018-06-01 12:02:06.200000","2018-06-01 12:02:06.400000","2018-06-01 12:02:06.500000","2018-06-01 12:02:06.700000","2018-06-01 12:02:06.800000","2018-06-01 12:02:07.200000","2018-06-01 12:02:07.400000","2018-06-01 12:02:07.600000","2018-06-01 12:02:07.700000","2018-06-01 12:02:07.800000","2018-06-01 12:02:08.100000","2018-06-01 12:02:08.200000","2018-06-01 12:02:08.500000","2018-06-01 12:02:09.500000","2018-06-01 12:02:10.500000","2018-06-01 12:02:11.100000","2018-06-01 12:02:11.600000","2018-06-01 12:02:12.000000","2018-06-01 12:02:12.700000","2018-06-01 12:02:12.800000","2018-06-01 12:02:13.200000","2018-06-01 12:02:14.500000","2018-06-01 12:02:14.900000","2018-06-01 12:02:15.100000","2018-06-01 12:02:15.300000","2018-06-01 12:02:15.600000","2018-06-01 12:02:15.800000","2018-06-01 12:02:16.100000","2018-06-01 12:02:16.300000","2018-06-01 12:02:16.800000","2018-06-01 12:02:17.300000","2018-06-01 12:02:17.400000","2018-06-01 12:02:17.500000","2018-06-01 12:02:17.700000","2018-06-01 12:02:17.800000","2018-06-01 12:02:18.300000","2018-06-01 12:02:18.500000","2018-06-01 12:02:18.900000","2018-06-01 12:02:19.000000","2018-06-01 12:02:19.100000","2018-06-01 12:02:19.200000","2018-06-01 12:02:19.600000","2018-06-01 12:02:19.700000","2018-06-01 12:02:20.000000","2018-06-01 12:02:20.700000","2018-06-01 12:02:20.900000","2018-06-01 12:02:21.600000","2018-06-01 12:02:22.100000","2018-06-01 12:02:22.200000","2018-06-01 12:02:22.400000","2018-06-01 12:02:22.900000","2018-06-01 12:02:23.400000","2018-06-01 12:02:23.700000","2018-06-01 12:02:24.000000","2018-06-01 12:02:24.300000","2018-06-01 12:02:24.500000","2018-06-01 12:02:24.700000","2018-06-01 12:02:24.900000","2018-06-01 12:02:25.200000","2018-06-01 12:02:25.800000","2018-06-01 12:02:26.100000","2018-06-01 12:02:26.200000","2018-06-01 12:02:26.500000","2018-06-01 12:02:26.900000","2018-06-01 12:02:27.100000","2018-06-01 12:02:27.200000","2018-06-01 12:02:27.300000","2018-06-01 12:02:27.400000","2018-06-01 12:02:27.500000","2018-06-01 12:02:27.900000","2018-06-01 12:02:28.100000","2018-06-01 12:02:28.200000","2018-06-01 12:02:28.400000","2018-06-01 12:02:28.800000","2018-06-01 12:02:29.100000","2018-06-01 12:02:29.400000","2018-06-01 12:02:29.700000","2018-06-01 12:02:29.800000","2018-06-01 12:02:30.200000","2018-06-01 12:02:30.500000","2018-06-01 12:02:30.600000","2018-06-01 12:02:30.700000","2018-06-01 12:02:31.100000","2018-06-01 12:02:31.400000","2018-06-01 12:02:31.600000","2018-06-01 12:02:31.800000","2018-06-01 12:02:31.900000","2018-06-01 12:02:32.100000","2018-06-01 12:02:32.300000","2018-06-01 12:02:32.400000","2018-06-01 12:02:33.000000","2018-06-01 12:02:33.900000","2018-06-01 12:02:34.000000","2018-06-01 12:02:34.300000","2018-06-01 12:02:34.400000","2018-06-01 12:02:34.500000","2018-06-01 12:02:34.600000","2018-06-01 12:02:34.800000","2018-06-01 12:02:35.200000","2018-06-01 12:02:35.700000","2018-06-01 12:02:36.400000","2018-06-01 12:02:36.600000","2018-06-01 12:02:37.000000","2018-06-01 12:02:37.100000","2018-06-01 12:02:38.200000","2018-06-01 12:02:38.700000","2018-06-01 12:02:38.900000","2018-06-01 12:02:39.000000","2018-06-01 12:02:39.600000","2018-06-01 12:02:40.000000","2018-06-01 12:02:40.400000","2018-06-01 12:02:40.500000","2018-06-01 12:02:40.800000","2018-06-01 12:02:41.200000","2018-06-01 12:02:41.400000","2018-06-01 12:02:41.900000","2018-06-01 12:02:42.100000","2018-06-01 12:02:42.400000","2018-06-01 12:02:42.800000","2018-06-01 12:02:43.000000","2018-06-01 12:02:43.200000","2018-06-01 12:02:43.900000","2018-06-01 12:02:44.800000","2018-06-01 12:02:45.100000","2018-06-01 12:02:45.400000","2018-06-01 12:02:47.500000","2018-06-01 12:02:47.600000","2018-06-01 12:02:47.800000","2018-06-01 12:02:47.900000","2018-06-01 12:02:48.100000","2018-06-01 12:02:48.600000","2018-06-01 12:02:49.000000","2018-06-01 12:02:49.100000","2018-06-01 12:02:49.500000","2018-06-01 12:02:49.600000","2018-06-01 12:02:50.700000","2018-06-01 12:02:51.600000","2018-06-01 12:02:52.400000","2018-06-01 12:02:52.600000","2018-06-01 12:02:53.000000","2018-06-01 12:02:53.200000","2018-06-01 12:02:53.300000","2018-06-01 12:02:53.400000","2018-06-01 12:02:53.600000","2018-06-01 12:02:53.700000","2018-06-01 12:02:53.900000","2018-06-01 12:02:54.200000","2018-06-01 12:02:54.600000","2018-06-01 12:02:55.100000","2018-06-01 12:02:55.200000","2018-06-01 12:02:55.400000","2018-06-01 12:02:55.800000","2018-06-01 12:02:56.100000","2018-06-01 12:02:56.200000","2018-06-01 12:02:56.500000","2018-06-01 12:02:56.600000","2018-06-01 12:02:56.900000","2018-06-01 12:02:57.100000","2018-06-01 12:02:57.200000","2018-06-01 12:02:58.100000","2018-06-01 12:02:58.400000","2018-06-01 12:02:58.700000","2018-06-01 12:02:59.000000","2018-06-01 12:02:59.300000","2018-06-01 12:02:59.900000","2018-06-01 12:03:00.100000","2018-06-01 12:03:00.600000","2018-06-01 12:03:00.800000","2018-06-01 12:03:01.000000","2018-06-01 12:03:01.500000","2018-06-01 12:03:01.800000","2018-06-01 12:03:02.000000","2018-06-01 12:03:02.400000","2018-06-01 12:03:03.600000","2018-06-01 12:03:03.800000","2018-06-01 12:03:03.900000","2018-06-01 12:03:04.200000","2018-06-01 12:03:04.500000","2018-06-01 12:03:04.700000","2018-06-01 12:03:05.200000","2018-06-01 12:03:05.300000","2018-06-01 12:03:06.400000","2018-06-01 12:03:07.200000","2018-06-01 12:03:07.500000","2018-06-01 12:03:07.700000","2018-06-01 12:03:08.600000","2018-06-01 12:03:09.900000","2018-06-01 12:03:10.000000","2018-06-01 12:03:10.200000","2018-06-01 12:03:10.500000","2018-06-01 12:03:10.600000","2018-06-01 12:03:10.700000","2018-06-01 12:03:10.800000","2018-06-01 12:03:10.900000","2018-06-01 12:03:11.000000","2018-06-01 12:03:11.200000","2018-06-01 12:03:11.400000","2018-06-01 12:03:11.600000","2018-06-01 12:03:11.700000","2018-06-01 12:03:11.800000","2018-06-01 12:03:12.200000","2018-06-01 12:03:12.500000","2018-06-01 12:03:12.800000","2018-06-01 12:03:13.400000","2018-06-01 12:03:13.500000","2018-06-01 12:03:14.400000","2018-06-01 12:03:15.000000","2018-06-01 12:03:15.100000","2018-06-01 12:03:16.000000","2018-06-01 12:03:17.000000","2018-06-01 12:03:17.100000","2018-06-01 12:03:17.300000","2018-06-01 12:03:17.800000","2018-06-01 12:03:17.900000","2018-06-01 12:03:18.000000","2018-06-01 12:03:18.100000","2018-06-01 12:03:19.000000","2018-06-01 12:03:19.900000","2018-06-01 12:03:20.300000","2018-06-01 12:03:20.700000","2018-06-01 12:03:20.900000","2018-06-01 12:03:21.000000","2018-06-01 12:03:21.200000","2018-06-01 12:03:21.700000","2018-06-01 12:03:22.600000","2018-06-01 12:03:22.700000","2018-06-01 12:03:23.400000","2018-06-01 12:03:23.700000","2018-06-01 12:03:23.800000","2018-06-01 12:03:24.100000","2018-06-01 12:03:25.100000","2018-06-01 12:03:25.400000","2018-06-01 12:03:25.500000","2018-06-01 12:03:25.800000","2018-06-01 12:03:26.700000","2018-06-01 12:03:27.100000","2018-06-01 12:03:27.600000","2018-06-01 12:03:28.000000","2018-06-01 12:03:28.500000","2018-06-01 12:03:28.700000","2018-06-01 12:03:29.000000","2018-06-01 12:03:29.400000","2018-06-01 12:03:29.600000","2018-06-01 12:03:29.700000","2018-06-01 12:03:29.800000","2018-06-01 12:03:30.400000","2018-06-01 12:03:30.500000","2018-06-01 12:03:31.000000","2018-06-01 12:03:31.200000","2018-06-01 12:03:31.300000","2018-06-01 12:03:31.700000","2018-06-01 12:03:31.900000","2018-06-01 12:03:32.400000","2018-06-01 12:03:32.600000","2018-06-01 12:03:32.700000","2018-06-01 12:03:32.800000","2018-06-01 12:03:32.900000","2018-06-01 12:03:33.000000","2018-06-01 12:03:33.300000","2018-06-01 12:03:33.600000","2018-06-01 12:03:34.700000","2018-06-01 12:03:35.500000","2018-06-01 12:03:36.600000","2018-06-01 12:03:37.100000","2018-06-01 12:03:37.400000","2018-06-01 12:03:37.600000","2018-06-01 12:03:38.000000","2018-06-01 12:03:38.100000","2018-06-01 12:03:38.400000","2018-06-01 12:03:38.600000","2018-06-01 12:03:38.700000","2018-06-01 12:03:38.900000","2018-06-01 12:03:39.100000","2018-06-01 12:03:39.600000","2018-06-01 12:03:40.200000","2018-06-01 12:03:40.800000","2018-06-01 12:03:40.900000","2018-06-01 12:03:41.500000","2018-06-01 12:03:41.700000","2018-06-01 12:03:41.800000","2018-06-01 12:03:42.200000","2018-06-01 12:03:42.500000","2018-06-01 12:03:42.600000","2018-06-01 12:03:43.000000","2018-06-01 12:03:43.500000","2018-06-01 12:03:43.700000","2018-06-01 12:03:43.900000","2018-06-01 12:03:44.500000","2018-06-01 12:03:45.100000","2018-06-01 12:03:45.200000","2018-06-01 12:03:45.400000","2018-06-01 12:03:45.700000","2018-06-01 12:03:45.800000","2018-06-01 12:03:45.900000","2018-06-01 12:03:46.000000","2018-06-01 12:03:46.300000","2018-06-01 12:03:46.500000","2018-06-01 12:03:46.800000","2018-06-01 12:03:47.200000","2018-06-01 12:03:47.800000","2018-06-01 12:03:48.200000","2018-06-01 12:03:48.300000","2018-06-01 12:03:49.900000","2018-06-01 12:03:50.300000","2018-06-01 12:03:50.500000","2018-06-01 12:03:51.100000","2018-06-01 12:03:51.400000","2018-06-01 12:03:51.800000","2018-06-01 12:03:51.900000","2018-06-01 12:03:52.700000","2018-06-01 12:03:52.800000","2018-06-01 12:03:53.200000","2018-06-01 12:03:53.300000","2018-06-01 12:03:54.000000","2018-06-01 12:03:54.700000","2018-06-01 12:03:57.500000","2018-06-01 12:03:57.900000","2018-06-01 12:03:58.100000","2018-06-01 12:03:58.800000","2018-06-01 12:03:59.100000","2018-06-01 12:03:59.300000","2018-06-01 12:03:59.700000","2018-06-01 12:04:00.000000","2018-06-01 12:04:00.100000","2018-06-01 12:04:00.300000","2018-06-01 12:04:00.500000","2018-06-01 12:04:01.100000","2018-06-01 12:04:02.100000","2018-06-01 12:04:03.000000","2018-06-01 12:04:03.900000","2018-06-01 12:04:04.900000","2018-06-01 12:04:05.100000","2018-06-01 12:04:05.200000","2018-06-01 12:04:05.400000","2018-06-01 12:04:06.200000","2018-06-01 12:04:06.300000","2018-06-01 12:04:06.700000","2018-06-01 12:04:06.900000","2018-06-01 12:04:07.000000","2018-06-01 12:04:07.500000","2018-06-01 12:04:07.700000","2018-06-01 12:04:08.200000","2018-06-01 12:04:08.500000","2018-06-01 12:04:08.900000","2018-06-01 12:04:09.500000","2018-06-01 12:04:09.800000","2018-06-01 12:04:10.100000","2018-06-01 12:04:10.200000","2018-06-01 12:04:10.400000","2018-06-01 12:04:10.800000","2018-06-01 12:04:11.400000","2018-06-01 12:04:11.700000","2018-06-01 12:04:12.100000","2018-06-01 12:04:12.300000","2018-06-01 12:04:12.800000","2018-06-01 12:04:12.900000","2018-06-01 12:04:13.200000","2018-06-01 12:04:13.700000","2018-06-01 12:04:14.300000","2018-06-01 12:04:15.200000","2018-06-01 12:04:15.600000","2018-06-01 12:04:15.700000","2018-06-01 12:04:16.500000","2018-06-01 12:04:16.600000","2018-06-01 12:04:17.100000","2018-06-01 12:04:17.200000","2018-06-01 12:04:17.400000","2018-06-01 12:04:18.000000","2018-06-01 12:04:18.100000","2018-06-01 12:04:18.500000","2018-06-01 12:04:18.700000","2018-06-01 12:04:18.900000","2018-06-01 12:04:20.200000","2018-06-01 12:04:20.400000","2018-06-01 12:04:20.700000","2018-06-01 12:04:20.900000","2018-06-01 12:04:21.200000","2018-06-01 12:04:21.400000","2018-06-01 12:04:22.200000","2018-06-01 12:04:22.500000","2018-06-01 12:04:23.200000","2018-06-01 12:04:23.700000","2018-06-01 12:04:24.600000","2018-06-01 12:04:24.900000","2018-06-01 12:04:25.200000","2018-06-01 12:04:25.500000","2018-06-01 12:04:25.600000","2018-06-01 12:04:25.700000","2018-06-01 12:04:25.800000","2018-06-01 12:04:26.000000","2018-06-01 12:04:26.700000","2018-06-01 12:04:27.100000","2018-06-01 12:04:27.300000","2018-06-01 12:04:27.600000","2018-06-01 12:04:27.700000","2018-06-01 12:04:27.800000","2018-06-01 12:04:28.100000","2018-06-01 12:04:28.200000","2018-06-01 12:04:28.600000","2018-06-01 12:04:28.900000","2018-06-01 12:04:29.200000","2018-06-01 12:04:29.800000","2018-06-01 12:04:30.200000","2018-06-01 12:04:30.500000","2018-06-01 12:04:31.100000","2018-06-01 12:04:31.800000","2018-06-01 12:04:32.000000","2018-06-01 12:04:32.600000","2018-06-01 12:04:32.800000","2018-06-01 12:04:32.900000","2018-06-01 12:04:33.000000","2018-06-01 12:04:33.400000","2018-06-01 12:04:33.500000","2018-06-01 12:04:33.600000","2018-06-01 12:04:34.300000","2018-06-01 12:04:34.600000","2018-06-01 12:04:34.700000","2018-06-01 12:04:34.900000","2018-06-01 12:04:35.000000","2018-06-01 12:04:35.300000","2018-06-01 12:04:35.900000","2018-06-01 12:04:36.100000","2018-06-01 12:04:36.500000","2018-06-01 12:04:36.900000","2018-06-01 12:04:37.000000","2018-06-01 12:04:37.100000","2018-06-01 12:04:38.400000","2018-06-01 12:04:39.000000","2018-06-01 12:04:39.200000","2018-06-01 12:04:39.300000","2018-06-01 12:04:39.400000","2018-06-01 12:04:39.600000","2018-06-01 12:04:40.500000","2018-06-01 12:04:40.800000","2018-06-01 12:04:41.100000","2018-06-01 12:04:41.800000","2018-06-01 12:04:41.900000","2018-06-01 12:04:42.400000","2018-06-01 12:04:42.500000","2018-06-01 12:04:42.600000","2018-06-01 12:04:42.700000","2018-06-01 12:04:42.900000","2018-06-01 12:04:43.500000","2018-06-01 12:04:44.200000","2018-06-01 12:04:44.500000","2018-06-01 12:04:45.000000","2018-06-01 12:04:45.200000","2018-06-01 12:04:45.300000","2018-06-01 12:04:45.400000","2018-06-01 12:04:46.700000","2018-06-01 12:04:47.400000","2018-06-01 12:04:47.500000","2018-06-01 12:04:47.800000","2018-06-01 12:04:47.900000","2018-06-01 12:04:48.200000","2018-06-01 12:04:48.400000","2018-06-01 12:04:48.500000","2018-06-01 12:04:49.000000","2018-06-01 12:04:49.700000","2018-06-01 12:04:49.800000","2018-06-01 12:04:50.100000","2018-06-01 12:04:50.600000","2018-06-01 12:04:51.000000","2018-06-01 12:04:51.900000","2018-06-01 12:04:52.100000","2018-06-01 12:04:52.200000","2018-06-01 12:04:52.900000","2018-06-01 12:04:53.500000","2018-06-01 12:04:53.800000","2018-06-01 12:04:54.700000","2018-06-01 12:04:55.200000","2018-06-01 12:04:55.700000","2018-06-01 12:04:56.000000","2018-06-01 12:04:56.200000","2018-06-01 12:04:56.500000","2018-06-01 12:04:56.800000","2018-06-01 12:04:57.400000","2018-06-01 12:04:57.900000","2018-06-01 12:04:58.400000","2018-06-01 12:04:58.600000","2018-06-01 12:04:58.700000","2018-06-01 12:04:59.000000","2018-06-01 12:04:59.700000"],"xaxis":"x","y":[102.47,102.51,102.45,102.53,102.7,102.99,103.4,103.92,104.26,104.67,105.02,105.44,105.82,106.18,106.34,106.59,106.76,107.03,107.33,107.68,108.08,108.63,108.91,109.18,109.34,109.43,109.48,109.42,109.59,109.71,109.8,109.94,110.06,110.02,110.09,110.02,109.95,110.12,110.09,110.04,109.88,109.83,109.7,109.72,109.85,109.87,109.84,109.7,109.59,109.59,109.64,109.68,109.77,109.86,109.88,110.09,110.3,110.57,110.72,110.9,111.01,111.07,111.05,110.9,110.7,110.43,110.28,110.12,109.82,109.47,109.12,108.8,108.48,108.07,107.52,107.02,106.7,106.45,106.22,106.08,106.04,105.99,105.77,105.64,105.6,105.52,105.5,105.51,105.4,105.34,105.4,105.44,105.5,105.63,105.91,106.19,106.42,106.61,106.83,106.91,107.08,107.33,107.48,107.61,107.79,108.05,108.25,108.59,109.15,109.51,109.9,110.35,110.71,111,111.16,111.27,111.43,111.66,111.92,112.01,112,111.99,111.97,112.07,112.18,112.2,112.24,112.22,112.33,112.35,112.51,112.59,112.73,112.65,112.56,112.57,112.56,112.63,112.75,112.82,113.08,113.11,113.06,113.06,113.16,113.2,113.26,113.37,113.57,113.8,114.14,114.31,114.54,114.78,115.01,115.13,115.37,115.57,115.85,116.04,116.12,115.97,115.82,115.88,115.93,115.95,116.02,116.09,116.06,115.92,115.74,115.55,115.53,115.4,115.28,115.21,115.13,115.16,115.11,115.08,115.27,115.44,115.63,115.78,116,116.27,116.5,116.54,116.76,117.01,117.02,116.98,117.05,117.13,117.31,117.5,117.68,117.94,118.12,118.37,118.67,118.85,119.12,119.19,119.23,119.28,119.4,119.5,119.78,119.9,120.21,120.61,121.06,121.65,122.36,123.15,123.85,124.59,125.41,126.26,126.96,127.51,128.09,128.6,129.1,129.56,129.95,130.22,130.37,130.36,130.27,130.12,129.99,129.97,130.02,129.95,129.78,129.64,129.47,129.2,128.87,128.66,128.41,128.01,127.62,127.33,127.01,126.77,126.5,126.36,126.3,126.24,126.09,126.07,126.08,126.05,125.91,125.83,125.74,125.51,125.25,125.16,125.09,125.03,124.95,124.87,124.84,124.69,124.53,124.4,124.31,124.21,124.29,124.17,124.14,124.03,123.9,123.7,123.56,123.37,123.22,123.07,122.83,122.55,122.12,121.7,121.44,121.32,121.36,121.52,121.6,121.67,121.67,121.58,121.49,121.46,121.35,121.34,121.25,121.11,120.9,120.73,120.59,120.47,120.46,120.43,120.57,120.67,120.71,120.63,120.45,120.23,120.14,120.27,120.43,120.58,120.51,120.35,120.17,120.08,119.85,119.48,119.19,119.09,119.18,119.18,119.23,119.17,119.16,119.1,118.87,118.75,118.72,118.83,119.01,119.33,119.66,119.98,120.37,120.68,120.94,121.05,121.06,120.97,120.79,120.62,120.37,120.17,119.98,119.79,119.7,119.68,119.56,119.58,119.58,119.6,119.59,119.65,119.81,119.81,119.77,119.8,119.74,119.64,119.51,119.29,119.06,118.71,118.27,117.71,117.25,116.63,115.96,115.2,114.46,113.86,113.48,112.8,112.08,111.51,110.92,110.3,109.69,109.21,108.8,108.48,108.15,107.84,107.53,107.16,106.86,106.55,106.2,105.8,105.44,105.15,104.94,104.76,104.65,104.5,104.46,104.41,104.33,104.21,104.01,103.97,103.98,104.05,104.24,104.38,104.53,104.72,104.95,105.17,105.36,105.42,105.62,105.72,105.86,106.08,106.3,106.55,106.69,106.97,107.38,107.82,108.37,108.84,109.16,109.41,109.61,109.84,110.09,110.22,110.44,110.81,111.17,111.5,111.81,112.19,112.53,112.93,113.32,113.66,113.94,114.03,114.01,114,113.8,113.78,113.58,113.19,112.96,112.78,112.65,112.44,112.28,112.12,111.98,111.9,111.75,111.63,111.39,111.06,110.72,110.28,109.92,109.57,109.43,109.27,109.05,108.91,108.76,108.63,108.52,108.39,108.29,108.2,108.19,108.05,107.91,107.74,107.7,107.84,107.96,108.1,108.46,108.77,108.98,109.15,109.27,109.3,109.45,109.61,109.8,109.87,109.91,109.89,109.85,110.1,110.37,110.65,110.93,111.39,111.69,112.1,112.62,113.06,113.55,114.11,114.7,115.36,115.93,116.33,116.62,116.82,117.07,117.31,117.39,117.44,117.53,117.61,117.74,117.85,117.95,118.1,118.02,117.95,117.93,117.92,117.81,117.7,117.73,117.72,117.76,117.69,117.51,117.47,117.51,117.61,117.67,117.76,117.66,117.63,117.59,117.41,117.25,117.16,117.19,117.29,117.32,117.36,117.45,117.63,117.77,118.01,118.19,118.39,118.38,118.45,118.43,118.35,118.33,118.21,118.15,117.95,117.84,117.61,117.45,117.34,117.29,117.34,117.38,117.36,117.3,117.09,116.8,116.46,116.01,115.54,115.12,114.7,114.35,113.9,113.55,113.18,112.94,112.64,112.26,111.88,111.45,111.07,110.8,110.74,110.53,110.26,110.15,109.89,109.86,109.86,109.96,109.95,109.88,109.87,109.92,109.85,110.01,110.12,110.27,110.4,110.66,110.8,110.86,110.71,110.42,110.2,110.09,110.02,110.03,110.02,109.85,109.59,109.3,109.02,108.74,108.42,108.07,107.85,107.77,107.7,107.62,107.58,107.49,107.39,107.26,107.14,107.1,107.26,107.42,107.31,106.97,106.84,106.64,106.62,106.6,106.61,106.75,106.98,107.14,107.21,107.44,107.6,107.71,107.96,108.35,108.65,108.97,109.34,109.65,109.82,109.93,109.86,109.9,110,110.08,110.1,110.05,110.05,110.19,110.23,110.21,110.28,110.41,110.57,110.56,110.61,110.71,110.8,111.04,111.23,111.4,111.61,111.86,112.17,112.42,112.61,112.66,112.74,112.73,112.72,112.77,112.94,113.23,113.62,114.07,114.41,114.72,115.15,115.57,115.97,116.25,116.56,116.97,117.21,117.56,117.79,117.97,118.02,118.18,118.37,118.47,118.41,118.25,118.13,117.92,117.86,117.67,117.41,117.19,116.96,116.77,116.62,116.6,116.4,116.29,116.21,116.12,116.03,115.96,115.77,115.86,115.84,115.89,115.85,115.94,116.05,116.11,116.18,116.29,116.41,116.49,116.54,116.54,116.56,116.68,116.87,117.04,117.21,117.22,117.46,117.68,118.05,118.26,118.29,118.32,118.41,118.66,118.95,119.21,119.6,119.98,120.25,120.64,121.1,121.57,122.03,122.63,123.23,123.62,123.97,124.29,124.67,124.95,125.21,125.52,125.92,126.05,126.28,126.58,126.92,127.18,127.36,127.54,127.78,127.88,127.97,128.16,128.41,128.63,128.85,129.06,129.08,129.09,129.02,128.96,128.76,128.56,128.35,128.09,127.76,127.28,126.66,126.17,125.68,125.12,124.39,123.75,122.9,122.28,121.67,121.13,120.55,119.98,119.54,119.14,118.69,118.37,117.95,117.56,117.14,116.44,115.6,115.14,114.71,114.43,114.32,114.31,114.27,114.1,113.9,113.62,113.25,112.98,112.82,112.78,112.86,112.93,112.65,112.69,112.72,112.84,112.81,112.83,112.64,112.47,112.37,112.4,112.45],"yaxis":"y","type":"scatter"},{"hovertemplate":"Sym=LIZARD
Timestamp=%{x}
Price=%{y}","legendgroup":"LIZARD","marker":{"symbol":"circle"},"mode":"markers","name":"LIZARD","showlegend":true,"x":["2018-06-01 12:00:00.200000","2018-06-01 12:00:01.500000","2018-06-01 12:00:02.000000","2018-06-01 12:00:02.200000","2018-06-01 12:00:02.300000","2018-06-01 12:00:05.200000","2018-06-01 12:00:05.400000","2018-06-01 12:00:05.600000","2018-06-01 12:00:06.200000","2018-06-01 12:00:07.000000","2018-06-01 12:00:09.300000","2018-06-01 12:00:10.300000","2018-06-01 12:00:10.400000","2018-06-01 12:00:11.000000","2018-06-01 12:00:11.900000","2018-06-01 12:00:12.400000","2018-06-01 12:00:12.500000","2018-06-01 12:00:12.800000","2018-06-01 12:00:14.300000","2018-06-01 12:00:15.200000","2018-06-01 12:00:15.300000","2018-06-01 12:00:17.700000","2018-06-01 12:00:17.800000","2018-06-01 12:00:17.900000","2018-06-01 12:00:18.500000","2018-06-01 12:00:21.700000","2018-06-01 12:00:22.800000","2018-06-01 12:00:24.300000","2018-06-01 12:00:24.400000","2018-06-01 12:00:24.600000","2018-06-01 12:00:26.600000","2018-06-01 12:00:27.200000","2018-06-01 12:00:27.700000","2018-06-01 12:00:27.800000","2018-06-01 12:00:28.800000","2018-06-01 12:00:30.200000","2018-06-01 12:00:33.000000","2018-06-01 12:00:33.400000","2018-06-01 12:00:36.000000","2018-06-01 12:00:36.100000","2018-06-01 12:00:38.000000","2018-06-01 12:00:38.500000","2018-06-01 12:00:39.400000","2018-06-01 12:00:39.800000","2018-06-01 12:00:41.700000","2018-06-01 12:00:43.100000","2018-06-01 12:00:43.500000","2018-06-01 12:00:45.500000","2018-06-01 12:00:45.900000","2018-06-01 12:00:46.600000","2018-06-01 12:00:46.800000","2018-06-01 12:00:47.100000","2018-06-01 12:00:47.500000","2018-06-01 12:00:47.800000","2018-06-01 12:00:47.900000","2018-06-01 12:00:48.900000","2018-06-01 12:00:49.000000","2018-06-01 12:00:51.800000","2018-06-01 12:00:52.000000","2018-06-01 12:00:52.300000","2018-06-01 12:00:52.600000","2018-06-01 12:00:52.700000","2018-06-01 12:00:53.100000","2018-06-01 12:00:54.800000","2018-06-01 12:00:54.900000","2018-06-01 12:00:55.800000","2018-06-01 12:00:56.400000","2018-06-01 12:00:56.500000","2018-06-01 12:00:57.200000","2018-06-01 12:00:59.300000","2018-06-01 12:00:59.500000","2018-06-01 12:01:00.000000","2018-06-01 12:01:02.500000","2018-06-01 12:01:02.700000","2018-06-01 12:01:03.000000","2018-06-01 12:01:04.700000","2018-06-01 12:01:06.100000","2018-06-01 12:01:07.900000","2018-06-01 12:01:08.600000","2018-06-01 12:01:12.800000","2018-06-01 12:01:16.200000","2018-06-01 12:01:16.400000","2018-06-01 12:01:17.100000","2018-06-01 12:01:19.700000","2018-06-01 12:01:20.600000","2018-06-01 12:01:22.200000","2018-06-01 12:01:25.400000","2018-06-01 12:01:25.700000","2018-06-01 12:01:26.600000","2018-06-01 12:01:28.000000","2018-06-01 12:01:28.200000","2018-06-01 12:01:29.100000","2018-06-01 12:01:30.000000","2018-06-01 12:01:30.200000","2018-06-01 12:01:32.100000","2018-06-01 12:01:32.500000","2018-06-01 12:01:33.000000","2018-06-01 12:01:33.900000","2018-06-01 12:01:34.200000","2018-06-01 12:01:36.300000","2018-06-01 12:01:36.700000","2018-06-01 12:01:37.400000","2018-06-01 12:01:37.800000","2018-06-01 12:01:38.100000","2018-06-01 12:01:38.800000","2018-06-01 12:01:39.200000","2018-06-01 12:01:39.400000","2018-06-01 12:01:39.600000","2018-06-01 12:01:41.300000","2018-06-01 12:01:43.000000","2018-06-01 12:01:43.300000","2018-06-01 12:01:44.300000","2018-06-01 12:01:44.500000","2018-06-01 12:01:44.900000","2018-06-01 12:01:45.200000","2018-06-01 12:01:46.900000","2018-06-01 12:01:48.600000","2018-06-01 12:01:50.000000","2018-06-01 12:01:52.400000","2018-06-01 12:01:53.100000","2018-06-01 12:01:53.400000","2018-06-01 12:01:54.000000","2018-06-01 12:01:55.400000","2018-06-01 12:01:56.100000","2018-06-01 12:01:59.700000","2018-06-01 12:01:59.900000","2018-06-01 12:02:00.000000","2018-06-01 12:02:01.400000","2018-06-01 12:02:01.700000","2018-06-01 12:02:02.300000","2018-06-01 12:02:03.400000","2018-06-01 12:02:03.500000","2018-06-01 12:02:06.300000","2018-06-01 12:02:06.600000","2018-06-01 12:02:09.800000","2018-06-01 12:02:11.000000","2018-06-01 12:02:12.300000","2018-06-01 12:02:12.500000","2018-06-01 12:02:14.700000","2018-06-01 12:02:14.800000","2018-06-01 12:02:15.700000","2018-06-01 12:02:15.900000","2018-06-01 12:02:16.500000","2018-06-01 12:02:18.100000","2018-06-01 12:02:18.400000","2018-06-01 12:02:20.600000","2018-06-01 12:02:22.000000","2018-06-01 12:02:22.600000","2018-06-01 12:02:23.500000","2018-06-01 12:02:23.800000","2018-06-01 12:02:27.000000","2018-06-01 12:02:28.000000","2018-06-01 12:02:29.200000","2018-06-01 12:02:30.400000","2018-06-01 12:02:33.600000","2018-06-01 12:02:36.000000","2018-06-01 12:02:36.300000","2018-06-01 12:02:36.500000","2018-06-01 12:02:36.800000","2018-06-01 12:02:37.500000","2018-06-01 12:02:37.900000","2018-06-01 12:02:39.500000","2018-06-01 12:02:39.800000","2018-06-01 12:02:40.700000","2018-06-01 12:02:40.900000","2018-06-01 12:02:41.100000","2018-06-01 12:02:42.000000","2018-06-01 12:02:43.100000","2018-06-01 12:02:43.700000","2018-06-01 12:02:44.200000","2018-06-01 12:02:44.300000","2018-06-01 12:02:44.900000","2018-06-01 12:02:45.600000","2018-06-01 12:02:48.300000","2018-06-01 12:02:49.300000","2018-06-01 12:02:51.000000","2018-06-01 12:02:52.900000","2018-06-01 12:02:54.500000","2018-06-01 12:02:54.800000","2018-06-01 12:02:55.300000","2018-06-01 12:02:55.700000","2018-06-01 12:02:59.600000","2018-06-01 12:03:01.400000","2018-06-01 12:03:05.600000","2018-06-01 12:03:05.700000","2018-06-01 12:03:06.200000","2018-06-01 12:03:06.500000","2018-06-01 12:03:07.900000","2018-06-01 12:03:09.200000","2018-06-01 12:03:09.400000","2018-06-01 12:03:09.700000","2018-06-01 12:03:12.400000","2018-06-01 12:03:16.100000","2018-06-01 12:03:17.400000","2018-06-01 12:03:18.300000","2018-06-01 12:03:18.700000","2018-06-01 12:03:23.900000","2018-06-01 12:03:24.400000","2018-06-01 12:03:24.500000","2018-06-01 12:03:25.200000","2018-06-01 12:03:25.700000","2018-06-01 12:03:27.500000","2018-06-01 12:03:27.800000","2018-06-01 12:03:28.300000","2018-06-01 12:03:28.900000","2018-06-01 12:03:31.400000","2018-06-01 12:03:32.000000","2018-06-01 12:03:34.100000","2018-06-01 12:03:34.200000","2018-06-01 12:03:35.200000","2018-06-01 12:03:35.300000","2018-06-01 12:03:35.400000","2018-06-01 12:03:36.500000","2018-06-01 12:03:37.200000","2018-06-01 12:03:38.500000","2018-06-01 12:03:39.300000","2018-06-01 12:03:39.900000","2018-06-01 12:03:40.400000","2018-06-01 12:03:40.600000","2018-06-01 12:03:41.400000","2018-06-01 12:03:45.500000","2018-06-01 12:03:45.600000","2018-06-01 12:03:46.200000","2018-06-01 12:03:46.400000","2018-06-01 12:03:46.600000","2018-06-01 12:03:47.300000","2018-06-01 12:03:47.500000","2018-06-01 12:03:50.100000","2018-06-01 12:03:50.800000","2018-06-01 12:03:51.500000","2018-06-01 12:03:52.400000","2018-06-01 12:03:54.600000","2018-06-01 12:03:54.800000","2018-06-01 12:03:55.300000","2018-06-01 12:03:57.100000","2018-06-01 12:03:57.600000","2018-06-01 12:03:58.700000","2018-06-01 12:03:59.800000","2018-06-01 12:04:01.300000","2018-06-01 12:04:01.900000","2018-06-01 12:04:02.500000","2018-06-01 12:04:03.100000","2018-06-01 12:04:04.700000","2018-06-01 12:04:05.700000","2018-06-01 12:04:06.000000","2018-06-01 12:04:08.700000","2018-06-01 12:04:08.800000","2018-06-01 12:04:09.300000","2018-06-01 12:04:09.600000","2018-06-01 12:04:11.600000","2018-06-01 12:04:12.600000","2018-06-01 12:04:13.500000","2018-06-01 12:04:13.900000","2018-06-01 12:04:14.200000","2018-06-01 12:04:15.900000","2018-06-01 12:04:16.000000","2018-06-01 12:04:16.100000","2018-06-01 12:04:16.400000","2018-06-01 12:04:16.800000","2018-06-01 12:04:17.600000","2018-06-01 12:04:19.200000","2018-06-01 12:04:19.300000","2018-06-01 12:04:20.500000","2018-06-01 12:04:21.900000","2018-06-01 12:04:22.900000","2018-06-01 12:04:24.000000","2018-06-01 12:04:24.300000","2018-06-01 12:04:24.500000","2018-06-01 12:04:25.300000","2018-06-01 12:04:26.400000","2018-06-01 12:04:27.200000","2018-06-01 12:04:28.500000","2018-06-01 12:04:29.600000","2018-06-01 12:04:30.000000","2018-06-01 12:04:30.100000","2018-06-01 12:04:30.800000","2018-06-01 12:04:31.600000","2018-06-01 12:04:33.900000","2018-06-01 12:04:35.200000","2018-06-01 12:04:35.500000","2018-06-01 12:04:35.600000","2018-06-01 12:04:36.000000","2018-06-01 12:04:36.300000","2018-06-01 12:04:37.200000","2018-06-01 12:04:37.300000","2018-06-01 12:04:37.800000","2018-06-01 12:04:42.100000","2018-06-01 12:04:46.300000","2018-06-01 12:04:47.200000","2018-06-01 12:04:48.300000","2018-06-01 12:04:48.600000","2018-06-01 12:04:49.100000","2018-06-01 12:04:50.000000","2018-06-01 12:04:50.200000","2018-06-01 12:04:51.100000","2018-06-01 12:04:51.800000","2018-06-01 12:04:52.800000","2018-06-01 12:04:53.900000","2018-06-01 12:04:54.300000","2018-06-01 12:04:54.400000","2018-06-01 12:04:55.000000","2018-06-01 12:04:55.400000","2018-06-01 12:04:55.800000","2018-06-01 12:04:56.900000","2018-06-01 12:04:58.500000","2018-06-01 12:04:59.600000"],"xaxis":"x","y":[224.88,224.93,225.01,225.16,225.43,225.56,225.74,225.76,225.76,225.8,225.74,225.68,225.62,225.51,225.32,225.21,225.01,224.61,224.4,224.15,223.97,223.92,223.86,223.81,223.86,223.82,223.85,223.84,223.75,223.61,223.56,223.45,223.38,223.56,223.51,223.48,223.34,223.32,223.32,223.32,223.28,223.36,223.45,223.49,223.46,223.43,223.34,223.35,223.36,223.28,223.17,223.11,223.17,223.28,223.39,223.49,223.6,223.66,223.61,223.65,223.73,223.94,224.34,224.64,224.88,225.13,225.41,225.71,226.2,226.58,226.91,227.17,227.71,228.17,228.59,228.85,229.14,229.45,229.73,230.02,230.29,230.38,230.45,230.52,230.5,230.42,230.41,230.25,230.12,229.78,229.51,229.35,229.17,229.02,228.8,228.7,228.6,228.47,228.31,228.22,228.27,228.35,228.34,228.34,228.16,228.1,228.15,228.21,228.29,228.5,228.63,228.75,228.86,228.91,228.99,228.97,229.06,229.31,229.44,229.79,229.97,229.96,229.83,229.67,229.5,229.32,229.38,229.31,229.39,229.39,229.5,229.55,229.66,229.77,229.68,229.57,229.71,229.74,229.65,229.61,229.67,229.72,229.77,229.8,229.85,229.92,230.13,230.39,230.53,230.56,230.64,230.73,230.75,230.77,230.73,230.57,230.33,230.18,229.93,229.63,229.33,229.11,228.85,228.36,227.94,227.7,227.46,227.39,227.29,227.4,227.57,227.78,228.06,228.25,228.34,228.32,228.42,228.5,228.53,228.4,228.32,228.04,227.73,227.5,227.33,227.2,226.98,226.78,226.51,226.19,226.01,225.86,225.51,225.12,224.69,224.43,224.25,224.04,223.88,223.7,223.41,223.03,222.68,222.48,222.33,222.13,221.85,221.63,221.35,221.04,220.79,220.57,220.32,220.14,220.03,219.97,219.86,219.75,219.77,219.77,219.94,220.07,220.1,220.17,220.39,220.68,220.9,221.1,221.35,221.51,221.76,221.99,222.33,222.54,222.62,222.66,222.67,222.65,222.63,222.74,222.8,222.96,222.95,222.91,222.73,222.67,222.5,222.41,222.31,222.25,222.37,222.64,222.92,223.36,223.66,223.88,223.98,224.17,224.29,224.32,224.37,224.41,224.29,224.2,224.06,223.92,223.81,223.56,223.42,223.37,223.31,223.36,223.54,223.64,223.6,223.53,223.52,223.63,223.7,223.81,224.04,224.27,224.6,224.93,225.16,225.42,225.8,226.34,226.8,227.17,227.7,228.15,228.65,229.05,229.41,229.77,230.08,230.4,230.66,230.76,230.79,230.89,231.03,231.25,231.49,231.7],"yaxis":"y","type":"scatter"},{"hovertemplate":"Sym=FISH
Timestamp=%{x}
Price=%{y}","legendgroup":"FISH","marker":{"symbol":"circle"},"mode":"markers","name":"FISH","showlegend":true,"x":["2018-06-01 12:00:00.500000","2018-06-01 12:00:01.000000","2018-06-01 12:00:01.900000","2018-06-01 12:00:02.400000","2018-06-01 12:00:02.600000","2018-06-01 12:00:02.700000","2018-06-01 12:00:03.300000","2018-06-01 12:00:03.700000","2018-06-01 12:00:03.800000","2018-06-01 12:00:04.200000","2018-06-01 12:00:05.300000","2018-06-01 12:00:05.800000","2018-06-01 12:00:06.800000","2018-06-01 12:00:06.900000","2018-06-01 12:00:08.400000","2018-06-01 12:00:09.500000","2018-06-01 12:00:10.100000","2018-06-01 12:00:10.600000","2018-06-01 12:00:11.800000","2018-06-01 12:00:12.600000","2018-06-01 12:00:12.900000","2018-06-01 12:00:13.500000","2018-06-01 12:00:13.600000","2018-06-01 12:00:14.200000","2018-06-01 12:00:14.700000","2018-06-01 12:00:15.100000","2018-06-01 12:00:15.500000","2018-06-01 12:00:15.700000","2018-06-01 12:00:15.800000","2018-06-01 12:00:16.800000","2018-06-01 12:00:18.100000","2018-06-01 12:00:19.100000","2018-06-01 12:00:19.500000","2018-06-01 12:00:19.600000","2018-06-01 12:00:20.200000","2018-06-01 12:00:21.900000","2018-06-01 12:00:22.000000","2018-06-01 12:00:22.500000","2018-06-01 12:00:23.000000","2018-06-01 12:00:23.300000","2018-06-01 12:00:23.600000","2018-06-01 12:00:23.700000","2018-06-01 12:00:24.100000","2018-06-01 12:00:25.800000","2018-06-01 12:00:26.300000","2018-06-01 12:00:26.400000","2018-06-01 12:00:26.800000","2018-06-01 12:00:27.500000","2018-06-01 12:00:28.200000","2018-06-01 12:00:28.300000","2018-06-01 12:00:28.500000","2018-06-01 12:00:29.100000","2018-06-01 12:00:29.200000","2018-06-01 12:00:30.000000","2018-06-01 12:00:30.700000","2018-06-01 12:00:31.200000","2018-06-01 12:00:31.800000","2018-06-01 12:00:32.300000","2018-06-01 12:00:32.400000","2018-06-01 12:00:32.800000","2018-06-01 12:00:34.100000","2018-06-01 12:00:35.600000","2018-06-01 12:00:35.800000","2018-06-01 12:00:36.200000","2018-06-01 12:00:36.500000","2018-06-01 12:00:37.600000","2018-06-01 12:00:38.400000","2018-06-01 12:00:38.600000","2018-06-01 12:00:38.900000","2018-06-01 12:00:39.000000","2018-06-01 12:00:39.200000","2018-06-01 12:00:40.700000","2018-06-01 12:00:41.900000","2018-06-01 12:00:42.100000","2018-06-01 12:00:42.900000","2018-06-01 12:00:43.200000","2018-06-01 12:00:44.300000","2018-06-01 12:00:45.600000","2018-06-01 12:00:45.700000","2018-06-01 12:00:46.100000","2018-06-01 12:00:46.200000","2018-06-01 12:00:47.700000","2018-06-01 12:00:48.100000","2018-06-01 12:00:48.400000","2018-06-01 12:00:49.400000","2018-06-01 12:00:49.500000","2018-06-01 12:00:49.600000","2018-06-01 12:00:50.100000","2018-06-01 12:00:50.600000","2018-06-01 12:00:50.900000","2018-06-01 12:00:51.000000","2018-06-01 12:00:51.900000","2018-06-01 12:00:52.900000","2018-06-01 12:00:53.600000","2018-06-01 12:00:53.700000","2018-06-01 12:00:54.000000","2018-06-01 12:00:54.400000","2018-06-01 12:00:55.600000","2018-06-01 12:00:56.000000","2018-06-01 12:00:56.100000","2018-06-01 12:00:56.200000","2018-06-01 12:00:56.900000","2018-06-01 12:00:57.300000","2018-06-01 12:00:57.600000","2018-06-01 12:00:57.800000","2018-06-01 12:00:58.100000","2018-06-01 12:00:58.400000","2018-06-01 12:00:58.600000","2018-06-01 12:00:58.800000","2018-06-01 12:00:59.900000","2018-06-01 12:01:00.600000","2018-06-01 12:01:00.700000","2018-06-01 12:01:00.900000","2018-06-01 12:01:01.700000","2018-06-01 12:01:03.800000","2018-06-01 12:01:03.900000","2018-06-01 12:01:04.200000","2018-06-01 12:01:04.600000","2018-06-01 12:01:04.800000","2018-06-01 12:01:05.300000","2018-06-01 12:01:05.400000","2018-06-01 12:01:05.600000","2018-06-01 12:01:05.700000","2018-06-01 12:01:05.900000","2018-06-01 12:01:06.200000","2018-06-01 12:01:07.700000","2018-06-01 12:01:08.000000","2018-06-01 12:01:08.900000","2018-06-01 12:01:09.100000","2018-06-01 12:01:09.400000","2018-06-01 12:01:10.100000","2018-06-01 12:01:10.200000","2018-06-01 12:01:10.600000","2018-06-01 12:01:11.100000","2018-06-01 12:01:12.000000","2018-06-01 12:01:12.200000","2018-06-01 12:01:12.900000","2018-06-01 12:01:13.100000","2018-06-01 12:01:13.200000","2018-06-01 12:01:13.400000","2018-06-01 12:01:14.000000","2018-06-01 12:01:14.300000","2018-06-01 12:01:14.900000","2018-06-01 12:01:15.100000","2018-06-01 12:01:15.300000","2018-06-01 12:01:16.300000","2018-06-01 12:01:18.200000","2018-06-01 12:01:18.800000","2018-06-01 12:01:19.000000","2018-06-01 12:01:19.100000","2018-06-01 12:01:19.200000","2018-06-01 12:01:20.000000","2018-06-01 12:01:21.000000","2018-06-01 12:01:21.400000","2018-06-01 12:01:22.100000","2018-06-01 12:01:22.400000","2018-06-01 12:01:23.200000","2018-06-01 12:01:23.300000","2018-06-01 12:01:23.500000","2018-06-01 12:01:23.900000","2018-06-01 12:01:24.100000","2018-06-01 12:01:24.300000","2018-06-01 12:01:24.400000","2018-06-01 12:01:25.100000","2018-06-01 12:01:25.900000","2018-06-01 12:01:26.300000","2018-06-01 12:01:27.600000","2018-06-01 12:01:28.100000","2018-06-01 12:01:28.900000","2018-06-01 12:01:29.500000","2018-06-01 12:01:30.400000","2018-06-01 12:01:30.500000","2018-06-01 12:01:30.700000","2018-06-01 12:01:30.800000","2018-06-01 12:01:31.000000","2018-06-01 12:01:31.600000","2018-06-01 12:01:31.900000","2018-06-01 12:01:32.000000","2018-06-01 12:01:32.600000","2018-06-01 12:01:32.700000","2018-06-01 12:01:35.100000","2018-06-01 12:01:35.500000","2018-06-01 12:01:35.600000","2018-06-01 12:01:36.100000","2018-06-01 12:01:37.200000","2018-06-01 12:01:37.700000","2018-06-01 12:01:38.300000","2018-06-01 12:01:41.000000","2018-06-01 12:01:42.900000","2018-06-01 12:01:43.100000","2018-06-01 12:01:43.500000","2018-06-01 12:01:43.900000","2018-06-01 12:01:45.300000","2018-06-01 12:01:47.700000","2018-06-01 12:01:48.400000","2018-06-01 12:01:48.500000","2018-06-01 12:01:49.200000","2018-06-01 12:01:49.600000","2018-06-01 12:01:50.200000","2018-06-01 12:01:50.500000","2018-06-01 12:01:50.700000","2018-06-01 12:01:52.000000","2018-06-01 12:01:52.100000","2018-06-01 12:01:54.300000","2018-06-01 12:01:54.600000","2018-06-01 12:01:54.900000","2018-06-01 12:01:55.600000","2018-06-01 12:01:55.700000","2018-06-01 12:01:55.800000","2018-06-01 12:01:56.600000","2018-06-01 12:01:56.800000","2018-06-01 12:01:57.100000","2018-06-01 12:01:57.800000","2018-06-01 12:01:57.900000","2018-06-01 12:01:58.200000","2018-06-01 12:01:58.700000","2018-06-01 12:01:58.800000","2018-06-01 12:01:58.900000","2018-06-01 12:01:59.200000","2018-06-01 12:01:59.400000","2018-06-01 12:02:00.500000","2018-06-01 12:02:00.700000","2018-06-01 12:02:02.200000","2018-06-01 12:02:02.700000","2018-06-01 12:02:03.200000","2018-06-01 12:02:04.000000","2018-06-01 12:02:04.100000","2018-06-01 12:02:04.300000","2018-06-01 12:02:04.800000","2018-06-01 12:02:05.100000","2018-06-01 12:02:05.300000","2018-06-01 12:02:06.900000","2018-06-01 12:02:07.000000","2018-06-01 12:02:07.500000","2018-06-01 12:02:07.900000","2018-06-01 12:02:08.900000","2018-06-01 12:02:09.100000","2018-06-01 12:02:10.700000","2018-06-01 12:02:11.700000","2018-06-01 12:02:13.100000","2018-06-01 12:02:13.400000","2018-06-01 12:02:13.500000","2018-06-01 12:02:13.700000","2018-06-01 12:02:13.900000","2018-06-01 12:02:15.500000","2018-06-01 12:02:16.400000","2018-06-01 12:02:16.900000","2018-06-01 12:02:17.000000","2018-06-01 12:02:17.100000","2018-06-01 12:02:17.200000","2018-06-01 12:02:17.900000","2018-06-01 12:02:18.000000","2018-06-01 12:02:18.200000","2018-06-01 12:02:18.800000","2018-06-01 12:02:19.500000","2018-06-01 12:02:20.100000","2018-06-01 12:02:20.200000","2018-06-01 12:02:21.100000","2018-06-01 12:02:21.900000","2018-06-01 12:02:22.700000","2018-06-01 12:02:23.300000","2018-06-01 12:02:24.200000","2018-06-01 12:02:24.400000","2018-06-01 12:02:25.400000","2018-06-01 12:02:26.000000","2018-06-01 12:02:26.300000","2018-06-01 12:02:26.600000","2018-06-01 12:02:26.700000","2018-06-01 12:02:27.700000","2018-06-01 12:02:27.800000","2018-06-01 12:02:28.300000","2018-06-01 12:02:30.100000","2018-06-01 12:02:32.200000","2018-06-01 12:02:32.600000","2018-06-01 12:02:32.700000","2018-06-01 12:02:33.100000","2018-06-01 12:02:35.000000","2018-06-01 12:02:35.300000","2018-06-01 12:02:36.100000","2018-06-01 12:02:36.700000","2018-06-01 12:02:36.900000","2018-06-01 12:02:37.200000","2018-06-01 12:02:37.300000","2018-06-01 12:02:37.600000","2018-06-01 12:02:38.100000","2018-06-01 12:02:38.500000","2018-06-01 12:02:38.800000","2018-06-01 12:02:41.800000","2018-06-01 12:02:42.900000","2018-06-01 12:02:43.400000","2018-06-01 12:02:43.800000","2018-06-01 12:02:44.500000","2018-06-01 12:02:45.700000","2018-06-01 12:02:46.000000","2018-06-01 12:02:46.200000","2018-06-01 12:02:46.300000","2018-06-01 12:02:46.400000","2018-06-01 12:02:46.800000","2018-06-01 12:02:47.700000","2018-06-01 12:02:48.700000","2018-06-01 12:02:48.800000","2018-06-01 12:02:48.900000","2018-06-01 12:02:49.400000","2018-06-01 12:02:49.700000","2018-06-01 12:02:50.500000","2018-06-01 12:02:51.200000","2018-06-01 12:02:51.300000","2018-06-01 12:02:52.700000","2018-06-01 12:02:54.000000","2018-06-01 12:02:54.100000","2018-06-01 12:02:54.300000","2018-06-01 12:02:55.500000","2018-06-01 12:02:55.600000","2018-06-01 12:02:55.900000","2018-06-01 12:02:56.300000","2018-06-01 12:02:56.700000","2018-06-01 12:02:57.600000","2018-06-01 12:02:57.700000","2018-06-01 12:02:58.900000","2018-06-01 12:02:59.200000","2018-06-01 12:03:00.200000","2018-06-01 12:03:00.400000","2018-06-01 12:03:00.900000","2018-06-01 12:03:02.600000","2018-06-01 12:03:02.800000","2018-06-01 12:03:03.000000","2018-06-01 12:03:04.100000","2018-06-01 12:03:05.000000","2018-06-01 12:03:05.800000","2018-06-01 12:03:05.900000","2018-06-01 12:03:06.600000","2018-06-01 12:03:06.700000","2018-06-01 12:03:06.800000","2018-06-01 12:03:07.400000","2018-06-01 12:03:08.300000","2018-06-01 12:03:08.500000","2018-06-01 12:03:08.800000","2018-06-01 12:03:09.100000","2018-06-01 12:03:09.300000","2018-06-01 12:03:09.600000","2018-06-01 12:03:10.300000","2018-06-01 12:03:12.100000","2018-06-01 12:03:12.600000","2018-06-01 12:03:12.700000","2018-06-01 12:03:12.900000","2018-06-01 12:03:13.700000","2018-06-01 12:03:13.900000","2018-06-01 12:03:14.000000","2018-06-01 12:03:14.300000","2018-06-01 12:03:14.700000","2018-06-01 12:03:15.200000","2018-06-01 12:03:15.300000","2018-06-01 12:03:15.400000","2018-06-01 12:03:15.500000","2018-06-01 12:03:15.600000","2018-06-01 12:03:15.800000","2018-06-01 12:03:15.900000","2018-06-01 12:03:16.200000","2018-06-01 12:03:16.400000","2018-06-01 12:03:16.500000","2018-06-01 12:03:16.700000","2018-06-01 12:03:16.800000","2018-06-01 12:03:17.200000","2018-06-01 12:03:17.500000","2018-06-01 12:03:18.900000","2018-06-01 12:03:19.100000","2018-06-01 12:03:19.200000","2018-06-01 12:03:19.500000","2018-06-01 12:03:19.600000","2018-06-01 12:03:19.700000","2018-06-01 12:03:19.800000","2018-06-01 12:03:20.100000","2018-06-01 12:03:20.200000","2018-06-01 12:03:21.500000","2018-06-01 12:03:21.600000","2018-06-01 12:03:22.000000","2018-06-01 12:03:22.900000","2018-06-01 12:03:23.100000","2018-06-01 12:03:24.700000","2018-06-01 12:03:25.000000","2018-06-01 12:03:26.000000","2018-06-01 12:03:26.400000","2018-06-01 12:03:26.500000","2018-06-01 12:03:26.600000","2018-06-01 12:03:27.400000","2018-06-01 12:03:28.200000","2018-06-01 12:03:28.600000","2018-06-01 12:03:30.000000","2018-06-01 12:03:30.100000","2018-06-01 12:03:31.600000","2018-06-01 12:03:32.300000","2018-06-01 12:03:33.100000","2018-06-01 12:03:33.500000","2018-06-01 12:03:33.700000","2018-06-01 12:03:33.900000","2018-06-01 12:03:34.000000","2018-06-01 12:03:35.100000","2018-06-01 12:03:35.600000","2018-06-01 12:03:36.700000","2018-06-01 12:03:37.300000","2018-06-01 12:03:37.700000","2018-06-01 12:03:37.800000","2018-06-01 12:03:39.000000","2018-06-01 12:03:39.500000","2018-06-01 12:03:39.700000","2018-06-01 12:03:39.800000","2018-06-01 12:03:40.100000","2018-06-01 12:03:40.500000","2018-06-01 12:03:40.700000","2018-06-01 12:03:41.000000","2018-06-01 12:03:41.600000","2018-06-01 12:03:41.900000","2018-06-01 12:03:42.000000","2018-06-01 12:03:42.100000","2018-06-01 12:03:42.300000","2018-06-01 12:03:42.400000","2018-06-01 12:03:43.200000","2018-06-01 12:03:43.800000","2018-06-01 12:03:44.000000","2018-06-01 12:03:44.100000","2018-06-01 12:03:44.600000","2018-06-01 12:03:44.700000","2018-06-01 12:03:46.900000","2018-06-01 12:03:47.400000","2018-06-01 12:03:48.000000","2018-06-01 12:03:48.500000","2018-06-01 12:03:48.700000","2018-06-01 12:03:48.800000","2018-06-01 12:03:48.900000","2018-06-01 12:03:49.000000","2018-06-01 12:03:49.300000","2018-06-01 12:03:49.800000","2018-06-01 12:03:50.900000","2018-06-01 12:03:51.200000","2018-06-01 12:03:52.200000","2018-06-01 12:03:52.300000","2018-06-01 12:03:52.900000","2018-06-01 12:03:53.400000","2018-06-01 12:03:53.500000","2018-06-01 12:03:53.700000","2018-06-01 12:03:53.900000","2018-06-01 12:03:54.500000","2018-06-01 12:03:54.900000","2018-06-01 12:03:55.000000","2018-06-01 12:03:55.800000","2018-06-01 12:03:56.100000","2018-06-01 12:03:56.200000","2018-06-01 12:03:58.500000","2018-06-01 12:03:58.600000","2018-06-01 12:03:59.500000","2018-06-01 12:03:59.900000","2018-06-01 12:04:00.200000","2018-06-01 12:04:02.300000","2018-06-01 12:04:02.700000","2018-06-01 12:04:03.200000","2018-06-01 12:04:03.300000","2018-06-01 12:04:03.500000","2018-06-01 12:04:05.600000","2018-06-01 12:04:05.800000","2018-06-01 12:04:07.800000","2018-06-01 12:04:08.000000","2018-06-01 12:04:08.400000","2018-06-01 12:04:08.600000","2018-06-01 12:04:09.100000","2018-06-01 12:04:09.400000","2018-06-01 12:04:09.900000","2018-06-01 12:04:10.600000","2018-06-01 12:04:10.700000","2018-06-01 12:04:11.200000","2018-06-01 12:04:11.500000","2018-06-01 12:04:12.400000","2018-06-01 12:04:12.700000","2018-06-01 12:04:13.100000","2018-06-01 12:04:13.300000","2018-06-01 12:04:13.800000","2018-06-01 12:04:14.900000","2018-06-01 12:04:15.300000","2018-06-01 12:04:17.000000","2018-06-01 12:04:17.700000","2018-06-01 12:04:17.900000","2018-06-01 12:04:18.800000","2018-06-01 12:04:19.000000","2018-06-01 12:04:19.500000","2018-06-01 12:04:19.800000","2018-06-01 12:04:21.800000","2018-06-01 12:04:22.000000","2018-06-01 12:04:22.400000","2018-06-01 12:04:22.700000","2018-06-01 12:04:23.000000","2018-06-01 12:04:23.100000","2018-06-01 12:04:23.500000","2018-06-01 12:04:23.600000","2018-06-01 12:04:24.200000","2018-06-01 12:04:25.000000","2018-06-01 12:04:25.100000","2018-06-01 12:04:26.200000","2018-06-01 12:04:26.300000","2018-06-01 12:04:26.500000","2018-06-01 12:04:27.000000","2018-06-01 12:04:27.400000","2018-06-01 12:04:27.500000","2018-06-01 12:04:28.300000","2018-06-01 12:04:28.800000","2018-06-01 12:04:29.300000","2018-06-01 12:04:29.500000","2018-06-01 12:04:29.700000","2018-06-01 12:04:30.400000","2018-06-01 12:04:30.600000","2018-06-01 12:04:30.900000","2018-06-01 12:04:31.500000","2018-06-01 12:04:31.700000","2018-06-01 12:04:32.400000","2018-06-01 12:04:33.100000","2018-06-01 12:04:33.200000","2018-06-01 12:04:33.300000","2018-06-01 12:04:34.000000","2018-06-01 12:04:35.400000","2018-06-01 12:04:36.800000","2018-06-01 12:04:37.400000","2018-06-01 12:04:37.500000","2018-06-01 12:04:37.700000","2018-06-01 12:04:37.900000","2018-06-01 12:04:38.000000","2018-06-01 12:04:38.300000","2018-06-01 12:04:38.700000","2018-06-01 12:04:39.100000","2018-06-01 12:04:39.500000","2018-06-01 12:04:39.700000","2018-06-01 12:04:39.800000","2018-06-01 12:04:40.000000","2018-06-01 12:04:40.300000","2018-06-01 12:04:40.600000","2018-06-01 12:04:41.200000","2018-06-01 12:04:41.300000","2018-06-01 12:04:42.000000","2018-06-01 12:04:43.000000","2018-06-01 12:04:43.300000","2018-06-01 12:04:43.600000","2018-06-01 12:04:43.800000","2018-06-01 12:04:44.000000","2018-06-01 12:04:44.300000","2018-06-01 12:04:44.700000","2018-06-01 12:04:45.600000","2018-06-01 12:04:45.700000","2018-06-01 12:04:45.800000","2018-06-01 12:04:46.000000","2018-06-01 12:04:46.200000","2018-06-01 12:04:46.500000","2018-06-01 12:04:47.100000","2018-06-01 12:04:47.300000","2018-06-01 12:04:48.700000","2018-06-01 12:04:49.500000","2018-06-01 12:04:50.400000","2018-06-01 12:04:50.500000","2018-06-01 12:04:50.800000","2018-06-01 12:04:50.900000","2018-06-01 12:04:51.400000","2018-06-01 12:04:52.000000","2018-06-01 12:04:52.500000","2018-06-01 12:04:52.600000","2018-06-01 12:04:52.700000","2018-06-01 12:04:53.600000","2018-06-01 12:04:53.700000","2018-06-01 12:04:54.000000","2018-06-01 12:04:54.200000","2018-06-01 12:04:54.500000","2018-06-01 12:04:55.100000","2018-06-01 12:04:55.500000","2018-06-01 12:04:55.600000","2018-06-01 12:04:55.900000","2018-06-01 12:04:56.300000","2018-06-01 12:04:56.400000","2018-06-01 12:04:56.600000","2018-06-01 12:04:57.100000","2018-06-01 12:04:57.500000","2018-06-01 12:04:57.800000","2018-06-01 12:04:58.100000","2018-06-01 12:04:58.200000","2018-06-01 12:04:58.800000","2018-06-01 12:04:59.100000","2018-06-01 12:04:59.200000","2018-06-01 12:04:59.400000","2018-06-01 12:04:59.900000","2018-06-01 12:05:00.000000"],"xaxis":"x","y":[127.24,127.29,127.29,127.34,127.33,127.25,127.18,127.09,127.03,126.98,127.01,127.07,127.09,127.25,127.21,127.12,127.06,126.89,126.95,127,126.98,127.11,127.23,127.34,127.43,127.46,127.5,127.42,127.56,127.69,128,128.31,128.57,128.87,129.1,129.27,129.43,129.74,130,130.23,130.46,130.54,130.54,130.62,130.54,130.33,130.1,129.93,129.77,129.7,129.82,129.93,130.22,130.56,130.87,131.2,131.7,132.27,132.96,133.48,134,134.43,134.85,135.16,135.44,135.88,136.34,136.67,136.98,137.33,137.75,138,138.14,138.31,138.61,139,139.31,139.63,139.96,140.28,140.67,141.02,141.32,141.68,142.12,142.59,142.91,143.01,143.09,143.26,143.34,143.54,143.7,143.6,143.5,143.38,143.29,143.12,142.82,142.48,142.05,141.64,141.09,140.63,140.28,140.09,139.86,139.48,139.07,138.86,138.75,138.79,138.76,138.65,138.55,138.33,138,137.57,137.22,136.86,136.59,136.01,135.43,134.72,134.23,133.8,133.31,133,132.63,132.2,131.76,131.33,131.04,130.64,130.18,129.85,129.6,129.28,128.95,128.53,128.04,127.82,127.49,127.14,126.78,126.52,126.36,126.16,125.96,125.88,125.92,126.03,126.03,126.07,126.17,126,125.87,125.8,125.75,125.78,125.82,125.89,126.05,126.27,126.52,126.85,127.2,127.34,127.45,127.64,127.8,128.04,128.17,128.12,128.16,128.29,128.4,128.49,128.53,128.58,128.63,128.72,128.89,129.03,129.1,129.26,129.16,128.89,128.6,128.25,128.03,127.75,127.54,127.38,127.33,127.35,127.38,127.43,127.43,127.39,127.44,127.48,127.4,127.39,127.4,127.35,127.39,127.41,127.22,127.14,126.94,126.69,126.35,126.12,125.99,125.98,125.92,125.84,125.88,126.04,126.24,126.31,126.26,126.18,126.22,126.16,126.12,126.11,126.03,125.92,125.85,125.76,125.56,125.59,125.66,125.56,125.38,125.39,125.46,125.62,125.89,126.22,126.5,126.78,127.02,127.17,127.36,127.51,127.67,127.86,127.98,128.03,128.2,128.27,128.44,128.31,128.13,128.08,128.02,127.99,128.12,128.1,128.1,128.16,128.22,128.22,128.05,127.92,127.97,128.13,128.26,128.35,128.25,128.1,127.96,127.92,127.86,127.84,127.79,127.75,127.7,127.69,127.63,127.63,127.55,127.33,127.05,126.68,126.28,125.91,125.61,125.24,124.77,124.33,123.92,123.62,123.24,122.81,122.41,122,121.41,120.92,120.3,119.88,119.64,119.54,119.31,119.1,118.89,118.81,118.8,118.85,118.73,118.61,118.37,118.17,118,117.83,117.72,117.67,117.45,117.32,117.07,116.74,116.49,116.23,115.89,115.49,115.28,115.1,114.97,114.93,114.92,114.69,114.41,114.02,113.64,113.4,113.21,112.84,112.66,112.5,112.46,112.32,112.23,112.19,112.19,112.18,112.21,112.16,112.09,111.89,111.65,111.42,111.3,111.23,111.2,111.3,111.36,111.54,111.66,111.72,111.85,111.96,112.08,112.05,112.04,112.03,112.07,112.06,111.96,111.99,112.09,112.25,112.46,112.64,112.87,113.15,113.45,113.74,113.82,113.92,114.04,114.21,114.32,114.38,114.53,114.68,115,115.39,116.04,116.68,117.37,118.01,118.52,118.88,119.15,119.4,119.63,119.88,120.02,120.04,119.93,119.77,119.47,119.33,119.2,119.15,119.16,119.12,119.15,119.16,119.16,119.14,119.11,119.15,119.42,119.69,119.73,119.76,119.7,119.78,119.66,119.42,119.09,118.73,118.38,118.04,117.74,117.34,117.06,116.89,116.86,116.92,117.06,117.21,117.24,117.34,117.45,117.46,117.34,117.38,117.44,117.56,117.84,118.25,118.71,119.07,119.41,119.67,119.83,119.97,120.02,120.09,120.19,120.21,120.32,120.36,120.49,120.73,120.97,121.11,121.36,121.74,122.03,122.2,122.3,122.47,122.71,123.02,123.43,123.63,123.86,124.19,124.4,124.47,124.45,124.55,124.58,124.48,124.53,124.65,124.61,124.67,124.84,125.1,125.22,125.31,125.49,125.7,125.87,126.04,126.15,126.25,126.08,125.85,125.54,125.38,125.24,125.24,125.24,125.17,124.93,124.73,124.64,124.6,124.43,124.23,124.04,123.94,123.84,123.5,123.38,123.19,122.86,122.65,122.37,122.08,121.85,121.89,122.03,122.24,122.44,122.6,122.87,123.17,123.26,123.2,123.07,122.9,122.93,122.98,123.17,123.42,123.67,123.83,123.95,124,124.03,124.05,124.1,124.17,124.27,124.44,124.57,124.78,124.92,124.93,124.92,124.97,125.02,125.19,125.45,125.66,125.85,126.05,126.37,126.63,126.77,126.75,126.62,126.49,126.32,126.24,126.16,126.04,125.98,125.96,126.01,126.16,126.38,126.7,127.04,127.4,127.7,127.98,128.29,128.44,128.72,128.98,129.14,129.29,129.37,129.26],"yaxis":"y","type":"scatter"},{"hovertemplate":"Sym=DOG
Timestamp=%{x}
Price=%{y}","legendgroup":"DOG","marker":{"symbol":"circle"},"mode":"markers","name":"DOG","showlegend":true,"x":["2018-06-01 12:00:00.700000","2018-06-01 12:00:00.900000","2018-06-01 12:00:01.100000","2018-06-01 12:00:01.200000","2018-06-01 12:00:01.600000","2018-06-01 12:00:01.700000","2018-06-01 12:00:02.500000","2018-06-01 12:00:02.900000","2018-06-01 12:00:03.000000","2018-06-01 12:00:03.400000","2018-06-01 12:00:03.500000","2018-06-01 12:00:03.600000","2018-06-01 12:00:04.000000","2018-06-01 12:00:04.100000","2018-06-01 12:00:04.400000","2018-06-01 12:00:04.700000","2018-06-01 12:00:04.800000","2018-06-01 12:00:05.000000","2018-06-01 12:00:06.000000","2018-06-01 12:00:06.100000","2018-06-01 12:00:06.300000","2018-06-01 12:00:06.400000","2018-06-01 12:00:06.500000","2018-06-01 12:00:07.100000","2018-06-01 12:00:07.300000","2018-06-01 12:00:07.500000","2018-06-01 12:00:07.600000","2018-06-01 12:00:08.100000","2018-06-01 12:00:08.300000","2018-06-01 12:00:08.800000","2018-06-01 12:00:09.200000","2018-06-01 12:00:09.400000","2018-06-01 12:00:09.600000","2018-06-01 12:00:09.800000","2018-06-01 12:00:09.900000","2018-06-01 12:00:10.900000","2018-06-01 12:00:11.200000","2018-06-01 12:00:12.000000","2018-06-01 12:00:12.200000","2018-06-01 12:00:13.000000","2018-06-01 12:00:13.100000","2018-06-01 12:00:13.200000","2018-06-01 12:00:13.300000","2018-06-01 12:00:13.400000","2018-06-01 12:00:14.100000","2018-06-01 12:00:14.400000","2018-06-01 12:00:14.800000","2018-06-01 12:00:15.600000","2018-06-01 12:00:15.900000","2018-06-01 12:00:16.100000","2018-06-01 12:00:16.300000","2018-06-01 12:00:17.200000","2018-06-01 12:00:17.300000","2018-06-01 12:00:17.500000","2018-06-01 12:00:18.200000","2018-06-01 12:00:18.400000","2018-06-01 12:00:18.600000","2018-06-01 12:00:18.700000","2018-06-01 12:00:18.900000","2018-06-01 12:00:19.200000","2018-06-01 12:00:19.300000","2018-06-01 12:00:19.700000","2018-06-01 12:00:19.900000","2018-06-01 12:00:20.400000","2018-06-01 12:00:20.500000","2018-06-01 12:00:20.700000","2018-06-01 12:00:20.800000","2018-06-01 12:00:20.900000","2018-06-01 12:00:21.000000","2018-06-01 12:00:21.100000","2018-06-01 12:00:21.200000","2018-06-01 12:00:21.400000","2018-06-01 12:00:21.800000","2018-06-01 12:00:22.300000","2018-06-01 12:00:22.600000","2018-06-01 12:00:22.700000","2018-06-01 12:00:22.900000","2018-06-01 12:00:23.200000","2018-06-01 12:00:23.400000","2018-06-01 12:00:23.500000","2018-06-01 12:00:24.200000","2018-06-01 12:00:24.700000","2018-06-01 12:00:25.000000","2018-06-01 12:00:25.100000","2018-06-01 12:00:25.300000","2018-06-01 12:00:25.400000","2018-06-01 12:00:25.600000","2018-06-01 12:00:25.700000","2018-06-01 12:00:26.100000","2018-06-01 12:00:26.200000","2018-06-01 12:00:27.100000","2018-06-01 12:00:27.600000","2018-06-01 12:00:27.900000","2018-06-01 12:00:28.000000","2018-06-01 12:00:28.600000","2018-06-01 12:00:28.700000","2018-06-01 12:00:29.000000","2018-06-01 12:00:29.300000","2018-06-01 12:00:29.700000","2018-06-01 12:00:29.900000","2018-06-01 12:00:30.100000","2018-06-01 12:00:30.600000","2018-06-01 12:00:31.000000","2018-06-01 12:00:31.300000","2018-06-01 12:00:31.500000","2018-06-01 12:00:31.700000","2018-06-01 12:00:32.000000","2018-06-01 12:00:32.100000","2018-06-01 12:00:32.500000","2018-06-01 12:00:33.300000","2018-06-01 12:00:34.000000","2018-06-01 12:00:34.400000","2018-06-01 12:00:34.600000","2018-06-01 12:00:34.700000","2018-06-01 12:00:34.900000","2018-06-01 12:00:37.100000","2018-06-01 12:00:37.400000","2018-06-01 12:00:38.100000","2018-06-01 12:00:38.300000","2018-06-01 12:00:38.700000","2018-06-01 12:00:39.100000","2018-06-01 12:00:39.300000","2018-06-01 12:00:39.500000","2018-06-01 12:00:40.000000","2018-06-01 12:00:40.100000","2018-06-01 12:00:40.600000","2018-06-01 12:00:41.200000","2018-06-01 12:00:41.400000","2018-06-01 12:00:41.800000","2018-06-01 12:00:42.200000","2018-06-01 12:00:42.300000","2018-06-01 12:00:42.400000","2018-06-01 12:00:42.500000","2018-06-01 12:00:43.400000","2018-06-01 12:00:43.600000","2018-06-01 12:00:43.700000","2018-06-01 12:00:43.900000","2018-06-01 12:00:44.200000","2018-06-01 12:00:44.400000","2018-06-01 12:00:44.500000","2018-06-01 12:00:44.700000","2018-06-01 12:00:44.800000","2018-06-01 12:00:45.200000","2018-06-01 12:00:45.400000","2018-06-01 12:00:46.000000","2018-06-01 12:00:47.300000","2018-06-01 12:00:47.600000","2018-06-01 12:00:48.000000","2018-06-01 12:00:48.200000","2018-06-01 12:00:48.300000","2018-06-01 12:00:49.100000","2018-06-01 12:00:49.800000","2018-06-01 12:00:50.200000","2018-06-01 12:00:50.400000","2018-06-01 12:00:50.700000","2018-06-01 12:00:50.800000","2018-06-01 12:00:51.400000","2018-06-01 12:00:53.300000","2018-06-01 12:00:53.400000","2018-06-01 12:00:53.900000","2018-06-01 12:00:54.100000","2018-06-01 12:00:54.200000","2018-06-01 12:00:55.100000","2018-06-01 12:00:55.300000","2018-06-01 12:00:55.400000","2018-06-01 12:00:56.300000","2018-06-01 12:00:57.400000","2018-06-01 12:00:57.500000","2018-06-01 12:00:57.700000","2018-06-01 12:00:57.900000","2018-06-01 12:00:58.000000","2018-06-01 12:00:58.300000","2018-06-01 12:00:59.100000","2018-06-01 12:00:59.600000","2018-06-01 12:01:00.200000","2018-06-01 12:01:01.000000","2018-06-01 12:01:01.100000","2018-06-01 12:01:01.300000","2018-06-01 12:01:01.800000","2018-06-01 12:01:01.900000","2018-06-01 12:01:02.100000","2018-06-01 12:01:02.200000","2018-06-01 12:01:02.600000","2018-06-01 12:01:03.200000","2018-06-01 12:01:03.500000","2018-06-01 12:01:03.700000","2018-06-01 12:01:04.100000","2018-06-01 12:01:04.300000","2018-06-01 12:01:04.400000","2018-06-01 12:01:04.900000","2018-06-01 12:01:05.000000","2018-06-01 12:01:06.500000","2018-06-01 12:01:06.600000","2018-06-01 12:01:06.800000","2018-06-01 12:01:06.900000","2018-06-01 12:01:07.000000","2018-06-01 12:01:07.300000","2018-06-01 12:01:07.400000","2018-06-01 12:01:08.100000","2018-06-01 12:01:08.200000","2018-06-01 12:01:08.300000","2018-06-01 12:01:08.400000","2018-06-01 12:01:08.500000","2018-06-01 12:01:08.700000","2018-06-01 12:01:09.000000","2018-06-01 12:01:09.300000","2018-06-01 12:01:09.500000","2018-06-01 12:01:09.900000","2018-06-01 12:01:10.900000","2018-06-01 12:01:11.000000","2018-06-01 12:01:11.200000","2018-06-01 12:01:11.300000","2018-06-01 12:01:11.500000","2018-06-01 12:01:11.900000","2018-06-01 12:01:12.300000","2018-06-01 12:01:13.000000","2018-06-01 12:01:13.300000","2018-06-01 12:01:13.500000","2018-06-01 12:01:14.200000","2018-06-01 12:01:14.400000","2018-06-01 12:01:14.600000","2018-06-01 12:01:14.700000","2018-06-01 12:01:15.000000","2018-06-01 12:01:15.200000","2018-06-01 12:01:15.600000","2018-06-01 12:01:15.700000","2018-06-01 12:01:15.800000","2018-06-01 12:01:16.600000","2018-06-01 12:01:17.000000","2018-06-01 12:01:17.400000","2018-06-01 12:01:17.500000","2018-06-01 12:01:17.600000","2018-06-01 12:01:17.900000","2018-06-01 12:01:18.300000","2018-06-01 12:01:18.400000","2018-06-01 12:01:18.500000","2018-06-01 12:01:18.700000","2018-06-01 12:01:18.900000","2018-06-01 12:01:19.400000","2018-06-01 12:01:19.500000","2018-06-01 12:01:19.600000","2018-06-01 12:01:19.800000","2018-06-01 12:01:20.200000","2018-06-01 12:01:20.400000","2018-06-01 12:01:20.500000","2018-06-01 12:01:20.700000","2018-06-01 12:01:20.800000","2018-06-01 12:01:21.800000","2018-06-01 12:01:21.900000","2018-06-01 12:01:22.300000","2018-06-01 12:01:22.600000","2018-06-01 12:01:22.700000","2018-06-01 12:01:23.400000","2018-06-01 12:01:23.600000","2018-06-01 12:01:23.700000","2018-06-01 12:01:23.800000","2018-06-01 12:01:24.700000","2018-06-01 12:01:25.300000","2018-06-01 12:01:25.800000","2018-06-01 12:01:26.200000","2018-06-01 12:01:26.400000","2018-06-01 12:01:26.500000","2018-06-01 12:01:26.800000","2018-06-01 12:01:26.900000","2018-06-01 12:01:27.100000","2018-06-01 12:01:27.200000","2018-06-01 12:01:27.400000","2018-06-01 12:01:27.500000","2018-06-01 12:01:28.300000","2018-06-01 12:01:28.500000","2018-06-01 12:01:28.700000","2018-06-01 12:01:29.300000","2018-06-01 12:01:29.400000","2018-06-01 12:01:29.800000","2018-06-01 12:01:30.100000","2018-06-01 12:01:31.100000","2018-06-01 12:01:31.200000","2018-06-01 12:01:32.400000","2018-06-01 12:01:32.800000","2018-06-01 12:01:33.200000","2018-06-01 12:01:33.300000","2018-06-01 12:01:33.400000","2018-06-01 12:01:33.700000","2018-06-01 12:01:33.800000","2018-06-01 12:01:34.000000","2018-06-01 12:01:34.100000","2018-06-01 12:01:34.300000","2018-06-01 12:01:34.500000","2018-06-01 12:01:34.800000","2018-06-01 12:01:34.900000","2018-06-01 12:01:35.700000","2018-06-01 12:01:35.800000","2018-06-01 12:01:35.900000","2018-06-01 12:01:36.000000","2018-06-01 12:01:36.900000","2018-06-01 12:01:37.500000","2018-06-01 12:01:37.900000","2018-06-01 12:01:38.000000","2018-06-01 12:01:38.200000","2018-06-01 12:01:38.500000","2018-06-01 12:01:38.700000","2018-06-01 12:01:39.700000","2018-06-01 12:01:40.200000","2018-06-01 12:01:40.300000","2018-06-01 12:01:40.400000","2018-06-01 12:01:40.500000","2018-06-01 12:01:40.600000","2018-06-01 12:01:40.800000","2018-06-01 12:01:41.100000","2018-06-01 12:01:41.200000","2018-06-01 12:01:41.400000","2018-06-01 12:01:41.600000","2018-06-01 12:01:41.700000","2018-06-01 12:01:41.800000","2018-06-01 12:01:42.100000","2018-06-01 12:01:42.300000","2018-06-01 12:01:42.800000","2018-06-01 12:01:43.200000","2018-06-01 12:01:43.600000","2018-06-01 12:01:44.000000","2018-06-01 12:01:44.100000","2018-06-01 12:01:44.600000","2018-06-01 12:01:45.000000","2018-06-01 12:01:45.800000","2018-06-01 12:01:46.100000","2018-06-01 12:01:46.800000","2018-06-01 12:01:47.000000","2018-06-01 12:01:47.300000","2018-06-01 12:01:47.500000","2018-06-01 12:01:47.600000","2018-06-01 12:01:47.900000","2018-06-01 12:01:48.100000","2018-06-01 12:01:48.800000","2018-06-01 12:01:48.900000","2018-06-01 12:01:49.000000","2018-06-01 12:01:49.100000","2018-06-01 12:01:49.300000","2018-06-01 12:01:49.400000","2018-06-01 12:01:49.700000","2018-06-01 12:01:49.900000","2018-06-01 12:01:50.100000","2018-06-01 12:01:50.300000","2018-06-01 12:01:50.600000","2018-06-01 12:01:50.900000","2018-06-01 12:01:51.000000","2018-06-01 12:01:51.200000","2018-06-01 12:01:51.400000","2018-06-01 12:01:51.700000","2018-06-01 12:01:52.200000","2018-06-01 12:01:52.300000","2018-06-01 12:01:52.700000","2018-06-01 12:01:53.000000","2018-06-01 12:01:53.200000","2018-06-01 12:01:53.300000","2018-06-01 12:01:53.500000","2018-06-01 12:01:53.700000","2018-06-01 12:01:53.800000","2018-06-01 12:01:54.100000","2018-06-01 12:01:54.400000","2018-06-01 12:01:54.800000","2018-06-01 12:01:55.200000","2018-06-01 12:01:56.000000","2018-06-01 12:01:56.200000","2018-06-01 12:01:57.200000","2018-06-01 12:01:57.300000","2018-06-01 12:01:57.500000","2018-06-01 12:01:57.700000","2018-06-01 12:01:58.000000","2018-06-01 12:01:58.100000","2018-06-01 12:01:58.300000","2018-06-01 12:01:58.400000","2018-06-01 12:01:59.000000","2018-06-01 12:01:59.100000","2018-06-01 12:01:59.300000","2018-06-01 12:01:59.500000","2018-06-01 12:01:59.800000","2018-06-01 12:02:00.200000","2018-06-01 12:02:00.400000","2018-06-01 12:02:00.600000","2018-06-01 12:02:01.100000","2018-06-01 12:02:01.300000","2018-06-01 12:02:01.500000","2018-06-01 12:02:01.600000","2018-06-01 12:02:01.800000","2018-06-01 12:02:02.500000","2018-06-01 12:02:02.600000","2018-06-01 12:02:03.000000","2018-06-01 12:02:03.100000","2018-06-01 12:02:03.300000","2018-06-01 12:02:03.600000","2018-06-01 12:02:04.500000","2018-06-01 12:02:04.900000","2018-06-01 12:02:05.400000","2018-06-01 12:02:05.500000","2018-06-01 12:02:05.600000","2018-06-01 12:02:05.700000","2018-06-01 12:02:05.900000","2018-06-01 12:02:07.100000","2018-06-01 12:02:08.300000","2018-06-01 12:02:08.400000","2018-06-01 12:02:08.600000","2018-06-01 12:02:08.700000","2018-06-01 12:02:09.200000","2018-06-01 12:02:09.300000","2018-06-01 12:02:09.600000","2018-06-01 12:02:09.700000","2018-06-01 12:02:09.900000","2018-06-01 12:02:10.000000","2018-06-01 12:02:10.300000","2018-06-01 12:02:10.400000","2018-06-01 12:02:10.800000","2018-06-01 12:02:10.900000","2018-06-01 12:02:11.200000","2018-06-01 12:02:11.400000","2018-06-01 12:02:11.500000","2018-06-01 12:02:11.900000","2018-06-01 12:02:12.100000","2018-06-01 12:02:12.200000","2018-06-01 12:02:12.400000","2018-06-01 12:02:12.600000","2018-06-01 12:02:12.900000","2018-06-01 12:02:13.000000","2018-06-01 12:02:13.300000","2018-06-01 12:02:13.600000","2018-06-01 12:02:14.000000","2018-06-01 12:02:14.100000","2018-06-01 12:02:14.300000","2018-06-01 12:02:14.400000","2018-06-01 12:02:14.600000","2018-06-01 12:02:15.000000","2018-06-01 12:02:15.200000","2018-06-01 12:02:15.400000","2018-06-01 12:02:16.600000","2018-06-01 12:02:16.700000","2018-06-01 12:02:17.600000","2018-06-01 12:02:19.300000","2018-06-01 12:02:19.400000","2018-06-01 12:02:19.800000","2018-06-01 12:02:19.900000","2018-06-01 12:02:20.300000","2018-06-01 12:02:20.500000","2018-06-01 12:02:20.800000","2018-06-01 12:02:21.000000","2018-06-01 12:02:21.300000","2018-06-01 12:02:21.700000","2018-06-01 12:02:22.500000","2018-06-01 12:02:22.800000","2018-06-01 12:02:23.100000","2018-06-01 12:02:23.200000","2018-06-01 12:02:23.900000","2018-06-01 12:02:24.600000","2018-06-01 12:02:24.800000","2018-06-01 12:02:25.000000","2018-06-01 12:02:25.100000","2018-06-01 12:02:25.300000","2018-06-01 12:02:25.500000","2018-06-01 12:02:25.600000","2018-06-01 12:02:25.700000","2018-06-01 12:02:25.900000","2018-06-01 12:02:26.400000","2018-06-01 12:02:27.600000","2018-06-01 12:02:28.500000","2018-06-01 12:02:28.900000","2018-06-01 12:02:29.000000","2018-06-01 12:02:29.500000","2018-06-01 12:02:29.900000","2018-06-01 12:02:30.000000","2018-06-01 12:02:30.300000","2018-06-01 12:02:30.800000","2018-06-01 12:02:31.000000","2018-06-01 12:02:31.200000","2018-06-01 12:02:31.300000","2018-06-01 12:02:31.700000","2018-06-01 12:02:32.000000","2018-06-01 12:02:32.800000","2018-06-01 12:02:32.900000","2018-06-01 12:02:33.400000","2018-06-01 12:02:33.500000","2018-06-01 12:02:33.700000","2018-06-01 12:02:33.800000","2018-06-01 12:02:34.100000","2018-06-01 12:02:34.200000","2018-06-01 12:02:34.900000","2018-06-01 12:02:35.400000","2018-06-01 12:02:35.500000","2018-06-01 12:02:35.600000","2018-06-01 12:02:36.200000","2018-06-01 12:02:37.400000","2018-06-01 12:02:37.800000","2018-06-01 12:02:38.300000","2018-06-01 12:02:38.600000","2018-06-01 12:02:39.100000","2018-06-01 12:02:39.200000","2018-06-01 12:02:39.300000","2018-06-01 12:02:39.900000","2018-06-01 12:02:40.100000","2018-06-01 12:02:40.300000","2018-06-01 12:02:40.600000","2018-06-01 12:02:41.000000","2018-06-01 12:02:41.300000","2018-06-01 12:02:41.500000","2018-06-01 12:02:41.600000","2018-06-01 12:02:42.200000","2018-06-01 12:02:42.500000","2018-06-01 12:02:42.600000","2018-06-01 12:02:42.700000","2018-06-01 12:02:43.300000","2018-06-01 12:02:44.400000","2018-06-01 12:02:44.600000","2018-06-01 12:02:44.700000","2018-06-01 12:02:45.000000","2018-06-01 12:02:45.200000","2018-06-01 12:02:45.500000","2018-06-01 12:02:45.900000","2018-06-01 12:02:46.500000","2018-06-01 12:02:46.600000","2018-06-01 12:02:47.100000","2018-06-01 12:02:47.200000","2018-06-01 12:02:47.300000","2018-06-01 12:02:48.000000","2018-06-01 12:02:48.200000","2018-06-01 12:02:48.400000","2018-06-01 12:02:48.500000","2018-06-01 12:02:49.800000","2018-06-01 12:02:50.000000","2018-06-01 12:02:50.100000","2018-06-01 12:02:50.200000","2018-06-01 12:02:50.300000","2018-06-01 12:02:50.400000","2018-06-01 12:02:50.600000","2018-06-01 12:02:50.800000","2018-06-01 12:02:51.500000","2018-06-01 12:02:51.800000","2018-06-01 12:02:51.900000","2018-06-01 12:02:52.000000","2018-06-01 12:02:52.300000","2018-06-01 12:02:52.500000","2018-06-01 12:02:52.800000","2018-06-01 12:02:53.100000","2018-06-01 12:02:53.800000","2018-06-01 12:02:54.400000","2018-06-01 12:02:54.700000","2018-06-01 12:02:55.000000","2018-06-01 12:02:56.000000","2018-06-01 12:02:57.000000","2018-06-01 12:02:57.300000","2018-06-01 12:02:57.400000","2018-06-01 12:02:57.500000","2018-06-01 12:02:57.900000","2018-06-01 12:02:58.000000","2018-06-01 12:02:58.200000","2018-06-01 12:02:58.300000","2018-06-01 12:02:58.600000","2018-06-01 12:02:59.400000","2018-06-01 12:02:59.700000","2018-06-01 12:02:59.800000","2018-06-01 12:03:00.000000","2018-06-01 12:03:00.300000","2018-06-01 12:03:00.700000","2018-06-01 12:03:01.100000","2018-06-01 12:03:01.200000","2018-06-01 12:03:01.300000","2018-06-01 12:03:01.600000","2018-06-01 12:03:01.700000","2018-06-01 12:03:02.100000","2018-06-01 12:03:02.300000","2018-06-01 12:03:02.700000","2018-06-01 12:03:02.900000","2018-06-01 12:03:03.100000","2018-06-01 12:03:03.200000","2018-06-01 12:03:03.400000","2018-06-01 12:03:03.700000","2018-06-01 12:03:04.300000","2018-06-01 12:03:04.400000","2018-06-01 12:03:04.900000","2018-06-01 12:03:05.100000","2018-06-01 12:03:05.400000","2018-06-01 12:03:05.500000","2018-06-01 12:03:06.300000","2018-06-01 12:03:07.000000","2018-06-01 12:03:07.100000","2018-06-01 12:03:07.800000","2018-06-01 12:03:08.100000","2018-06-01 12:03:08.200000","2018-06-01 12:03:08.700000","2018-06-01 12:03:08.900000","2018-06-01 12:03:09.000000","2018-06-01 12:03:09.800000","2018-06-01 12:03:10.100000","2018-06-01 12:03:10.400000","2018-06-01 12:03:11.100000","2018-06-01 12:03:11.300000","2018-06-01 12:03:11.500000","2018-06-01 12:03:11.900000","2018-06-01 12:03:12.000000","2018-06-01 12:03:12.300000","2018-06-01 12:03:13.200000","2018-06-01 12:03:13.300000","2018-06-01 12:03:13.600000","2018-06-01 12:03:13.800000","2018-06-01 12:03:14.100000","2018-06-01 12:03:14.500000","2018-06-01 12:03:14.800000","2018-06-01 12:03:14.900000","2018-06-01 12:03:15.700000","2018-06-01 12:03:16.300000","2018-06-01 12:03:16.900000","2018-06-01 12:03:17.700000","2018-06-01 12:03:18.400000","2018-06-01 12:03:18.500000","2018-06-01 12:03:19.300000","2018-06-01 12:03:19.400000","2018-06-01 12:03:20.000000","2018-06-01 12:03:20.400000","2018-06-01 12:03:20.500000","2018-06-01 12:03:20.600000","2018-06-01 12:03:21.100000","2018-06-01 12:03:21.300000","2018-06-01 12:03:21.400000","2018-06-01 12:03:21.800000","2018-06-01 12:03:22.200000","2018-06-01 12:03:22.300000","2018-06-01 12:03:22.400000","2018-06-01 12:03:22.500000","2018-06-01 12:03:22.800000","2018-06-01 12:03:23.000000","2018-06-01 12:03:23.300000","2018-06-01 12:03:24.000000","2018-06-01 12:03:24.300000","2018-06-01 12:03:24.600000","2018-06-01 12:03:24.800000","2018-06-01 12:03:24.900000","2018-06-01 12:03:25.300000","2018-06-01 12:03:25.900000","2018-06-01 12:03:26.100000","2018-06-01 12:03:26.900000","2018-06-01 12:03:27.000000","2018-06-01 12:03:27.200000","2018-06-01 12:03:27.700000","2018-06-01 12:03:27.900000","2018-06-01 12:03:28.100000","2018-06-01 12:03:28.400000","2018-06-01 12:03:28.800000","2018-06-01 12:03:29.100000","2018-06-01 12:03:29.300000","2018-06-01 12:03:29.500000","2018-06-01 12:03:30.200000","2018-06-01 12:03:30.600000","2018-06-01 12:03:30.900000","2018-06-01 12:03:31.100000","2018-06-01 12:03:31.500000","2018-06-01 12:03:31.800000","2018-06-01 12:03:32.200000","2018-06-01 12:03:32.500000","2018-06-01 12:03:33.200000","2018-06-01 12:03:33.400000","2018-06-01 12:03:33.800000","2018-06-01 12:03:34.300000","2018-06-01 12:03:34.500000","2018-06-01 12:03:35.000000","2018-06-01 12:03:35.800000","2018-06-01 12:03:35.900000","2018-06-01 12:03:36.000000","2018-06-01 12:03:36.200000","2018-06-01 12:03:36.300000","2018-06-01 12:03:36.400000","2018-06-01 12:03:36.900000","2018-06-01 12:03:37.500000","2018-06-01 12:03:37.900000","2018-06-01 12:03:38.200000","2018-06-01 12:03:38.300000","2018-06-01 12:03:39.400000","2018-06-01 12:03:40.000000","2018-06-01 12:03:40.300000","2018-06-01 12:03:41.100000","2018-06-01 12:03:41.200000","2018-06-01 12:03:41.300000","2018-06-01 12:03:42.800000","2018-06-01 12:03:42.900000","2018-06-01 12:03:43.300000","2018-06-01 12:03:43.600000","2018-06-01 12:03:44.200000","2018-06-01 12:03:44.300000","2018-06-01 12:03:44.400000","2018-06-01 12:03:44.800000","2018-06-01 12:03:44.900000","2018-06-01 12:03:45.000000","2018-06-01 12:03:45.300000","2018-06-01 12:03:46.100000","2018-06-01 12:03:46.700000","2018-06-01 12:03:47.000000","2018-06-01 12:03:47.100000","2018-06-01 12:03:47.600000","2018-06-01 12:03:47.700000","2018-06-01 12:03:47.900000","2018-06-01 12:03:48.100000","2018-06-01 12:03:48.400000","2018-06-01 12:03:48.600000","2018-06-01 12:03:49.200000","2018-06-01 12:03:49.500000","2018-06-01 12:03:49.600000","2018-06-01 12:03:49.700000","2018-06-01 12:03:50.000000","2018-06-01 12:03:50.400000","2018-06-01 12:03:50.600000","2018-06-01 12:03:50.700000","2018-06-01 12:03:51.000000","2018-06-01 12:03:51.700000","2018-06-01 12:03:52.000000","2018-06-01 12:03:52.100000","2018-06-01 12:03:52.500000","2018-06-01 12:03:52.600000","2018-06-01 12:03:53.000000","2018-06-01 12:03:53.100000","2018-06-01 12:03:53.600000","2018-06-01 12:03:53.800000","2018-06-01 12:03:54.200000","2018-06-01 12:03:54.300000","2018-06-01 12:03:54.400000","2018-06-01 12:03:55.100000","2018-06-01 12:03:55.400000","2018-06-01 12:03:55.500000","2018-06-01 12:03:55.900000","2018-06-01 12:03:56.000000","2018-06-01 12:03:56.300000","2018-06-01 12:03:56.400000","2018-06-01 12:03:56.500000","2018-06-01 12:03:56.700000","2018-06-01 12:03:56.800000","2018-06-01 12:03:56.900000","2018-06-01 12:03:57.000000","2018-06-01 12:03:57.200000","2018-06-01 12:03:57.300000","2018-06-01 12:03:57.400000","2018-06-01 12:03:57.700000","2018-06-01 12:03:58.000000","2018-06-01 12:03:58.200000","2018-06-01 12:03:58.300000","2018-06-01 12:03:58.400000","2018-06-01 12:03:59.000000","2018-06-01 12:03:59.400000","2018-06-01 12:03:59.600000","2018-06-01 12:04:00.400000","2018-06-01 12:04:00.600000","2018-06-01 12:04:00.700000","2018-06-01 12:04:00.800000","2018-06-01 12:04:00.900000","2018-06-01 12:04:01.200000","2018-06-01 12:04:01.700000","2018-06-01 12:04:02.000000","2018-06-01 12:04:02.200000","2018-06-01 12:04:02.400000","2018-06-01 12:04:02.600000","2018-06-01 12:04:02.800000","2018-06-01 12:04:02.900000","2018-06-01 12:04:03.400000","2018-06-01 12:04:03.700000","2018-06-01 12:04:03.800000","2018-06-01 12:04:04.000000","2018-06-01 12:04:04.100000","2018-06-01 12:04:04.200000","2018-06-01 12:04:04.300000","2018-06-01 12:04:04.400000","2018-06-01 12:04:04.500000","2018-06-01 12:04:04.600000","2018-06-01 12:04:05.000000","2018-06-01 12:04:05.300000","2018-06-01 12:04:05.500000","2018-06-01 12:04:05.900000","2018-06-01 12:04:06.400000","2018-06-01 12:04:06.500000","2018-06-01 12:04:06.600000","2018-06-01 12:04:06.800000","2018-06-01 12:04:07.100000","2018-06-01 12:04:07.200000","2018-06-01 12:04:07.300000","2018-06-01 12:04:07.900000","2018-06-01 12:04:08.300000","2018-06-01 12:04:09.700000","2018-06-01 12:04:10.300000","2018-06-01 12:04:10.900000","2018-06-01 12:04:11.000000","2018-06-01 12:04:11.300000","2018-06-01 12:04:11.800000","2018-06-01 12:04:12.000000","2018-06-01 12:04:12.200000","2018-06-01 12:04:12.500000","2018-06-01 12:04:13.000000","2018-06-01 12:04:13.400000","2018-06-01 12:04:13.600000","2018-06-01 12:04:14.400000","2018-06-01 12:04:14.600000","2018-06-01 12:04:14.700000","2018-06-01 12:04:15.400000","2018-06-01 12:04:15.500000","2018-06-01 12:04:15.800000","2018-06-01 12:04:16.200000","2018-06-01 12:04:16.300000","2018-06-01 12:04:16.900000","2018-06-01 12:04:17.500000","2018-06-01 12:04:17.800000","2018-06-01 12:04:18.400000","2018-06-01 12:04:18.600000","2018-06-01 12:04:19.100000","2018-06-01 12:04:19.400000","2018-06-01 12:04:19.700000","2018-06-01 12:04:19.900000","2018-06-01 12:04:20.000000","2018-06-01 12:04:21.100000","2018-06-01 12:04:21.300000","2018-06-01 12:04:21.500000","2018-06-01 12:04:21.600000","2018-06-01 12:04:22.100000","2018-06-01 12:04:22.800000","2018-06-01 12:04:23.300000","2018-06-01 12:04:23.800000","2018-06-01 12:04:23.900000","2018-06-01 12:04:24.700000","2018-06-01 12:04:25.400000","2018-06-01 12:04:25.900000","2018-06-01 12:04:26.800000","2018-06-01 12:04:26.900000","2018-06-01 12:04:28.000000","2018-06-01 12:04:28.400000","2018-06-01 12:04:28.700000","2018-06-01 12:04:29.000000","2018-06-01 12:04:29.100000","2018-06-01 12:04:29.400000","2018-06-01 12:04:29.900000","2018-06-01 12:04:30.300000","2018-06-01 12:04:30.700000","2018-06-01 12:04:31.000000","2018-06-01 12:04:31.300000","2018-06-01 12:04:31.400000","2018-06-01 12:04:32.100000","2018-06-01 12:04:32.200000","2018-06-01 12:04:32.500000","2018-06-01 12:04:32.700000","2018-06-01 12:04:33.700000","2018-06-01 12:04:33.800000","2018-06-01 12:04:34.200000","2018-06-01 12:04:34.500000","2018-06-01 12:04:35.700000","2018-06-01 12:04:35.800000","2018-06-01 12:04:36.400000","2018-06-01 12:04:36.600000","2018-06-01 12:04:36.700000","2018-06-01 12:04:37.600000","2018-06-01 12:04:38.100000","2018-06-01 12:04:38.200000","2018-06-01 12:04:38.500000","2018-06-01 12:04:38.800000","2018-06-01 12:04:40.100000","2018-06-01 12:04:40.200000","2018-06-01 12:04:40.400000","2018-06-01 12:04:40.700000","2018-06-01 12:04:41.000000","2018-06-01 12:04:41.400000","2018-06-01 12:04:41.600000","2018-06-01 12:04:42.200000","2018-06-01 12:04:42.300000","2018-06-01 12:04:42.800000","2018-06-01 12:04:43.100000","2018-06-01 12:04:43.400000","2018-06-01 12:04:43.700000","2018-06-01 12:04:43.900000","2018-06-01 12:04:44.100000","2018-06-01 12:04:44.400000","2018-06-01 12:04:44.600000","2018-06-01 12:04:44.800000","2018-06-01 12:04:44.900000","2018-06-01 12:04:45.100000","2018-06-01 12:04:45.500000","2018-06-01 12:04:45.900000","2018-06-01 12:04:46.100000","2018-06-01 12:04:46.400000","2018-06-01 12:04:46.600000","2018-06-01 12:04:46.800000","2018-06-01 12:04:46.900000","2018-06-01 12:04:47.000000","2018-06-01 12:04:47.600000","2018-06-01 12:04:47.700000","2018-06-01 12:04:48.000000","2018-06-01 12:04:48.800000","2018-06-01 12:04:48.900000","2018-06-01 12:04:49.400000","2018-06-01 12:04:49.600000","2018-06-01 12:04:49.900000","2018-06-01 12:04:50.700000","2018-06-01 12:04:51.300000","2018-06-01 12:04:51.600000","2018-06-01 12:04:52.400000","2018-06-01 12:04:53.100000","2018-06-01 12:04:53.300000","2018-06-01 12:04:53.400000","2018-06-01 12:04:54.100000","2018-06-01 12:04:54.600000","2018-06-01 12:04:54.800000","2018-06-01 12:04:55.300000","2018-06-01 12:04:56.100000","2018-06-01 12:04:57.600000","2018-06-01 12:04:57.700000","2018-06-01 12:04:58.000000","2018-06-01 12:04:58.300000","2018-06-01 12:04:59.500000","2018-06-01 12:04:59.800000"],"xaxis":"x","y":[108.48,108.44,108.28,108.12,107.93,107.84,107.65,107.36,107.17,106.98,106.89,106.76,106.54,106.31,106.01,105.6,105.13,104.59,104.3,103.98,103.53,103.15,102.86,102.66,102.36,102.12,101.98,101.9,101.75,101.77,101.63,101.59,101.42,101.32,101.12,100.97,100.78,100.42,100.24,100.2,100.09,100.07,100.21,100.44,100.71,101.08,101.28,101.48,101.64,101.95,102.41,102.84,103.23,103.52,103.75,103.78,103.72,103.5,103.37,103.23,103.33,103.51,103.69,103.81,103.91,103.87,103.76,103.68,103.78,103.82,103.93,103.99,104.06,104.21,104.31,104.38,104.48,104.73,104.88,105.03,105.19,105.26,105.23,105.49,105.62,105.62,105.61,105.49,105.31,105.23,105.3,105.35,105.32,105.27,105.13,105,104.87,104.75,104.44,104.11,103.89,103.67,103.45,103.08,102.75,102.35,101.86,101.3,100.59,100.03,99.57,99.2,99.05,98.88,98.73,98.73,98.78,98.69,98.58,98.49,98.47,98.19,97.89,97.63,97.39,97.19,97.07,96.95,96.81,96.75,96.69,96.59,96.34,96.24,96.26,96.23,96.14,96.13,96.14,96.09,95.93,95.73,95.62,95.5,95.51,95.51,95.27,95.25,95.39,95.46,95.45,95.36,95.3,95.41,95.64,95.7,95.9,96.22,96.35,96.59,96.89,97.06,97.14,97,97,96.92,97.02,97.09,97.21,97.3,97.37,97.41,97.44,97.31,97.06,96.72,96.53,96.26,96,95.86,95.7,95.52,95.42,95.34,95.25,95.22,95.09,94.94,94.95,95.03,95.07,95.23,95.35,95.5,95.69,95.97,96.26,96.57,97.02,97.5,97.79,98.02,98.23,98.38,98.51,98.52,98.64,98.91,99.1,99.27,99.37,99.5,99.59,99.66,99.63,99.71,99.79,99.8,99.61,99.5,99.51,99.54,99.4,99.21,99.06,98.9,98.7,98.51,98.44,98.5,98.46,98.59,98.67,98.75,98.79,98.82,98.68,98.36,98.08,97.76,97.42,97.13,96.89,96.64,96.63,96.61,96.66,96.75,96.85,96.97,96.95,96.89,96.83,96.83,96.82,96.78,96.75,96.54,96.35,96.17,95.98,95.75,95.57,95.39,95.08,94.81,94.55,94.39,94.18,93.81,93.62,93.33,93.11,92.86,92.75,92.74,92.72,92.66,92.44,92.25,92.19,92.18,92.1,91.99,92,92.09,92.23,92.41,92.6,92.74,93.03,93.15,93.26,93.42,93.66,93.92,94.06,94.19,94.32,94.33,94.33,94.36,94.37,94.53,94.78,94.87,95.15,95.58,95.85,96.08,96.34,96.72,96.9,97.17,97.4,97.66,97.91,98.2,98.44,98.64,98.89,99.19,99.5,99.76,100.09,100.31,100.62,100.81,100.93,101.18,101.43,101.76,102.14,102.53,102.75,102.97,103.11,103.28,103.4,103.28,103.06,102.89,102.76,102.78,102.67,102.7,102.8,102.86,102.87,102.86,102.95,102.9,102.75,102.7,102.54,102.31,102.19,102.05,101.75,101.47,101.07,100.66,100.32,99.99,99.7,99.58,99.56,99.5,99.49,99.43,99.29,99.19,99.15,99.06,99,99.01,98.94,98.82,98.77,98.77,98.7,98.6,98.7,98.92,99.2,99.46,99.76,100.02,100.39,100.64,100.82,101.14,101.44,101.7,102.08,102.31,102.52,102.59,102.93,103.1,103.19,103.42,103.76,104.1,104.32,104.56,104.81,105.14,105.5,105.8,106.06,106.22,106.23,106.27,106.4,106.5,106.6,106.7,106.6,106.43,106.2,105.8,105.38,104.98,104.66,104.22,103.94,103.67,103.34,103.13,102.91,102.52,102.09,101.78,101.38,101.02,100.62,100.26,99.98,99.78,99.69,99.59,99.5,99.41,99.4,99.3,99.28,99.35,99.53,99.71,99.92,100.13,100.1,99.97,99.88,100.03,100.22,100.28,100.22,100.08,99.89,99.73,99.48,99.23,98.94,98.61,98.45,98.34,98.25,98.39,98.6,98.88,99.06,99.24,99.39,99.55,99.68,99.82,99.78,99.69,99.63,99.36,99.03,98.64,98.19,97.93,97.77,97.65,97.45,97.35,97.29,97.32,97.5,97.84,98.03,98.35,98.62,98.8,98.75,98.84,99.05,99.19,99.28,99.45,99.53,99.84,100.08,100.2,100.21,100.17,100.16,100.31,100.51,100.68,100.99,101.24,101.41,101.52,101.6,101.71,101.98,102.18,102.46,102.6,102.6,102.52,102.35,102.18,102.04,102.02,102.05,102.12,102.23,102.19,102.16,102.15,102.28,102.55,102.82,103.04,103.19,103.44,103.55,103.8,104.08,104.34,104.57,104.76,104.8,105.01,105.27,105.43,105.59,105.84,106.04,105.95,105.94,105.93,105.94,106.16,106.45,106.66,106.98,107.32,107.74,108.12,108.5,108.76,108.97,109.26,109.28,109.36,109.48,109.56,109.76,109.87,109.92,109.82,109.63,109.69,109.9,110.09,110.26,110.41,110.55,110.65,111.02,111.69,112.21,112.95,113.62,114.21,114.87,115.66,116.42,117.1,117.66,118.25,118.74,119.22,119.49,119.8,119.93,120.11,120.3,120.24,120.26,120.48,120.7,121.04,121.42,121.73,122.03,122.4,122.78,123.04,123.38,123.8,124.25,124.69,125.28,125.85,126.28,126.76,127.2,127.61,128.08,128.43,128.79,129.25,129.61,130.11,130.58,131,131.51,132.05,132.76,133.42,134.06,134.51,134.82,135.04,135.31,135.53,135.55,135.63,135.69,135.79,136.04,136.26,136.5,136.54,136.56,136.72,136.95,137.01,137.11,137.29,137.62,138.05,138.4,138.71,139.04,139.32,139.74,140.09,140.38,140.65,140.92,141.17,141.41,141.55,141.75,141.96,142.01,141.97,141.96,141.9,141.89,141.86,141.74,141.65,141.65,141.63,141.53,141.36,141.19,141.06,140.93,140.79,140.61,140.59,140.49,140.44,140.5,140.57,140.7,140.76,140.88,140.94,141,141.08,141.26,141.53,141.8,142.1,142.33,142.63,142.75,142.79,142.75,142.65,142.63,142.54,142.44,142.3,142.14,141.91,141.63,141.47,141.45,141.42,141.4,141.49,141.54,141.59,141.62,141.59,141.68,141.8,141.92,141.99,142.15,142.3,142.36,142.46,142.54,142.6,142.78,143.04,143.43,143.79,143.96,144.14,144.38,144.69,145.01,145.26,145.53,145.78,145.99,146.09,146.32,146.58,146.91,147.17,147.45,147.59,147.67,147.68,147.84,148.12,148.41,148.61,148.63,148.67,148.65,148.64,148.7,148.77,148.74,148.69,148.62,148.64,148.79,149.05,149.22,149.32,149.36,149.65,149.85,150.15,150.47,150.94,151.45,151.82,152.16,152.46,152.78,152.98,153.15,153.48,153.93,154.4,154.77,155.08,155.36,155.48,155.54,155.57,155.53,155.64,155.86,156.14,156.45,156.73,156.9,157.31,157.68,158.06,158.45,158.69,158.87,159.11,159.52,160.04,160.75,161.83,162.62,163.48,164.38,165.23,166,166.54,167.26,167.81,168.18,168.43,168.66,168.74,168.94,168.95,169.17,169.35,169.48,169.66,169.67,169.97,169.99,170,170.13,170.19,169.96,169.55,169.13,168.61,168.24,167.92,167.7,167.22,166.61,166,165.34,164.7,164.16,163.79,163.74,164.1,164.3,164.41,164.2,163.97,163.68,163.36,162.92,162.66,162.55,162.49,162.32,162.16,161.75,161.48,161.16,160.75,160.53,160.46,160.4,160.37,160.46,160.7,160.88,161.12,161.32,161.17,161.16,161.18,161.42,161.69,161.93,161.93,161.76,161.62,161.56,161.48,161.45,161.38,161.32,161.19,161.16,161.19,161.13,161.29,161.59,162.07,162.44,162.76],"yaxis":"y","type":"scatter"}],"layout":{"legend":{"title":{"side":"top","text":"Sym"},"tracegroupgap":0},"template":{"data":{"barpolar":[{"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"type":"carpet"}],"choropleth":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"choropleth"}],"contourcarpet":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"contourcarpet"}],"contour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"contour"}],"heatmap":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"heatmap"}],"histogram2dcontour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"histogram2dcontour"}],"histogram2d":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"histogram2d"}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"mesh3d":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"mesh3d"}],"parcoords":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"parcoords"}],"pie":[{"automargin":true,"type":"pie"}],"scatter3d":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatter3d"}],"scattercarpet":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattercarpet"}],"scattergeo":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergeo"}],"scattergl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergl"}],"scattermapbox":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermapbox"}],"scattermap":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermap"}],"scatterpolargl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolargl"}],"scatterpolar":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolar"}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"scatterternary":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterternary"}],"surface":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"surface"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}]},"layout":{"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"autotypenumbers":"strict","coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]],"sequential":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"sequentialminus":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]]},"colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"geo":{"bgcolor":"white","lakecolor":"white","landcolor":"#E5ECF6","showlakes":true,"showland":true,"subunitcolor":"white"},"hoverlabel":{"align":"left"},"hovermode":"closest","mapbox":{"style":"light"},"paper_bgcolor":"white","plot_bgcolor":"#E5ECF6","polar":{"angularaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"bgcolor":"#E5ECF6","radialaxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"scene":{"xaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"},"yaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"},"zaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"ternary":{"aaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"baxis":{"gridcolor":"white","linecolor":"white","ticks":""},"bgcolor":"#E5ECF6","caxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"title":{"x":0.05},"xaxis":{"automargin":true,"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","zerolinewidth":2},"yaxis":{"automargin":true,"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","zerolinewidth":2}}},"xaxis":{"anchor":"y","domain":[0,1],"side":"bottom","title":{"text":"Timestamp"}},"yaxis":{"anchor":"x","domain":[0,1],"side":"left","title":{"text":"Price"}}},"isDefaultTemplate":true}}}} \ No newline at end of file diff --git a/plugins/plotly-express/docs/snapshots/52992f0e7f502e84eccd8dca23735a27.json b/plugins/plotly-express/docs/snapshots/52992f0e7f502e84eccd8dca23735a27.json new file mode 100644 index 000000000..757396e4a --- /dev/null +++ b/plugins/plotly-express/docs/snapshots/52992f0e7f502e84eccd8dca23735a27.json @@ -0,0 +1 @@ +{"file":"events.md","objects":{"gapminder":{"type":"Table","data":{"columns":[{"name":"Country","type":"java.lang.String"},{"name":"Continent","type":"java.lang.String"},{"name":"Year","type":"long"},{"name":"Month","type":"long"},{"name":"LifeExp","type":"double"},{"name":"Pop","type":"long"},{"name":"GdpPerCap","type":"double"}],"rows":[[{"value":"Afghanistan"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"28.8010"},{"value":"8,425,333"},{"value":"779.4453"}],[{"value":"Albania"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"55.2300"},{"value":"1,282,697"},{"value":"1,601.0561"}],[{"value":"Algeria"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"43.0770"},{"value":"9,279,525"},{"value":"2,449.0082"}],[{"value":"Angola"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"30.0150"},{"value":"4,232,095"},{"value":"3,520.6103"}],[{"value":"Argentina"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"62.4850"},{"value":"17,876,956"},{"value":"5,911.3151"}],[{"value":"Australia"},{"value":"Oceania"},{"value":"1,952"},{"value":"1"},{"value":"69.1200"},{"value":"8,691,212"},{"value":"10,039.5956"}],[{"value":"Austria"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"66.8000"},{"value":"6,927,772"},{"value":"6,137.0765"}],[{"value":"Bahrain"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"50.9390"},{"value":"120,447"},{"value":"9,867.0848"}],[{"value":"Bangladesh"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"37.4840"},{"value":"46,886,859"},{"value":"684.2442"}],[{"value":"Belgium"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"68.0000"},{"value":"8,730,405"},{"value":"8,343.1051"}],[{"value":"Benin"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"38.2230"},{"value":"1,738,315"},{"value":"1,062.7522"}],[{"value":"Bolivia"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"40.4140"},{"value":"2,883,315"},{"value":"2,677.3263"}],[{"value":"Bosnia and Herzegovina"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"53.8200"},{"value":"2,791,000"},{"value":"973.5332"}],[{"value":"Botswana"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"47.6220"},{"value":"442,308"},{"value":"851.2411"}],[{"value":"Brazil"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"50.9170"},{"value":"56,602,560"},{"value":"2,108.9444"}],[{"value":"Bulgaria"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"59.6000"},{"value":"7,274,900"},{"value":"2,444.2866"}],[{"value":"Burkina Faso"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"31.9750"},{"value":"4,469,979"},{"value":"543.2552"}],[{"value":"Burundi"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"39.0310"},{"value":"2,445,618"},{"value":"339.2965"}],[{"value":"Cambodia"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"39.4170"},{"value":"4,693,836"},{"value":"368.4693"}],[{"value":"Cameroon"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"38.5230"},{"value":"5,009,067"},{"value":"1,172.6677"}],[{"value":"Canada"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"68.7500"},{"value":"14,785,584"},{"value":"11,367.1611"}],[{"value":"Central African Republic"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"35.4630"},{"value":"1,291,695"},{"value":"1,071.3107"}],[{"value":"Chad"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"38.0920"},{"value":"2,682,462"},{"value":"1,178.6659"}],[{"value":"Chile"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"54.7450"},{"value":"6,377,619"},{"value":"3,939.9788"}],[{"value":"China"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"44.0000"},{"value":"556,263,527"},{"value":"400.4486"}],[{"value":"Colombia"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"50.6430"},{"value":"12,350,771"},{"value":"2,144.1151"}],[{"value":"Comoros"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"40.7150"},{"value":"153,936"},{"value":"1,102.9909"}],[{"value":"Congo, Dem. Rep."},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"39.1430"},{"value":"14,100,005"},{"value":"780.5423"}],[{"value":"Congo, Rep."},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"42.1110"},{"value":"854,885"},{"value":"2,125.6214"}],[{"value":"Costa Rica"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"57.2060"},{"value":"926,317"},{"value":"2,627.0095"}],[{"value":"Cote d'Ivoire"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"40.4770"},{"value":"2,977,019"},{"value":"1,388.5947"}],[{"value":"Croatia"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"61.2100"},{"value":"3,882,229"},{"value":"3,119.2365"}],[{"value":"Cuba"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"59.4210"},{"value":"6,007,797"},{"value":"5,586.5388"}],[{"value":"Czech Republic"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"66.8700"},{"value":"9,125,183"},{"value":"6,876.1403"}],[{"value":"Denmark"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"70.7800"},{"value":"4,334,000"},{"value":"9,692.3852"}],[{"value":"Djibouti"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"34.8120"},{"value":"63,149"},{"value":"2,669.5295"}],[{"value":"Dominican Republic"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"45.9280"},{"value":"2,491,346"},{"value":"1,397.7171"}],[{"value":"Ecuador"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"48.3570"},{"value":"3,548,753"},{"value":"3,522.1107"}],[{"value":"Egypt"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"41.8930"},{"value":"22,223,309"},{"value":"1,418.8224"}],[{"value":"El Salvador"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"45.2620"},{"value":"2,042,865"},{"value":"3,048.3029"}],[{"value":"Equatorial Guinea"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"34.4820"},{"value":"216,964"},{"value":"375.6431"}],[{"value":"Eritrea"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"35.9280"},{"value":"1,438,760"},{"value":"328.9406"}],[{"value":"Ethiopia"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"34.0780"},{"value":"20,860,941"},{"value":"362.1463"}],[{"value":"Finland"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"66.5500"},{"value":"4,090,500"},{"value":"6,424.5191"}],[{"value":"France"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"67.4100"},{"value":"42,459,667"},{"value":"7,029.8093"}],[{"value":"Gabon"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"37.0030"},{"value":"420,702"},{"value":"4,293.4765"}],[{"value":"Gambia"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"30.0000"},{"value":"284,320"},{"value":"485.2307"}],[{"value":"Germany"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"67.5000"},{"value":"69,145,952"},{"value":"7,144.1144"}],[{"value":"Ghana"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"43.1490"},{"value":"5,581,001"},{"value":"911.2989"}],[{"value":"Greece"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"65.8600"},{"value":"7,733,250"},{"value":"3,530.6901"}],[{"value":"Guatemala"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"42.0230"},{"value":"3,146,381"},{"value":"2,428.2378"}],[{"value":"Guinea"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"33.6090"},{"value":"2,664,249"},{"value":"510.1965"}],[{"value":"Guinea-Bissau"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"32.5000"},{"value":"580,653"},{"value":"299.8503"}],[{"value":"Haiti"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"37.5790"},{"value":"3,201,488"},{"value":"1,840.3669"}],[{"value":"Honduras"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"41.9120"},{"value":"1,517,453"},{"value":"2,194.9262"}],[{"value":"Hong Kong, China"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"60.9600"},{"value":"2,125,900"},{"value":"3,054.4212"}],[{"value":"Hungary"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"64.0300"},{"value":"9,504,000"},{"value":"5,263.6738"}],[{"value":"Iceland"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"72.4900"},{"value":"147,962"},{"value":"7,267.6884"}],[{"value":"India"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"37.3730"},{"value":"372,000,000"},{"value":"546.5657"}],[{"value":"Indonesia"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"37.4680"},{"value":"82,052,000"},{"value":"749.6817"}],[{"value":"Iran"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"44.8690"},{"value":"17,272,000"},{"value":"3,035.3260"}],[{"value":"Iraq"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"45.3200"},{"value":"5,441,766"},{"value":"4,129.7661"}],[{"value":"Ireland"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"66.9100"},{"value":"2,952,156"},{"value":"5,210.2803"}],[{"value":"Israel"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"65.3900"},{"value":"1,620,914"},{"value":"4,086.5221"}],[{"value":"Italy"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"65.9400"},{"value":"47,666,000"},{"value":"4,931.4042"}],[{"value":"Jamaica"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"58.5300"},{"value":"1,426,095"},{"value":"2,898.5309"}],[{"value":"Japan"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"63.0300"},{"value":"86,459,025"},{"value":"3,216.9563"}],[{"value":"Jordan"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"43.1580"},{"value":"607,914"},{"value":"1,546.9078"}],[{"value":"Kenya"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"42.2700"},{"value":"6,464,046"},{"value":"853.5409"}],[{"value":"Korea, Dem. Rep."},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"50.0560"},{"value":"8,865,488"},{"value":"1,088.2778"}],[{"value":"Korea, Rep."},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"47.4530"},{"value":"20,947,571"},{"value":"1,030.5922"}],[{"value":"Kuwait"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"55.5650"},{"value":"160,000"},{"value":"108,382.3529"}],[{"value":"Lebanon"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"55.9280"},{"value":"1,439,529"},{"value":"4,834.8041"}],[{"value":"Lesotho"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"42.1380"},{"value":"748,747"},{"value":"298.8462"}],[{"value":"Liberia"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"38.4800"},{"value":"863,308"},{"value":"575.5730"}],[{"value":"Libya"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"42.7230"},{"value":"1,019,729"},{"value":"2,387.5481"}],[{"value":"Madagascar"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"36.6810"},{"value":"4,762,912"},{"value":"1,443.0117"}],[{"value":"Malawi"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"36.2560"},{"value":"2,917,802"},{"value":"369.1651"}],[{"value":"Malaysia"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"48.4630"},{"value":"6,748,378"},{"value":"1,831.1329"}],[{"value":"Mali"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"33.6850"},{"value":"3,838,168"},{"value":"452.3370"}],[{"value":"Mauritania"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"40.5430"},{"value":"1,022,556"},{"value":"743.1159"}],[{"value":"Mauritius"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"50.9860"},{"value":"516,556"},{"value":"1,967.9557"}],[{"value":"Mexico"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"50.7890"},{"value":"30,144,317"},{"value":"3,478.1255"}],[{"value":"Mongolia"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"42.2440"},{"value":"800,663"},{"value":"786.5669"}],[{"value":"Montenegro"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"59.1640"},{"value":"413,834"},{"value":"2,647.5856"}],[{"value":"Morocco"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"42.8730"},{"value":"9,939,217"},{"value":"1,688.2036"}],[{"value":"Mozambique"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"31.2860"},{"value":"6,446,316"},{"value":"468.5260"}],[{"value":"Myanmar"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"36.3190"},{"value":"20,092,996"},{"value":"331.0000"}],[{"value":"Namibia"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"41.7250"},{"value":"485,831"},{"value":"2,423.7804"}],[{"value":"Nepal"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"36.1570"},{"value":"9,182,536"},{"value":"545.8657"}],[{"value":"Netherlands"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"72.1300"},{"value":"10,381,988"},{"value":"8,941.5719"}],[{"value":"New Zealand"},{"value":"Oceania"},{"value":"1,952"},{"value":"1"},{"value":"69.3900"},{"value":"1,994,794"},{"value":"10,556.5757"}],[{"value":"Nicaragua"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"42.3140"},{"value":"1,165,790"},{"value":"3,112.3639"}],[{"value":"Niger"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"37.4440"},{"value":"3,379,468"},{"value":"761.8794"}],[{"value":"Nigeria"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"36.3240"},{"value":"33,119,096"},{"value":"1,077.2819"}],[{"value":"Norway"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"72.6700"},{"value":"3,327,728"},{"value":"10,095.4217"}],[{"value":"Oman"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"37.5780"},{"value":"507,833"},{"value":"1,828.2303"}],[{"value":"Pakistan"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"43.4360"},{"value":"41,346,560"},{"value":"684.5971"}],[{"value":"Panama"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"55.1910"},{"value":"940,080"},{"value":"2,480.3803"}],[{"value":"Paraguay"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"62.6490"},{"value":"1,555,876"},{"value":"1,952.3087"}]]}},"gapminder_hierarchy":{"type":"Table","data":{"columns":[{"name":"Country","type":"java.lang.String"},{"name":"Continent","type":"java.lang.String"},{"name":"Year","type":"long"},{"name":"Month","type":"long"},{"name":"LifeExp","type":"double"},{"name":"Pop","type":"long"},{"name":"GdpPerCap","type":"double"},{"name":"World","type":"java.lang.String"}],"rows":[[{"value":"Afghanistan"},{"value":"Asia"},{"value":"1,960"},{"value":"12"},{"value":"31.6363"},{"value":"10,044,751"},{"value":"846.1137"},{"value":"World"}],[{"value":"Albania"},{"value":"Europe"},{"value":"1,960"},{"value":"12"},{"value":"63.6197"},{"value":"1,673,617"},{"value":"2,232.5913"},{"value":"World"}],[{"value":"Algeria"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"47.7358"},{"value":"10,842,761"},{"value":"2,651.1680"},{"value":"World"}],[{"value":"Angola"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"33.5665"},{"value":"4,768,673"},{"value":"4,173.6539"},{"value":"World"}],[{"value":"Argentina"},{"value":"Americas"},{"value":"1,960"},{"value":"12"},{"value":"64.9810"},{"value":"20,921,247"},{"value":"7,073.2989"},{"value":"World"}],[{"value":"Australia"},{"value":"Oceania"},{"value":"1,960"},{"value":"12"},{"value":"70.8000"},{"value":"10,560,448"},{"value":"11,942.5851"},{"value":"World"}],[{"value":"Austria"},{"value":"Europe"},{"value":"1,960"},{"value":"12"},{"value":"69.0937"},{"value":"7,094,330"},{"value":"10,337.2944"},{"value":"World"}],[{"value":"Bahrain"},{"value":"Asia"},{"value":"1,960"},{"value":"12"},{"value":"56.2533"},{"value":"164,668"},{"value":"12,511.1554"},{"value":"World"}],[{"value":"Bangladesh"},{"value":"Asia"},{"value":"1,960"},{"value":"12"},{"value":"40.8113"},{"value":"55,653,294"},{"value":"680.9890"},{"value":"World"}],[{"value":"Belgium"},{"value":"Europe"},{"value":"1,960"},{"value":"12"},{"value":"70.0312"},{"value":"9,168,721"},{"value":"10,714.6868"},{"value":"World"}],[{"value":"Benin"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"42.1283"},{"value":"2,102,772"},{"value":"951.6878"},{"value":"World"}],[{"value":"Bolivia"},{"value":"Americas"},{"value":"1,960"},{"value":"12"},{"value":"43.0948"},{"value":"3,511,112"},{"value":"2,169.4272"},{"value":"World"}],[{"value":"Bosnia and Herzegovina"},{"value":"Europe"},{"value":"1,960"},{"value":"12"},{"value":"61.1760"},{"value":"3,289,850"},{"value":"1,632.6165"},{"value":"World"}],[{"value":"Botswana"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"51.1079"},{"value":"504,504"},{"value":"969.4793"},{"value":"World"}],[{"value":"Brazil"},{"value":"Americas"},{"value":"1,960"},{"value":"12"},{"value":"55.1493"},{"value":"73,766,943"},{"value":"3,152.5882"},{"value":"World"}],[{"value":"Bulgaria"},{"value":"Europe"},{"value":"1,960"},{"value":"12"},{"value":"68.8817"},{"value":"7,934,579"},{"value":"3,984.4433"},{"value":"World"}],[{"value":"Burkina Faso"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"37.1839"},{"value":"4,874,952"},{"value":"699.6908"},{"value":"World"}],[{"value":"Burundi"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"41.7174"},{"value":"2,898,129"},{"value":"360.4815"},{"value":"World"}],[{"value":"Cambodia"},{"value":"Asia"},{"value":"1,960"},{"value":"12"},{"value":"42.9711"},{"value":"5,918,718"},{"value":"483.2907"},{"value":"World"}],[{"value":"Cameroon"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"42.1631"},{"value":"5,699,662"},{"value":"1,380.8529"},{"value":"World"}],[{"value":"Canada"},{"value":"Americas"},{"value":"1,960"},{"value":"12"},{"value":"71.0097"},{"value":"18,557,782"},{"value":"13,251.7695"},{"value":"World"}],[{"value":"Central African Republic"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"39.0393"},{"value":"1,495,053"},{"value":"1,192.5868"},{"value":"World"}],[{"value":"Chad"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"41.3184"},{"value":"3,095,045"},{"value":"1,372.1978"},{"value":"World"}],[{"value":"Chile"},{"value":"Americas"},{"value":"1,960"},{"value":"12"},{"value":"57.5232"},{"value":"7,763,478"},{"value":"4,475.0088"},{"value":"World"}],[{"value":"China"},{"value":"Asia"},{"value":"1,960"},{"value":"12"},{"value":"45.8117"},{"value":"659,624,900"},{"value":"506.8085"},{"value":"World"}],[{"value":"Colombia"},{"value":"Americas"},{"value":"1,960"},{"value":"12"},{"value":"57.2683"},{"value":"16,463,042"},{"value":"2,455.8329"},{"value":"World"}],[{"value":"Comoros"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"44.0322"},{"value":"187,191"},{"value":"1,364.2900"},{"value":"World"}],[{"value":"Congo, Dem. Rep."},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"41.8035"},{"value":"17,072,925"},{"value":"898.3828"},{"value":"World"}],[{"value":"Congo, Rep."},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"47.7022"},{"value":"1,024,640"},{"value":"2,432.3424"},{"value":"World"}],[{"value":"Costa Rica"},{"value":"Americas"},{"value":"1,960"},{"value":"12"},{"value":"62.2319"},{"value":"1,294,728"},{"value":"3,358.9030"},{"value":"World"}],[{"value":"Cote d'Ivoire"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"44.3968"},{"value":"3,717,053"},{"value":"1,679.4752"},{"value":"World"}],[{"value":"Croatia"},{"value":"Europe"},{"value":"1,960"},{"value":"12"},{"value":"66.6187"},{"value":"4,058,072"},{"value":"5,230.9640"},{"value":"World"}],[{"value":"Cuba"},{"value":"Americas"},{"value":"1,960"},{"value":"12"},{"value":"64.6131"},{"value":"7,121,422"},{"value":"5,378.2299"},{"value":"World"}],[{"value":"Czech Republic"},{"value":"Europe"},{"value":"1,960"},{"value":"12"},{"value":"69.7115"},{"value":"9,597,202"},{"value":"9,729.4204"},{"value":"World"}],[{"value":"Denmark"},{"value":"Europe"},{"value":"1,960"},{"value":"12"},{"value":"72.2330"},{"value":"4,612,434"},{"value":"13,045.1884"},{"value":"World"}],[{"value":"Djibouti"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"39.1806"},{"value":"85,988"},{"value":"2,987.1849"},{"value":"World"}],[{"value":"Dominican Republic"},{"value":"Americas"},{"value":"1,960"},{"value":"12"},{"value":"52.6723"},{"value":"3,338,547"},{"value":"1,636.6282"},{"value":"World"}],[{"value":"Ecuador"},{"value":"Americas"},{"value":"1,960"},{"value":"12"},{"value":"53.9285"},{"value":"4,546,654"},{"value":"4,019.9078"},{"value":"World"}],[{"value":"Egypt"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"46.4399"},{"value":"27,487,869"},{"value":"1,642.5447"},{"value":"World"}],[{"value":"El Salvador"},{"value":"Americas"},{"value":"1,960"},{"value":"12"},{"value":"51.4973"},{"value":"2,662,779"},{"value":"3,699.8262"},{"value":"World"}],[{"value":"Equatorial Guinea"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"37.1596"},{"value":"245,689"},{"value":"548.8804"},{"value":"World"}],[{"value":"Eritrea"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"39.7006"},{"value":"1,639,750"},{"value":"373.0152"},{"value":"World"}],[{"value":"Ethiopia"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"39.3241"},{"value":"24,640,591"},{"value":"410.6701"},{"value":"World"}],[{"value":"Finland"},{"value":"Europe"},{"value":"1,960"},{"value":"12"},{"value":"68.4770"},{"value":"4,455,164"},{"value":"8,976.1167"},{"value":"World"}],[{"value":"France"},{"value":"Europe"},{"value":"1,960"},{"value":"12"},{"value":"70.1677"},{"value":"46,514,487"},{"value":"10,149.3279"},{"value":"World"}],[{"value":"Gabon"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"40.1662"},{"value":"451,164"},{"value":"6,272.8193"},{"value":"World"}],[{"value":"Gambia"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"33.4993"},{"value":"362,998"},{"value":"582.5935"},{"value":"World"}],[{"value":"Germany"},{"value":"Europe"},{"value":"1,960"},{"value":"12"},{"value":"70.0400"},{"value":"73,149,773"},{"value":"12,314.2917"},{"value":"World"}],[{"value":"Ghana"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"46.0895"},{"value":"7,146,390"},{"value":"1,158.3039"},{"value":"World"}],[{"value":"Greece"},{"value":"Europe"},{"value":"1,960"},{"value":"12"},{"value":"69.1525"},{"value":"8,371,963"},{"value":"5,778.6644"},{"value":"World"}],[{"value":"Guatemala"},{"value":"Americas"},{"value":"1,960"},{"value":"12"},{"value":"46.3447"},{"value":"4,085,795"},{"value":"2,721.5026"},{"value":"World"}],[{"value":"Guinea"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"35.4941"},{"value":"3,082,960"},{"value":"662.5172"},{"value":"World"}],[{"value":"Guinea-Bissau"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"34.2716"},{"value":"622,030"},{"value":"502.4815"},{"value":"World"}],[{"value":"Haiti"},{"value":"Americas"},{"value":"1,960"},{"value":"12"},{"value":"42.9630"},{"value":"3,799,437"},{"value":"1,781.4871"},{"value":"World"}],[{"value":"Honduras"},{"value":"Americas"},{"value":"1,960"},{"value":"12"},{"value":"47.3095"},{"value":"2,020,878"},{"value":"2,275.8452"},{"value":"World"}],[{"value":"Hong Kong, China"},{"value":"Asia"},{"value":"1,960"},{"value":"12"},{"value":"67.0217"},{"value":"3,181,938"},{"value":"4,462.2077"},{"value":"World"}],[{"value":"Hungary"},{"value":"Europe"},{"value":"1,960"},{"value":"12"},{"value":"67.6242"},{"value":"10,014,467"},{"value":"7,223.1542"},{"value":"World"}],[{"value":"Iceland"},{"value":"Europe"},{"value":"1,960"},{"value":"12"},{"value":"73.6345"},{"value":"178,382"},{"value":"10,110.4916"},{"value":"World"}],[{"value":"India"},{"value":"Asia"},{"value":"1,960"},{"value":"12"},{"value":"42.8779"},{"value":"444,250,000"},{"value":"643.5520"},{"value":"World"}],[{"value":"Indonesia"},{"value":"Asia"},{"value":"1,960"},{"value":"12"},{"value":"41.9547"},{"value":"97,098,800"},{"value":"851.3720"},{"value":"World"}],[{"value":"Iran"},{"value":"Asia"},{"value":"1,960"},{"value":"12"},{"value":"48.8605"},{"value":"22,206,233"},{"value":"3,992.9642"},{"value":"World"}],[{"value":"Iraq"},{"value":"Asia"},{"value":"1,960"},{"value":"12"},{"value":"50.8027"},{"value":"7,025,410"},{"value":"7,884.0502"},{"value":"World"}],[{"value":"Ireland"},{"value":"Europe"},{"value":"1,960"},{"value":"12"},{"value":"69.9888"},{"value":"2,840,448"},{"value":"6,407.8848"},{"value":"World"}],[{"value":"Israel"},{"value":"Asia"},{"value":"1,960"},{"value":"12"},{"value":"69.0542"},{"value":"2,231,495"},{"value":"6,732.8877"},{"value":"World"}],[{"value":"Italy"},{"value":"Europe"},{"value":"1,960"},{"value":"12"},{"value":"68.9302"},{"value":"50,483,273"},{"value":"7,811.3483"},{"value":"World"}],[{"value":"Jamaica"},{"value":"Americas"},{"value":"1,960"},{"value":"12"},{"value":"64.9600"},{"value":"1,636,953"},{"value":"5,140.0315"},{"value":"World"}],[{"value":"Japan"},{"value":"Asia"},{"value":"1,960"},{"value":"12"},{"value":"68.0302"},{"value":"94,906,862"},{"value":"6,087.2092"},{"value":"World"}],[{"value":"Jordan"},{"value":"Asia"},{"value":"1,960"},{"value":"12"},{"value":"47.5937"},{"value":"893,042"},{"value":"2,247.9246"},{"value":"World"}],[{"value":"Kenya"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"47.2420"},{"value":"8,413,405"},{"value":"907.2520"},{"value":"World"}],[{"value":"Korea, Dem. Rep."},{"value":"Asia"},{"value":"1,960"},{"value":"12"},{"value":"56.0981"},{"value":"10,591,170"},{"value":"1,610.7392"},{"value":"World"}],[{"value":"Korea, Rep."},{"value":"Asia"},{"value":"1,960"},{"value":"12"},{"value":"54.7263"},{"value":"25,595,077"},{"value":"1,525.7817"},{"value":"World"}],[{"value":"Kuwait"},{"value":"Asia"},{"value":"1,960"},{"value":"12"},{"value":"59.9420"},{"value":"326,758"},{"value":"99,372.1997"},{"value":"World"}],[{"value":"Lebanon"},{"value":"Asia"},{"value":"1,960"},{"value":"12"},{"value":"61.5296"},{"value":"1,834,970"},{"value":"5,795.8596"},{"value":"World"}],[{"value":"Lesotho"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"47.1620"},{"value":"875,852"},{"value":"395.3765"},{"value":"World"}],[{"value":"Liberia"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"40.2819"},{"value":"1,083,146"},{"value":"631.3297"},{"value":"World"}],[{"value":"Libya"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"47.2622"},{"value":"1,389,801"},{"value":"6,040.1358"},{"value":"World"}],[{"value":"Madagascar"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"40.4184"},{"value":"5,590,301"},{"value":"1,631.6472"},{"value":"World"}],[{"value":"Malawi"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"38.1494"},{"value":"3,540,344"},{"value":"425.4026"},{"value":"World"}],[{"value":"Malaysia"},{"value":"Asia"},{"value":"1,960"},{"value":"12"},{"value":"54.9494"},{"value":"8,653,502"},{"value":"1,987.7411"},{"value":"World"}],[{"value":"Mali"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"36.5831"},{"value":"4,593,200"},{"value":"494.9194"},{"value":"World"}],[{"value":"Mauritania"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"43.8342"},{"value":"1,131,611"},{"value":"1,010.4446"},{"value":"World"}],[{"value":"Mauritius"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"59.7787"},{"value":"681,256"},{"value":"2,421.8111"},{"value":"World"}],[{"value":"Mexico"},{"value":"Americas"},{"value":"1,960"},{"value":"12"},{"value":"57.6254"},{"value":"39,798,532"},{"value":"4,484.0958"},{"value":"World"}],[{"value":"Mongolia"},{"value":"Asia"},{"value":"1,960"},{"value":"12"},{"value":"47.6004"},{"value":"982,515"},{"value":"1,025.2208"},{"value":"World"}],[{"value":"Montenegro"},{"value":"Europe"},{"value":"1,960"},{"value":"12"},{"value":"63.2340"},{"value":"467,660"},{"value":"4,440.0048"},{"value":"World"}],[{"value":"Morocco"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"47.3821"},{"value":"12,699,049"},{"value":"1,582.7441"},{"value":"World"}],[{"value":"Mozambique"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"35.6449"},{"value":"7,626,247"},{"value":"543.4481"},{"value":"World"}],[{"value":"Myanmar"},{"value":"Asia"},{"value":"1,960"},{"value":"12"},{"value":"44.4140"},{"value":"23,222,208"},{"value":"379.7667"},{"value":"World"}],[{"value":"Namibia"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"47.7013"},{"value":"605,508"},{"value":"3,053.6660"},{"value":"World"}],[{"value":"Nepal"},{"value":"Asia"},{"value":"1,960"},{"value":"12"},{"value":"39.0232"},{"value":"10,191,285"},{"value":"640.5971"},{"value":"World"}],[{"value":"Netherlands"},{"value":"Europe"},{"value":"1,960"},{"value":"12"},{"value":"73.1780"},{"value":"11,636,839"},{"value":"12,462.6741"},{"value":"World"}],[{"value":"New Zealand"},{"value":"Oceania"},{"value":"1,960"},{"value":"12"},{"value":"71.0277"},{"value":"2,432,402"},{"value":"12,974.5501"},{"value":"World"}],[{"value":"Nicaragua"},{"value":"Americas"},{"value":"1,960"},{"value":"12"},{"value":"47.9387"},{"value":"1,540,380"},{"value":"3,596.0256"},{"value":"World"}],[{"value":"Niger"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"39.2944"},{"value":"3,992,846"},{"value":"962.6135"},{"value":"World"}],[{"value":"Nigeria"},{"value":"Africa"},{"value":"1,960"},{"value":"12"},{"value":"39.0224"},{"value":"40,853,449"},{"value":"1,140.0216"},{"value":"World"}],[{"value":"Norway"},{"value":"Europe"},{"value":"1,960"},{"value":"12"},{"value":"73.4635"},{"value":"3,607,073"},{"value":"13,061.1753"},{"value":"World"}],[{"value":"Oman"},{"value":"Asia"},{"value":"1,960"},{"value":"12"},{"value":"42.4966"},{"value":"613,823"},{"value":"2,776.8949"},{"value":"World"}],[{"value":"Pakistan"},{"value":"Asia"},{"value":"1,960"},{"value":"12"},{"value":"47.2122"},{"value":"51,709,513"},{"value":"791.1532"},{"value":"World"}],[{"value":"Panama"},{"value":"Americas"},{"value":"1,960"},{"value":"12"},{"value":"61.2502"},{"value":"1,182,744"},{"value":"3,412.0134"},{"value":"World"}],[{"value":"Paraguay"},{"value":"Americas"},{"value":"1,960"},{"value":"12"},{"value":"64.1086"},{"value":"1,958,049"},{"value":"2,125.9548"},{"value":"World"}]]}},"fig":{"type":"deephaven.plot.express.DeephavenFigure","data":{"data":[{"branchvalues":"total","domain":{"x":[0,1],"y":[0,1]},"hovertemplate":"Names=%{label}
Pop=%{value}
Parents=%{parent}
Ids=%{id}","ids":["World/Asia/Afghanistan","World/Europe/Albania","World/Africa/Algeria","World/Africa/Angola","World/Americas/Argentina","World/Oceania/Australia","World/Europe/Austria","World/Asia/Bahrain","World/Asia/Bangladesh","World/Europe/Belgium","World/Africa/Benin","World/Americas/Bolivia","World/Europe/Bosnia and Herzegovina","World/Africa/Botswana","World/Americas/Brazil","World/Europe/Bulgaria","World/Africa/Burkina Faso","World/Africa/Burundi","World/Asia/Cambodia","World/Africa/Cameroon","World/Americas/Canada","World/Africa/Central African Republic","World/Africa/Chad","World/Americas/Chile","World/Asia/China","World/Americas/Colombia","World/Africa/Comoros","World/Africa/Congo, Dem. Rep.","World/Africa/Congo, Rep.","World/Americas/Costa Rica","World/Africa/Cote d'Ivoire","World/Europe/Croatia","World/Americas/Cuba","World/Europe/Czech Republic","World/Europe/Denmark","World/Africa/Djibouti","World/Americas/Dominican Republic","World/Americas/Ecuador","World/Africa/Egypt","World/Americas/El Salvador","World/Africa/Equatorial Guinea","World/Africa/Eritrea","World/Africa/Ethiopia","World/Europe/Finland","World/Europe/France","World/Africa/Gabon","World/Africa/Gambia","World/Europe/Germany","World/Africa/Ghana","World/Europe/Greece","World/Americas/Guatemala","World/Africa/Guinea","World/Africa/Guinea-Bissau","World/Americas/Haiti","World/Americas/Honduras","World/Asia/Hong Kong, China","World/Europe/Hungary","World/Europe/Iceland","World/Asia/India","World/Asia/Indonesia","World/Asia/Iran","World/Asia/Iraq","World/Europe/Ireland","World/Asia/Israel","World/Europe/Italy","World/Americas/Jamaica","World/Asia/Japan","World/Asia/Jordan","World/Africa/Kenya","World/Asia/Korea, Dem. Rep.","World/Asia/Korea, Rep.","World/Asia/Kuwait","World/Asia/Lebanon","World/Africa/Lesotho","World/Africa/Liberia","World/Africa/Libya","World/Africa/Madagascar","World/Africa/Malawi","World/Asia/Malaysia","World/Africa/Mali","World/Africa/Mauritania","World/Africa/Mauritius","World/Americas/Mexico","World/Asia/Mongolia","World/Europe/Montenegro","World/Africa/Morocco","World/Africa/Mozambique","World/Asia/Myanmar","World/Africa/Namibia","World/Asia/Nepal","World/Europe/Netherlands","World/Oceania/New Zealand","World/Americas/Nicaragua","World/Africa/Niger","World/Africa/Nigeria","World/Europe/Norway","World/Asia/Oman","World/Asia/Pakistan","World/Americas/Panama","World/Americas/Paraguay","World/Americas/Peru","World/Asia/Philippines","World/Europe/Poland","World/Europe/Portugal","World/Americas/Puerto Rico","World/Africa/Reunion","World/Europe/Romania","World/Africa/Rwanda","World/Africa/Sao Tome and Principe","World/Asia/Saudi Arabia","World/Africa/Senegal","World/Europe/Serbia","World/Africa/Sierra Leone","World/Asia/Singapore","World/Europe/Slovak Republic","World/Europe/Slovenia","World/Africa/Somalia","World/Africa/South Africa","World/Europe/Spain","World/Asia/Sri Lanka","World/Africa/Sudan","World/Africa/Swaziland","World/Europe/Sweden","World/Europe/Switzerland","World/Asia/Syria","World/Asia/Taiwan","World/Africa/Tanzania","World/Asia/Thailand","World/Africa/Togo","World/Americas/Trinidad and Tobago","World/Africa/Tunisia","World/Europe/Turkey","World/Africa/Uganda","World/Europe/United Kingdom","World/Americas/United States","World/Americas/Uruguay","World/Americas/Venezuela","World/Asia/Vietnam","World/Asia/West Bank and Gaza","World/Asia/Yemen, Rep.","World/Africa/Zambia","World/Africa/Zimbabwe","World/Asia","World/Europe","World/Africa","World/Americas","World/Oceania","World"],"labels":["Afghanistan","Albania","Algeria","Angola","Argentina","Australia","Austria","Bahrain","Bangladesh","Belgium","Benin","Bolivia","Bosnia and Herzegovina","Botswana","Brazil","Bulgaria","Burkina Faso","Burundi","Cambodia","Cameroon","Canada","Central African Republic","Chad","Chile","China","Colombia","Comoros","Congo, Dem. Rep.","Congo, Rep.","Costa Rica","Cote d'Ivoire","Croatia","Cuba","Czech Republic","Denmark","Djibouti","Dominican Republic","Ecuador","Egypt","El Salvador","Equatorial Guinea","Eritrea","Ethiopia","Finland","France","Gabon","Gambia","Germany","Ghana","Greece","Guatemala","Guinea","Guinea-Bissau","Haiti","Honduras","Hong Kong, China","Hungary","Iceland","India","Indonesia","Iran","Iraq","Ireland","Israel","Italy","Jamaica","Japan","Jordan","Kenya","Korea, Dem. Rep.","Korea, Rep.","Kuwait","Lebanon","Lesotho","Liberia","Libya","Madagascar","Malawi","Malaysia","Mali","Mauritania","Mauritius","Mexico","Mongolia","Montenegro","Morocco","Mozambique","Myanmar","Namibia","Nepal","Netherlands","New Zealand","Nicaragua","Niger","Nigeria","Norway","Oman","Pakistan","Panama","Paraguay","Peru","Philippines","Poland","Portugal","Puerto Rico","Reunion","Romania","Rwanda","Sao Tome and Principe","Saudi Arabia","Senegal","Serbia","Sierra Leone","Singapore","Slovak Republic","Slovenia","Somalia","South Africa","Spain","Sri Lanka","Sudan","Swaziland","Sweden","Switzerland","Syria","Taiwan","Tanzania","Thailand","Togo","Trinidad and Tobago","Tunisia","Turkey","Uganda","United Kingdom","United States","Uruguay","Venezuela","Vietnam","West Bank and Gaza","Yemen, Rep.","Zambia","Zimbabwe","Asia","Europe","Africa","Americas","Oceania","World"],"name":"","parents":["World/Asia","World/Europe","World/Africa","World/Africa","World/Americas","World/Oceania","World/Europe","World/Asia","World/Asia","World/Europe","World/Africa","World/Americas","World/Europe","World/Africa","World/Americas","World/Europe","World/Africa","World/Africa","World/Asia","World/Africa","World/Americas","World/Africa","World/Africa","World/Americas","World/Asia","World/Americas","World/Africa","World/Africa","World/Africa","World/Americas","World/Africa","World/Europe","World/Americas","World/Europe","World/Europe","World/Africa","World/Americas","World/Americas","World/Africa","World/Americas","World/Africa","World/Africa","World/Africa","World/Europe","World/Europe","World/Africa","World/Africa","World/Europe","World/Africa","World/Europe","World/Americas","World/Africa","World/Africa","World/Americas","World/Americas","World/Asia","World/Europe","World/Europe","World/Asia","World/Asia","World/Asia","World/Asia","World/Europe","World/Asia","World/Europe","World/Americas","World/Asia","World/Asia","World/Africa","World/Asia","World/Asia","World/Asia","World/Asia","World/Africa","World/Africa","World/Africa","World/Africa","World/Africa","World/Asia","World/Africa","World/Africa","World/Africa","World/Americas","World/Asia","World/Europe","World/Africa","World/Africa","World/Asia","World/Africa","World/Asia","World/Europe","World/Oceania","World/Americas","World/Africa","World/Africa","World/Europe","World/Asia","World/Asia","World/Americas","World/Americas","World/Americas","World/Asia","World/Europe","World/Europe","World/Americas","World/Africa","World/Europe","World/Africa","World/Africa","World/Asia","World/Africa","World/Europe","World/Africa","World/Asia","World/Europe","World/Europe","World/Africa","World/Africa","World/Europe","World/Asia","World/Africa","World/Africa","World/Europe","World/Europe","World/Asia","World/Asia","World/Africa","World/Asia","World/Africa","World/Americas","World/Africa","World/Europe","World/Africa","World/Europe","World/Americas","World/Americas","World/Americas","World/Asia","World/Asia","World/Asia","World/Africa","World/Africa","World","World","World","World","World",""],"values":[10061853,1677811,10854930,4773084,20949134,10578488,7097063,165221,55744525,9172542,2106551,3517482,3294400,505139,73941746,7940608,4878389,2903036,5931402,5706891,18590710,1497239,3099305,7778692,660097600,16505107,187537,17104734,1026431,1298610,3725926,4059494,7131649,9598977,4615085,86289,3347384,4557043,27540595,2669311,245960,1641817,24679420,4457954,46561373,451510,363846,73195107,7162456,8377830,4095262,3087348,622475,3805644,2026208,3191420,10018200,178664,445000000,97247200,22257600,7041937,2839644,2237603,50510960,1639120,94978007,896159,8433801,10616271,25658556,329182,1838961,877182,1085427,1393806,5598995,3547134,8672955,4600674,1132776,682776,39900298,984651,468188,12726553,7638762,23253918,606730,10202113,11649828,2436721,1544243,3999243,40931749,3609523,614927,51816526,1185281,1962031,10242420,29474650,29910763,8979370,2410437,348860,18510442,3005410,64541,4838353,3355104,7547075,2433452,1689346,4158763,1572984,3020205,17915635,30894772,10163258,10897260,361353,7522031,5558000,4697678,11567993,10581732,28419101,1493967,862978,4219411,28965144,7486138,52919600,183627200,2563765,7855234,32836621,1120595,5995683,3340000,4151457,1669641865,455862195,290181041,424006989,13015209,2852707299],"type":"icicle"}],"layout":{"legend":{"tracegroupgap":0},"template":{"data":{"barpolar":[{"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"type":"carpet"}],"choropleth":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"choropleth"}],"contourcarpet":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"contourcarpet"}],"contour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"contour"}],"heatmap":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"heatmap"}],"histogram2dcontour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"histogram2dcontour"}],"histogram2d":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"histogram2d"}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"mesh3d":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"mesh3d"}],"parcoords":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"parcoords"}],"pie":[{"automargin":true,"type":"pie"}],"scatter3d":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatter3d"}],"scattercarpet":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattercarpet"}],"scattergeo":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergeo"}],"scattergl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergl"}],"scattermapbox":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermapbox"}],"scattermap":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermap"}],"scatterpolargl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolargl"}],"scatterpolar":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolar"}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"scatterternary":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterternary"}],"surface":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"surface"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}]},"layout":{"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"autotypenumbers":"strict","coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]],"sequential":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"sequentialminus":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]]},"colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"geo":{"bgcolor":"white","lakecolor":"white","landcolor":"#E5ECF6","showlakes":true,"showland":true,"subunitcolor":"white"},"hoverlabel":{"align":"left"},"hovermode":"closest","mapbox":{"style":"light"},"paper_bgcolor":"white","plot_bgcolor":"#E5ECF6","polar":{"angularaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"bgcolor":"#E5ECF6","radialaxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"scene":{"xaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"},"yaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"},"zaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"ternary":{"aaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"baxis":{"gridcolor":"white","linecolor":"white","ticks":""},"bgcolor":"#E5ECF6","caxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"title":{"x":0.05},"xaxis":{"automargin":true,"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","zerolinewidth":2},"yaxis":{"automargin":true,"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","zerolinewidth":2}}}},"isDefaultTemplate":true}}}} \ No newline at end of file diff --git a/plugins/plotly-express/docs/snapshots/53d9f90497fd4b6b273532fe5b681d7c.json b/plugins/plotly-express/docs/snapshots/53d9f90497fd4b6b273532fe5b681d7c.json new file mode 100644 index 000000000..2439ac780 --- /dev/null +++ b/plugins/plotly-express/docs/snapshots/53d9f90497fd4b6b273532fe5b681d7c.json @@ -0,0 +1 @@ +{"file":"events.md","objects":{"stocks":{"type":"Table","data":{"columns":[{"name":"Timestamp","type":"java.time.Instant"},{"name":"Sym","type":"java.lang.String"},{"name":"Exchange","type":"java.lang.String"},{"name":"Size","type":"long"},{"name":"Price","type":"double"},{"name":"Dollars","type":"double"},{"name":"Side","type":"java.lang.String"},{"name":"SPet500","type":"double"},{"name":"Index","type":"long"},{"name":"Random","type":"double"}],"rows":[[{"value":"2018-06-01 08:00:00.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,150"},{"value":"102.4700"},{"value":"322,780.5000"},{"value":"buy"},{"value":"150.8910"},{"value":"1"},{"value":"1.4656"}],[{"value":"2018-06-01 08:00:00.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"77"},{"value":"102.5100"},{"value":"7,893.2700"},{"value":"buy"},{"value":"151.3228"},{"value":"3"},{"value":"0.4242"}],[{"value":"2018-06-01 08:00:00.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"848"},{"value":"102.4500"},{"value":"86,877.6000"},{"value":"sell"},{"value":"151.3451"},{"value":"4"},{"value":"-0.9462"}],[{"value":"2018-06-01 08:00:00.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"102.5300"},{"value":"10,253.0000"},{"value":"buy"},{"value":"151.2862"},{"value":"8"},{"value":"1.3088"}],[{"value":"2018-06-01 08:00:01.300"},{"value":"CAT"},{"value":"PETX"},{"value":"1,090"},{"value":"102.7000"},{"value":"111,943.0000"},{"value":"buy"},{"value":"151.2854"},{"value":"13"},{"value":"1.0280"}],[{"value":"2018-06-01 08:00:01.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,600"},{"value":"102.9900"},{"value":"370,764.0000"},{"value":"buy"},{"value":"151.6178"},{"value":"14"},{"value":"1.5331"}],[{"value":"2018-06-01 08:00:01.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,350"},{"value":"103.4000"},{"value":"346,390.0000"},{"value":"buy"},{"value":"153.1590"},{"value":"18"},{"value":"1.4963"}],[{"value":"2018-06-01 08:00:02.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,780"},{"value":"103.9200"},{"value":"392,817.6000"},{"value":"buy"},{"value":"154.4713"},{"value":"21"},{"value":"1.5570"}],[{"value":"2018-06-01 08:00:02.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"104.2600"},{"value":"10,426.0000"},{"value":"sell"},{"value":"156.9481"},{"value":"28"},{"value":"-1.4200"}],[{"value":"2018-06-01 08:00:03.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,510"},{"value":"104.6700"},{"value":"158,051.7000"},{"value":"buy"},{"value":"156.3789"},{"value":"31"},{"value":"1.1473"}],[{"value":"2018-06-01 08:00:03.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"21"},{"value":"105.0200"},{"value":"2,205.4200"},{"value":"sell"},{"value":"156.3644"},{"value":"32"},{"value":"-0.2738"}],[{"value":"2018-06-01 08:00:03.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,310"},{"value":"105.4400"},{"value":"138,126.4000"},{"value":"buy"},{"value":"156.6358"},{"value":"39"},{"value":"1.0928"}],[{"value":"2018-06-01 08:00:04.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"1"},{"value":"105.8200"},{"value":"105.8200"},{"value":"buy"},{"value":"156.4396"},{"value":"43"},{"value":"0.0791"}],[{"value":"2018-06-01 08:00:04.500"},{"value":"CAT"},{"value":"PETX"},{"value":"2"},{"value":"106.1800"},{"value":"212.3600"},{"value":"buy"},{"value":"156.0723"},{"value":"45"},{"value":"0.1217"}],[{"value":"2018-06-01 08:00:04.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"5,421"},{"value":"106.3400"},{"value":"576,469.1400"},{"value":"sell"},{"value":"154.2929"},{"value":"49"},{"value":"-1.7566"}],[{"value":"2018-06-01 08:00:05.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,130"},{"value":"106.5900"},{"value":"120,446.7000"},{"value":"buy"},{"value":"152.9825"},{"value":"51"},{"value":"1.0424"}],[{"value":"2018-06-01 08:00:05.500"},{"value":"CAT"},{"value":"NYPE"},{"value":"123"},{"value":"106.7600"},{"value":"13,131.4800"},{"value":"sell"},{"value":"151.6401"},{"value":"55"},{"value":"-0.4972"}],[{"value":"2018-06-01 08:00:05.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,990"},{"value":"107.0300"},{"value":"212,989.7000"},{"value":"buy"},{"value":"151.0393"},{"value":"57"},{"value":"1.2576"}],[{"value":"2018-06-01 08:00:05.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"140"},{"value":"107.3300"},{"value":"15,026.2000"},{"value":"buy"},{"value":"151.0546"},{"value":"59"},{"value":"0.5181"}],[{"value":"2018-06-01 08:00:06.600"},{"value":"CAT"},{"value":"NYPE"},{"value":"534"},{"value":"107.6800"},{"value":"57,501.1200"},{"value":"buy"},{"value":"151.7980"},{"value":"66"},{"value":"0.8109"}],[{"value":"2018-06-01 08:00:06.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"711"},{"value":"108.0800"},{"value":"76,844.8800"},{"value":"buy"},{"value":"152.0942"},{"value":"67"},{"value":"0.8923"}],[{"value":"2018-06-01 08:00:07.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"7,480"},{"value":"108.6300"},{"value":"812,552.4000"},{"value":"buy"},{"value":"154.2078"},{"value":"72"},{"value":"1.9555"}],[{"value":"2018-06-01 08:00:07.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"12,212"},{"value":"108.9100"},{"value":"1,330,008.9200"},{"value":"sell"},{"value":"156.1171"},{"value":"79"},{"value":"-2.3028"}],[{"value":"2018-06-01 08:00:08.000"},{"value":"CAT"},{"value":"PETX"},{"value":"9"},{"value":"109.1800"},{"value":"982.6200"},{"value":"buy"},{"value":"155.8891"},{"value":"80"},{"value":"0.2025"}],[{"value":"2018-06-01 08:00:08.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"489"},{"value":"109.3400"},{"value":"53,467.2600"},{"value":"sell"},{"value":"155.5587"},{"value":"82"},{"value":"-0.7874"}],[{"value":"2018-06-01 08:00:08.500"},{"value":"CAT"},{"value":"NYPE"},{"value":"309"},{"value":"109.4300"},{"value":"33,813.8700"},{"value":"sell"},{"value":"154.0307"},{"value":"85"},{"value":"-0.6757"}],[{"value":"2018-06-01 08:00:08.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"28"},{"value":"109.4800"},{"value":"3,065.4400"},{"value":"sell"},{"value":"152.5787"},{"value":"87"},{"value":"-0.3026"}],[{"value":"2018-06-01 08:00:08.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"50"},{"value":"109.4200"},{"value":"5,471.0000"},{"value":"sell"},{"value":"151.8779"},{"value":"89"},{"value":"-1.1409"}],[{"value":"2018-06-01 08:00:09.000"},{"value":"CAT"},{"value":"NYPE"},{"value":"12,540"},{"value":"109.5900"},{"value":"1,374,258.6000"},{"value":"buy"},{"value":"151.9476"},{"value":"90"},{"value":"2.3232"}],[{"value":"2018-06-01 08:00:09.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"109.7100"},{"value":"10,971.0000"},{"value":"sell"},{"value":"151.9575"},{"value":"91"},{"value":"-0.2603"}],[{"value":"2018-06-01 08:00:09.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"20"},{"value":"109.8000"},{"value":"2,196.0000"},{"value":"sell"},{"value":"149.9563"},{"value":"97"},{"value":"-0.2677"}],[{"value":"2018-06-01 08:00:10.000"},{"value":"CAT"},{"value":"NYPE"},{"value":"2"},{"value":"109.9400"},{"value":"219.8800"},{"value":"buy"},{"value":"149.0683"},{"value":"100"},{"value":"0.6549"}],[{"value":"2018-06-01 08:00:10.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"1"},{"value":"110.0600"},{"value":"110.0600"},{"value":"sell"},{"value":"148.8019"},{"value":"102"},{"value":"-0.0323"}],[{"value":"2018-06-01 08:00:10.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"4,739"},{"value":"110.0200"},{"value":"521,384.7800"},{"value":"sell"},{"value":"147.3724"},{"value":"107"},{"value":"-1.6797"}],[{"value":"2018-06-01 08:00:10.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,640"},{"value":"110.0900"},{"value":"180,547.6000"},{"value":"buy"},{"value":"147.0776"},{"value":"108"},{"value":"1.1801"}],[{"value":"2018-06-01 08:00:11.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"2,663"},{"value":"110.0200"},{"value":"292,983.2600"},{"value":"sell"},{"value":"145.5861"},{"value":"113"},{"value":"-1.3860"}],[{"value":"2018-06-01 08:00:11.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"1"},{"value":"109.9500"},{"value":"109.9500"},{"value":"sell"},{"value":"145.1730"},{"value":"114"},{"value":"-0.0354"}],[{"value":"2018-06-01 08:00:11.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"13,500"},{"value":"110.1200"},{"value":"1,486,620.0000"},{"value":"buy"},{"value":"145.1140"},{"value":"117"},{"value":"2.3810"}],[{"value":"2018-06-01 08:00:12.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"6,554"},{"value":"110.0900"},{"value":"721,529.8600"},{"value":"sell"},{"value":"145.8393"},{"value":"121"},{"value":"-1.8714"}],[{"value":"2018-06-01 08:00:12.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"23"},{"value":"110.0400"},{"value":"2,530.9200"},{"value":"sell"},{"value":"145.7504"},{"value":"123"},{"value":"-0.2825"}],[{"value":"2018-06-01 08:00:12.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,940"},{"value":"109.8800"},{"value":"213,167.2000"},{"value":"sell"},{"value":"145.1827"},{"value":"127"},{"value":"-1.2471"}],[{"value":"2018-06-01 08:00:13.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,380"},{"value":"109.8300"},{"value":"151,565.4000"},{"value":"buy"},{"value":"144.8820"},{"value":"137"},{"value":"1.1123"}],[{"value":"2018-06-01 08:00:13.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"928"},{"value":"109.7000"},{"value":"101,801.6000"},{"value":"sell"},{"value":"145.1528"},{"value":"138"},{"value":"-0.9753"}],[{"value":"2018-06-01 08:00:13.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,100"},{"value":"109.7200"},{"value":"340,132.0000"},{"value":"buy"},{"value":"145.6388"},{"value":"139"},{"value":"1.4583"}],[{"value":"2018-06-01 08:00:14.600"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,710"},{"value":"109.8500"},{"value":"187,843.5000"},{"value":"buy"},{"value":"149.9823"},{"value":"146"},{"value":"1.1954"}],[{"value":"2018-06-01 08:00:14.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,066"},{"value":"109.8700"},{"value":"117,121.4200"},{"value":"sell"},{"value":"150.8668"},{"value":"149"},{"value":"-1.0213"}],[{"value":"2018-06-01 08:00:15.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"179"},{"value":"109.8400"},{"value":"19,661.3600"},{"value":"sell"},{"value":"149.3358"},{"value":"154"},{"value":"-0.5634"}],[{"value":"2018-06-01 08:00:16.000"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,327"},{"value":"109.7000"},{"value":"145,571.9000"},{"value":"sell"},{"value":"148.7058"},{"value":"160"},{"value":"-1.0988"}],[{"value":"2018-06-01 08:00:16.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"2"},{"value":"109.5900"},{"value":"219.1800"},{"value":"buy"},{"value":"149.1010"},{"value":"162"},{"value":"0.1127"}],[{"value":"2018-06-01 08:00:16.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,140"},{"value":"109.5900"},{"value":"124,932.6000"},{"value":"buy"},{"value":"150.1572"},{"value":"164"},{"value":"1.0435"}],[{"value":"2018-06-01 08:00:16.500"},{"value":"CAT"},{"value":"NYPE"},{"value":"157"},{"value":"109.6400"},{"value":"17,213.4800"},{"value":"buy"},{"value":"150.7292"},{"value":"165"},{"value":"0.5385"}],[{"value":"2018-06-01 08:00:16.600"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"109.6800"},{"value":"10,968.0000"},{"value":"sell"},{"value":"151.1905"},{"value":"166"},{"value":"-0.0388"}],[{"value":"2018-06-01 08:00:16.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"136"},{"value":"109.7700"},{"value":"14,928.7200"},{"value":"buy"},{"value":"151.6612"},{"value":"167"},{"value":"0.5134"}],[{"value":"2018-06-01 08:00:16.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"4"},{"value":"109.8600"},{"value":"439.4400"},{"value":"buy"},{"value":"152.4009"},{"value":"169"},{"value":"0.1506"}],[{"value":"2018-06-01 08:00:17.600"},{"value":"CAT"},{"value":"NYPE"},{"value":"267"},{"value":"109.8800"},{"value":"29,337.9600"},{"value":"sell"},{"value":"153.3280"},{"value":"176"},{"value":"-0.6436"}],[{"value":"2018-06-01 08:00:18.000"},{"value":"CAT"},{"value":"NYPE"},{"value":"7,480"},{"value":"110.0900"},{"value":"823,473.2000"},{"value":"buy"},{"value":"154.2050"},{"value":"180"},{"value":"1.9557"}],[{"value":"2018-06-01 08:00:18.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"33"},{"value":"110.3000"},{"value":"3,639.9000"},{"value":"buy"},{"value":"155.9843"},{"value":"183"},{"value":"0.3194"}],[{"value":"2018-06-01 08:00:19.000"},{"value":"CAT"},{"value":"NYPE"},{"value":"503"},{"value":"110.5700"},{"value":"55,616.7100"},{"value":"buy"},{"value":"155.3384"},{"value":"190"},{"value":"0.7953"}],[{"value":"2018-06-01 08:00:19.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,291"},{"value":"110.7200"},{"value":"142,939.5200"},{"value":"sell"},{"value":"158.1044"},{"value":"198"},{"value":"-1.0889"}],[{"value":"2018-06-01 08:00:20.000"},{"value":"CAT"},{"value":"NYPE"},{"value":"216"},{"value":"110.9000"},{"value":"23,954.4000"},{"value":"buy"},{"value":"158.6737"},{"value":"200"},{"value":"0.5993"}],[{"value":"2018-06-01 08:00:20.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"324"},{"value":"111.0100"},{"value":"35,967.2400"},{"value":"sell"},{"value":"158.8080"},{"value":"201"},{"value":"-0.6864"}],[{"value":"2018-06-01 08:00:20.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"22"},{"value":"111.0700"},{"value":"2,443.5400"},{"value":"sell"},{"value":"158.8197"},{"value":"203"},{"value":"-0.2768"}],[{"value":"2018-06-01 08:00:20.600"},{"value":"CAT"},{"value":"NYPE"},{"value":"598"},{"value":"111.0500"},{"value":"66,407.9000"},{"value":"sell"},{"value":"158.3806"},{"value":"206"},{"value":"-0.8424"}],[{"value":"2018-06-01 08:00:21.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"2,904"},{"value":"110.9000"},{"value":"322,053.6000"},{"value":"sell"},{"value":"156.9112"},{"value":"213"},{"value":"-1.4266"}],[{"value":"2018-06-01 08:00:21.500"},{"value":"CAT"},{"value":"NYPE"},{"value":"326"},{"value":"110.7000"},{"value":"36,088.2000"},{"value":"sell"},{"value":"156.3547"},{"value":"215"},{"value":"-0.6875"}],[{"value":"2018-06-01 08:00:22.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"711"},{"value":"110.4300"},{"value":"78,515.7300"},{"value":"sell"},{"value":"153.8032"},{"value":"221"},{"value":"-0.8923"}],[{"value":"2018-06-01 08:00:22.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"965"},{"value":"110.2800"},{"value":"106,420.2000"},{"value":"buy"},{"value":"152.9423"},{"value":"224"},{"value":"0.9881"}],[{"value":"2018-06-01 08:00:23.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"6"},{"value":"110.1200"},{"value":"660.7200"},{"value":"sell"},{"value":"154.7097"},{"value":"239"},{"value":"-0.1785"}],[{"value":"2018-06-01 08:00:24.500"},{"value":"CAT"},{"value":"NYPE"},{"value":"4,671"},{"value":"109.8200"},{"value":"512,969.2200"},{"value":"sell"},{"value":"152.4473"},{"value":"245"},{"value":"-1.6716"}],[{"value":"2018-06-01 08:00:24.900"},{"value":"CAT"},{"value":"PETX"},{"value":"660"},{"value":"109.4700"},{"value":"72,250.2000"},{"value":"sell"},{"value":"150.2413"},{"value":"249"},{"value":"-0.8704"}],[{"value":"2018-06-01 08:00:25.500"},{"value":"CAT"},{"value":"NYPE"},{"value":"64"},{"value":"109.1200"},{"value":"6,983.6800"},{"value":"sell"},{"value":"149.3075"},{"value":"255"},{"value":"-0.3995"}],[{"value":"2018-06-01 08:00:25.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"1"},{"value":"108.8000"},{"value":"108.8000"},{"value":"buy"},{"value":"148.2733"},{"value":"259"},{"value":"0.0378"}],[{"value":"2018-06-01 08:00:26.000"},{"value":"CAT"},{"value":"NYPE"},{"value":"200"},{"value":"108.4800"},{"value":"21,696.0000"},{"value":"sell"},{"value":"148.0819"},{"value":"260"},{"value":"-0.3432"}],[{"value":"2018-06-01 08:00:26.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,930"},{"value":"108.0700"},{"value":"208,575.1000"},{"value":"sell"},{"value":"144.5990"},{"value":"267"},{"value":"-1.2450"}],[{"value":"2018-06-01 08:00:26.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"6,219"},{"value":"107.5200"},{"value":"668,666.8800"},{"value":"sell"},{"value":"143.1067"},{"value":"269"},{"value":"-1.8389"}],[{"value":"2018-06-01 08:00:27.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"2"},{"value":"107.0200"},{"value":"214.0400"},{"value":"sell"},{"value":"141.7544"},{"value":"273"},{"value":"-0.1025"}],[{"value":"2018-06-01 08:00:27.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,120"},{"value":"106.7000"},{"value":"332,904.0000"},{"value":"buy"},{"value":"141.8009"},{"value":"274"},{"value":"1.4607"}],[{"value":"2018-06-01 08:00:28.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"30"},{"value":"106.4500"},{"value":"3,193.5000"},{"value":"buy"},{"value":"143.3500"},{"value":"281"},{"value":"0.3072"}],[{"value":"2018-06-01 08:00:28.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"1"},{"value":"106.2200"},{"value":"106.2200"},{"value":"buy"},{"value":"144.0542"},{"value":"284"},{"value":"0.0590"}],[{"value":"2018-06-01 08:00:29.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"106.0800"},{"value":"10,608.0000"},{"value":"buy"},{"value":"144.7635"},{"value":"294"},{"value":"0.7123"}],[{"value":"2018-06-01 08:00:29.600"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,000"},{"value":"106.0400"},{"value":"106,040.0000"},{"value":"buy"},{"value":"145.1655"},{"value":"296"},{"value":"0.8327"}],[{"value":"2018-06-01 08:00:29.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"1"},{"value":"105.9900"},{"value":"105.9900"},{"value":"sell"},{"value":"144.8705"},{"value":"298"},{"value":"-0.0823"}],[{"value":"2018-06-01 08:00:30.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"6,356"},{"value":"105.7700"},{"value":"672,274.1200"},{"value":"sell"},{"value":"144.6504"},{"value":"303"},{"value":"-1.8524"}],[{"value":"2018-06-01 08:00:30.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"3"},{"value":"105.6400"},{"value":"316.9200"},{"value":"buy"},{"value":"144.5985"},{"value":"304"},{"value":"0.7069"}],[{"value":"2018-06-01 08:00:30.500"},{"value":"CAT"},{"value":"NYPE"},{"value":"738"},{"value":"105.6000"},{"value":"77,932.8000"},{"value":"buy"},{"value":"144.7199"},{"value":"305"},{"value":"0.9035"}],[{"value":"2018-06-01 08:00:30.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"201"},{"value":"105.5200"},{"value":"21,209.5200"},{"value":"sell"},{"value":"144.6909"},{"value":"308"},{"value":"-0.5850"}],[{"value":"2018-06-01 08:00:30.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"302"},{"value":"105.5000"},{"value":"31,861.0000"},{"value":"buy"},{"value":"144.7405"},{"value":"309"},{"value":"0.6705"}],[{"value":"2018-06-01 08:00:31.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"105.5100"},{"value":"10,551.0000"},{"value":"buy"},{"value":"144.4822"},{"value":"314"},{"value":"0.1738"}],[{"value":"2018-06-01 08:00:31.600"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,666"},{"value":"105.4000"},{"value":"175,596.4000"},{"value":"sell"},{"value":"144.0317"},{"value":"316"},{"value":"-1.1853"}],[{"value":"2018-06-01 08:00:31.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"81"},{"value":"105.3400"},{"value":"8,532.5400"},{"value":"buy"},{"value":"143.7347"},{"value":"319"},{"value":"0.4324"}],[{"value":"2018-06-01 08:00:32.600"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,650"},{"value":"105.4000"},{"value":"173,910.0000"},{"value":"buy"},{"value":"143.1648"},{"value":"326"},{"value":"1.1824"}],[{"value":"2018-06-01 08:00:33.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"1"},{"value":"105.4400"},{"value":"105.4400"},{"value":"sell"},{"value":"143.4064"},{"value":"332"},{"value":"-0.0967"}],[{"value":"2018-06-01 08:00:33.500"},{"value":"CAT"},{"value":"NYPE"},{"value":"5"},{"value":"105.5000"},{"value":"527.5000"},{"value":"buy"},{"value":"144.1232"},{"value":"335"},{"value":"0.1652"}],[{"value":"2018-06-01 08:00:33.600"},{"value":"CAT"},{"value":"NYPE"},{"value":"549"},{"value":"105.6300"},{"value":"57,990.8700"},{"value":"buy"},{"value":"144.5017"},{"value":"336"},{"value":"0.8188"}],[{"value":"2018-06-01 08:00:33.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"105.9100"},{"value":"10,591.0000"},{"value":"buy"},{"value":"145.1257"},{"value":"337"},{"value":"1.7330"}],[{"value":"2018-06-01 08:00:33.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"10"},{"value":"106.1900"},{"value":"1,061.9000"},{"value":"buy"},{"value":"145.6753"},{"value":"338"},{"value":"0.2136"}],[{"value":"2018-06-01 08:00:33.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"5"},{"value":"106.4200"},{"value":"532.1000"},{"value":"sell"},{"value":"146.0945"},{"value":"339"},{"value":"-0.1697"}],[{"value":"2018-06-01 08:00:34.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"10"},{"value":"106.6100"},{"value":"1,066.1000"},{"value":"sell"},{"value":"147.3483"},{"value":"342"},{"value":"-0.2120"}],[{"value":"2018-06-01 08:00:34.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"87"},{"value":"106.8300"},{"value":"9,294.2100"},{"value":"buy"},{"value":"147.7099"},{"value":"343"},{"value":"0.4426"}],[{"value":"2018-06-01 08:00:35.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,731"},{"value":"106.9100"},{"value":"185,061.2100"},{"value":"sell"},{"value":"152.4752"},{"value":"353"},{"value":"-1.2005"}]]}},"smoothed":{"type":"Table","data":{"columns":[{"name":"Timestamp","type":"java.time.Instant"},{"name":"Sym","type":"java.lang.String"},{"name":"Exchange","type":"java.lang.String"},{"name":"Size","type":"long"},{"name":"Price","type":"double"},{"name":"Dollars","type":"double"},{"name":"Side","type":"java.lang.String"},{"name":"SPet500","type":"double"},{"name":"Index","type":"long"},{"name":"Random","type":"double"},{"name":"AvgPrice","type":"double"}],"rows":[[{"value":"2018-06-01 08:00:00.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,150"},{"value":"102.4700"},{"value":"322,780.5000"},{"value":"buy"},{"value":"150.8910"},{"value":"1"},{"value":"1.4656"},{"value":"102.4700"}],[{"value":"2018-06-01 08:00:00.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"77"},{"value":"102.5100"},{"value":"7,893.2700"},{"value":"buy"},{"value":"151.3228"},{"value":"3"},{"value":"0.4242"},{"value":"102.4900"}],[{"value":"2018-06-01 08:00:00.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"848"},{"value":"102.4500"},{"value":"86,877.6000"},{"value":"sell"},{"value":"151.3451"},{"value":"4"},{"value":"-0.9462"},{"value":"102.4767"}],[{"value":"2018-06-01 08:00:00.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"102.5300"},{"value":"10,253.0000"},{"value":"buy"},{"value":"151.2862"},{"value":"8"},{"value":"1.3088"},{"value":"102.4900"}],[{"value":"2018-06-01 08:00:01.300"},{"value":"CAT"},{"value":"PETX"},{"value":"1,090"},{"value":"102.7000"},{"value":"111,943.0000"},{"value":"buy"},{"value":"151.2854"},{"value":"13"},{"value":"1.0280"},{"value":"102.5320"}],[{"value":"2018-06-01 08:00:01.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,600"},{"value":"102.9900"},{"value":"370,764.0000"},{"value":"buy"},{"value":"151.6178"},{"value":"14"},{"value":"1.5331"},{"value":"102.6083"}],[{"value":"2018-06-01 08:00:01.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,350"},{"value":"103.4000"},{"value":"346,390.0000"},{"value":"buy"},{"value":"153.1590"},{"value":"18"},{"value":"1.4963"},{"value":"102.7214"}],[{"value":"2018-06-01 08:00:02.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,780"},{"value":"103.9200"},{"value":"392,817.6000"},{"value":"buy"},{"value":"154.4713"},{"value":"21"},{"value":"1.5570"},{"value":"102.8713"}],[{"value":"2018-06-01 08:00:02.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"104.2600"},{"value":"10,426.0000"},{"value":"sell"},{"value":"156.9481"},{"value":"28"},{"value":"-1.4200"},{"value":"103.0256"}],[{"value":"2018-06-01 08:00:03.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,510"},{"value":"104.6700"},{"value":"158,051.7000"},{"value":"buy"},{"value":"156.3789"},{"value":"31"},{"value":"1.1473"},{"value":"103.1900"}],[{"value":"2018-06-01 08:00:03.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"21"},{"value":"105.0200"},{"value":"2,205.4200"},{"value":"sell"},{"value":"156.3644"},{"value":"32"},{"value":"-0.2738"},{"value":"103.3564"}],[{"value":"2018-06-01 08:00:03.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,310"},{"value":"105.4400"},{"value":"138,126.4000"},{"value":"buy"},{"value":"156.6358"},{"value":"39"},{"value":"1.0928"},{"value":"103.5300"}],[{"value":"2018-06-01 08:00:04.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"1"},{"value":"105.8200"},{"value":"105.8200"},{"value":"buy"},{"value":"156.4396"},{"value":"43"},{"value":"0.0791"},{"value":"103.7062"}],[{"value":"2018-06-01 08:00:04.500"},{"value":"CAT"},{"value":"PETX"},{"value":"2"},{"value":"106.1800"},{"value":"212.3600"},{"value":"buy"},{"value":"156.0723"},{"value":"45"},{"value":"0.1217"},{"value":"103.8829"}],[{"value":"2018-06-01 08:00:04.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"5,421"},{"value":"106.3400"},{"value":"576,469.1400"},{"value":"sell"},{"value":"154.2929"},{"value":"49"},{"value":"-1.7566"},{"value":"104.0467"}],[{"value":"2018-06-01 08:00:05.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,130"},{"value":"106.5900"},{"value":"120,446.7000"},{"value":"buy"},{"value":"152.9825"},{"value":"51"},{"value":"1.0424"},{"value":"104.2056"}],[{"value":"2018-06-01 08:00:05.500"},{"value":"CAT"},{"value":"NYPE"},{"value":"123"},{"value":"106.7600"},{"value":"13,131.4800"},{"value":"sell"},{"value":"151.6401"},{"value":"55"},{"value":"-0.4972"},{"value":"104.3559"}],[{"value":"2018-06-01 08:00:05.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,990"},{"value":"107.0300"},{"value":"212,989.7000"},{"value":"buy"},{"value":"151.0393"},{"value":"57"},{"value":"1.2576"},{"value":"104.5044"}],[{"value":"2018-06-01 08:00:05.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"140"},{"value":"107.3300"},{"value":"15,026.2000"},{"value":"buy"},{"value":"151.0546"},{"value":"59"},{"value":"0.5181"},{"value":"104.6532"}],[{"value":"2018-06-01 08:00:06.600"},{"value":"CAT"},{"value":"NYPE"},{"value":"534"},{"value":"107.6800"},{"value":"57,501.1200"},{"value":"buy"},{"value":"151.7980"},{"value":"66"},{"value":"0.8109"},{"value":"104.8045"}],[{"value":"2018-06-01 08:00:06.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"711"},{"value":"108.0800"},{"value":"76,844.8800"},{"value":"buy"},{"value":"152.0942"},{"value":"67"},{"value":"0.8923"},{"value":"105.0850"}],[{"value":"2018-06-01 08:00:07.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"7,480"},{"value":"108.6300"},{"value":"812,552.4000"},{"value":"buy"},{"value":"154.2078"},{"value":"72"},{"value":"1.9555"},{"value":"105.3910"}],[{"value":"2018-06-01 08:00:07.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"12,212"},{"value":"108.9100"},{"value":"1,330,008.9200"},{"value":"sell"},{"value":"156.1171"},{"value":"79"},{"value":"-2.3028"},{"value":"105.7140"}],[{"value":"2018-06-01 08:00:08.000"},{"value":"CAT"},{"value":"PETX"},{"value":"9"},{"value":"109.1800"},{"value":"982.6200"},{"value":"buy"},{"value":"155.8891"},{"value":"80"},{"value":"0.2025"},{"value":"106.0465"}],[{"value":"2018-06-01 08:00:08.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"489"},{"value":"109.3400"},{"value":"53,467.2600"},{"value":"sell"},{"value":"155.5587"},{"value":"82"},{"value":"-0.7874"},{"value":"106.3785"}],[{"value":"2018-06-01 08:00:08.500"},{"value":"CAT"},{"value":"NYPE"},{"value":"309"},{"value":"109.4300"},{"value":"33,813.8700"},{"value":"sell"},{"value":"154.0307"},{"value":"85"},{"value":"-0.6757"},{"value":"106.7005"}],[{"value":"2018-06-01 08:00:08.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"28"},{"value":"109.4800"},{"value":"3,065.4400"},{"value":"sell"},{"value":"152.5787"},{"value":"87"},{"value":"-0.3026"},{"value":"107.0045"}],[{"value":"2018-06-01 08:00:08.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"50"},{"value":"109.4200"},{"value":"5,471.0000"},{"value":"sell"},{"value":"151.8779"},{"value":"89"},{"value":"-1.1409"},{"value":"107.2795"}],[{"value":"2018-06-01 08:00:09.000"},{"value":"CAT"},{"value":"NYPE"},{"value":"12,540"},{"value":"109.5900"},{"value":"1,374,258.6000"},{"value":"buy"},{"value":"151.9476"},{"value":"90"},{"value":"2.3232"},{"value":"107.5460"}],[{"value":"2018-06-01 08:00:09.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"109.7100"},{"value":"10,971.0000"},{"value":"sell"},{"value":"151.9575"},{"value":"91"},{"value":"-0.2603"},{"value":"107.7980"}],[{"value":"2018-06-01 08:00:09.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"20"},{"value":"109.8000"},{"value":"2,196.0000"},{"value":"sell"},{"value":"149.9563"},{"value":"97"},{"value":"-0.2677"},{"value":"108.0370"}],[{"value":"2018-06-01 08:00:10.000"},{"value":"CAT"},{"value":"NYPE"},{"value":"2"},{"value":"109.9400"},{"value":"219.8800"},{"value":"buy"},{"value":"149.0683"},{"value":"100"},{"value":"0.6549"},{"value":"108.2620"}],[{"value":"2018-06-01 08:00:10.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"1"},{"value":"110.0600"},{"value":"110.0600"},{"value":"sell"},{"value":"148.8019"},{"value":"102"},{"value":"-0.0323"},{"value":"108.4740"}],[{"value":"2018-06-01 08:00:10.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"4,739"},{"value":"110.0200"},{"value":"521,384.7800"},{"value":"sell"},{"value":"147.3724"},{"value":"107"},{"value":"-1.6797"},{"value":"108.6660"}],[{"value":"2018-06-01 08:00:10.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,640"},{"value":"110.0900"},{"value":"180,547.6000"},{"value":"buy"},{"value":"147.0776"},{"value":"108"},{"value":"1.1801"},{"value":"108.8535"}],[{"value":"2018-06-01 08:00:11.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"2,663"},{"value":"110.0200"},{"value":"292,983.2600"},{"value":"sell"},{"value":"145.5861"},{"value":"113"},{"value":"-1.3860"},{"value":"109.0250"}],[{"value":"2018-06-01 08:00:11.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"1"},{"value":"109.9500"},{"value":"109.9500"},{"value":"sell"},{"value":"145.1730"},{"value":"114"},{"value":"-0.0354"},{"value":"109.1845"}],[{"value":"2018-06-01 08:00:11.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"13,500"},{"value":"110.1200"},{"value":"1,486,620.0000"},{"value":"buy"},{"value":"145.1140"},{"value":"117"},{"value":"2.3810"},{"value":"109.3390"}],[{"value":"2018-06-01 08:00:12.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"6,554"},{"value":"110.0900"},{"value":"721,529.8600"},{"value":"sell"},{"value":"145.8393"},{"value":"121"},{"value":"-1.8714"},{"value":"109.4770"}],[{"value":"2018-06-01 08:00:12.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"23"},{"value":"110.0400"},{"value":"2,530.9200"},{"value":"sell"},{"value":"145.7504"},{"value":"123"},{"value":"-0.2825"},{"value":"109.5950"}],[{"value":"2018-06-01 08:00:12.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,940"},{"value":"109.8800"},{"value":"213,167.2000"},{"value":"sell"},{"value":"145.1827"},{"value":"127"},{"value":"-1.2471"},{"value":"109.6850"}],[{"value":"2018-06-01 08:00:13.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,380"},{"value":"109.8300"},{"value":"151,565.4000"},{"value":"buy"},{"value":"144.8820"},{"value":"137"},{"value":"1.1123"},{"value":"109.7450"}],[{"value":"2018-06-01 08:00:13.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"928"},{"value":"109.7000"},{"value":"101,801.6000"},{"value":"sell"},{"value":"145.1528"},{"value":"138"},{"value":"-0.9753"},{"value":"109.7845"}],[{"value":"2018-06-01 08:00:13.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,100"},{"value":"109.7200"},{"value":"340,132.0000"},{"value":"buy"},{"value":"145.6388"},{"value":"139"},{"value":"1.4583"},{"value":"109.8115"}],[{"value":"2018-06-01 08:00:14.600"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,710"},{"value":"109.8500"},{"value":"187,843.5000"},{"value":"buy"},{"value":"149.9823"},{"value":"146"},{"value":"1.1954"},{"value":"109.8370"}],[{"value":"2018-06-01 08:00:14.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,066"},{"value":"109.8700"},{"value":"117,121.4200"},{"value":"sell"},{"value":"150.8668"},{"value":"149"},{"value":"-1.0213"},{"value":"109.8590"}],[{"value":"2018-06-01 08:00:15.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"179"},{"value":"109.8400"},{"value":"19,661.3600"},{"value":"sell"},{"value":"149.3358"},{"value":"154"},{"value":"-0.5634"},{"value":"109.8770"}],[{"value":"2018-06-01 08:00:16.000"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,327"},{"value":"109.7000"},{"value":"145,571.9000"},{"value":"sell"},{"value":"148.7058"},{"value":"160"},{"value":"-1.0988"},{"value":"109.8910"}],[{"value":"2018-06-01 08:00:16.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"2"},{"value":"109.5900"},{"value":"219.1800"},{"value":"buy"},{"value":"149.1010"},{"value":"162"},{"value":"0.1127"},{"value":"109.8910"}],[{"value":"2018-06-01 08:00:16.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,140"},{"value":"109.5900"},{"value":"124,932.6000"},{"value":"buy"},{"value":"150.1572"},{"value":"164"},{"value":"1.0435"},{"value":"109.8850"}],[{"value":"2018-06-01 08:00:16.500"},{"value":"CAT"},{"value":"NYPE"},{"value":"157"},{"value":"109.6400"},{"value":"17,213.4800"},{"value":"buy"},{"value":"150.7292"},{"value":"165"},{"value":"0.5385"},{"value":"109.8770"}],[{"value":"2018-06-01 08:00:16.600"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"109.6800"},{"value":"10,968.0000"},{"value":"sell"},{"value":"151.1905"},{"value":"166"},{"value":"-0.0388"},{"value":"109.8640"}],[{"value":"2018-06-01 08:00:16.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"136"},{"value":"109.7700"},{"value":"14,928.7200"},{"value":"buy"},{"value":"151.6612"},{"value":"167"},{"value":"0.5134"},{"value":"109.8495"}],[{"value":"2018-06-01 08:00:16.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"4"},{"value":"109.8600"},{"value":"439.4400"},{"value":"buy"},{"value":"152.4009"},{"value":"169"},{"value":"0.1506"},{"value":"109.8415"}],[{"value":"2018-06-01 08:00:17.600"},{"value":"CAT"},{"value":"NYPE"},{"value":"267"},{"value":"109.8800"},{"value":"29,337.9600"},{"value":"sell"},{"value":"153.3280"},{"value":"176"},{"value":"-0.6436"},{"value":"109.8310"}],[{"value":"2018-06-01 08:00:18.000"},{"value":"CAT"},{"value":"NYPE"},{"value":"7,480"},{"value":"110.0900"},{"value":"823,473.2000"},{"value":"buy"},{"value":"154.2050"},{"value":"180"},{"value":"1.9557"},{"value":"109.8345"}],[{"value":"2018-06-01 08:00:18.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"33"},{"value":"110.3000"},{"value":"3,639.9000"},{"value":"buy"},{"value":"155.9843"},{"value":"183"},{"value":"0.3194"},{"value":"109.8520"}],[{"value":"2018-06-01 08:00:19.000"},{"value":"CAT"},{"value":"NYPE"},{"value":"503"},{"value":"110.5700"},{"value":"55,616.7100"},{"value":"buy"},{"value":"155.3384"},{"value":"190"},{"value":"0.7953"},{"value":"109.8745"}],[{"value":"2018-06-01 08:00:19.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,291"},{"value":"110.7200"},{"value":"142,939.5200"},{"value":"sell"},{"value":"158.1044"},{"value":"198"},{"value":"-1.0889"},{"value":"109.9060"}],[{"value":"2018-06-01 08:00:20.000"},{"value":"CAT"},{"value":"NYPE"},{"value":"216"},{"value":"110.9000"},{"value":"23,954.4000"},{"value":"buy"},{"value":"158.6737"},{"value":"200"},{"value":"0.5993"},{"value":"109.9490"}],[{"value":"2018-06-01 08:00:20.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"324"},{"value":"111.0100"},{"value":"35,967.2400"},{"value":"sell"},{"value":"158.8080"},{"value":"201"},{"value":"-0.6864"},{"value":"110.0055"}],[{"value":"2018-06-01 08:00:20.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"22"},{"value":"111.0700"},{"value":"2,443.5400"},{"value":"sell"},{"value":"158.8197"},{"value":"203"},{"value":"-0.2768"},{"value":"110.0675"}],[{"value":"2018-06-01 08:00:20.600"},{"value":"CAT"},{"value":"NYPE"},{"value":"598"},{"value":"111.0500"},{"value":"66,407.9000"},{"value":"sell"},{"value":"158.3806"},{"value":"206"},{"value":"-0.8424"},{"value":"110.1350"}],[{"value":"2018-06-01 08:00:21.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"2,904"},{"value":"110.9000"},{"value":"322,053.6000"},{"value":"sell"},{"value":"156.9112"},{"value":"213"},{"value":"-1.4266"},{"value":"110.1940"}],[{"value":"2018-06-01 08:00:21.500"},{"value":"CAT"},{"value":"NYPE"},{"value":"326"},{"value":"110.7000"},{"value":"36,088.2000"},{"value":"sell"},{"value":"156.3547"},{"value":"215"},{"value":"-0.6875"},{"value":"110.2365"}],[{"value":"2018-06-01 08:00:22.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"711"},{"value":"110.4300"},{"value":"78,515.7300"},{"value":"sell"},{"value":"153.8032"},{"value":"221"},{"value":"-0.8923"},{"value":"110.2645"}],[{"value":"2018-06-01 08:00:22.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"965"},{"value":"110.2800"},{"value":"106,420.2000"},{"value":"buy"},{"value":"152.9423"},{"value":"224"},{"value":"0.9881"},{"value":"110.2865"}],[{"value":"2018-06-01 08:00:23.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"6"},{"value":"110.1200"},{"value":"660.7200"},{"value":"sell"},{"value":"154.7097"},{"value":"239"},{"value":"-0.1785"},{"value":"110.3075"}],[{"value":"2018-06-01 08:00:24.500"},{"value":"CAT"},{"value":"NYPE"},{"value":"4,671"},{"value":"109.8200"},{"value":"512,969.2200"},{"value":"sell"},{"value":"152.4473"},{"value":"245"},{"value":"-1.6716"},{"value":"110.3190"}],[{"value":"2018-06-01 08:00:24.900"},{"value":"CAT"},{"value":"PETX"},{"value":"660"},{"value":"109.4700"},{"value":"72,250.2000"},{"value":"sell"},{"value":"150.2413"},{"value":"249"},{"value":"-0.8704"},{"value":"110.3130"}],[{"value":"2018-06-01 08:00:25.500"},{"value":"CAT"},{"value":"NYPE"},{"value":"64"},{"value":"109.1200"},{"value":"6,983.6800"},{"value":"sell"},{"value":"149.3075"},{"value":"255"},{"value":"-0.3995"},{"value":"110.2870"}],[{"value":"2018-06-01 08:00:25.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"1"},{"value":"108.8000"},{"value":"108.8000"},{"value":"buy"},{"value":"148.2733"},{"value":"259"},{"value":"0.0378"},{"value":"110.2430"}],[{"value":"2018-06-01 08:00:26.000"},{"value":"CAT"},{"value":"NYPE"},{"value":"200"},{"value":"108.4800"},{"value":"21,696.0000"},{"value":"sell"},{"value":"148.0819"},{"value":"260"},{"value":"-0.3432"},{"value":"110.1785"}],[{"value":"2018-06-01 08:00:26.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,930"},{"value":"108.0700"},{"value":"208,575.1000"},{"value":"sell"},{"value":"144.5990"},{"value":"267"},{"value":"-1.2450"},{"value":"110.0890"}],[{"value":"2018-06-01 08:00:26.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"6,219"},{"value":"107.5200"},{"value":"668,666.8800"},{"value":"sell"},{"value":"143.1067"},{"value":"269"},{"value":"-1.8389"},{"value":"109.9710"}],[{"value":"2018-06-01 08:00:27.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"2"},{"value":"107.0200"},{"value":"214.0400"},{"value":"sell"},{"value":"141.7544"},{"value":"273"},{"value":"-0.1025"},{"value":"109.8175"}],[{"value":"2018-06-01 08:00:27.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,120"},{"value":"106.7000"},{"value":"332,904.0000"},{"value":"buy"},{"value":"141.8009"},{"value":"274"},{"value":"1.4607"},{"value":"109.6375"}],[{"value":"2018-06-01 08:00:28.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"30"},{"value":"106.4500"},{"value":"3,193.5000"},{"value":"buy"},{"value":"143.3500"},{"value":"281"},{"value":"0.3072"},{"value":"109.4315"}],[{"value":"2018-06-01 08:00:28.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"1"},{"value":"106.2200"},{"value":"106.2200"},{"value":"buy"},{"value":"144.0542"},{"value":"284"},{"value":"0.0590"},{"value":"109.2065"}],[{"value":"2018-06-01 08:00:29.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"106.0800"},{"value":"10,608.0000"},{"value":"buy"},{"value":"144.7635"},{"value":"294"},{"value":"0.7123"},{"value":"108.9655"}],[{"value":"2018-06-01 08:00:29.600"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,000"},{"value":"106.0400"},{"value":"106,040.0000"},{"value":"buy"},{"value":"145.1655"},{"value":"296"},{"value":"0.8327"},{"value":"108.7170"}],[{"value":"2018-06-01 08:00:29.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"1"},{"value":"105.9900"},{"value":"105.9900"},{"value":"sell"},{"value":"144.8705"},{"value":"298"},{"value":"-0.0823"},{"value":"108.4630"}],[{"value":"2018-06-01 08:00:30.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"6,356"},{"value":"105.7700"},{"value":"672,274.1200"},{"value":"sell"},{"value":"144.6504"},{"value":"303"},{"value":"-1.8524"},{"value":"108.1990"}],[{"value":"2018-06-01 08:00:30.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"3"},{"value":"105.6400"},{"value":"316.9200"},{"value":"buy"},{"value":"144.5985"},{"value":"304"},{"value":"0.7069"},{"value":"107.9360"}],[{"value":"2018-06-01 08:00:30.500"},{"value":"CAT"},{"value":"NYPE"},{"value":"738"},{"value":"105.6000"},{"value":"77,932.8000"},{"value":"buy"},{"value":"144.7199"},{"value":"305"},{"value":"0.9035"},{"value":"107.6810"}],[{"value":"2018-06-01 08:00:30.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"201"},{"value":"105.5200"},{"value":"21,209.5200"},{"value":"sell"},{"value":"144.6909"},{"value":"308"},{"value":"-0.5850"},{"value":"107.4355"}],[{"value":"2018-06-01 08:00:30.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"302"},{"value":"105.5000"},{"value":"31,861.0000"},{"value":"buy"},{"value":"144.7405"},{"value":"309"},{"value":"0.6705"},{"value":"107.1965"}],[{"value":"2018-06-01 08:00:31.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"105.5100"},{"value":"10,551.0000"},{"value":"buy"},{"value":"144.4822"},{"value":"314"},{"value":"0.1738"},{"value":"106.9660"}],[{"value":"2018-06-01 08:00:31.600"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,666"},{"value":"105.4000"},{"value":"175,596.4000"},{"value":"sell"},{"value":"144.0317"},{"value":"316"},{"value":"-1.1853"},{"value":"106.7450"}],[{"value":"2018-06-01 08:00:31.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"81"},{"value":"105.3400"},{"value":"8,532.5400"},{"value":"buy"},{"value":"143.7347"},{"value":"319"},{"value":"0.4324"},{"value":"106.5385"}],[{"value":"2018-06-01 08:00:32.600"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,650"},{"value":"105.4000"},{"value":"173,910.0000"},{"value":"buy"},{"value":"143.1648"},{"value":"326"},{"value":"1.1824"},{"value":"106.3525"}],[{"value":"2018-06-01 08:00:33.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"1"},{"value":"105.4400"},{"value":"105.4400"},{"value":"sell"},{"value":"143.4064"},{"value":"332"},{"value":"-0.0967"},{"value":"106.1845"}],[{"value":"2018-06-01 08:00:33.500"},{"value":"CAT"},{"value":"NYPE"},{"value":"5"},{"value":"105.5000"},{"value":"527.5000"},{"value":"buy"},{"value":"144.1232"},{"value":"335"},{"value":"0.1652"},{"value":"106.0355"}],[{"value":"2018-06-01 08:00:33.600"},{"value":"CAT"},{"value":"NYPE"},{"value":"549"},{"value":"105.6300"},{"value":"57,990.8700"},{"value":"buy"},{"value":"144.5017"},{"value":"336"},{"value":"0.8188"},{"value":"105.9135"}],[{"value":"2018-06-01 08:00:33.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"105.9100"},{"value":"10,591.0000"},{"value":"buy"},{"value":"145.1257"},{"value":"337"},{"value":"1.7330"},{"value":"105.8330"}],[{"value":"2018-06-01 08:00:33.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"10"},{"value":"106.1900"},{"value":"1,061.9000"},{"value":"buy"},{"value":"145.6753"},{"value":"338"},{"value":"0.2136"},{"value":"105.7915"}],[{"value":"2018-06-01 08:00:33.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"5"},{"value":"106.4200"},{"value":"532.1000"},{"value":"sell"},{"value":"146.0945"},{"value":"339"},{"value":"-0.1697"},{"value":"105.7775"}],[{"value":"2018-06-01 08:00:34.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"10"},{"value":"106.6100"},{"value":"1,066.1000"},{"value":"sell"},{"value":"147.3483"},{"value":"342"},{"value":"-0.2120"},{"value":"105.7855"}],[{"value":"2018-06-01 08:00:34.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"87"},{"value":"106.8300"},{"value":"9,294.2100"},{"value":"buy"},{"value":"147.7099"},{"value":"343"},{"value":"0.4426"},{"value":"105.8160"}],[{"value":"2018-06-01 08:00:35.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,731"},{"value":"106.9100"},{"value":"185,061.2100"},{"value":"sell"},{"value":"152.4752"},{"value":"353"},{"value":"-1.2005"},{"value":"105.8575"}]]}},"layer_clicks":{"type":"Table","data":{"columns":[{"name":"CurveNum","type":"long"},{"name":"Price","type":"double"}],"rows":[]}},"points":{"type":"deephaven.plot.express.DeephavenFigure","data":{"data":[{"hovertemplate":"Timestamp=%{x}
Price=%{y}","legendgroup":"","marker":{"symbol":"circle"},"mode":"markers","name":"","showlegend":false,"x":["2018-06-01 12:00:00.100000","2018-06-01 12:00:00.300000","2018-06-01 12:00:00.400000","2018-06-01 12:00:00.800000","2018-06-01 12:00:01.300000","2018-06-01 12:00:01.400000","2018-06-01 12:00:01.800000","2018-06-01 12:00:02.100000","2018-06-01 12:00:02.800000","2018-06-01 12:00:03.100000","2018-06-01 12:00:03.200000","2018-06-01 12:00:03.900000","2018-06-01 12:00:04.300000","2018-06-01 12:00:04.500000","2018-06-01 12:00:04.900000","2018-06-01 12:00:05.100000","2018-06-01 12:00:05.500000","2018-06-01 12:00:05.700000","2018-06-01 12:00:05.900000","2018-06-01 12:00:06.600000","2018-06-01 12:00:06.700000","2018-06-01 12:00:07.200000","2018-06-01 12:00:07.900000","2018-06-01 12:00:08.000000","2018-06-01 12:00:08.200000","2018-06-01 12:00:08.500000","2018-06-01 12:00:08.700000","2018-06-01 12:00:08.900000","2018-06-01 12:00:09.000000","2018-06-01 12:00:09.100000","2018-06-01 12:00:09.700000","2018-06-01 12:00:10.000000","2018-06-01 12:00:10.200000","2018-06-01 12:00:10.700000","2018-06-01 12:00:10.800000","2018-06-01 12:00:11.300000","2018-06-01 12:00:11.400000","2018-06-01 12:00:11.700000","2018-06-01 12:00:12.100000","2018-06-01 12:00:12.300000","2018-06-01 12:00:12.700000","2018-06-01 12:00:13.700000","2018-06-01 12:00:13.800000","2018-06-01 12:00:13.900000","2018-06-01 12:00:14.600000","2018-06-01 12:00:14.900000","2018-06-01 12:00:15.400000","2018-06-01 12:00:16.000000","2018-06-01 12:00:16.200000","2018-06-01 12:00:16.400000","2018-06-01 12:00:16.500000","2018-06-01 12:00:16.600000","2018-06-01 12:00:16.700000","2018-06-01 12:00:16.900000","2018-06-01 12:00:17.600000","2018-06-01 12:00:18.000000","2018-06-01 12:00:18.300000","2018-06-01 12:00:19.000000","2018-06-01 12:00:19.800000","2018-06-01 12:00:20.000000","2018-06-01 12:00:20.100000","2018-06-01 12:00:20.300000","2018-06-01 12:00:20.600000","2018-06-01 12:00:21.300000","2018-06-01 12:00:21.500000","2018-06-01 12:00:22.100000","2018-06-01 12:00:22.400000","2018-06-01 12:00:23.900000","2018-06-01 12:00:24.500000","2018-06-01 12:00:24.900000","2018-06-01 12:00:25.500000","2018-06-01 12:00:25.900000","2018-06-01 12:00:26.000000","2018-06-01 12:00:26.700000","2018-06-01 12:00:26.900000","2018-06-01 12:00:27.300000","2018-06-01 12:00:27.400000","2018-06-01 12:00:28.100000","2018-06-01 12:00:28.400000","2018-06-01 12:00:29.400000","2018-06-01 12:00:29.600000","2018-06-01 12:00:29.800000","2018-06-01 12:00:30.300000","2018-06-01 12:00:30.400000","2018-06-01 12:00:30.500000","2018-06-01 12:00:30.800000","2018-06-01 12:00:30.900000","2018-06-01 12:00:31.400000","2018-06-01 12:00:31.600000","2018-06-01 12:00:31.900000","2018-06-01 12:00:32.600000","2018-06-01 12:00:33.200000","2018-06-01 12:00:33.500000","2018-06-01 12:00:33.600000","2018-06-01 12:00:33.700000","2018-06-01 12:00:33.800000","2018-06-01 12:00:33.900000","2018-06-01 12:00:34.200000","2018-06-01 12:00:34.300000","2018-06-01 12:00:35.300000","2018-06-01 12:00:35.400000","2018-06-01 12:00:35.500000","2018-06-01 12:00:35.700000","2018-06-01 12:00:35.900000","2018-06-01 12:00:36.600000","2018-06-01 12:00:36.700000","2018-06-01 12:00:37.000000","2018-06-01 12:00:37.200000","2018-06-01 12:00:37.300000","2018-06-01 12:00:37.500000","2018-06-01 12:00:37.700000","2018-06-01 12:00:37.800000","2018-06-01 12:00:37.900000","2018-06-01 12:00:38.200000","2018-06-01 12:00:39.600000","2018-06-01 12:00:39.700000","2018-06-01 12:00:39.900000","2018-06-01 12:00:40.300000","2018-06-01 12:00:40.400000","2018-06-01 12:00:40.500000","2018-06-01 12:00:41.000000","2018-06-01 12:00:41.100000","2018-06-01 12:00:41.600000","2018-06-01 12:00:42.000000","2018-06-01 12:00:42.600000","2018-06-01 12:00:42.700000","2018-06-01 12:00:42.800000","2018-06-01 12:00:43.000000","2018-06-01 12:00:43.300000","2018-06-01 12:00:43.800000","2018-06-01 12:00:44.000000","2018-06-01 12:00:44.100000","2018-06-01 12:00:44.900000","2018-06-01 12:00:45.000000","2018-06-01 12:00:45.100000","2018-06-01 12:00:45.300000","2018-06-01 12:00:45.800000","2018-06-01 12:00:46.300000","2018-06-01 12:00:46.400000","2018-06-01 12:00:46.500000","2018-06-01 12:00:46.700000","2018-06-01 12:00:46.900000","2018-06-01 12:00:47.000000","2018-06-01 12:00:47.400000","2018-06-01 12:00:48.500000","2018-06-01 12:00:48.600000","2018-06-01 12:00:48.800000","2018-06-01 12:00:49.700000","2018-06-01 12:00:49.900000","2018-06-01 12:00:50.300000","2018-06-01 12:00:50.500000","2018-06-01 12:00:51.100000","2018-06-01 12:00:51.200000","2018-06-01 12:00:51.300000","2018-06-01 12:00:51.500000","2018-06-01 12:00:52.100000","2018-06-01 12:00:52.200000","2018-06-01 12:00:52.400000","2018-06-01 12:00:53.200000","2018-06-01 12:00:53.500000","2018-06-01 12:00:53.800000","2018-06-01 12:00:54.500000","2018-06-01 12:00:54.600000","2018-06-01 12:00:54.700000","2018-06-01 12:00:55.200000","2018-06-01 12:00:55.500000","2018-06-01 12:00:55.700000","2018-06-01 12:00:55.900000","2018-06-01 12:00:56.700000","2018-06-01 12:00:56.800000","2018-06-01 12:00:57.000000","2018-06-01 12:00:57.100000","2018-06-01 12:00:58.200000","2018-06-01 12:00:58.500000","2018-06-01 12:00:58.900000","2018-06-01 12:00:59.000000","2018-06-01 12:00:59.200000","2018-06-01 12:00:59.400000","2018-06-01 12:00:59.700000","2018-06-01 12:01:00.100000","2018-06-01 12:01:00.300000","2018-06-01 12:01:00.400000","2018-06-01 12:01:00.500000","2018-06-01 12:01:00.800000","2018-06-01 12:01:01.400000","2018-06-01 12:01:01.500000","2018-06-01 12:01:01.600000","2018-06-01 12:01:02.000000","2018-06-01 12:01:02.300000","2018-06-01 12:01:02.400000","2018-06-01 12:01:02.900000","2018-06-01 12:01:03.300000","2018-06-01 12:01:03.400000","2018-06-01 12:01:03.600000","2018-06-01 12:01:04.000000","2018-06-01 12:01:04.500000","2018-06-01 12:01:05.100000","2018-06-01 12:01:05.200000","2018-06-01 12:01:05.800000","2018-06-01 12:01:06.000000","2018-06-01 12:01:06.700000","2018-06-01 12:01:07.200000","2018-06-01 12:01:07.500000","2018-06-01 12:01:07.600000","2018-06-01 12:01:07.800000","2018-06-01 12:01:09.600000","2018-06-01 12:01:09.700000","2018-06-01 12:01:10.000000","2018-06-01 12:01:10.300000","2018-06-01 12:01:10.700000","2018-06-01 12:01:10.800000","2018-06-01 12:01:11.600000","2018-06-01 12:01:11.700000","2018-06-01 12:01:11.800000","2018-06-01 12:01:12.100000","2018-06-01 12:01:12.500000","2018-06-01 12:01:12.600000","2018-06-01 12:01:13.600000","2018-06-01 12:01:13.700000","2018-06-01 12:01:13.900000","2018-06-01 12:01:14.100000","2018-06-01 12:01:14.500000","2018-06-01 12:01:14.800000","2018-06-01 12:01:15.400000","2018-06-01 12:01:15.900000","2018-06-01 12:01:16.000000","2018-06-01 12:01:16.100000","2018-06-01 12:01:16.500000","2018-06-01 12:01:16.800000","2018-06-01 12:01:16.900000","2018-06-01 12:01:17.200000","2018-06-01 12:01:17.300000","2018-06-01 12:01:17.700000","2018-06-01 12:01:17.800000","2018-06-01 12:01:18.000000","2018-06-01 12:01:18.100000","2018-06-01 12:01:20.100000","2018-06-01 12:01:20.300000","2018-06-01 12:01:20.900000","2018-06-01 12:01:21.100000","2018-06-01 12:01:21.200000","2018-06-01 12:01:21.600000","2018-06-01 12:01:21.700000","2018-06-01 12:01:22.000000","2018-06-01 12:01:22.500000","2018-06-01 12:01:22.800000","2018-06-01 12:01:22.900000","2018-06-01 12:01:23.000000","2018-06-01 12:01:23.100000","2018-06-01 12:01:24.000000","2018-06-01 12:01:24.500000","2018-06-01 12:01:24.600000","2018-06-01 12:01:24.900000","2018-06-01 12:01:25.500000","2018-06-01 12:01:25.600000","2018-06-01 12:01:26.000000","2018-06-01 12:01:27.000000","2018-06-01 12:01:27.300000","2018-06-01 12:01:27.700000","2018-06-01 12:01:27.900000","2018-06-01 12:01:28.600000","2018-06-01 12:01:28.800000","2018-06-01 12:01:29.000000","2018-06-01 12:01:29.200000","2018-06-01 12:01:29.600000","2018-06-01 12:01:29.700000","2018-06-01 12:01:30.300000","2018-06-01 12:01:30.600000","2018-06-01 12:01:30.900000","2018-06-01 12:01:31.300000","2018-06-01 12:01:31.400000","2018-06-01 12:01:31.500000","2018-06-01 12:01:32.200000","2018-06-01 12:01:32.900000","2018-06-01 12:01:33.600000","2018-06-01 12:01:34.400000","2018-06-01 12:01:34.600000","2018-06-01 12:01:34.700000","2018-06-01 12:01:35.000000","2018-06-01 12:01:35.200000","2018-06-01 12:01:35.300000","2018-06-01 12:01:35.400000","2018-06-01 12:01:36.200000","2018-06-01 12:01:36.500000","2018-06-01 12:01:36.600000","2018-06-01 12:01:37.100000","2018-06-01 12:01:37.300000","2018-06-01 12:01:38.600000","2018-06-01 12:01:39.100000","2018-06-01 12:01:39.300000","2018-06-01 12:01:39.500000","2018-06-01 12:01:39.800000","2018-06-01 12:01:40.900000","2018-06-01 12:01:41.500000","2018-06-01 12:01:41.900000","2018-06-01 12:01:42.000000","2018-06-01 12:01:42.200000","2018-06-01 12:01:42.500000","2018-06-01 12:01:42.600000","2018-06-01 12:01:42.700000","2018-06-01 12:01:43.700000","2018-06-01 12:01:43.800000","2018-06-01 12:01:44.200000","2018-06-01 12:01:44.700000","2018-06-01 12:01:44.800000","2018-06-01 12:01:45.100000","2018-06-01 12:01:45.400000","2018-06-01 12:01:45.500000","2018-06-01 12:01:45.600000","2018-06-01 12:01:45.900000","2018-06-01 12:01:46.000000","2018-06-01 12:01:46.200000","2018-06-01 12:01:46.300000","2018-06-01 12:01:46.400000","2018-06-01 12:01:46.700000","2018-06-01 12:01:47.100000","2018-06-01 12:01:47.800000","2018-06-01 12:01:48.200000","2018-06-01 12:01:48.300000","2018-06-01 12:01:48.700000","2018-06-01 12:01:49.500000","2018-06-01 12:01:49.800000","2018-06-01 12:01:50.400000","2018-06-01 12:01:50.800000","2018-06-01 12:01:51.100000","2018-06-01 12:01:51.300000","2018-06-01 12:01:51.500000","2018-06-01 12:01:51.800000","2018-06-01 12:01:51.900000","2018-06-01 12:01:52.500000","2018-06-01 12:01:52.600000","2018-06-01 12:01:52.800000","2018-06-01 12:01:53.600000","2018-06-01 12:01:54.200000","2018-06-01 12:01:54.500000","2018-06-01 12:01:55.000000","2018-06-01 12:01:55.100000","2018-06-01 12:01:55.300000","2018-06-01 12:01:55.500000","2018-06-01 12:01:55.900000","2018-06-01 12:01:56.300000","2018-06-01 12:01:56.400000","2018-06-01 12:01:57.000000","2018-06-01 12:01:57.400000","2018-06-01 12:01:58.500000","2018-06-01 12:01:58.600000","2018-06-01 12:01:59.600000","2018-06-01 12:02:00.100000","2018-06-01 12:02:00.800000","2018-06-01 12:02:01.000000","2018-06-01 12:02:02.000000","2018-06-01 12:02:02.100000","2018-06-01 12:02:02.400000","2018-06-01 12:02:02.800000","2018-06-01 12:02:02.900000","2018-06-01 12:02:03.700000","2018-06-01 12:02:03.800000","2018-06-01 12:02:03.900000","2018-06-01 12:02:04.200000","2018-06-01 12:02:04.400000","2018-06-01 12:02:04.600000","2018-06-01 12:02:05.000000","2018-06-01 12:02:05.800000","2018-06-01 12:02:06.000000","2018-06-01 12:02:06.100000","2018-06-01 12:02:06.200000","2018-06-01 12:02:06.400000","2018-06-01 12:02:06.500000","2018-06-01 12:02:06.700000","2018-06-01 12:02:06.800000","2018-06-01 12:02:07.200000","2018-06-01 12:02:07.400000","2018-06-01 12:02:07.600000","2018-06-01 12:02:07.700000","2018-06-01 12:02:07.800000","2018-06-01 12:02:08.100000","2018-06-01 12:02:08.200000","2018-06-01 12:02:08.500000","2018-06-01 12:02:09.500000","2018-06-01 12:02:10.500000","2018-06-01 12:02:11.100000","2018-06-01 12:02:11.600000","2018-06-01 12:02:12.000000","2018-06-01 12:02:12.700000","2018-06-01 12:02:12.800000","2018-06-01 12:02:13.200000","2018-06-01 12:02:14.500000","2018-06-01 12:02:14.900000","2018-06-01 12:02:15.100000","2018-06-01 12:02:15.300000","2018-06-01 12:02:15.600000","2018-06-01 12:02:15.800000","2018-06-01 12:02:16.100000","2018-06-01 12:02:16.300000","2018-06-01 12:02:16.800000","2018-06-01 12:02:17.300000","2018-06-01 12:02:17.400000","2018-06-01 12:02:17.500000","2018-06-01 12:02:17.700000","2018-06-01 12:02:17.800000","2018-06-01 12:02:18.300000","2018-06-01 12:02:18.500000","2018-06-01 12:02:18.900000","2018-06-01 12:02:19.000000","2018-06-01 12:02:19.100000","2018-06-01 12:02:19.200000","2018-06-01 12:02:19.600000","2018-06-01 12:02:19.700000","2018-06-01 12:02:20.000000","2018-06-01 12:02:20.700000","2018-06-01 12:02:20.900000","2018-06-01 12:02:21.600000","2018-06-01 12:02:22.100000","2018-06-01 12:02:22.200000","2018-06-01 12:02:22.400000","2018-06-01 12:02:22.900000","2018-06-01 12:02:23.400000","2018-06-01 12:02:23.700000","2018-06-01 12:02:24.000000","2018-06-01 12:02:24.300000","2018-06-01 12:02:24.500000","2018-06-01 12:02:24.700000","2018-06-01 12:02:24.900000","2018-06-01 12:02:25.200000","2018-06-01 12:02:25.800000","2018-06-01 12:02:26.100000","2018-06-01 12:02:26.200000","2018-06-01 12:02:26.500000","2018-06-01 12:02:26.900000","2018-06-01 12:02:27.100000","2018-06-01 12:02:27.200000","2018-06-01 12:02:27.300000","2018-06-01 12:02:27.400000","2018-06-01 12:02:27.500000","2018-06-01 12:02:27.900000","2018-06-01 12:02:28.100000","2018-06-01 12:02:28.200000","2018-06-01 12:02:28.400000","2018-06-01 12:02:28.800000","2018-06-01 12:02:29.100000","2018-06-01 12:02:29.400000","2018-06-01 12:02:29.700000","2018-06-01 12:02:29.800000","2018-06-01 12:02:30.200000","2018-06-01 12:02:30.500000","2018-06-01 12:02:30.600000","2018-06-01 12:02:30.700000","2018-06-01 12:02:31.100000","2018-06-01 12:02:31.400000","2018-06-01 12:02:31.600000","2018-06-01 12:02:31.800000","2018-06-01 12:02:31.900000","2018-06-01 12:02:32.100000","2018-06-01 12:02:32.300000","2018-06-01 12:02:32.400000","2018-06-01 12:02:33.000000","2018-06-01 12:02:33.900000","2018-06-01 12:02:34.000000","2018-06-01 12:02:34.300000","2018-06-01 12:02:34.400000","2018-06-01 12:02:34.500000","2018-06-01 12:02:34.600000","2018-06-01 12:02:34.800000","2018-06-01 12:02:35.200000","2018-06-01 12:02:35.700000","2018-06-01 12:02:36.400000","2018-06-01 12:02:36.600000","2018-06-01 12:02:37.000000","2018-06-01 12:02:37.100000","2018-06-01 12:02:38.200000","2018-06-01 12:02:38.700000","2018-06-01 12:02:38.900000","2018-06-01 12:02:39.000000","2018-06-01 12:02:39.600000","2018-06-01 12:02:40.000000","2018-06-01 12:02:40.400000","2018-06-01 12:02:40.500000","2018-06-01 12:02:40.800000","2018-06-01 12:02:41.200000","2018-06-01 12:02:41.400000","2018-06-01 12:02:41.900000","2018-06-01 12:02:42.100000","2018-06-01 12:02:42.400000","2018-06-01 12:02:42.800000","2018-06-01 12:02:43.000000","2018-06-01 12:02:43.200000","2018-06-01 12:02:43.900000","2018-06-01 12:02:44.800000","2018-06-01 12:02:45.100000","2018-06-01 12:02:45.400000","2018-06-01 12:02:47.500000","2018-06-01 12:02:47.600000","2018-06-01 12:02:47.800000","2018-06-01 12:02:47.900000","2018-06-01 12:02:48.100000","2018-06-01 12:02:48.600000","2018-06-01 12:02:49.000000","2018-06-01 12:02:49.100000","2018-06-01 12:02:49.500000","2018-06-01 12:02:49.600000","2018-06-01 12:02:50.700000","2018-06-01 12:02:51.600000","2018-06-01 12:02:52.400000","2018-06-01 12:02:52.600000","2018-06-01 12:02:53.000000","2018-06-01 12:02:53.200000","2018-06-01 12:02:53.300000","2018-06-01 12:02:53.400000","2018-06-01 12:02:53.600000","2018-06-01 12:02:53.700000","2018-06-01 12:02:53.900000","2018-06-01 12:02:54.200000","2018-06-01 12:02:54.600000","2018-06-01 12:02:55.100000","2018-06-01 12:02:55.200000","2018-06-01 12:02:55.400000","2018-06-01 12:02:55.800000","2018-06-01 12:02:56.100000","2018-06-01 12:02:56.200000","2018-06-01 12:02:56.500000","2018-06-01 12:02:56.600000","2018-06-01 12:02:56.900000","2018-06-01 12:02:57.100000","2018-06-01 12:02:57.200000","2018-06-01 12:02:58.100000","2018-06-01 12:02:58.400000","2018-06-01 12:02:58.700000","2018-06-01 12:02:59.000000","2018-06-01 12:02:59.300000","2018-06-01 12:02:59.900000","2018-06-01 12:03:00.100000","2018-06-01 12:03:00.600000","2018-06-01 12:03:00.800000","2018-06-01 12:03:01.000000","2018-06-01 12:03:01.500000","2018-06-01 12:03:01.800000","2018-06-01 12:03:02.000000","2018-06-01 12:03:02.400000","2018-06-01 12:03:03.600000","2018-06-01 12:03:03.800000","2018-06-01 12:03:03.900000","2018-06-01 12:03:04.200000","2018-06-01 12:03:04.500000","2018-06-01 12:03:04.700000","2018-06-01 12:03:05.200000","2018-06-01 12:03:05.300000","2018-06-01 12:03:06.400000","2018-06-01 12:03:07.200000","2018-06-01 12:03:07.500000","2018-06-01 12:03:07.700000","2018-06-01 12:03:08.600000","2018-06-01 12:03:09.900000","2018-06-01 12:03:10.000000","2018-06-01 12:03:10.200000","2018-06-01 12:03:10.500000","2018-06-01 12:03:10.600000","2018-06-01 12:03:10.700000","2018-06-01 12:03:10.800000","2018-06-01 12:03:10.900000","2018-06-01 12:03:11.000000","2018-06-01 12:03:11.200000","2018-06-01 12:03:11.400000","2018-06-01 12:03:11.600000","2018-06-01 12:03:11.700000","2018-06-01 12:03:11.800000","2018-06-01 12:03:12.200000","2018-06-01 12:03:12.500000","2018-06-01 12:03:12.800000","2018-06-01 12:03:13.400000","2018-06-01 12:03:13.500000","2018-06-01 12:03:14.400000","2018-06-01 12:03:15.000000","2018-06-01 12:03:15.100000","2018-06-01 12:03:16.000000","2018-06-01 12:03:17.000000","2018-06-01 12:03:17.100000","2018-06-01 12:03:17.300000","2018-06-01 12:03:17.800000","2018-06-01 12:03:17.900000","2018-06-01 12:03:18.000000","2018-06-01 12:03:18.100000","2018-06-01 12:03:19.000000","2018-06-01 12:03:19.900000","2018-06-01 12:03:20.300000","2018-06-01 12:03:20.700000","2018-06-01 12:03:20.900000","2018-06-01 12:03:21.000000","2018-06-01 12:03:21.200000","2018-06-01 12:03:21.700000","2018-06-01 12:03:22.600000","2018-06-01 12:03:22.700000","2018-06-01 12:03:23.400000","2018-06-01 12:03:23.700000","2018-06-01 12:03:23.800000","2018-06-01 12:03:24.100000","2018-06-01 12:03:25.100000","2018-06-01 12:03:25.400000","2018-06-01 12:03:25.500000","2018-06-01 12:03:25.800000","2018-06-01 12:03:26.700000","2018-06-01 12:03:27.100000","2018-06-01 12:03:27.600000","2018-06-01 12:03:28.000000","2018-06-01 12:03:28.500000","2018-06-01 12:03:28.700000","2018-06-01 12:03:29.000000","2018-06-01 12:03:29.400000","2018-06-01 12:03:29.600000","2018-06-01 12:03:29.700000","2018-06-01 12:03:29.800000","2018-06-01 12:03:30.400000","2018-06-01 12:03:30.500000","2018-06-01 12:03:31.000000","2018-06-01 12:03:31.200000","2018-06-01 12:03:31.300000","2018-06-01 12:03:31.700000","2018-06-01 12:03:31.900000","2018-06-01 12:03:32.400000","2018-06-01 12:03:32.600000","2018-06-01 12:03:32.700000","2018-06-01 12:03:32.800000","2018-06-01 12:03:32.900000","2018-06-01 12:03:33.000000","2018-06-01 12:03:33.300000","2018-06-01 12:03:33.600000","2018-06-01 12:03:34.700000","2018-06-01 12:03:35.500000","2018-06-01 12:03:36.600000","2018-06-01 12:03:37.100000","2018-06-01 12:03:37.400000","2018-06-01 12:03:37.600000","2018-06-01 12:03:38.000000","2018-06-01 12:03:38.100000","2018-06-01 12:03:38.400000","2018-06-01 12:03:38.600000","2018-06-01 12:03:38.700000","2018-06-01 12:03:38.900000","2018-06-01 12:03:39.100000","2018-06-01 12:03:39.600000","2018-06-01 12:03:40.200000","2018-06-01 12:03:40.800000","2018-06-01 12:03:40.900000","2018-06-01 12:03:41.500000","2018-06-01 12:03:41.700000","2018-06-01 12:03:41.800000","2018-06-01 12:03:42.200000","2018-06-01 12:03:42.500000","2018-06-01 12:03:42.600000","2018-06-01 12:03:43.000000","2018-06-01 12:03:43.500000","2018-06-01 12:03:43.700000","2018-06-01 12:03:43.900000","2018-06-01 12:03:44.500000","2018-06-01 12:03:45.100000","2018-06-01 12:03:45.200000","2018-06-01 12:03:45.400000","2018-06-01 12:03:45.700000","2018-06-01 12:03:45.800000","2018-06-01 12:03:45.900000","2018-06-01 12:03:46.000000","2018-06-01 12:03:46.300000","2018-06-01 12:03:46.500000","2018-06-01 12:03:46.800000","2018-06-01 12:03:47.200000","2018-06-01 12:03:47.800000","2018-06-01 12:03:48.200000","2018-06-01 12:03:48.300000","2018-06-01 12:03:49.900000","2018-06-01 12:03:50.300000","2018-06-01 12:03:50.500000","2018-06-01 12:03:51.100000","2018-06-01 12:03:51.400000","2018-06-01 12:03:51.800000","2018-06-01 12:03:51.900000","2018-06-01 12:03:52.700000","2018-06-01 12:03:52.800000","2018-06-01 12:03:53.200000","2018-06-01 12:03:53.300000","2018-06-01 12:03:54.000000","2018-06-01 12:03:54.700000","2018-06-01 12:03:57.500000","2018-06-01 12:03:57.900000","2018-06-01 12:03:58.100000","2018-06-01 12:03:58.800000","2018-06-01 12:03:59.100000","2018-06-01 12:03:59.300000","2018-06-01 12:03:59.700000","2018-06-01 12:04:00.000000","2018-06-01 12:04:00.100000","2018-06-01 12:04:00.300000","2018-06-01 12:04:00.500000","2018-06-01 12:04:01.100000","2018-06-01 12:04:02.100000","2018-06-01 12:04:03.000000","2018-06-01 12:04:03.900000","2018-06-01 12:04:04.900000","2018-06-01 12:04:05.100000","2018-06-01 12:04:05.200000","2018-06-01 12:04:05.400000","2018-06-01 12:04:06.200000","2018-06-01 12:04:06.300000","2018-06-01 12:04:06.700000","2018-06-01 12:04:06.900000","2018-06-01 12:04:07.000000","2018-06-01 12:04:07.500000","2018-06-01 12:04:07.700000","2018-06-01 12:04:08.200000","2018-06-01 12:04:08.500000","2018-06-01 12:04:08.900000","2018-06-01 12:04:09.500000","2018-06-01 12:04:09.800000","2018-06-01 12:04:10.100000","2018-06-01 12:04:10.200000","2018-06-01 12:04:10.400000","2018-06-01 12:04:10.800000","2018-06-01 12:04:11.400000","2018-06-01 12:04:11.700000","2018-06-01 12:04:12.100000","2018-06-01 12:04:12.300000","2018-06-01 12:04:12.800000","2018-06-01 12:04:12.900000","2018-06-01 12:04:13.200000","2018-06-01 12:04:13.700000","2018-06-01 12:04:14.300000","2018-06-01 12:04:15.200000","2018-06-01 12:04:15.600000","2018-06-01 12:04:15.700000","2018-06-01 12:04:16.500000","2018-06-01 12:04:16.600000","2018-06-01 12:04:17.100000","2018-06-01 12:04:17.200000","2018-06-01 12:04:17.400000","2018-06-01 12:04:18.000000","2018-06-01 12:04:18.100000","2018-06-01 12:04:18.500000","2018-06-01 12:04:18.700000","2018-06-01 12:04:18.900000","2018-06-01 12:04:20.200000","2018-06-01 12:04:20.400000","2018-06-01 12:04:20.700000","2018-06-01 12:04:20.900000","2018-06-01 12:04:21.200000","2018-06-01 12:04:21.400000","2018-06-01 12:04:22.200000","2018-06-01 12:04:22.500000","2018-06-01 12:04:23.200000","2018-06-01 12:04:23.700000","2018-06-01 12:04:24.600000","2018-06-01 12:04:24.900000","2018-06-01 12:04:25.200000","2018-06-01 12:04:25.500000","2018-06-01 12:04:25.600000","2018-06-01 12:04:25.700000","2018-06-01 12:04:25.800000","2018-06-01 12:04:26.000000","2018-06-01 12:04:26.700000","2018-06-01 12:04:27.100000","2018-06-01 12:04:27.300000","2018-06-01 12:04:27.600000","2018-06-01 12:04:27.700000","2018-06-01 12:04:27.800000","2018-06-01 12:04:28.100000","2018-06-01 12:04:28.200000","2018-06-01 12:04:28.600000","2018-06-01 12:04:28.900000","2018-06-01 12:04:29.200000","2018-06-01 12:04:29.800000","2018-06-01 12:04:30.200000","2018-06-01 12:04:30.500000","2018-06-01 12:04:31.100000","2018-06-01 12:04:31.800000","2018-06-01 12:04:32.000000","2018-06-01 12:04:32.600000","2018-06-01 12:04:32.800000","2018-06-01 12:04:32.900000","2018-06-01 12:04:33.000000","2018-06-01 12:04:33.400000","2018-06-01 12:04:33.500000","2018-06-01 12:04:33.600000","2018-06-01 12:04:34.300000","2018-06-01 12:04:34.600000","2018-06-01 12:04:34.700000","2018-06-01 12:04:34.900000","2018-06-01 12:04:35.000000","2018-06-01 12:04:35.300000","2018-06-01 12:04:35.900000","2018-06-01 12:04:36.100000","2018-06-01 12:04:36.500000","2018-06-01 12:04:36.900000","2018-06-01 12:04:37.000000","2018-06-01 12:04:37.100000","2018-06-01 12:04:38.400000","2018-06-01 12:04:39.000000","2018-06-01 12:04:39.200000","2018-06-01 12:04:39.300000","2018-06-01 12:04:39.400000","2018-06-01 12:04:39.600000","2018-06-01 12:04:40.500000","2018-06-01 12:04:40.800000","2018-06-01 12:04:41.100000","2018-06-01 12:04:41.800000","2018-06-01 12:04:41.900000","2018-06-01 12:04:42.400000","2018-06-01 12:04:42.500000","2018-06-01 12:04:42.600000","2018-06-01 12:04:42.700000","2018-06-01 12:04:42.900000","2018-06-01 12:04:43.500000","2018-06-01 12:04:44.200000","2018-06-01 12:04:44.500000","2018-06-01 12:04:45.000000","2018-06-01 12:04:45.200000","2018-06-01 12:04:45.300000","2018-06-01 12:04:45.400000","2018-06-01 12:04:46.700000","2018-06-01 12:04:47.400000","2018-06-01 12:04:47.500000","2018-06-01 12:04:47.800000","2018-06-01 12:04:47.900000","2018-06-01 12:04:48.200000","2018-06-01 12:04:48.400000","2018-06-01 12:04:48.500000","2018-06-01 12:04:49.000000","2018-06-01 12:04:49.700000","2018-06-01 12:04:49.800000","2018-06-01 12:04:50.100000","2018-06-01 12:04:50.600000","2018-06-01 12:04:51.000000","2018-06-01 12:04:51.900000","2018-06-01 12:04:52.100000","2018-06-01 12:04:52.200000","2018-06-01 12:04:52.900000","2018-06-01 12:04:53.500000","2018-06-01 12:04:53.800000","2018-06-01 12:04:54.700000","2018-06-01 12:04:55.200000","2018-06-01 12:04:55.700000","2018-06-01 12:04:56.000000","2018-06-01 12:04:56.200000","2018-06-01 12:04:56.500000","2018-06-01 12:04:56.800000","2018-06-01 12:04:57.400000","2018-06-01 12:04:57.900000","2018-06-01 12:04:58.400000","2018-06-01 12:04:58.600000","2018-06-01 12:04:58.700000","2018-06-01 12:04:59.000000","2018-06-01 12:04:59.700000"],"xaxis":"x","y":[102.47,102.51,102.45,102.53,102.7,102.99,103.4,103.92,104.26,104.67,105.02,105.44,105.82,106.18,106.34,106.59,106.76,107.03,107.33,107.68,108.08,108.63,108.91,109.18,109.34,109.43,109.48,109.42,109.59,109.71,109.8,109.94,110.06,110.02,110.09,110.02,109.95,110.12,110.09,110.04,109.88,109.83,109.7,109.72,109.85,109.87,109.84,109.7,109.59,109.59,109.64,109.68,109.77,109.86,109.88,110.09,110.3,110.57,110.72,110.9,111.01,111.07,111.05,110.9,110.7,110.43,110.28,110.12,109.82,109.47,109.12,108.8,108.48,108.07,107.52,107.02,106.7,106.45,106.22,106.08,106.04,105.99,105.77,105.64,105.6,105.52,105.5,105.51,105.4,105.34,105.4,105.44,105.5,105.63,105.91,106.19,106.42,106.61,106.83,106.91,107.08,107.33,107.48,107.61,107.79,108.05,108.25,108.59,109.15,109.51,109.9,110.35,110.71,111,111.16,111.27,111.43,111.66,111.92,112.01,112,111.99,111.97,112.07,112.18,112.2,112.24,112.22,112.33,112.35,112.51,112.59,112.73,112.65,112.56,112.57,112.56,112.63,112.75,112.82,113.08,113.11,113.06,113.06,113.16,113.2,113.26,113.37,113.57,113.8,114.14,114.31,114.54,114.78,115.01,115.13,115.37,115.57,115.85,116.04,116.12,115.97,115.82,115.88,115.93,115.95,116.02,116.09,116.06,115.92,115.74,115.55,115.53,115.4,115.28,115.21,115.13,115.16,115.11,115.08,115.27,115.44,115.63,115.78,116,116.27,116.5,116.54,116.76,117.01,117.02,116.98,117.05,117.13,117.31,117.5,117.68,117.94,118.12,118.37,118.67,118.85,119.12,119.19,119.23,119.28,119.4,119.5,119.78,119.9,120.21,120.61,121.06,121.65,122.36,123.15,123.85,124.59,125.41,126.26,126.96,127.51,128.09,128.6,129.1,129.56,129.95,130.22,130.37,130.36,130.27,130.12,129.99,129.97,130.02,129.95,129.78,129.64,129.47,129.2,128.87,128.66,128.41,128.01,127.62,127.33,127.01,126.77,126.5,126.36,126.3,126.24,126.09,126.07,126.08,126.05,125.91,125.83,125.74,125.51,125.25,125.16,125.09,125.03,124.95,124.87,124.84,124.69,124.53,124.4,124.31,124.21,124.29,124.17,124.14,124.03,123.9,123.7,123.56,123.37,123.22,123.07,122.83,122.55,122.12,121.7,121.44,121.32,121.36,121.52,121.6,121.67,121.67,121.58,121.49,121.46,121.35,121.34,121.25,121.11,120.9,120.73,120.59,120.47,120.46,120.43,120.57,120.67,120.71,120.63,120.45,120.23,120.14,120.27,120.43,120.58,120.51,120.35,120.17,120.08,119.85,119.48,119.19,119.09,119.18,119.18,119.23,119.17,119.16,119.1,118.87,118.75,118.72,118.83,119.01,119.33,119.66,119.98,120.37,120.68,120.94,121.05,121.06,120.97,120.79,120.62,120.37,120.17,119.98,119.79,119.7,119.68,119.56,119.58,119.58,119.6,119.59,119.65,119.81,119.81,119.77,119.8,119.74,119.64,119.51,119.29,119.06,118.71,118.27,117.71,117.25,116.63,115.96,115.2,114.46,113.86,113.48,112.8,112.08,111.51,110.92,110.3,109.69,109.21,108.8,108.48,108.15,107.84,107.53,107.16,106.86,106.55,106.2,105.8,105.44,105.15,104.94,104.76,104.65,104.5,104.46,104.41,104.33,104.21,104.01,103.97,103.98,104.05,104.24,104.38,104.53,104.72,104.95,105.17,105.36,105.42,105.62,105.72,105.86,106.08,106.3,106.55,106.69,106.97,107.38,107.82,108.37,108.84,109.16,109.41,109.61,109.84,110.09,110.22,110.44,110.81,111.17,111.5,111.81,112.19,112.53,112.93,113.32,113.66,113.94,114.03,114.01,114,113.8,113.78,113.58,113.19,112.96,112.78,112.65,112.44,112.28,112.12,111.98,111.9,111.75,111.63,111.39,111.06,110.72,110.28,109.92,109.57,109.43,109.27,109.05,108.91,108.76,108.63,108.52,108.39,108.29,108.2,108.19,108.05,107.91,107.74,107.7,107.84,107.96,108.1,108.46,108.77,108.98,109.15,109.27,109.3,109.45,109.61,109.8,109.87,109.91,109.89,109.85,110.1,110.37,110.65,110.93,111.39,111.69,112.1,112.62,113.06,113.55,114.11,114.7,115.36,115.93,116.33,116.62,116.82,117.07,117.31,117.39,117.44,117.53,117.61,117.74,117.85,117.95,118.1,118.02,117.95,117.93,117.92,117.81,117.7,117.73,117.72,117.76,117.69,117.51,117.47,117.51,117.61,117.67,117.76,117.66,117.63,117.59,117.41,117.25,117.16,117.19,117.29,117.32,117.36,117.45,117.63,117.77,118.01,118.19,118.39,118.38,118.45,118.43,118.35,118.33,118.21,118.15,117.95,117.84,117.61,117.45,117.34,117.29,117.34,117.38,117.36,117.3,117.09,116.8,116.46,116.01,115.54,115.12,114.7,114.35,113.9,113.55,113.18,112.94,112.64,112.26,111.88,111.45,111.07,110.8,110.74,110.53,110.26,110.15,109.89,109.86,109.86,109.96,109.95,109.88,109.87,109.92,109.85,110.01,110.12,110.27,110.4,110.66,110.8,110.86,110.71,110.42,110.2,110.09,110.02,110.03,110.02,109.85,109.59,109.3,109.02,108.74,108.42,108.07,107.85,107.77,107.7,107.62,107.58,107.49,107.39,107.26,107.14,107.1,107.26,107.42,107.31,106.97,106.84,106.64,106.62,106.6,106.61,106.75,106.98,107.14,107.21,107.44,107.6,107.71,107.96,108.35,108.65,108.97,109.34,109.65,109.82,109.93,109.86,109.9,110,110.08,110.1,110.05,110.05,110.19,110.23,110.21,110.28,110.41,110.57,110.56,110.61,110.71,110.8,111.04,111.23,111.4,111.61,111.86,112.17,112.42,112.61,112.66,112.74,112.73,112.72,112.77,112.94,113.23,113.62,114.07,114.41,114.72,115.15,115.57,115.97,116.25,116.56,116.97,117.21,117.56,117.79,117.97,118.02,118.18,118.37,118.47,118.41,118.25,118.13,117.92,117.86,117.67,117.41,117.19,116.96,116.77,116.62,116.6,116.4,116.29,116.21,116.12,116.03,115.96,115.77,115.86,115.84,115.89,115.85,115.94,116.05,116.11,116.18,116.29,116.41,116.49,116.54,116.54,116.56,116.68,116.87,117.04,117.21,117.22,117.46,117.68,118.05,118.26,118.29,118.32,118.41,118.66,118.95,119.21,119.6,119.98,120.25,120.64,121.1,121.57,122.03,122.63,123.23,123.62,123.97,124.29,124.67,124.95,125.21,125.52,125.92,126.05,126.28,126.58,126.92,127.18,127.36,127.54,127.78,127.88,127.97,128.16,128.41,128.63,128.85,129.06,129.08,129.09,129.02,128.96,128.76,128.56,128.35,128.09,127.76,127.28,126.66,126.17,125.68,125.12,124.39,123.75,122.9,122.28,121.67,121.13,120.55,119.98,119.54,119.14,118.69,118.37,117.95,117.56,117.14,116.44,115.6,115.14,114.71,114.43,114.32,114.31,114.27,114.1,113.9,113.62,113.25,112.98,112.82,112.78,112.86,112.93,112.65,112.69,112.72,112.84,112.81,112.83,112.64,112.47,112.37,112.4,112.45],"yaxis":"y","type":"scatter"}],"layout":{"legend":{"tracegroupgap":0},"template":{"data":{"barpolar":[{"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"type":"carpet"}],"choropleth":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"choropleth"}],"contourcarpet":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"contourcarpet"}],"contour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"contour"}],"heatmap":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"heatmap"}],"histogram2dcontour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"histogram2dcontour"}],"histogram2d":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"histogram2d"}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"mesh3d":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"mesh3d"}],"parcoords":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"parcoords"}],"pie":[{"automargin":true,"type":"pie"}],"scatter3d":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatter3d"}],"scattercarpet":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattercarpet"}],"scattergeo":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergeo"}],"scattergl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergl"}],"scattermapbox":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermapbox"}],"scattermap":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermap"}],"scatterpolargl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolargl"}],"scatterpolar":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolar"}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"scatterternary":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterternary"}],"surface":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"surface"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}]},"layout":{"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"autotypenumbers":"strict","coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]],"sequential":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"sequentialminus":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]]},"colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"geo":{"bgcolor":"white","lakecolor":"white","landcolor":"#E5ECF6","showlakes":true,"showland":true,"subunitcolor":"white"},"hoverlabel":{"align":"left"},"hovermode":"closest","mapbox":{"style":"light"},"paper_bgcolor":"white","plot_bgcolor":"#E5ECF6","polar":{"angularaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"bgcolor":"#E5ECF6","radialaxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"scene":{"xaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"},"yaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"},"zaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"ternary":{"aaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"baxis":{"gridcolor":"white","linecolor":"white","ticks":""},"bgcolor":"#E5ECF6","caxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"title":{"x":0.05},"xaxis":{"automargin":true,"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","zerolinewidth":2},"yaxis":{"automargin":true,"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","zerolinewidth":2}}},"xaxis":{"anchor":"y","domain":[0,1],"side":"bottom","title":{"text":"Timestamp"}},"yaxis":{"anchor":"x","domain":[0,1],"side":"left","title":{"text":"Price"}}},"isDefaultTemplate":true}},"trend":{"type":"deephaven.plot.express.DeephavenFigure","data":{"data":[{"hovertemplate":"Timestamp=%{x}
AvgPrice=%{y}","legendgroup":"","line":{"dash":"solid","shape":"linear"},"marker":{"symbol":"circle"},"mode":"lines","name":"","showlegend":false,"x":["2018-06-01 12:00:00.100000","2018-06-01 12:00:00.300000","2018-06-01 12:00:00.400000","2018-06-01 12:00:00.800000","2018-06-01 12:00:01.300000","2018-06-01 12:00:01.400000","2018-06-01 12:00:01.800000","2018-06-01 12:00:02.100000","2018-06-01 12:00:02.800000","2018-06-01 12:00:03.100000","2018-06-01 12:00:03.200000","2018-06-01 12:00:03.900000","2018-06-01 12:00:04.300000","2018-06-01 12:00:04.500000","2018-06-01 12:00:04.900000","2018-06-01 12:00:05.100000","2018-06-01 12:00:05.500000","2018-06-01 12:00:05.700000","2018-06-01 12:00:05.900000","2018-06-01 12:00:06.600000","2018-06-01 12:00:06.700000","2018-06-01 12:00:07.200000","2018-06-01 12:00:07.900000","2018-06-01 12:00:08.000000","2018-06-01 12:00:08.200000","2018-06-01 12:00:08.500000","2018-06-01 12:00:08.700000","2018-06-01 12:00:08.900000","2018-06-01 12:00:09.000000","2018-06-01 12:00:09.100000","2018-06-01 12:00:09.700000","2018-06-01 12:00:10.000000","2018-06-01 12:00:10.200000","2018-06-01 12:00:10.700000","2018-06-01 12:00:10.800000","2018-06-01 12:00:11.300000","2018-06-01 12:00:11.400000","2018-06-01 12:00:11.700000","2018-06-01 12:00:12.100000","2018-06-01 12:00:12.300000","2018-06-01 12:00:12.700000","2018-06-01 12:00:13.700000","2018-06-01 12:00:13.800000","2018-06-01 12:00:13.900000","2018-06-01 12:00:14.600000","2018-06-01 12:00:14.900000","2018-06-01 12:00:15.400000","2018-06-01 12:00:16.000000","2018-06-01 12:00:16.200000","2018-06-01 12:00:16.400000","2018-06-01 12:00:16.500000","2018-06-01 12:00:16.600000","2018-06-01 12:00:16.700000","2018-06-01 12:00:16.900000","2018-06-01 12:00:17.600000","2018-06-01 12:00:18.000000","2018-06-01 12:00:18.300000","2018-06-01 12:00:19.000000","2018-06-01 12:00:19.800000","2018-06-01 12:00:20.000000","2018-06-01 12:00:20.100000","2018-06-01 12:00:20.300000","2018-06-01 12:00:20.600000","2018-06-01 12:00:21.300000","2018-06-01 12:00:21.500000","2018-06-01 12:00:22.100000","2018-06-01 12:00:22.400000","2018-06-01 12:00:23.900000","2018-06-01 12:00:24.500000","2018-06-01 12:00:24.900000","2018-06-01 12:00:25.500000","2018-06-01 12:00:25.900000","2018-06-01 12:00:26.000000","2018-06-01 12:00:26.700000","2018-06-01 12:00:26.900000","2018-06-01 12:00:27.300000","2018-06-01 12:00:27.400000","2018-06-01 12:00:28.100000","2018-06-01 12:00:28.400000","2018-06-01 12:00:29.400000","2018-06-01 12:00:29.600000","2018-06-01 12:00:29.800000","2018-06-01 12:00:30.300000","2018-06-01 12:00:30.400000","2018-06-01 12:00:30.500000","2018-06-01 12:00:30.800000","2018-06-01 12:00:30.900000","2018-06-01 12:00:31.400000","2018-06-01 12:00:31.600000","2018-06-01 12:00:31.900000","2018-06-01 12:00:32.600000","2018-06-01 12:00:33.200000","2018-06-01 12:00:33.500000","2018-06-01 12:00:33.600000","2018-06-01 12:00:33.700000","2018-06-01 12:00:33.800000","2018-06-01 12:00:33.900000","2018-06-01 12:00:34.200000","2018-06-01 12:00:34.300000","2018-06-01 12:00:35.300000","2018-06-01 12:00:35.400000","2018-06-01 12:00:35.500000","2018-06-01 12:00:35.700000","2018-06-01 12:00:35.900000","2018-06-01 12:00:36.600000","2018-06-01 12:00:36.700000","2018-06-01 12:00:37.000000","2018-06-01 12:00:37.200000","2018-06-01 12:00:37.300000","2018-06-01 12:00:37.500000","2018-06-01 12:00:37.700000","2018-06-01 12:00:37.800000","2018-06-01 12:00:37.900000","2018-06-01 12:00:38.200000","2018-06-01 12:00:39.600000","2018-06-01 12:00:39.700000","2018-06-01 12:00:39.900000","2018-06-01 12:00:40.300000","2018-06-01 12:00:40.400000","2018-06-01 12:00:40.500000","2018-06-01 12:00:41.000000","2018-06-01 12:00:41.100000","2018-06-01 12:00:41.600000","2018-06-01 12:00:42.000000","2018-06-01 12:00:42.600000","2018-06-01 12:00:42.700000","2018-06-01 12:00:42.800000","2018-06-01 12:00:43.000000","2018-06-01 12:00:43.300000","2018-06-01 12:00:43.800000","2018-06-01 12:00:44.000000","2018-06-01 12:00:44.100000","2018-06-01 12:00:44.900000","2018-06-01 12:00:45.000000","2018-06-01 12:00:45.100000","2018-06-01 12:00:45.300000","2018-06-01 12:00:45.800000","2018-06-01 12:00:46.300000","2018-06-01 12:00:46.400000","2018-06-01 12:00:46.500000","2018-06-01 12:00:46.700000","2018-06-01 12:00:46.900000","2018-06-01 12:00:47.000000","2018-06-01 12:00:47.400000","2018-06-01 12:00:48.500000","2018-06-01 12:00:48.600000","2018-06-01 12:00:48.800000","2018-06-01 12:00:49.700000","2018-06-01 12:00:49.900000","2018-06-01 12:00:50.300000","2018-06-01 12:00:50.500000","2018-06-01 12:00:51.100000","2018-06-01 12:00:51.200000","2018-06-01 12:00:51.300000","2018-06-01 12:00:51.500000","2018-06-01 12:00:52.100000","2018-06-01 12:00:52.200000","2018-06-01 12:00:52.400000","2018-06-01 12:00:53.200000","2018-06-01 12:00:53.500000","2018-06-01 12:00:53.800000","2018-06-01 12:00:54.500000","2018-06-01 12:00:54.600000","2018-06-01 12:00:54.700000","2018-06-01 12:00:55.200000","2018-06-01 12:00:55.500000","2018-06-01 12:00:55.700000","2018-06-01 12:00:55.900000","2018-06-01 12:00:56.700000","2018-06-01 12:00:56.800000","2018-06-01 12:00:57.000000","2018-06-01 12:00:57.100000","2018-06-01 12:00:58.200000","2018-06-01 12:00:58.500000","2018-06-01 12:00:58.900000","2018-06-01 12:00:59.000000","2018-06-01 12:00:59.200000","2018-06-01 12:00:59.400000","2018-06-01 12:00:59.700000","2018-06-01 12:01:00.100000","2018-06-01 12:01:00.300000","2018-06-01 12:01:00.400000","2018-06-01 12:01:00.500000","2018-06-01 12:01:00.800000","2018-06-01 12:01:01.400000","2018-06-01 12:01:01.500000","2018-06-01 12:01:01.600000","2018-06-01 12:01:02.000000","2018-06-01 12:01:02.300000","2018-06-01 12:01:02.400000","2018-06-01 12:01:02.900000","2018-06-01 12:01:03.300000","2018-06-01 12:01:03.400000","2018-06-01 12:01:03.600000","2018-06-01 12:01:04.000000","2018-06-01 12:01:04.500000","2018-06-01 12:01:05.100000","2018-06-01 12:01:05.200000","2018-06-01 12:01:05.800000","2018-06-01 12:01:06.000000","2018-06-01 12:01:06.700000","2018-06-01 12:01:07.200000","2018-06-01 12:01:07.500000","2018-06-01 12:01:07.600000","2018-06-01 12:01:07.800000","2018-06-01 12:01:09.600000","2018-06-01 12:01:09.700000","2018-06-01 12:01:10.000000","2018-06-01 12:01:10.300000","2018-06-01 12:01:10.700000","2018-06-01 12:01:10.800000","2018-06-01 12:01:11.600000","2018-06-01 12:01:11.700000","2018-06-01 12:01:11.800000","2018-06-01 12:01:12.100000","2018-06-01 12:01:12.500000","2018-06-01 12:01:12.600000","2018-06-01 12:01:13.600000","2018-06-01 12:01:13.700000","2018-06-01 12:01:13.900000","2018-06-01 12:01:14.100000","2018-06-01 12:01:14.500000","2018-06-01 12:01:14.800000","2018-06-01 12:01:15.400000","2018-06-01 12:01:15.900000","2018-06-01 12:01:16.000000","2018-06-01 12:01:16.100000","2018-06-01 12:01:16.500000","2018-06-01 12:01:16.800000","2018-06-01 12:01:16.900000","2018-06-01 12:01:17.200000","2018-06-01 12:01:17.300000","2018-06-01 12:01:17.700000","2018-06-01 12:01:17.800000","2018-06-01 12:01:18.000000","2018-06-01 12:01:18.100000","2018-06-01 12:01:20.100000","2018-06-01 12:01:20.300000","2018-06-01 12:01:20.900000","2018-06-01 12:01:21.100000","2018-06-01 12:01:21.200000","2018-06-01 12:01:21.600000","2018-06-01 12:01:21.700000","2018-06-01 12:01:22.000000","2018-06-01 12:01:22.500000","2018-06-01 12:01:22.800000","2018-06-01 12:01:22.900000","2018-06-01 12:01:23.000000","2018-06-01 12:01:23.100000","2018-06-01 12:01:24.000000","2018-06-01 12:01:24.500000","2018-06-01 12:01:24.600000","2018-06-01 12:01:24.900000","2018-06-01 12:01:25.500000","2018-06-01 12:01:25.600000","2018-06-01 12:01:26.000000","2018-06-01 12:01:27.000000","2018-06-01 12:01:27.300000","2018-06-01 12:01:27.700000","2018-06-01 12:01:27.900000","2018-06-01 12:01:28.600000","2018-06-01 12:01:28.800000","2018-06-01 12:01:29.000000","2018-06-01 12:01:29.200000","2018-06-01 12:01:29.600000","2018-06-01 12:01:29.700000","2018-06-01 12:01:30.300000","2018-06-01 12:01:30.600000","2018-06-01 12:01:30.900000","2018-06-01 12:01:31.300000","2018-06-01 12:01:31.400000","2018-06-01 12:01:31.500000","2018-06-01 12:01:32.200000","2018-06-01 12:01:32.900000","2018-06-01 12:01:33.600000","2018-06-01 12:01:34.400000","2018-06-01 12:01:34.600000","2018-06-01 12:01:34.700000","2018-06-01 12:01:35.000000","2018-06-01 12:01:35.200000","2018-06-01 12:01:35.300000","2018-06-01 12:01:35.400000","2018-06-01 12:01:36.200000","2018-06-01 12:01:36.500000","2018-06-01 12:01:36.600000","2018-06-01 12:01:37.100000","2018-06-01 12:01:37.300000","2018-06-01 12:01:38.600000","2018-06-01 12:01:39.100000","2018-06-01 12:01:39.300000","2018-06-01 12:01:39.500000","2018-06-01 12:01:39.800000","2018-06-01 12:01:40.900000","2018-06-01 12:01:41.500000","2018-06-01 12:01:41.900000","2018-06-01 12:01:42.000000","2018-06-01 12:01:42.200000","2018-06-01 12:01:42.500000","2018-06-01 12:01:42.600000","2018-06-01 12:01:42.700000","2018-06-01 12:01:43.700000","2018-06-01 12:01:43.800000","2018-06-01 12:01:44.200000","2018-06-01 12:01:44.700000","2018-06-01 12:01:44.800000","2018-06-01 12:01:45.100000","2018-06-01 12:01:45.400000","2018-06-01 12:01:45.500000","2018-06-01 12:01:45.600000","2018-06-01 12:01:45.900000","2018-06-01 12:01:46.000000","2018-06-01 12:01:46.200000","2018-06-01 12:01:46.300000","2018-06-01 12:01:46.400000","2018-06-01 12:01:46.700000","2018-06-01 12:01:47.100000","2018-06-01 12:01:47.800000","2018-06-01 12:01:48.200000","2018-06-01 12:01:48.300000","2018-06-01 12:01:48.700000","2018-06-01 12:01:49.500000","2018-06-01 12:01:49.800000","2018-06-01 12:01:50.400000","2018-06-01 12:01:50.800000","2018-06-01 12:01:51.100000","2018-06-01 12:01:51.300000","2018-06-01 12:01:51.500000","2018-06-01 12:01:51.800000","2018-06-01 12:01:51.900000","2018-06-01 12:01:52.500000","2018-06-01 12:01:52.600000","2018-06-01 12:01:52.800000","2018-06-01 12:01:53.600000","2018-06-01 12:01:54.200000","2018-06-01 12:01:54.500000","2018-06-01 12:01:55.000000","2018-06-01 12:01:55.100000","2018-06-01 12:01:55.300000","2018-06-01 12:01:55.500000","2018-06-01 12:01:55.900000","2018-06-01 12:01:56.300000","2018-06-01 12:01:56.400000","2018-06-01 12:01:57.000000","2018-06-01 12:01:57.400000","2018-06-01 12:01:58.500000","2018-06-01 12:01:58.600000","2018-06-01 12:01:59.600000","2018-06-01 12:02:00.100000","2018-06-01 12:02:00.800000","2018-06-01 12:02:01.000000","2018-06-01 12:02:02.000000","2018-06-01 12:02:02.100000","2018-06-01 12:02:02.400000","2018-06-01 12:02:02.800000","2018-06-01 12:02:02.900000","2018-06-01 12:02:03.700000","2018-06-01 12:02:03.800000","2018-06-01 12:02:03.900000","2018-06-01 12:02:04.200000","2018-06-01 12:02:04.400000","2018-06-01 12:02:04.600000","2018-06-01 12:02:05.000000","2018-06-01 12:02:05.800000","2018-06-01 12:02:06.000000","2018-06-01 12:02:06.100000","2018-06-01 12:02:06.200000","2018-06-01 12:02:06.400000","2018-06-01 12:02:06.500000","2018-06-01 12:02:06.700000","2018-06-01 12:02:06.800000","2018-06-01 12:02:07.200000","2018-06-01 12:02:07.400000","2018-06-01 12:02:07.600000","2018-06-01 12:02:07.700000","2018-06-01 12:02:07.800000","2018-06-01 12:02:08.100000","2018-06-01 12:02:08.200000","2018-06-01 12:02:08.500000","2018-06-01 12:02:09.500000","2018-06-01 12:02:10.500000","2018-06-01 12:02:11.100000","2018-06-01 12:02:11.600000","2018-06-01 12:02:12.000000","2018-06-01 12:02:12.700000","2018-06-01 12:02:12.800000","2018-06-01 12:02:13.200000","2018-06-01 12:02:14.500000","2018-06-01 12:02:14.900000","2018-06-01 12:02:15.100000","2018-06-01 12:02:15.300000","2018-06-01 12:02:15.600000","2018-06-01 12:02:15.800000","2018-06-01 12:02:16.100000","2018-06-01 12:02:16.300000","2018-06-01 12:02:16.800000","2018-06-01 12:02:17.300000","2018-06-01 12:02:17.400000","2018-06-01 12:02:17.500000","2018-06-01 12:02:17.700000","2018-06-01 12:02:17.800000","2018-06-01 12:02:18.300000","2018-06-01 12:02:18.500000","2018-06-01 12:02:18.900000","2018-06-01 12:02:19.000000","2018-06-01 12:02:19.100000","2018-06-01 12:02:19.200000","2018-06-01 12:02:19.600000","2018-06-01 12:02:19.700000","2018-06-01 12:02:20.000000","2018-06-01 12:02:20.700000","2018-06-01 12:02:20.900000","2018-06-01 12:02:21.600000","2018-06-01 12:02:22.100000","2018-06-01 12:02:22.200000","2018-06-01 12:02:22.400000","2018-06-01 12:02:22.900000","2018-06-01 12:02:23.400000","2018-06-01 12:02:23.700000","2018-06-01 12:02:24.000000","2018-06-01 12:02:24.300000","2018-06-01 12:02:24.500000","2018-06-01 12:02:24.700000","2018-06-01 12:02:24.900000","2018-06-01 12:02:25.200000","2018-06-01 12:02:25.800000","2018-06-01 12:02:26.100000","2018-06-01 12:02:26.200000","2018-06-01 12:02:26.500000","2018-06-01 12:02:26.900000","2018-06-01 12:02:27.100000","2018-06-01 12:02:27.200000","2018-06-01 12:02:27.300000","2018-06-01 12:02:27.400000","2018-06-01 12:02:27.500000","2018-06-01 12:02:27.900000","2018-06-01 12:02:28.100000","2018-06-01 12:02:28.200000","2018-06-01 12:02:28.400000","2018-06-01 12:02:28.800000","2018-06-01 12:02:29.100000","2018-06-01 12:02:29.400000","2018-06-01 12:02:29.700000","2018-06-01 12:02:29.800000","2018-06-01 12:02:30.200000","2018-06-01 12:02:30.500000","2018-06-01 12:02:30.600000","2018-06-01 12:02:30.700000","2018-06-01 12:02:31.100000","2018-06-01 12:02:31.400000","2018-06-01 12:02:31.600000","2018-06-01 12:02:31.800000","2018-06-01 12:02:31.900000","2018-06-01 12:02:32.100000","2018-06-01 12:02:32.300000","2018-06-01 12:02:32.400000","2018-06-01 12:02:33.000000","2018-06-01 12:02:33.900000","2018-06-01 12:02:34.000000","2018-06-01 12:02:34.300000","2018-06-01 12:02:34.400000","2018-06-01 12:02:34.500000","2018-06-01 12:02:34.600000","2018-06-01 12:02:34.800000","2018-06-01 12:02:35.200000","2018-06-01 12:02:35.700000","2018-06-01 12:02:36.400000","2018-06-01 12:02:36.600000","2018-06-01 12:02:37.000000","2018-06-01 12:02:37.100000","2018-06-01 12:02:38.200000","2018-06-01 12:02:38.700000","2018-06-01 12:02:38.900000","2018-06-01 12:02:39.000000","2018-06-01 12:02:39.600000","2018-06-01 12:02:40.000000","2018-06-01 12:02:40.400000","2018-06-01 12:02:40.500000","2018-06-01 12:02:40.800000","2018-06-01 12:02:41.200000","2018-06-01 12:02:41.400000","2018-06-01 12:02:41.900000","2018-06-01 12:02:42.100000","2018-06-01 12:02:42.400000","2018-06-01 12:02:42.800000","2018-06-01 12:02:43.000000","2018-06-01 12:02:43.200000","2018-06-01 12:02:43.900000","2018-06-01 12:02:44.800000","2018-06-01 12:02:45.100000","2018-06-01 12:02:45.400000","2018-06-01 12:02:47.500000","2018-06-01 12:02:47.600000","2018-06-01 12:02:47.800000","2018-06-01 12:02:47.900000","2018-06-01 12:02:48.100000","2018-06-01 12:02:48.600000","2018-06-01 12:02:49.000000","2018-06-01 12:02:49.100000","2018-06-01 12:02:49.500000","2018-06-01 12:02:49.600000","2018-06-01 12:02:50.700000","2018-06-01 12:02:51.600000","2018-06-01 12:02:52.400000","2018-06-01 12:02:52.600000","2018-06-01 12:02:53.000000","2018-06-01 12:02:53.200000","2018-06-01 12:02:53.300000","2018-06-01 12:02:53.400000","2018-06-01 12:02:53.600000","2018-06-01 12:02:53.700000","2018-06-01 12:02:53.900000","2018-06-01 12:02:54.200000","2018-06-01 12:02:54.600000","2018-06-01 12:02:55.100000","2018-06-01 12:02:55.200000","2018-06-01 12:02:55.400000","2018-06-01 12:02:55.800000","2018-06-01 12:02:56.100000","2018-06-01 12:02:56.200000","2018-06-01 12:02:56.500000","2018-06-01 12:02:56.600000","2018-06-01 12:02:56.900000","2018-06-01 12:02:57.100000","2018-06-01 12:02:57.200000","2018-06-01 12:02:58.100000","2018-06-01 12:02:58.400000","2018-06-01 12:02:58.700000","2018-06-01 12:02:59.000000","2018-06-01 12:02:59.300000","2018-06-01 12:02:59.900000","2018-06-01 12:03:00.100000","2018-06-01 12:03:00.600000","2018-06-01 12:03:00.800000","2018-06-01 12:03:01.000000","2018-06-01 12:03:01.500000","2018-06-01 12:03:01.800000","2018-06-01 12:03:02.000000","2018-06-01 12:03:02.400000","2018-06-01 12:03:03.600000","2018-06-01 12:03:03.800000","2018-06-01 12:03:03.900000","2018-06-01 12:03:04.200000","2018-06-01 12:03:04.500000","2018-06-01 12:03:04.700000","2018-06-01 12:03:05.200000","2018-06-01 12:03:05.300000","2018-06-01 12:03:06.400000","2018-06-01 12:03:07.200000","2018-06-01 12:03:07.500000","2018-06-01 12:03:07.700000","2018-06-01 12:03:08.600000","2018-06-01 12:03:09.900000","2018-06-01 12:03:10.000000","2018-06-01 12:03:10.200000","2018-06-01 12:03:10.500000","2018-06-01 12:03:10.600000","2018-06-01 12:03:10.700000","2018-06-01 12:03:10.800000","2018-06-01 12:03:10.900000","2018-06-01 12:03:11.000000","2018-06-01 12:03:11.200000","2018-06-01 12:03:11.400000","2018-06-01 12:03:11.600000","2018-06-01 12:03:11.700000","2018-06-01 12:03:11.800000","2018-06-01 12:03:12.200000","2018-06-01 12:03:12.500000","2018-06-01 12:03:12.800000","2018-06-01 12:03:13.400000","2018-06-01 12:03:13.500000","2018-06-01 12:03:14.400000","2018-06-01 12:03:15.000000","2018-06-01 12:03:15.100000","2018-06-01 12:03:16.000000","2018-06-01 12:03:17.000000","2018-06-01 12:03:17.100000","2018-06-01 12:03:17.300000","2018-06-01 12:03:17.800000","2018-06-01 12:03:17.900000","2018-06-01 12:03:18.000000","2018-06-01 12:03:18.100000","2018-06-01 12:03:19.000000","2018-06-01 12:03:19.900000","2018-06-01 12:03:20.300000","2018-06-01 12:03:20.700000","2018-06-01 12:03:20.900000","2018-06-01 12:03:21.000000","2018-06-01 12:03:21.200000","2018-06-01 12:03:21.700000","2018-06-01 12:03:22.600000","2018-06-01 12:03:22.700000","2018-06-01 12:03:23.400000","2018-06-01 12:03:23.700000","2018-06-01 12:03:23.800000","2018-06-01 12:03:24.100000","2018-06-01 12:03:25.100000","2018-06-01 12:03:25.400000","2018-06-01 12:03:25.500000","2018-06-01 12:03:25.800000","2018-06-01 12:03:26.700000","2018-06-01 12:03:27.100000","2018-06-01 12:03:27.600000","2018-06-01 12:03:28.000000","2018-06-01 12:03:28.500000","2018-06-01 12:03:28.700000","2018-06-01 12:03:29.000000","2018-06-01 12:03:29.400000","2018-06-01 12:03:29.600000","2018-06-01 12:03:29.700000","2018-06-01 12:03:29.800000","2018-06-01 12:03:30.400000","2018-06-01 12:03:30.500000","2018-06-01 12:03:31.000000","2018-06-01 12:03:31.200000","2018-06-01 12:03:31.300000","2018-06-01 12:03:31.700000","2018-06-01 12:03:31.900000","2018-06-01 12:03:32.400000","2018-06-01 12:03:32.600000","2018-06-01 12:03:32.700000","2018-06-01 12:03:32.800000","2018-06-01 12:03:32.900000","2018-06-01 12:03:33.000000","2018-06-01 12:03:33.300000","2018-06-01 12:03:33.600000","2018-06-01 12:03:34.700000","2018-06-01 12:03:35.500000","2018-06-01 12:03:36.600000","2018-06-01 12:03:37.100000","2018-06-01 12:03:37.400000","2018-06-01 12:03:37.600000","2018-06-01 12:03:38.000000","2018-06-01 12:03:38.100000","2018-06-01 12:03:38.400000","2018-06-01 12:03:38.600000","2018-06-01 12:03:38.700000","2018-06-01 12:03:38.900000","2018-06-01 12:03:39.100000","2018-06-01 12:03:39.600000","2018-06-01 12:03:40.200000","2018-06-01 12:03:40.800000","2018-06-01 12:03:40.900000","2018-06-01 12:03:41.500000","2018-06-01 12:03:41.700000","2018-06-01 12:03:41.800000","2018-06-01 12:03:42.200000","2018-06-01 12:03:42.500000","2018-06-01 12:03:42.600000","2018-06-01 12:03:43.000000","2018-06-01 12:03:43.500000","2018-06-01 12:03:43.700000","2018-06-01 12:03:43.900000","2018-06-01 12:03:44.500000","2018-06-01 12:03:45.100000","2018-06-01 12:03:45.200000","2018-06-01 12:03:45.400000","2018-06-01 12:03:45.700000","2018-06-01 12:03:45.800000","2018-06-01 12:03:45.900000","2018-06-01 12:03:46.000000","2018-06-01 12:03:46.300000","2018-06-01 12:03:46.500000","2018-06-01 12:03:46.800000","2018-06-01 12:03:47.200000","2018-06-01 12:03:47.800000","2018-06-01 12:03:48.200000","2018-06-01 12:03:48.300000","2018-06-01 12:03:49.900000","2018-06-01 12:03:50.300000","2018-06-01 12:03:50.500000","2018-06-01 12:03:51.100000","2018-06-01 12:03:51.400000","2018-06-01 12:03:51.800000","2018-06-01 12:03:51.900000","2018-06-01 12:03:52.700000","2018-06-01 12:03:52.800000","2018-06-01 12:03:53.200000","2018-06-01 12:03:53.300000","2018-06-01 12:03:54.000000","2018-06-01 12:03:54.700000","2018-06-01 12:03:57.500000","2018-06-01 12:03:57.900000","2018-06-01 12:03:58.100000","2018-06-01 12:03:58.800000","2018-06-01 12:03:59.100000","2018-06-01 12:03:59.300000","2018-06-01 12:03:59.700000","2018-06-01 12:04:00.000000","2018-06-01 12:04:00.100000","2018-06-01 12:04:00.300000","2018-06-01 12:04:00.500000","2018-06-01 12:04:01.100000","2018-06-01 12:04:02.100000","2018-06-01 12:04:03.000000","2018-06-01 12:04:03.900000","2018-06-01 12:04:04.900000","2018-06-01 12:04:05.100000","2018-06-01 12:04:05.200000","2018-06-01 12:04:05.400000","2018-06-01 12:04:06.200000","2018-06-01 12:04:06.300000","2018-06-01 12:04:06.700000","2018-06-01 12:04:06.900000","2018-06-01 12:04:07.000000","2018-06-01 12:04:07.500000","2018-06-01 12:04:07.700000","2018-06-01 12:04:08.200000","2018-06-01 12:04:08.500000","2018-06-01 12:04:08.900000","2018-06-01 12:04:09.500000","2018-06-01 12:04:09.800000","2018-06-01 12:04:10.100000","2018-06-01 12:04:10.200000","2018-06-01 12:04:10.400000","2018-06-01 12:04:10.800000","2018-06-01 12:04:11.400000","2018-06-01 12:04:11.700000","2018-06-01 12:04:12.100000","2018-06-01 12:04:12.300000","2018-06-01 12:04:12.800000","2018-06-01 12:04:12.900000","2018-06-01 12:04:13.200000","2018-06-01 12:04:13.700000","2018-06-01 12:04:14.300000","2018-06-01 12:04:15.200000","2018-06-01 12:04:15.600000","2018-06-01 12:04:15.700000","2018-06-01 12:04:16.500000","2018-06-01 12:04:16.600000","2018-06-01 12:04:17.100000","2018-06-01 12:04:17.200000","2018-06-01 12:04:17.400000","2018-06-01 12:04:18.000000","2018-06-01 12:04:18.100000","2018-06-01 12:04:18.500000","2018-06-01 12:04:18.700000","2018-06-01 12:04:18.900000","2018-06-01 12:04:20.200000","2018-06-01 12:04:20.400000","2018-06-01 12:04:20.700000","2018-06-01 12:04:20.900000","2018-06-01 12:04:21.200000","2018-06-01 12:04:21.400000","2018-06-01 12:04:22.200000","2018-06-01 12:04:22.500000","2018-06-01 12:04:23.200000","2018-06-01 12:04:23.700000","2018-06-01 12:04:24.600000","2018-06-01 12:04:24.900000","2018-06-01 12:04:25.200000","2018-06-01 12:04:25.500000","2018-06-01 12:04:25.600000","2018-06-01 12:04:25.700000","2018-06-01 12:04:25.800000","2018-06-01 12:04:26.000000","2018-06-01 12:04:26.700000","2018-06-01 12:04:27.100000","2018-06-01 12:04:27.300000","2018-06-01 12:04:27.600000","2018-06-01 12:04:27.700000","2018-06-01 12:04:27.800000","2018-06-01 12:04:28.100000","2018-06-01 12:04:28.200000","2018-06-01 12:04:28.600000","2018-06-01 12:04:28.900000","2018-06-01 12:04:29.200000","2018-06-01 12:04:29.800000","2018-06-01 12:04:30.200000","2018-06-01 12:04:30.500000","2018-06-01 12:04:31.100000","2018-06-01 12:04:31.800000","2018-06-01 12:04:32.000000","2018-06-01 12:04:32.600000","2018-06-01 12:04:32.800000","2018-06-01 12:04:32.900000","2018-06-01 12:04:33.000000","2018-06-01 12:04:33.400000","2018-06-01 12:04:33.500000","2018-06-01 12:04:33.600000","2018-06-01 12:04:34.300000","2018-06-01 12:04:34.600000","2018-06-01 12:04:34.700000","2018-06-01 12:04:34.900000","2018-06-01 12:04:35.000000","2018-06-01 12:04:35.300000","2018-06-01 12:04:35.900000","2018-06-01 12:04:36.100000","2018-06-01 12:04:36.500000","2018-06-01 12:04:36.900000","2018-06-01 12:04:37.000000","2018-06-01 12:04:37.100000","2018-06-01 12:04:38.400000","2018-06-01 12:04:39.000000","2018-06-01 12:04:39.200000","2018-06-01 12:04:39.300000","2018-06-01 12:04:39.400000","2018-06-01 12:04:39.600000","2018-06-01 12:04:40.500000","2018-06-01 12:04:40.800000","2018-06-01 12:04:41.100000","2018-06-01 12:04:41.800000","2018-06-01 12:04:41.900000","2018-06-01 12:04:42.400000","2018-06-01 12:04:42.500000","2018-06-01 12:04:42.600000","2018-06-01 12:04:42.700000","2018-06-01 12:04:42.900000","2018-06-01 12:04:43.500000","2018-06-01 12:04:44.200000","2018-06-01 12:04:44.500000","2018-06-01 12:04:45.000000","2018-06-01 12:04:45.200000","2018-06-01 12:04:45.300000","2018-06-01 12:04:45.400000","2018-06-01 12:04:46.700000","2018-06-01 12:04:47.400000","2018-06-01 12:04:47.500000","2018-06-01 12:04:47.800000","2018-06-01 12:04:47.900000","2018-06-01 12:04:48.200000","2018-06-01 12:04:48.400000","2018-06-01 12:04:48.500000","2018-06-01 12:04:49.000000","2018-06-01 12:04:49.700000","2018-06-01 12:04:49.800000","2018-06-01 12:04:50.100000","2018-06-01 12:04:50.600000","2018-06-01 12:04:51.000000","2018-06-01 12:04:51.900000","2018-06-01 12:04:52.100000","2018-06-01 12:04:52.200000","2018-06-01 12:04:52.900000","2018-06-01 12:04:53.500000","2018-06-01 12:04:53.800000","2018-06-01 12:04:54.700000","2018-06-01 12:04:55.200000","2018-06-01 12:04:55.700000","2018-06-01 12:04:56.000000","2018-06-01 12:04:56.200000","2018-06-01 12:04:56.500000","2018-06-01 12:04:56.800000","2018-06-01 12:04:57.400000","2018-06-01 12:04:57.900000","2018-06-01 12:04:58.400000","2018-06-01 12:04:58.600000","2018-06-01 12:04:58.700000","2018-06-01 12:04:59.000000","2018-06-01 12:04:59.700000"],"xaxis":"x","y":[102.47,102.49000000000001,102.47666666666667,102.49000000000001,102.53200000000001,102.60833333333335,102.72142857142858,102.87125,103.02555555555556,103.19000000000001,103.35636363636364,103.53000000000002,103.70615384615385,103.88285714285715,104.04666666666667,104.205625,104.35588235294118,104.50444444444445,104.65315789473684,104.8045,105.085,105.39099999999999,105.71399999999998,106.0465,106.37849999999999,106.70049999999999,107.00449999999998,107.27950000000001,107.546,107.798,108.03699999999999,108.26199999999999,108.474,108.66600000000001,108.85349999999998,109.025,109.1845,109.33899999999998,109.477,109.595,109.68499999999999,109.74499999999998,109.78450000000001,109.8115,109.83699999999999,109.85900000000001,109.877,109.891,109.89099999999999,109.88499999999999,109.877,109.86399999999999,109.84949999999999,109.8415,109.83099999999999,109.8345,109.852,109.87449999999998,109.90599999999999,109.949,110.00549999999998,110.06750000000002,110.13499999999999,110.194,110.23649999999998,110.2645,110.2865,110.30749999999998,110.319,110.31300000000002,110.28699999999999,110.24299999999998,110.17849999999999,110.08899999999998,109.971,109.8175,109.6375,109.4315,109.2065,108.96550000000002,108.71700000000001,108.46300000000001,108.19900000000003,107.936,107.681,107.4355,107.19650000000001,106.96599999999998,106.745,106.5385,106.3525,106.1845,106.0355,105.9135,105.833,105.7915,105.7775,105.7855,105.816,105.8575,105.90950000000001,105.97649999999999,106.06199999999998,106.1605,106.27000000000001,106.39650000000002,106.53400000000002,106.68800000000002,106.87550000000002,107.08400000000002,107.30900000000001,107.5545,107.81500000000001,108.0835,108.346,108.6,108.85050000000001,109.103,109.3575,109.6125,109.8585,110.0915,110.31599999999999,110.53900000000002,110.7585,110.96599999999998,111.1655,111.34699999999998,111.506,111.64799999999998,111.77849999999998,111.8905,111.9915,112.074,112.144,112.20899999999999,112.2655,112.314,112.35549999999998,112.396,112.45,112.506,112.5605,112.60999999999999,112.65899999999999,112.70899999999999,112.75999999999999,112.8175,112.87950000000001,112.952,113.0335,113.11949999999999,113.21,113.31649999999999,113.439,113.56700000000001,113.70749999999998,113.8545,114.0095,114.17049999999999,114.32249999999999,114.46549999999999,114.60349999999998,114.74449999999999,114.883,115.0205,115.1585,115.2945,115.41900000000001,115.525,115.60499999999999,115.667,115.7165,115.74749999999999,115.76100000000001,115.76500000000001,115.753,115.7325,115.6955,115.6475,115.60499999999999,115.5785,115.569,115.56400000000001,115.5675,115.5835,115.60749999999999,115.63000000000002,115.665,115.71950000000001,115.7835,115.85499999999999,115.931,116.0175,116.119,116.2335,116.36100000000002,116.5,116.65050000000001,116.81499999999998,116.98499999999999,117.15549999999999,117.33,117.50050000000002,117.66199999999999,117.8125,117.95750000000001,118.1055,118.2565,118.401,118.5605,118.742,118.9425,119.1685,119.421,119.70349999999999,120.01199999999999,120.34450000000001,120.70900000000002,121.10349999999998,121.51799999999999,121.95100000000002,122.39949999999999,122.87,123.3635,123.87749999999998,124.405,124.94099999999999,125.47049999999999,125.9935,126.4965,126.97199999999998,127.4185,127.83449999999998,128.2175,128.55749999999998,128.85399999999998,129.10649999999998,129.3095,129.45649999999998,129.55199999999996,129.6095,129.6255,129.59599999999998,129.522,129.4105,129.2635,129.09099999999998,128.89749999999998,128.6975,128.49899999999997,128.305,128.10999999999999,127.91499999999999,127.71799999999999,127.523,127.32949999999998,127.13899999999998,126.95249999999999,126.76799999999999,126.58699999999999,126.41199999999999,126.24600000000001,126.09700000000001,125.9635,125.84049999999999,125.732,125.628,125.52950000000001,125.4315,125.33200000000002,125.23049999999998,125.1405,125.04549999999999,124.94850000000001,124.8475,124.74699999999999,124.6405,124.53150000000001,124.4245,124.32300000000001,124.21849999999999,124.1055,123.98150000000001,123.84,123.6815,123.5115,123.343,123.1845,123.04050000000002,122.905,122.77799999999999,122.647,122.5175,122.38499999999999,122.2565,122.12899999999999,122.01100000000001,121.8955,121.78249999999998,121.6665,121.5495,121.4375,121.3335,121.25049999999999,121.18699999999998,121.14349999999999,121.11099999999999,121.0785,121.03400000000002,120.97650000000002,120.90450000000001,120.828,120.7625,120.7095,120.6655,120.6235,120.57399999999998,120.51999999999998,120.46849999999999,120.41599999999998,120.35349999999998,120.2835,120.2145,120.15050000000001,120.08800000000001,120.021,119.946,119.8685,119.792,119.71300000000001,119.63899999999998,119.56800000000001,119.49600000000001,119.425,119.3625,119.32000000000001,119.30149999999999,119.31149999999998,119.3415,119.396,119.47449999999999,119.56799999999998,119.66199999999999,119.74249999999999,119.8145,119.87150000000001,119.92150000000001,119.9625,119.997,120.0385,120.085,120.127,120.1645,120.19299999999998,120.2065,120.203,120.1865,120.1585,120.11500000000001,120.0565,119.994,119.928,119.8615,119.79749999999999,119.731,119.6655,119.5925,119.50699999999999,119.40299999999999,119.2805,119.128,118.94800000000001,118.729,118.473,118.186,117.88049999999998,117.53800000000001,117.15149999999998,116.7365,116.29400000000001,115.819,115.31649999999999,114.795,114.2595,113.71900000000001,113.17349999999999,112.63,112.09299999999999,111.5655,111.046,110.542,110.054,109.58399999999999,109.133,108.69749999999999,108.2705,107.8685,107.497,107.14649999999999,106.8235,106.529,106.261,106.011,105.77150000000002,105.546,105.3375,105.148,104.9835,104.84450000000001,104.728,104.6365,104.574,104.54249999999999,104.5385,104.55199999999999,104.58600000000001,104.63400000000001,104.69449999999999,104.77350000000001,104.8655,104.9725,105.09049999999999,105.22849999999998,105.397,105.5895,105.809,106.04849999999999,106.2945,106.546,106.8,107.056,107.31299999999999,107.5655,107.81949999999999,108.08899999999998,108.3665,108.6555,108.953,109.2585,109.56999999999998,109.88899999999998,110.22049999999999,110.55499999999999,110.883,111.1935,111.47550000000001,111.7335,111.96550000000002,112.18400000000001,112.38250000000001,112.55,112.6935,112.82150000000001,112.93200000000002,113.01350000000002,113.069,113.1,113.1085,113.09400000000001,113.05499999999999,112.99000000000001,112.89349999999999,112.7635,112.6025,112.415,112.2105,111.98899999999999,111.7705,111.545,111.3185,111.1045,110.8945,110.68699999999998,110.48049999999998,110.27799999999998,110.07849999999999,109.88250000000001,109.69300000000001,109.50049999999999,109.30849999999998,109.11399999999999,108.92949999999999,108.76849999999999,108.63050000000001,108.52149999999999,108.44850000000001,108.4085,108.38600000000001,108.38000000000002,108.391,108.4105,108.44500000000001,108.494,108.55799999999999,108.63200000000002,108.71300000000001,108.79749999999999,108.88050000000001,108.98299999999999,109.106,109.2515,109.41300000000001,109.59049999999999,109.777,109.977,110.18499999999999,110.39949999999999,110.62800000000001,110.876,111.1475,111.4505,111.77450000000002,112.1105,112.45150000000001,112.799,113.15700000000001,113.52799999999999,113.90500000000002,114.272,114.63000000000002,114.978,115.3185,115.6415,115.95450000000001,116.25450000000001,116.52449999999999,116.769,116.98799999999999,117.17849999999999,117.33399999999999,117.451,117.54100000000001,117.6105,117.66749999999999,117.71100000000001,117.73299999999999,117.74099999999999,117.747,117.75550000000001,117.7625,117.76999999999998,117.766,117.755,117.73700000000001,117.70249999999999,117.66399999999999,117.62449999999998,117.5875,117.556,117.53150000000001,117.5145,117.50050000000002,117.49600000000001,117.4965,117.5125,117.5465,117.5925,117.636,117.678,117.71600000000001,117.74549999999999,117.779,117.80799999999999,117.83600000000001,117.86300000000001,117.89250000000001,117.915,117.928,117.93050000000001,117.929,117.928,117.9245,117.91100000000002,117.8875,117.8415,117.772,117.67550000000001,117.55700000000002,117.4115,117.24600000000001,117.0635,116.86449999999999,116.649,116.41900000000001,116.18050000000001,115.9355,115.68699999999998,115.42750000000001,115.15450000000001,114.8625,114.549,114.21999999999998,113.88899999999998,113.55050000000001,113.20899999999999,112.8765,112.548,112.2405,111.9565,111.69850000000001,111.46100000000001,111.2375,111.03600000000002,110.8545,110.68800000000002,110.5415,110.4155,110.316,110.242,110.20250000000001,110.18900000000001,110.19200000000001,110.1905,110.18499999999999,110.18199999999999,110.179,110.1855,110.194,110.202,110.19649999999999,110.17850000000001,110.14949999999999,110.107,110.048,109.97650000000002,109.87950000000001,109.766,109.641,109.506,109.354,109.19300000000001,109.02449999999999,108.8585,108.7005,108.54749999999999,108.398,108.25999999999999,108.12950000000001,107.994,107.84999999999998,107.7125,107.57949999999998,107.4595,107.3525,107.26199999999999,107.196,107.1525,107.12100000000001,107.09649999999999,107.0875,107.0885,107.0995,107.128,107.1825,107.258,107.35149999999999,107.45549999999999,107.56700000000001,107.6925,107.84049999999999,107.9915,108.15450000000001,108.32350000000001,108.49750000000002,108.672,108.83699999999999,108.9905,109.143,109.29400000000001,109.4325,109.56649999999999,109.70149999999998,109.832,109.94250000000002,110.0405,110.12750000000001,110.2005,110.27000000000001,110.34049999999999,110.41399999999999,110.50150000000001,110.59949999999999,110.708,110.825,110.9505,111.08099999999999,111.21549999999999,111.3425,111.46700000000001,111.595,111.728,111.86899999999999,112.02150000000002,112.19699999999997,112.38699999999999,112.5875,112.80500000000002,113.03150000000001,113.26849999999999,113.51100000000001,113.7585,114.01399999999998,114.26599999999999,114.52299999999998,114.782,115.04749999999999,115.3115,115.58399999999999,115.8665,116.15150000000001,116.425,116.676,116.90149999999998,117.09400000000001,117.2665,117.41399999999999,117.527,117.60799999999999,117.65749999999998,117.68350000000001,117.68649999999998,117.66799999999998,117.62749999999998,117.564,117.48499999999999,117.3925,117.29299999999998,117.18199999999999,117.05199999999999,116.9215,116.79299999999998,116.675,116.561,116.46199999999999,116.3715,116.2935,116.232,116.18699999999998,116.15949999999998,116.1455,116.1415,116.1385,116.14649999999999,116.16599999999998,116.199,116.245,116.304,116.367,116.45149999999998,116.54250000000002,116.65299999999999,116.77149999999999,116.89349999999999,117.0125,117.13049999999998,117.258,117.39649999999999,117.54249999999999,117.702,117.87650000000001,118.06199999999998,118.26700000000001,118.494,118.7385,118.99650000000001,119.276,119.577,119.897,120.22250000000001,120.553,120.88400000000001,121.21849999999999,121.5645,121.92450000000001,122.3,122.66950000000001,123.03600000000002,123.40450000000001,123.7705,124.13050000000001,124.48600000000002,124.83100000000002,125.165,125.4805,125.7775,126.05400000000002,126.31300000000002,126.5635,126.8075,127.046,127.2665,127.47350000000002,127.66400000000002,127.83600000000001,127.978,128.1035,128.207,128.28249999999997,128.3245,128.3295,128.29450000000003,128.22600000000003,128.121,127.98299999999999,127.804,127.5835,127.30799999999999,126.99050000000003,126.6315,126.23499999999999,125.80850000000001,125.353,124.87899999999999,124.388,123.8845,123.375,122.85499999999999,122.3285,121.79749999999999,121.25550000000001,120.70250000000001,120.151,119.60249999999999,119.06799999999998,118.5645,118.09250000000002,117.66100000000002,117.252,116.86349999999997,116.48800000000001,116.123,115.773,115.43700000000001,115.119,114.82750000000001,114.55550000000001,114.2905,114.047,113.82600000000002,113.646,113.5065,113.391,113.2875,113.1895,113.09200000000001,112.9965,112.9055],"yaxis":"y","type":"scatter"}],"layout":{"legend":{"tracegroupgap":0},"template":{"data":{"barpolar":[{"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"type":"carpet"}],"choropleth":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"choropleth"}],"contourcarpet":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"contourcarpet"}],"contour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"contour"}],"heatmap":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"heatmap"}],"histogram2dcontour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"histogram2dcontour"}],"histogram2d":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"histogram2d"}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"mesh3d":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"mesh3d"}],"parcoords":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"parcoords"}],"pie":[{"automargin":true,"type":"pie"}],"scatter3d":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatter3d"}],"scattercarpet":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattercarpet"}],"scattergeo":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergeo"}],"scattergl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergl"}],"scattermapbox":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermapbox"}],"scattermap":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermap"}],"scatterpolargl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolargl"}],"scatterpolar":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolar"}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"scatterternary":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterternary"}],"surface":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"surface"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}]},"layout":{"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"autotypenumbers":"strict","coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]],"sequential":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"sequentialminus":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]]},"colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"geo":{"bgcolor":"white","lakecolor":"white","landcolor":"#E5ECF6","showlakes":true,"showland":true,"subunitcolor":"white"},"hoverlabel":{"align":"left"},"hovermode":"closest","mapbox":{"style":"light"},"paper_bgcolor":"white","plot_bgcolor":"#E5ECF6","polar":{"angularaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"bgcolor":"#E5ECF6","radialaxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"scene":{"xaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"},"yaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"},"zaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"ternary":{"aaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"baxis":{"gridcolor":"white","linecolor":"white","ticks":""},"bgcolor":"#E5ECF6","caxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"title":{"x":0.05},"xaxis":{"automargin":true,"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","zerolinewidth":2},"yaxis":{"automargin":true,"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","zerolinewidth":2}}},"xaxis":{"anchor":"y","domain":[0,1],"side":"bottom","title":{"text":"Timestamp"}},"yaxis":{"anchor":"x","domain":[0,1],"side":"left","title":{"text":"AvgPrice"}}},"isDefaultTemplate":true}},"layered":{"type":"deephaven.plot.express.DeephavenFigure","data":{"data":[{"hovertemplate":"Timestamp=%{x}
Price=%{y}","legendgroup":"","marker":{"symbol":"circle"},"mode":"markers","name":"","showlegend":false,"x":["2018-06-01 12:00:00.100000","2018-06-01 12:00:00.300000","2018-06-01 12:00:00.400000","2018-06-01 12:00:00.800000","2018-06-01 12:00:01.300000","2018-06-01 12:00:01.400000","2018-06-01 12:00:01.800000","2018-06-01 12:00:02.100000","2018-06-01 12:00:02.800000","2018-06-01 12:00:03.100000","2018-06-01 12:00:03.200000","2018-06-01 12:00:03.900000","2018-06-01 12:00:04.300000","2018-06-01 12:00:04.500000","2018-06-01 12:00:04.900000","2018-06-01 12:00:05.100000","2018-06-01 12:00:05.500000","2018-06-01 12:00:05.700000","2018-06-01 12:00:05.900000","2018-06-01 12:00:06.600000","2018-06-01 12:00:06.700000","2018-06-01 12:00:07.200000","2018-06-01 12:00:07.900000","2018-06-01 12:00:08.000000","2018-06-01 12:00:08.200000","2018-06-01 12:00:08.500000","2018-06-01 12:00:08.700000","2018-06-01 12:00:08.900000","2018-06-01 12:00:09.000000","2018-06-01 12:00:09.100000","2018-06-01 12:00:09.700000","2018-06-01 12:00:10.000000","2018-06-01 12:00:10.200000","2018-06-01 12:00:10.700000","2018-06-01 12:00:10.800000","2018-06-01 12:00:11.300000","2018-06-01 12:00:11.400000","2018-06-01 12:00:11.700000","2018-06-01 12:00:12.100000","2018-06-01 12:00:12.300000","2018-06-01 12:00:12.700000","2018-06-01 12:00:13.700000","2018-06-01 12:00:13.800000","2018-06-01 12:00:13.900000","2018-06-01 12:00:14.600000","2018-06-01 12:00:14.900000","2018-06-01 12:00:15.400000","2018-06-01 12:00:16.000000","2018-06-01 12:00:16.200000","2018-06-01 12:00:16.400000","2018-06-01 12:00:16.500000","2018-06-01 12:00:16.600000","2018-06-01 12:00:16.700000","2018-06-01 12:00:16.900000","2018-06-01 12:00:17.600000","2018-06-01 12:00:18.000000","2018-06-01 12:00:18.300000","2018-06-01 12:00:19.000000","2018-06-01 12:00:19.800000","2018-06-01 12:00:20.000000","2018-06-01 12:00:20.100000","2018-06-01 12:00:20.300000","2018-06-01 12:00:20.600000","2018-06-01 12:00:21.300000","2018-06-01 12:00:21.500000","2018-06-01 12:00:22.100000","2018-06-01 12:00:22.400000","2018-06-01 12:00:23.900000","2018-06-01 12:00:24.500000","2018-06-01 12:00:24.900000","2018-06-01 12:00:25.500000","2018-06-01 12:00:25.900000","2018-06-01 12:00:26.000000","2018-06-01 12:00:26.700000","2018-06-01 12:00:26.900000","2018-06-01 12:00:27.300000","2018-06-01 12:00:27.400000","2018-06-01 12:00:28.100000","2018-06-01 12:00:28.400000","2018-06-01 12:00:29.400000","2018-06-01 12:00:29.600000","2018-06-01 12:00:29.800000","2018-06-01 12:00:30.300000","2018-06-01 12:00:30.400000","2018-06-01 12:00:30.500000","2018-06-01 12:00:30.800000","2018-06-01 12:00:30.900000","2018-06-01 12:00:31.400000","2018-06-01 12:00:31.600000","2018-06-01 12:00:31.900000","2018-06-01 12:00:32.600000","2018-06-01 12:00:33.200000","2018-06-01 12:00:33.500000","2018-06-01 12:00:33.600000","2018-06-01 12:00:33.700000","2018-06-01 12:00:33.800000","2018-06-01 12:00:33.900000","2018-06-01 12:00:34.200000","2018-06-01 12:00:34.300000","2018-06-01 12:00:35.300000","2018-06-01 12:00:35.400000","2018-06-01 12:00:35.500000","2018-06-01 12:00:35.700000","2018-06-01 12:00:35.900000","2018-06-01 12:00:36.600000","2018-06-01 12:00:36.700000","2018-06-01 12:00:37.000000","2018-06-01 12:00:37.200000","2018-06-01 12:00:37.300000","2018-06-01 12:00:37.500000","2018-06-01 12:00:37.700000","2018-06-01 12:00:37.800000","2018-06-01 12:00:37.900000","2018-06-01 12:00:38.200000","2018-06-01 12:00:39.600000","2018-06-01 12:00:39.700000","2018-06-01 12:00:39.900000","2018-06-01 12:00:40.300000","2018-06-01 12:00:40.400000","2018-06-01 12:00:40.500000","2018-06-01 12:00:41.000000","2018-06-01 12:00:41.100000","2018-06-01 12:00:41.600000","2018-06-01 12:00:42.000000","2018-06-01 12:00:42.600000","2018-06-01 12:00:42.700000","2018-06-01 12:00:42.800000","2018-06-01 12:00:43.000000","2018-06-01 12:00:43.300000","2018-06-01 12:00:43.800000","2018-06-01 12:00:44.000000","2018-06-01 12:00:44.100000","2018-06-01 12:00:44.900000","2018-06-01 12:00:45.000000","2018-06-01 12:00:45.100000","2018-06-01 12:00:45.300000","2018-06-01 12:00:45.800000","2018-06-01 12:00:46.300000","2018-06-01 12:00:46.400000","2018-06-01 12:00:46.500000","2018-06-01 12:00:46.700000","2018-06-01 12:00:46.900000","2018-06-01 12:00:47.000000","2018-06-01 12:00:47.400000","2018-06-01 12:00:48.500000","2018-06-01 12:00:48.600000","2018-06-01 12:00:48.800000","2018-06-01 12:00:49.700000","2018-06-01 12:00:49.900000","2018-06-01 12:00:50.300000","2018-06-01 12:00:50.500000","2018-06-01 12:00:51.100000","2018-06-01 12:00:51.200000","2018-06-01 12:00:51.300000","2018-06-01 12:00:51.500000","2018-06-01 12:00:52.100000","2018-06-01 12:00:52.200000","2018-06-01 12:00:52.400000","2018-06-01 12:00:53.200000","2018-06-01 12:00:53.500000","2018-06-01 12:00:53.800000","2018-06-01 12:00:54.500000","2018-06-01 12:00:54.600000","2018-06-01 12:00:54.700000","2018-06-01 12:00:55.200000","2018-06-01 12:00:55.500000","2018-06-01 12:00:55.700000","2018-06-01 12:00:55.900000","2018-06-01 12:00:56.700000","2018-06-01 12:00:56.800000","2018-06-01 12:00:57.000000","2018-06-01 12:00:57.100000","2018-06-01 12:00:58.200000","2018-06-01 12:00:58.500000","2018-06-01 12:00:58.900000","2018-06-01 12:00:59.000000","2018-06-01 12:00:59.200000","2018-06-01 12:00:59.400000","2018-06-01 12:00:59.700000","2018-06-01 12:01:00.100000","2018-06-01 12:01:00.300000","2018-06-01 12:01:00.400000","2018-06-01 12:01:00.500000","2018-06-01 12:01:00.800000","2018-06-01 12:01:01.400000","2018-06-01 12:01:01.500000","2018-06-01 12:01:01.600000","2018-06-01 12:01:02.000000","2018-06-01 12:01:02.300000","2018-06-01 12:01:02.400000","2018-06-01 12:01:02.900000","2018-06-01 12:01:03.300000","2018-06-01 12:01:03.400000","2018-06-01 12:01:03.600000","2018-06-01 12:01:04.000000","2018-06-01 12:01:04.500000","2018-06-01 12:01:05.100000","2018-06-01 12:01:05.200000","2018-06-01 12:01:05.800000","2018-06-01 12:01:06.000000","2018-06-01 12:01:06.700000","2018-06-01 12:01:07.200000","2018-06-01 12:01:07.500000","2018-06-01 12:01:07.600000","2018-06-01 12:01:07.800000","2018-06-01 12:01:09.600000","2018-06-01 12:01:09.700000","2018-06-01 12:01:10.000000","2018-06-01 12:01:10.300000","2018-06-01 12:01:10.700000","2018-06-01 12:01:10.800000","2018-06-01 12:01:11.600000","2018-06-01 12:01:11.700000","2018-06-01 12:01:11.800000","2018-06-01 12:01:12.100000","2018-06-01 12:01:12.500000","2018-06-01 12:01:12.600000","2018-06-01 12:01:13.600000","2018-06-01 12:01:13.700000","2018-06-01 12:01:13.900000","2018-06-01 12:01:14.100000","2018-06-01 12:01:14.500000","2018-06-01 12:01:14.800000","2018-06-01 12:01:15.400000","2018-06-01 12:01:15.900000","2018-06-01 12:01:16.000000","2018-06-01 12:01:16.100000","2018-06-01 12:01:16.500000","2018-06-01 12:01:16.800000","2018-06-01 12:01:16.900000","2018-06-01 12:01:17.200000","2018-06-01 12:01:17.300000","2018-06-01 12:01:17.700000","2018-06-01 12:01:17.800000","2018-06-01 12:01:18.000000","2018-06-01 12:01:18.100000","2018-06-01 12:01:20.100000","2018-06-01 12:01:20.300000","2018-06-01 12:01:20.900000","2018-06-01 12:01:21.100000","2018-06-01 12:01:21.200000","2018-06-01 12:01:21.600000","2018-06-01 12:01:21.700000","2018-06-01 12:01:22.000000","2018-06-01 12:01:22.500000","2018-06-01 12:01:22.800000","2018-06-01 12:01:22.900000","2018-06-01 12:01:23.000000","2018-06-01 12:01:23.100000","2018-06-01 12:01:24.000000","2018-06-01 12:01:24.500000","2018-06-01 12:01:24.600000","2018-06-01 12:01:24.900000","2018-06-01 12:01:25.500000","2018-06-01 12:01:25.600000","2018-06-01 12:01:26.000000","2018-06-01 12:01:27.000000","2018-06-01 12:01:27.300000","2018-06-01 12:01:27.700000","2018-06-01 12:01:27.900000","2018-06-01 12:01:28.600000","2018-06-01 12:01:28.800000","2018-06-01 12:01:29.000000","2018-06-01 12:01:29.200000","2018-06-01 12:01:29.600000","2018-06-01 12:01:29.700000","2018-06-01 12:01:30.300000","2018-06-01 12:01:30.600000","2018-06-01 12:01:30.900000","2018-06-01 12:01:31.300000","2018-06-01 12:01:31.400000","2018-06-01 12:01:31.500000","2018-06-01 12:01:32.200000","2018-06-01 12:01:32.900000","2018-06-01 12:01:33.600000","2018-06-01 12:01:34.400000","2018-06-01 12:01:34.600000","2018-06-01 12:01:34.700000","2018-06-01 12:01:35.000000","2018-06-01 12:01:35.200000","2018-06-01 12:01:35.300000","2018-06-01 12:01:35.400000","2018-06-01 12:01:36.200000","2018-06-01 12:01:36.500000","2018-06-01 12:01:36.600000","2018-06-01 12:01:37.100000","2018-06-01 12:01:37.300000","2018-06-01 12:01:38.600000","2018-06-01 12:01:39.100000","2018-06-01 12:01:39.300000","2018-06-01 12:01:39.500000","2018-06-01 12:01:39.800000","2018-06-01 12:01:40.900000","2018-06-01 12:01:41.500000","2018-06-01 12:01:41.900000","2018-06-01 12:01:42.000000","2018-06-01 12:01:42.200000","2018-06-01 12:01:42.500000","2018-06-01 12:01:42.600000","2018-06-01 12:01:42.700000","2018-06-01 12:01:43.700000","2018-06-01 12:01:43.800000","2018-06-01 12:01:44.200000","2018-06-01 12:01:44.700000","2018-06-01 12:01:44.800000","2018-06-01 12:01:45.100000","2018-06-01 12:01:45.400000","2018-06-01 12:01:45.500000","2018-06-01 12:01:45.600000","2018-06-01 12:01:45.900000","2018-06-01 12:01:46.000000","2018-06-01 12:01:46.200000","2018-06-01 12:01:46.300000","2018-06-01 12:01:46.400000","2018-06-01 12:01:46.700000","2018-06-01 12:01:47.100000","2018-06-01 12:01:47.800000","2018-06-01 12:01:48.200000","2018-06-01 12:01:48.300000","2018-06-01 12:01:48.700000","2018-06-01 12:01:49.500000","2018-06-01 12:01:49.800000","2018-06-01 12:01:50.400000","2018-06-01 12:01:50.800000","2018-06-01 12:01:51.100000","2018-06-01 12:01:51.300000","2018-06-01 12:01:51.500000","2018-06-01 12:01:51.800000","2018-06-01 12:01:51.900000","2018-06-01 12:01:52.500000","2018-06-01 12:01:52.600000","2018-06-01 12:01:52.800000","2018-06-01 12:01:53.600000","2018-06-01 12:01:54.200000","2018-06-01 12:01:54.500000","2018-06-01 12:01:55.000000","2018-06-01 12:01:55.100000","2018-06-01 12:01:55.300000","2018-06-01 12:01:55.500000","2018-06-01 12:01:55.900000","2018-06-01 12:01:56.300000","2018-06-01 12:01:56.400000","2018-06-01 12:01:57.000000","2018-06-01 12:01:57.400000","2018-06-01 12:01:58.500000","2018-06-01 12:01:58.600000","2018-06-01 12:01:59.600000","2018-06-01 12:02:00.100000","2018-06-01 12:02:00.800000","2018-06-01 12:02:01.000000","2018-06-01 12:02:02.000000","2018-06-01 12:02:02.100000","2018-06-01 12:02:02.400000","2018-06-01 12:02:02.800000","2018-06-01 12:02:02.900000","2018-06-01 12:02:03.700000","2018-06-01 12:02:03.800000","2018-06-01 12:02:03.900000","2018-06-01 12:02:04.200000","2018-06-01 12:02:04.400000","2018-06-01 12:02:04.600000","2018-06-01 12:02:05.000000","2018-06-01 12:02:05.800000","2018-06-01 12:02:06.000000","2018-06-01 12:02:06.100000","2018-06-01 12:02:06.200000","2018-06-01 12:02:06.400000","2018-06-01 12:02:06.500000","2018-06-01 12:02:06.700000","2018-06-01 12:02:06.800000","2018-06-01 12:02:07.200000","2018-06-01 12:02:07.400000","2018-06-01 12:02:07.600000","2018-06-01 12:02:07.700000","2018-06-01 12:02:07.800000","2018-06-01 12:02:08.100000","2018-06-01 12:02:08.200000","2018-06-01 12:02:08.500000","2018-06-01 12:02:09.500000","2018-06-01 12:02:10.500000","2018-06-01 12:02:11.100000","2018-06-01 12:02:11.600000","2018-06-01 12:02:12.000000","2018-06-01 12:02:12.700000","2018-06-01 12:02:12.800000","2018-06-01 12:02:13.200000","2018-06-01 12:02:14.500000","2018-06-01 12:02:14.900000","2018-06-01 12:02:15.100000","2018-06-01 12:02:15.300000","2018-06-01 12:02:15.600000","2018-06-01 12:02:15.800000","2018-06-01 12:02:16.100000","2018-06-01 12:02:16.300000","2018-06-01 12:02:16.800000","2018-06-01 12:02:17.300000","2018-06-01 12:02:17.400000","2018-06-01 12:02:17.500000","2018-06-01 12:02:17.700000","2018-06-01 12:02:17.800000","2018-06-01 12:02:18.300000","2018-06-01 12:02:18.500000","2018-06-01 12:02:18.900000","2018-06-01 12:02:19.000000","2018-06-01 12:02:19.100000","2018-06-01 12:02:19.200000","2018-06-01 12:02:19.600000","2018-06-01 12:02:19.700000","2018-06-01 12:02:20.000000","2018-06-01 12:02:20.700000","2018-06-01 12:02:20.900000","2018-06-01 12:02:21.600000","2018-06-01 12:02:22.100000","2018-06-01 12:02:22.200000","2018-06-01 12:02:22.400000","2018-06-01 12:02:22.900000","2018-06-01 12:02:23.400000","2018-06-01 12:02:23.700000","2018-06-01 12:02:24.000000","2018-06-01 12:02:24.300000","2018-06-01 12:02:24.500000","2018-06-01 12:02:24.700000","2018-06-01 12:02:24.900000","2018-06-01 12:02:25.200000","2018-06-01 12:02:25.800000","2018-06-01 12:02:26.100000","2018-06-01 12:02:26.200000","2018-06-01 12:02:26.500000","2018-06-01 12:02:26.900000","2018-06-01 12:02:27.100000","2018-06-01 12:02:27.200000","2018-06-01 12:02:27.300000","2018-06-01 12:02:27.400000","2018-06-01 12:02:27.500000","2018-06-01 12:02:27.900000","2018-06-01 12:02:28.100000","2018-06-01 12:02:28.200000","2018-06-01 12:02:28.400000","2018-06-01 12:02:28.800000","2018-06-01 12:02:29.100000","2018-06-01 12:02:29.400000","2018-06-01 12:02:29.700000","2018-06-01 12:02:29.800000","2018-06-01 12:02:30.200000","2018-06-01 12:02:30.500000","2018-06-01 12:02:30.600000","2018-06-01 12:02:30.700000","2018-06-01 12:02:31.100000","2018-06-01 12:02:31.400000","2018-06-01 12:02:31.600000","2018-06-01 12:02:31.800000","2018-06-01 12:02:31.900000","2018-06-01 12:02:32.100000","2018-06-01 12:02:32.300000","2018-06-01 12:02:32.400000","2018-06-01 12:02:33.000000","2018-06-01 12:02:33.900000","2018-06-01 12:02:34.000000","2018-06-01 12:02:34.300000","2018-06-01 12:02:34.400000","2018-06-01 12:02:34.500000","2018-06-01 12:02:34.600000","2018-06-01 12:02:34.800000","2018-06-01 12:02:35.200000","2018-06-01 12:02:35.700000","2018-06-01 12:02:36.400000","2018-06-01 12:02:36.600000","2018-06-01 12:02:37.000000","2018-06-01 12:02:37.100000","2018-06-01 12:02:38.200000","2018-06-01 12:02:38.700000","2018-06-01 12:02:38.900000","2018-06-01 12:02:39.000000","2018-06-01 12:02:39.600000","2018-06-01 12:02:40.000000","2018-06-01 12:02:40.400000","2018-06-01 12:02:40.500000","2018-06-01 12:02:40.800000","2018-06-01 12:02:41.200000","2018-06-01 12:02:41.400000","2018-06-01 12:02:41.900000","2018-06-01 12:02:42.100000","2018-06-01 12:02:42.400000","2018-06-01 12:02:42.800000","2018-06-01 12:02:43.000000","2018-06-01 12:02:43.200000","2018-06-01 12:02:43.900000","2018-06-01 12:02:44.800000","2018-06-01 12:02:45.100000","2018-06-01 12:02:45.400000","2018-06-01 12:02:47.500000","2018-06-01 12:02:47.600000","2018-06-01 12:02:47.800000","2018-06-01 12:02:47.900000","2018-06-01 12:02:48.100000","2018-06-01 12:02:48.600000","2018-06-01 12:02:49.000000","2018-06-01 12:02:49.100000","2018-06-01 12:02:49.500000","2018-06-01 12:02:49.600000","2018-06-01 12:02:50.700000","2018-06-01 12:02:51.600000","2018-06-01 12:02:52.400000","2018-06-01 12:02:52.600000","2018-06-01 12:02:53.000000","2018-06-01 12:02:53.200000","2018-06-01 12:02:53.300000","2018-06-01 12:02:53.400000","2018-06-01 12:02:53.600000","2018-06-01 12:02:53.700000","2018-06-01 12:02:53.900000","2018-06-01 12:02:54.200000","2018-06-01 12:02:54.600000","2018-06-01 12:02:55.100000","2018-06-01 12:02:55.200000","2018-06-01 12:02:55.400000","2018-06-01 12:02:55.800000","2018-06-01 12:02:56.100000","2018-06-01 12:02:56.200000","2018-06-01 12:02:56.500000","2018-06-01 12:02:56.600000","2018-06-01 12:02:56.900000","2018-06-01 12:02:57.100000","2018-06-01 12:02:57.200000","2018-06-01 12:02:58.100000","2018-06-01 12:02:58.400000","2018-06-01 12:02:58.700000","2018-06-01 12:02:59.000000","2018-06-01 12:02:59.300000","2018-06-01 12:02:59.900000","2018-06-01 12:03:00.100000","2018-06-01 12:03:00.600000","2018-06-01 12:03:00.800000","2018-06-01 12:03:01.000000","2018-06-01 12:03:01.500000","2018-06-01 12:03:01.800000","2018-06-01 12:03:02.000000","2018-06-01 12:03:02.400000","2018-06-01 12:03:03.600000","2018-06-01 12:03:03.800000","2018-06-01 12:03:03.900000","2018-06-01 12:03:04.200000","2018-06-01 12:03:04.500000","2018-06-01 12:03:04.700000","2018-06-01 12:03:05.200000","2018-06-01 12:03:05.300000","2018-06-01 12:03:06.400000","2018-06-01 12:03:07.200000","2018-06-01 12:03:07.500000","2018-06-01 12:03:07.700000","2018-06-01 12:03:08.600000","2018-06-01 12:03:09.900000","2018-06-01 12:03:10.000000","2018-06-01 12:03:10.200000","2018-06-01 12:03:10.500000","2018-06-01 12:03:10.600000","2018-06-01 12:03:10.700000","2018-06-01 12:03:10.800000","2018-06-01 12:03:10.900000","2018-06-01 12:03:11.000000","2018-06-01 12:03:11.200000","2018-06-01 12:03:11.400000","2018-06-01 12:03:11.600000","2018-06-01 12:03:11.700000","2018-06-01 12:03:11.800000","2018-06-01 12:03:12.200000","2018-06-01 12:03:12.500000","2018-06-01 12:03:12.800000","2018-06-01 12:03:13.400000","2018-06-01 12:03:13.500000","2018-06-01 12:03:14.400000","2018-06-01 12:03:15.000000","2018-06-01 12:03:15.100000","2018-06-01 12:03:16.000000","2018-06-01 12:03:17.000000","2018-06-01 12:03:17.100000","2018-06-01 12:03:17.300000","2018-06-01 12:03:17.800000","2018-06-01 12:03:17.900000","2018-06-01 12:03:18.000000","2018-06-01 12:03:18.100000","2018-06-01 12:03:19.000000","2018-06-01 12:03:19.900000","2018-06-01 12:03:20.300000","2018-06-01 12:03:20.700000","2018-06-01 12:03:20.900000","2018-06-01 12:03:21.000000","2018-06-01 12:03:21.200000","2018-06-01 12:03:21.700000","2018-06-01 12:03:22.600000","2018-06-01 12:03:22.700000","2018-06-01 12:03:23.400000","2018-06-01 12:03:23.700000","2018-06-01 12:03:23.800000","2018-06-01 12:03:24.100000","2018-06-01 12:03:25.100000","2018-06-01 12:03:25.400000","2018-06-01 12:03:25.500000","2018-06-01 12:03:25.800000","2018-06-01 12:03:26.700000","2018-06-01 12:03:27.100000","2018-06-01 12:03:27.600000","2018-06-01 12:03:28.000000","2018-06-01 12:03:28.500000","2018-06-01 12:03:28.700000","2018-06-01 12:03:29.000000","2018-06-01 12:03:29.400000","2018-06-01 12:03:29.600000","2018-06-01 12:03:29.700000","2018-06-01 12:03:29.800000","2018-06-01 12:03:30.400000","2018-06-01 12:03:30.500000","2018-06-01 12:03:31.000000","2018-06-01 12:03:31.200000","2018-06-01 12:03:31.300000","2018-06-01 12:03:31.700000","2018-06-01 12:03:31.900000","2018-06-01 12:03:32.400000","2018-06-01 12:03:32.600000","2018-06-01 12:03:32.700000","2018-06-01 12:03:32.800000","2018-06-01 12:03:32.900000","2018-06-01 12:03:33.000000","2018-06-01 12:03:33.300000","2018-06-01 12:03:33.600000","2018-06-01 12:03:34.700000","2018-06-01 12:03:35.500000","2018-06-01 12:03:36.600000","2018-06-01 12:03:37.100000","2018-06-01 12:03:37.400000","2018-06-01 12:03:37.600000","2018-06-01 12:03:38.000000","2018-06-01 12:03:38.100000","2018-06-01 12:03:38.400000","2018-06-01 12:03:38.600000","2018-06-01 12:03:38.700000","2018-06-01 12:03:38.900000","2018-06-01 12:03:39.100000","2018-06-01 12:03:39.600000","2018-06-01 12:03:40.200000","2018-06-01 12:03:40.800000","2018-06-01 12:03:40.900000","2018-06-01 12:03:41.500000","2018-06-01 12:03:41.700000","2018-06-01 12:03:41.800000","2018-06-01 12:03:42.200000","2018-06-01 12:03:42.500000","2018-06-01 12:03:42.600000","2018-06-01 12:03:43.000000","2018-06-01 12:03:43.500000","2018-06-01 12:03:43.700000","2018-06-01 12:03:43.900000","2018-06-01 12:03:44.500000","2018-06-01 12:03:45.100000","2018-06-01 12:03:45.200000","2018-06-01 12:03:45.400000","2018-06-01 12:03:45.700000","2018-06-01 12:03:45.800000","2018-06-01 12:03:45.900000","2018-06-01 12:03:46.000000","2018-06-01 12:03:46.300000","2018-06-01 12:03:46.500000","2018-06-01 12:03:46.800000","2018-06-01 12:03:47.200000","2018-06-01 12:03:47.800000","2018-06-01 12:03:48.200000","2018-06-01 12:03:48.300000","2018-06-01 12:03:49.900000","2018-06-01 12:03:50.300000","2018-06-01 12:03:50.500000","2018-06-01 12:03:51.100000","2018-06-01 12:03:51.400000","2018-06-01 12:03:51.800000","2018-06-01 12:03:51.900000","2018-06-01 12:03:52.700000","2018-06-01 12:03:52.800000","2018-06-01 12:03:53.200000","2018-06-01 12:03:53.300000","2018-06-01 12:03:54.000000","2018-06-01 12:03:54.700000","2018-06-01 12:03:57.500000","2018-06-01 12:03:57.900000","2018-06-01 12:03:58.100000","2018-06-01 12:03:58.800000","2018-06-01 12:03:59.100000","2018-06-01 12:03:59.300000","2018-06-01 12:03:59.700000","2018-06-01 12:04:00.000000","2018-06-01 12:04:00.100000","2018-06-01 12:04:00.300000","2018-06-01 12:04:00.500000","2018-06-01 12:04:01.100000","2018-06-01 12:04:02.100000","2018-06-01 12:04:03.000000","2018-06-01 12:04:03.900000","2018-06-01 12:04:04.900000","2018-06-01 12:04:05.100000","2018-06-01 12:04:05.200000","2018-06-01 12:04:05.400000","2018-06-01 12:04:06.200000","2018-06-01 12:04:06.300000","2018-06-01 12:04:06.700000","2018-06-01 12:04:06.900000","2018-06-01 12:04:07.000000","2018-06-01 12:04:07.500000","2018-06-01 12:04:07.700000","2018-06-01 12:04:08.200000","2018-06-01 12:04:08.500000","2018-06-01 12:04:08.900000","2018-06-01 12:04:09.500000","2018-06-01 12:04:09.800000","2018-06-01 12:04:10.100000","2018-06-01 12:04:10.200000","2018-06-01 12:04:10.400000","2018-06-01 12:04:10.800000","2018-06-01 12:04:11.400000","2018-06-01 12:04:11.700000","2018-06-01 12:04:12.100000","2018-06-01 12:04:12.300000","2018-06-01 12:04:12.800000","2018-06-01 12:04:12.900000","2018-06-01 12:04:13.200000","2018-06-01 12:04:13.700000","2018-06-01 12:04:14.300000","2018-06-01 12:04:15.200000","2018-06-01 12:04:15.600000","2018-06-01 12:04:15.700000","2018-06-01 12:04:16.500000","2018-06-01 12:04:16.600000","2018-06-01 12:04:17.100000","2018-06-01 12:04:17.200000","2018-06-01 12:04:17.400000","2018-06-01 12:04:18.000000","2018-06-01 12:04:18.100000","2018-06-01 12:04:18.500000","2018-06-01 12:04:18.700000","2018-06-01 12:04:18.900000","2018-06-01 12:04:20.200000","2018-06-01 12:04:20.400000","2018-06-01 12:04:20.700000","2018-06-01 12:04:20.900000","2018-06-01 12:04:21.200000","2018-06-01 12:04:21.400000","2018-06-01 12:04:22.200000","2018-06-01 12:04:22.500000","2018-06-01 12:04:23.200000","2018-06-01 12:04:23.700000","2018-06-01 12:04:24.600000","2018-06-01 12:04:24.900000","2018-06-01 12:04:25.200000","2018-06-01 12:04:25.500000","2018-06-01 12:04:25.600000","2018-06-01 12:04:25.700000","2018-06-01 12:04:25.800000","2018-06-01 12:04:26.000000","2018-06-01 12:04:26.700000","2018-06-01 12:04:27.100000","2018-06-01 12:04:27.300000","2018-06-01 12:04:27.600000","2018-06-01 12:04:27.700000","2018-06-01 12:04:27.800000","2018-06-01 12:04:28.100000","2018-06-01 12:04:28.200000","2018-06-01 12:04:28.600000","2018-06-01 12:04:28.900000","2018-06-01 12:04:29.200000","2018-06-01 12:04:29.800000","2018-06-01 12:04:30.200000","2018-06-01 12:04:30.500000","2018-06-01 12:04:31.100000","2018-06-01 12:04:31.800000","2018-06-01 12:04:32.000000","2018-06-01 12:04:32.600000","2018-06-01 12:04:32.800000","2018-06-01 12:04:32.900000","2018-06-01 12:04:33.000000","2018-06-01 12:04:33.400000","2018-06-01 12:04:33.500000","2018-06-01 12:04:33.600000","2018-06-01 12:04:34.300000","2018-06-01 12:04:34.600000","2018-06-01 12:04:34.700000","2018-06-01 12:04:34.900000","2018-06-01 12:04:35.000000","2018-06-01 12:04:35.300000","2018-06-01 12:04:35.900000","2018-06-01 12:04:36.100000","2018-06-01 12:04:36.500000","2018-06-01 12:04:36.900000","2018-06-01 12:04:37.000000","2018-06-01 12:04:37.100000","2018-06-01 12:04:38.400000","2018-06-01 12:04:39.000000","2018-06-01 12:04:39.200000","2018-06-01 12:04:39.300000","2018-06-01 12:04:39.400000","2018-06-01 12:04:39.600000","2018-06-01 12:04:40.500000","2018-06-01 12:04:40.800000","2018-06-01 12:04:41.100000","2018-06-01 12:04:41.800000","2018-06-01 12:04:41.900000","2018-06-01 12:04:42.400000","2018-06-01 12:04:42.500000","2018-06-01 12:04:42.600000","2018-06-01 12:04:42.700000","2018-06-01 12:04:42.900000","2018-06-01 12:04:43.500000","2018-06-01 12:04:44.200000","2018-06-01 12:04:44.500000","2018-06-01 12:04:45.000000","2018-06-01 12:04:45.200000","2018-06-01 12:04:45.300000","2018-06-01 12:04:45.400000","2018-06-01 12:04:46.700000","2018-06-01 12:04:47.400000","2018-06-01 12:04:47.500000","2018-06-01 12:04:47.800000","2018-06-01 12:04:47.900000","2018-06-01 12:04:48.200000","2018-06-01 12:04:48.400000","2018-06-01 12:04:48.500000","2018-06-01 12:04:49.000000","2018-06-01 12:04:49.700000","2018-06-01 12:04:49.800000","2018-06-01 12:04:50.100000","2018-06-01 12:04:50.600000","2018-06-01 12:04:51.000000","2018-06-01 12:04:51.900000","2018-06-01 12:04:52.100000","2018-06-01 12:04:52.200000","2018-06-01 12:04:52.900000","2018-06-01 12:04:53.500000","2018-06-01 12:04:53.800000","2018-06-01 12:04:54.700000","2018-06-01 12:04:55.200000","2018-06-01 12:04:55.700000","2018-06-01 12:04:56.000000","2018-06-01 12:04:56.200000","2018-06-01 12:04:56.500000","2018-06-01 12:04:56.800000","2018-06-01 12:04:57.400000","2018-06-01 12:04:57.900000","2018-06-01 12:04:58.400000","2018-06-01 12:04:58.600000","2018-06-01 12:04:58.700000","2018-06-01 12:04:59.000000","2018-06-01 12:04:59.700000"],"xaxis":"x","y":[102.47,102.51,102.45,102.53,102.7,102.99,103.4,103.92,104.26,104.67,105.02,105.44,105.82,106.18,106.34,106.59,106.76,107.03,107.33,107.68,108.08,108.63,108.91,109.18,109.34,109.43,109.48,109.42,109.59,109.71,109.8,109.94,110.06,110.02,110.09,110.02,109.95,110.12,110.09,110.04,109.88,109.83,109.7,109.72,109.85,109.87,109.84,109.7,109.59,109.59,109.64,109.68,109.77,109.86,109.88,110.09,110.3,110.57,110.72,110.9,111.01,111.07,111.05,110.9,110.7,110.43,110.28,110.12,109.82,109.47,109.12,108.8,108.48,108.07,107.52,107.02,106.7,106.45,106.22,106.08,106.04,105.99,105.77,105.64,105.6,105.52,105.5,105.51,105.4,105.34,105.4,105.44,105.5,105.63,105.91,106.19,106.42,106.61,106.83,106.91,107.08,107.33,107.48,107.61,107.79,108.05,108.25,108.59,109.15,109.51,109.9,110.35,110.71,111,111.16,111.27,111.43,111.66,111.92,112.01,112,111.99,111.97,112.07,112.18,112.2,112.24,112.22,112.33,112.35,112.51,112.59,112.73,112.65,112.56,112.57,112.56,112.63,112.75,112.82,113.08,113.11,113.06,113.06,113.16,113.2,113.26,113.37,113.57,113.8,114.14,114.31,114.54,114.78,115.01,115.13,115.37,115.57,115.85,116.04,116.12,115.97,115.82,115.88,115.93,115.95,116.02,116.09,116.06,115.92,115.74,115.55,115.53,115.4,115.28,115.21,115.13,115.16,115.11,115.08,115.27,115.44,115.63,115.78,116,116.27,116.5,116.54,116.76,117.01,117.02,116.98,117.05,117.13,117.31,117.5,117.68,117.94,118.12,118.37,118.67,118.85,119.12,119.19,119.23,119.28,119.4,119.5,119.78,119.9,120.21,120.61,121.06,121.65,122.36,123.15,123.85,124.59,125.41,126.26,126.96,127.51,128.09,128.6,129.1,129.56,129.95,130.22,130.37,130.36,130.27,130.12,129.99,129.97,130.02,129.95,129.78,129.64,129.47,129.2,128.87,128.66,128.41,128.01,127.62,127.33,127.01,126.77,126.5,126.36,126.3,126.24,126.09,126.07,126.08,126.05,125.91,125.83,125.74,125.51,125.25,125.16,125.09,125.03,124.95,124.87,124.84,124.69,124.53,124.4,124.31,124.21,124.29,124.17,124.14,124.03,123.9,123.7,123.56,123.37,123.22,123.07,122.83,122.55,122.12,121.7,121.44,121.32,121.36,121.52,121.6,121.67,121.67,121.58,121.49,121.46,121.35,121.34,121.25,121.11,120.9,120.73,120.59,120.47,120.46,120.43,120.57,120.67,120.71,120.63,120.45,120.23,120.14,120.27,120.43,120.58,120.51,120.35,120.17,120.08,119.85,119.48,119.19,119.09,119.18,119.18,119.23,119.17,119.16,119.1,118.87,118.75,118.72,118.83,119.01,119.33,119.66,119.98,120.37,120.68,120.94,121.05,121.06,120.97,120.79,120.62,120.37,120.17,119.98,119.79,119.7,119.68,119.56,119.58,119.58,119.6,119.59,119.65,119.81,119.81,119.77,119.8,119.74,119.64,119.51,119.29,119.06,118.71,118.27,117.71,117.25,116.63,115.96,115.2,114.46,113.86,113.48,112.8,112.08,111.51,110.92,110.3,109.69,109.21,108.8,108.48,108.15,107.84,107.53,107.16,106.86,106.55,106.2,105.8,105.44,105.15,104.94,104.76,104.65,104.5,104.46,104.41,104.33,104.21,104.01,103.97,103.98,104.05,104.24,104.38,104.53,104.72,104.95,105.17,105.36,105.42,105.62,105.72,105.86,106.08,106.3,106.55,106.69,106.97,107.38,107.82,108.37,108.84,109.16,109.41,109.61,109.84,110.09,110.22,110.44,110.81,111.17,111.5,111.81,112.19,112.53,112.93,113.32,113.66,113.94,114.03,114.01,114,113.8,113.78,113.58,113.19,112.96,112.78,112.65,112.44,112.28,112.12,111.98,111.9,111.75,111.63,111.39,111.06,110.72,110.28,109.92,109.57,109.43,109.27,109.05,108.91,108.76,108.63,108.52,108.39,108.29,108.2,108.19,108.05,107.91,107.74,107.7,107.84,107.96,108.1,108.46,108.77,108.98,109.15,109.27,109.3,109.45,109.61,109.8,109.87,109.91,109.89,109.85,110.1,110.37,110.65,110.93,111.39,111.69,112.1,112.62,113.06,113.55,114.11,114.7,115.36,115.93,116.33,116.62,116.82,117.07,117.31,117.39,117.44,117.53,117.61,117.74,117.85,117.95,118.1,118.02,117.95,117.93,117.92,117.81,117.7,117.73,117.72,117.76,117.69,117.51,117.47,117.51,117.61,117.67,117.76,117.66,117.63,117.59,117.41,117.25,117.16,117.19,117.29,117.32,117.36,117.45,117.63,117.77,118.01,118.19,118.39,118.38,118.45,118.43,118.35,118.33,118.21,118.15,117.95,117.84,117.61,117.45,117.34,117.29,117.34,117.38,117.36,117.3,117.09,116.8,116.46,116.01,115.54,115.12,114.7,114.35,113.9,113.55,113.18,112.94,112.64,112.26,111.88,111.45,111.07,110.8,110.74,110.53,110.26,110.15,109.89,109.86,109.86,109.96,109.95,109.88,109.87,109.92,109.85,110.01,110.12,110.27,110.4,110.66,110.8,110.86,110.71,110.42,110.2,110.09,110.02,110.03,110.02,109.85,109.59,109.3,109.02,108.74,108.42,108.07,107.85,107.77,107.7,107.62,107.58,107.49,107.39,107.26,107.14,107.1,107.26,107.42,107.31,106.97,106.84,106.64,106.62,106.6,106.61,106.75,106.98,107.14,107.21,107.44,107.6,107.71,107.96,108.35,108.65,108.97,109.34,109.65,109.82,109.93,109.86,109.9,110,110.08,110.1,110.05,110.05,110.19,110.23,110.21,110.28,110.41,110.57,110.56,110.61,110.71,110.8,111.04,111.23,111.4,111.61,111.86,112.17,112.42,112.61,112.66,112.74,112.73,112.72,112.77,112.94,113.23,113.62,114.07,114.41,114.72,115.15,115.57,115.97,116.25,116.56,116.97,117.21,117.56,117.79,117.97,118.02,118.18,118.37,118.47,118.41,118.25,118.13,117.92,117.86,117.67,117.41,117.19,116.96,116.77,116.62,116.6,116.4,116.29,116.21,116.12,116.03,115.96,115.77,115.86,115.84,115.89,115.85,115.94,116.05,116.11,116.18,116.29,116.41,116.49,116.54,116.54,116.56,116.68,116.87,117.04,117.21,117.22,117.46,117.68,118.05,118.26,118.29,118.32,118.41,118.66,118.95,119.21,119.6,119.98,120.25,120.64,121.1,121.57,122.03,122.63,123.23,123.62,123.97,124.29,124.67,124.95,125.21,125.52,125.92,126.05,126.28,126.58,126.92,127.18,127.36,127.54,127.78,127.88,127.97,128.16,128.41,128.63,128.85,129.06,129.08,129.09,129.02,128.96,128.76,128.56,128.35,128.09,127.76,127.28,126.66,126.17,125.68,125.12,124.39,123.75,122.9,122.28,121.67,121.13,120.55,119.98,119.54,119.14,118.69,118.37,117.95,117.56,117.14,116.44,115.6,115.14,114.71,114.43,114.32,114.31,114.27,114.1,113.9,113.62,113.25,112.98,112.82,112.78,112.86,112.93,112.65,112.69,112.72,112.84,112.81,112.83,112.64,112.47,112.37,112.4,112.45],"yaxis":"y","type":"scatter"},{"hovertemplate":"Timestamp=%{x}
AvgPrice=%{y}","legendgroup":"","line":{"dash":"solid","shape":"linear"},"marker":{"symbol":"circle"},"mode":"lines","name":"","showlegend":false,"x":["2018-06-01 12:00:00.100000","2018-06-01 12:00:00.300000","2018-06-01 12:00:00.400000","2018-06-01 12:00:00.800000","2018-06-01 12:00:01.300000","2018-06-01 12:00:01.400000","2018-06-01 12:00:01.800000","2018-06-01 12:00:02.100000","2018-06-01 12:00:02.800000","2018-06-01 12:00:03.100000","2018-06-01 12:00:03.200000","2018-06-01 12:00:03.900000","2018-06-01 12:00:04.300000","2018-06-01 12:00:04.500000","2018-06-01 12:00:04.900000","2018-06-01 12:00:05.100000","2018-06-01 12:00:05.500000","2018-06-01 12:00:05.700000","2018-06-01 12:00:05.900000","2018-06-01 12:00:06.600000","2018-06-01 12:00:06.700000","2018-06-01 12:00:07.200000","2018-06-01 12:00:07.900000","2018-06-01 12:00:08.000000","2018-06-01 12:00:08.200000","2018-06-01 12:00:08.500000","2018-06-01 12:00:08.700000","2018-06-01 12:00:08.900000","2018-06-01 12:00:09.000000","2018-06-01 12:00:09.100000","2018-06-01 12:00:09.700000","2018-06-01 12:00:10.000000","2018-06-01 12:00:10.200000","2018-06-01 12:00:10.700000","2018-06-01 12:00:10.800000","2018-06-01 12:00:11.300000","2018-06-01 12:00:11.400000","2018-06-01 12:00:11.700000","2018-06-01 12:00:12.100000","2018-06-01 12:00:12.300000","2018-06-01 12:00:12.700000","2018-06-01 12:00:13.700000","2018-06-01 12:00:13.800000","2018-06-01 12:00:13.900000","2018-06-01 12:00:14.600000","2018-06-01 12:00:14.900000","2018-06-01 12:00:15.400000","2018-06-01 12:00:16.000000","2018-06-01 12:00:16.200000","2018-06-01 12:00:16.400000","2018-06-01 12:00:16.500000","2018-06-01 12:00:16.600000","2018-06-01 12:00:16.700000","2018-06-01 12:00:16.900000","2018-06-01 12:00:17.600000","2018-06-01 12:00:18.000000","2018-06-01 12:00:18.300000","2018-06-01 12:00:19.000000","2018-06-01 12:00:19.800000","2018-06-01 12:00:20.000000","2018-06-01 12:00:20.100000","2018-06-01 12:00:20.300000","2018-06-01 12:00:20.600000","2018-06-01 12:00:21.300000","2018-06-01 12:00:21.500000","2018-06-01 12:00:22.100000","2018-06-01 12:00:22.400000","2018-06-01 12:00:23.900000","2018-06-01 12:00:24.500000","2018-06-01 12:00:24.900000","2018-06-01 12:00:25.500000","2018-06-01 12:00:25.900000","2018-06-01 12:00:26.000000","2018-06-01 12:00:26.700000","2018-06-01 12:00:26.900000","2018-06-01 12:00:27.300000","2018-06-01 12:00:27.400000","2018-06-01 12:00:28.100000","2018-06-01 12:00:28.400000","2018-06-01 12:00:29.400000","2018-06-01 12:00:29.600000","2018-06-01 12:00:29.800000","2018-06-01 12:00:30.300000","2018-06-01 12:00:30.400000","2018-06-01 12:00:30.500000","2018-06-01 12:00:30.800000","2018-06-01 12:00:30.900000","2018-06-01 12:00:31.400000","2018-06-01 12:00:31.600000","2018-06-01 12:00:31.900000","2018-06-01 12:00:32.600000","2018-06-01 12:00:33.200000","2018-06-01 12:00:33.500000","2018-06-01 12:00:33.600000","2018-06-01 12:00:33.700000","2018-06-01 12:00:33.800000","2018-06-01 12:00:33.900000","2018-06-01 12:00:34.200000","2018-06-01 12:00:34.300000","2018-06-01 12:00:35.300000","2018-06-01 12:00:35.400000","2018-06-01 12:00:35.500000","2018-06-01 12:00:35.700000","2018-06-01 12:00:35.900000","2018-06-01 12:00:36.600000","2018-06-01 12:00:36.700000","2018-06-01 12:00:37.000000","2018-06-01 12:00:37.200000","2018-06-01 12:00:37.300000","2018-06-01 12:00:37.500000","2018-06-01 12:00:37.700000","2018-06-01 12:00:37.800000","2018-06-01 12:00:37.900000","2018-06-01 12:00:38.200000","2018-06-01 12:00:39.600000","2018-06-01 12:00:39.700000","2018-06-01 12:00:39.900000","2018-06-01 12:00:40.300000","2018-06-01 12:00:40.400000","2018-06-01 12:00:40.500000","2018-06-01 12:00:41.000000","2018-06-01 12:00:41.100000","2018-06-01 12:00:41.600000","2018-06-01 12:00:42.000000","2018-06-01 12:00:42.600000","2018-06-01 12:00:42.700000","2018-06-01 12:00:42.800000","2018-06-01 12:00:43.000000","2018-06-01 12:00:43.300000","2018-06-01 12:00:43.800000","2018-06-01 12:00:44.000000","2018-06-01 12:00:44.100000","2018-06-01 12:00:44.900000","2018-06-01 12:00:45.000000","2018-06-01 12:00:45.100000","2018-06-01 12:00:45.300000","2018-06-01 12:00:45.800000","2018-06-01 12:00:46.300000","2018-06-01 12:00:46.400000","2018-06-01 12:00:46.500000","2018-06-01 12:00:46.700000","2018-06-01 12:00:46.900000","2018-06-01 12:00:47.000000","2018-06-01 12:00:47.400000","2018-06-01 12:00:48.500000","2018-06-01 12:00:48.600000","2018-06-01 12:00:48.800000","2018-06-01 12:00:49.700000","2018-06-01 12:00:49.900000","2018-06-01 12:00:50.300000","2018-06-01 12:00:50.500000","2018-06-01 12:00:51.100000","2018-06-01 12:00:51.200000","2018-06-01 12:00:51.300000","2018-06-01 12:00:51.500000","2018-06-01 12:00:52.100000","2018-06-01 12:00:52.200000","2018-06-01 12:00:52.400000","2018-06-01 12:00:53.200000","2018-06-01 12:00:53.500000","2018-06-01 12:00:53.800000","2018-06-01 12:00:54.500000","2018-06-01 12:00:54.600000","2018-06-01 12:00:54.700000","2018-06-01 12:00:55.200000","2018-06-01 12:00:55.500000","2018-06-01 12:00:55.700000","2018-06-01 12:00:55.900000","2018-06-01 12:00:56.700000","2018-06-01 12:00:56.800000","2018-06-01 12:00:57.000000","2018-06-01 12:00:57.100000","2018-06-01 12:00:58.200000","2018-06-01 12:00:58.500000","2018-06-01 12:00:58.900000","2018-06-01 12:00:59.000000","2018-06-01 12:00:59.200000","2018-06-01 12:00:59.400000","2018-06-01 12:00:59.700000","2018-06-01 12:01:00.100000","2018-06-01 12:01:00.300000","2018-06-01 12:01:00.400000","2018-06-01 12:01:00.500000","2018-06-01 12:01:00.800000","2018-06-01 12:01:01.400000","2018-06-01 12:01:01.500000","2018-06-01 12:01:01.600000","2018-06-01 12:01:02.000000","2018-06-01 12:01:02.300000","2018-06-01 12:01:02.400000","2018-06-01 12:01:02.900000","2018-06-01 12:01:03.300000","2018-06-01 12:01:03.400000","2018-06-01 12:01:03.600000","2018-06-01 12:01:04.000000","2018-06-01 12:01:04.500000","2018-06-01 12:01:05.100000","2018-06-01 12:01:05.200000","2018-06-01 12:01:05.800000","2018-06-01 12:01:06.000000","2018-06-01 12:01:06.700000","2018-06-01 12:01:07.200000","2018-06-01 12:01:07.500000","2018-06-01 12:01:07.600000","2018-06-01 12:01:07.800000","2018-06-01 12:01:09.600000","2018-06-01 12:01:09.700000","2018-06-01 12:01:10.000000","2018-06-01 12:01:10.300000","2018-06-01 12:01:10.700000","2018-06-01 12:01:10.800000","2018-06-01 12:01:11.600000","2018-06-01 12:01:11.700000","2018-06-01 12:01:11.800000","2018-06-01 12:01:12.100000","2018-06-01 12:01:12.500000","2018-06-01 12:01:12.600000","2018-06-01 12:01:13.600000","2018-06-01 12:01:13.700000","2018-06-01 12:01:13.900000","2018-06-01 12:01:14.100000","2018-06-01 12:01:14.500000","2018-06-01 12:01:14.800000","2018-06-01 12:01:15.400000","2018-06-01 12:01:15.900000","2018-06-01 12:01:16.000000","2018-06-01 12:01:16.100000","2018-06-01 12:01:16.500000","2018-06-01 12:01:16.800000","2018-06-01 12:01:16.900000","2018-06-01 12:01:17.200000","2018-06-01 12:01:17.300000","2018-06-01 12:01:17.700000","2018-06-01 12:01:17.800000","2018-06-01 12:01:18.000000","2018-06-01 12:01:18.100000","2018-06-01 12:01:20.100000","2018-06-01 12:01:20.300000","2018-06-01 12:01:20.900000","2018-06-01 12:01:21.100000","2018-06-01 12:01:21.200000","2018-06-01 12:01:21.600000","2018-06-01 12:01:21.700000","2018-06-01 12:01:22.000000","2018-06-01 12:01:22.500000","2018-06-01 12:01:22.800000","2018-06-01 12:01:22.900000","2018-06-01 12:01:23.000000","2018-06-01 12:01:23.100000","2018-06-01 12:01:24.000000","2018-06-01 12:01:24.500000","2018-06-01 12:01:24.600000","2018-06-01 12:01:24.900000","2018-06-01 12:01:25.500000","2018-06-01 12:01:25.600000","2018-06-01 12:01:26.000000","2018-06-01 12:01:27.000000","2018-06-01 12:01:27.300000","2018-06-01 12:01:27.700000","2018-06-01 12:01:27.900000","2018-06-01 12:01:28.600000","2018-06-01 12:01:28.800000","2018-06-01 12:01:29.000000","2018-06-01 12:01:29.200000","2018-06-01 12:01:29.600000","2018-06-01 12:01:29.700000","2018-06-01 12:01:30.300000","2018-06-01 12:01:30.600000","2018-06-01 12:01:30.900000","2018-06-01 12:01:31.300000","2018-06-01 12:01:31.400000","2018-06-01 12:01:31.500000","2018-06-01 12:01:32.200000","2018-06-01 12:01:32.900000","2018-06-01 12:01:33.600000","2018-06-01 12:01:34.400000","2018-06-01 12:01:34.600000","2018-06-01 12:01:34.700000","2018-06-01 12:01:35.000000","2018-06-01 12:01:35.200000","2018-06-01 12:01:35.300000","2018-06-01 12:01:35.400000","2018-06-01 12:01:36.200000","2018-06-01 12:01:36.500000","2018-06-01 12:01:36.600000","2018-06-01 12:01:37.100000","2018-06-01 12:01:37.300000","2018-06-01 12:01:38.600000","2018-06-01 12:01:39.100000","2018-06-01 12:01:39.300000","2018-06-01 12:01:39.500000","2018-06-01 12:01:39.800000","2018-06-01 12:01:40.900000","2018-06-01 12:01:41.500000","2018-06-01 12:01:41.900000","2018-06-01 12:01:42.000000","2018-06-01 12:01:42.200000","2018-06-01 12:01:42.500000","2018-06-01 12:01:42.600000","2018-06-01 12:01:42.700000","2018-06-01 12:01:43.700000","2018-06-01 12:01:43.800000","2018-06-01 12:01:44.200000","2018-06-01 12:01:44.700000","2018-06-01 12:01:44.800000","2018-06-01 12:01:45.100000","2018-06-01 12:01:45.400000","2018-06-01 12:01:45.500000","2018-06-01 12:01:45.600000","2018-06-01 12:01:45.900000","2018-06-01 12:01:46.000000","2018-06-01 12:01:46.200000","2018-06-01 12:01:46.300000","2018-06-01 12:01:46.400000","2018-06-01 12:01:46.700000","2018-06-01 12:01:47.100000","2018-06-01 12:01:47.800000","2018-06-01 12:01:48.200000","2018-06-01 12:01:48.300000","2018-06-01 12:01:48.700000","2018-06-01 12:01:49.500000","2018-06-01 12:01:49.800000","2018-06-01 12:01:50.400000","2018-06-01 12:01:50.800000","2018-06-01 12:01:51.100000","2018-06-01 12:01:51.300000","2018-06-01 12:01:51.500000","2018-06-01 12:01:51.800000","2018-06-01 12:01:51.900000","2018-06-01 12:01:52.500000","2018-06-01 12:01:52.600000","2018-06-01 12:01:52.800000","2018-06-01 12:01:53.600000","2018-06-01 12:01:54.200000","2018-06-01 12:01:54.500000","2018-06-01 12:01:55.000000","2018-06-01 12:01:55.100000","2018-06-01 12:01:55.300000","2018-06-01 12:01:55.500000","2018-06-01 12:01:55.900000","2018-06-01 12:01:56.300000","2018-06-01 12:01:56.400000","2018-06-01 12:01:57.000000","2018-06-01 12:01:57.400000","2018-06-01 12:01:58.500000","2018-06-01 12:01:58.600000","2018-06-01 12:01:59.600000","2018-06-01 12:02:00.100000","2018-06-01 12:02:00.800000","2018-06-01 12:02:01.000000","2018-06-01 12:02:02.000000","2018-06-01 12:02:02.100000","2018-06-01 12:02:02.400000","2018-06-01 12:02:02.800000","2018-06-01 12:02:02.900000","2018-06-01 12:02:03.700000","2018-06-01 12:02:03.800000","2018-06-01 12:02:03.900000","2018-06-01 12:02:04.200000","2018-06-01 12:02:04.400000","2018-06-01 12:02:04.600000","2018-06-01 12:02:05.000000","2018-06-01 12:02:05.800000","2018-06-01 12:02:06.000000","2018-06-01 12:02:06.100000","2018-06-01 12:02:06.200000","2018-06-01 12:02:06.400000","2018-06-01 12:02:06.500000","2018-06-01 12:02:06.700000","2018-06-01 12:02:06.800000","2018-06-01 12:02:07.200000","2018-06-01 12:02:07.400000","2018-06-01 12:02:07.600000","2018-06-01 12:02:07.700000","2018-06-01 12:02:07.800000","2018-06-01 12:02:08.100000","2018-06-01 12:02:08.200000","2018-06-01 12:02:08.500000","2018-06-01 12:02:09.500000","2018-06-01 12:02:10.500000","2018-06-01 12:02:11.100000","2018-06-01 12:02:11.600000","2018-06-01 12:02:12.000000","2018-06-01 12:02:12.700000","2018-06-01 12:02:12.800000","2018-06-01 12:02:13.200000","2018-06-01 12:02:14.500000","2018-06-01 12:02:14.900000","2018-06-01 12:02:15.100000","2018-06-01 12:02:15.300000","2018-06-01 12:02:15.600000","2018-06-01 12:02:15.800000","2018-06-01 12:02:16.100000","2018-06-01 12:02:16.300000","2018-06-01 12:02:16.800000","2018-06-01 12:02:17.300000","2018-06-01 12:02:17.400000","2018-06-01 12:02:17.500000","2018-06-01 12:02:17.700000","2018-06-01 12:02:17.800000","2018-06-01 12:02:18.300000","2018-06-01 12:02:18.500000","2018-06-01 12:02:18.900000","2018-06-01 12:02:19.000000","2018-06-01 12:02:19.100000","2018-06-01 12:02:19.200000","2018-06-01 12:02:19.600000","2018-06-01 12:02:19.700000","2018-06-01 12:02:20.000000","2018-06-01 12:02:20.700000","2018-06-01 12:02:20.900000","2018-06-01 12:02:21.600000","2018-06-01 12:02:22.100000","2018-06-01 12:02:22.200000","2018-06-01 12:02:22.400000","2018-06-01 12:02:22.900000","2018-06-01 12:02:23.400000","2018-06-01 12:02:23.700000","2018-06-01 12:02:24.000000","2018-06-01 12:02:24.300000","2018-06-01 12:02:24.500000","2018-06-01 12:02:24.700000","2018-06-01 12:02:24.900000","2018-06-01 12:02:25.200000","2018-06-01 12:02:25.800000","2018-06-01 12:02:26.100000","2018-06-01 12:02:26.200000","2018-06-01 12:02:26.500000","2018-06-01 12:02:26.900000","2018-06-01 12:02:27.100000","2018-06-01 12:02:27.200000","2018-06-01 12:02:27.300000","2018-06-01 12:02:27.400000","2018-06-01 12:02:27.500000","2018-06-01 12:02:27.900000","2018-06-01 12:02:28.100000","2018-06-01 12:02:28.200000","2018-06-01 12:02:28.400000","2018-06-01 12:02:28.800000","2018-06-01 12:02:29.100000","2018-06-01 12:02:29.400000","2018-06-01 12:02:29.700000","2018-06-01 12:02:29.800000","2018-06-01 12:02:30.200000","2018-06-01 12:02:30.500000","2018-06-01 12:02:30.600000","2018-06-01 12:02:30.700000","2018-06-01 12:02:31.100000","2018-06-01 12:02:31.400000","2018-06-01 12:02:31.600000","2018-06-01 12:02:31.800000","2018-06-01 12:02:31.900000","2018-06-01 12:02:32.100000","2018-06-01 12:02:32.300000","2018-06-01 12:02:32.400000","2018-06-01 12:02:33.000000","2018-06-01 12:02:33.900000","2018-06-01 12:02:34.000000","2018-06-01 12:02:34.300000","2018-06-01 12:02:34.400000","2018-06-01 12:02:34.500000","2018-06-01 12:02:34.600000","2018-06-01 12:02:34.800000","2018-06-01 12:02:35.200000","2018-06-01 12:02:35.700000","2018-06-01 12:02:36.400000","2018-06-01 12:02:36.600000","2018-06-01 12:02:37.000000","2018-06-01 12:02:37.100000","2018-06-01 12:02:38.200000","2018-06-01 12:02:38.700000","2018-06-01 12:02:38.900000","2018-06-01 12:02:39.000000","2018-06-01 12:02:39.600000","2018-06-01 12:02:40.000000","2018-06-01 12:02:40.400000","2018-06-01 12:02:40.500000","2018-06-01 12:02:40.800000","2018-06-01 12:02:41.200000","2018-06-01 12:02:41.400000","2018-06-01 12:02:41.900000","2018-06-01 12:02:42.100000","2018-06-01 12:02:42.400000","2018-06-01 12:02:42.800000","2018-06-01 12:02:43.000000","2018-06-01 12:02:43.200000","2018-06-01 12:02:43.900000","2018-06-01 12:02:44.800000","2018-06-01 12:02:45.100000","2018-06-01 12:02:45.400000","2018-06-01 12:02:47.500000","2018-06-01 12:02:47.600000","2018-06-01 12:02:47.800000","2018-06-01 12:02:47.900000","2018-06-01 12:02:48.100000","2018-06-01 12:02:48.600000","2018-06-01 12:02:49.000000","2018-06-01 12:02:49.100000","2018-06-01 12:02:49.500000","2018-06-01 12:02:49.600000","2018-06-01 12:02:50.700000","2018-06-01 12:02:51.600000","2018-06-01 12:02:52.400000","2018-06-01 12:02:52.600000","2018-06-01 12:02:53.000000","2018-06-01 12:02:53.200000","2018-06-01 12:02:53.300000","2018-06-01 12:02:53.400000","2018-06-01 12:02:53.600000","2018-06-01 12:02:53.700000","2018-06-01 12:02:53.900000","2018-06-01 12:02:54.200000","2018-06-01 12:02:54.600000","2018-06-01 12:02:55.100000","2018-06-01 12:02:55.200000","2018-06-01 12:02:55.400000","2018-06-01 12:02:55.800000","2018-06-01 12:02:56.100000","2018-06-01 12:02:56.200000","2018-06-01 12:02:56.500000","2018-06-01 12:02:56.600000","2018-06-01 12:02:56.900000","2018-06-01 12:02:57.100000","2018-06-01 12:02:57.200000","2018-06-01 12:02:58.100000","2018-06-01 12:02:58.400000","2018-06-01 12:02:58.700000","2018-06-01 12:02:59.000000","2018-06-01 12:02:59.300000","2018-06-01 12:02:59.900000","2018-06-01 12:03:00.100000","2018-06-01 12:03:00.600000","2018-06-01 12:03:00.800000","2018-06-01 12:03:01.000000","2018-06-01 12:03:01.500000","2018-06-01 12:03:01.800000","2018-06-01 12:03:02.000000","2018-06-01 12:03:02.400000","2018-06-01 12:03:03.600000","2018-06-01 12:03:03.800000","2018-06-01 12:03:03.900000","2018-06-01 12:03:04.200000","2018-06-01 12:03:04.500000","2018-06-01 12:03:04.700000","2018-06-01 12:03:05.200000","2018-06-01 12:03:05.300000","2018-06-01 12:03:06.400000","2018-06-01 12:03:07.200000","2018-06-01 12:03:07.500000","2018-06-01 12:03:07.700000","2018-06-01 12:03:08.600000","2018-06-01 12:03:09.900000","2018-06-01 12:03:10.000000","2018-06-01 12:03:10.200000","2018-06-01 12:03:10.500000","2018-06-01 12:03:10.600000","2018-06-01 12:03:10.700000","2018-06-01 12:03:10.800000","2018-06-01 12:03:10.900000","2018-06-01 12:03:11.000000","2018-06-01 12:03:11.200000","2018-06-01 12:03:11.400000","2018-06-01 12:03:11.600000","2018-06-01 12:03:11.700000","2018-06-01 12:03:11.800000","2018-06-01 12:03:12.200000","2018-06-01 12:03:12.500000","2018-06-01 12:03:12.800000","2018-06-01 12:03:13.400000","2018-06-01 12:03:13.500000","2018-06-01 12:03:14.400000","2018-06-01 12:03:15.000000","2018-06-01 12:03:15.100000","2018-06-01 12:03:16.000000","2018-06-01 12:03:17.000000","2018-06-01 12:03:17.100000","2018-06-01 12:03:17.300000","2018-06-01 12:03:17.800000","2018-06-01 12:03:17.900000","2018-06-01 12:03:18.000000","2018-06-01 12:03:18.100000","2018-06-01 12:03:19.000000","2018-06-01 12:03:19.900000","2018-06-01 12:03:20.300000","2018-06-01 12:03:20.700000","2018-06-01 12:03:20.900000","2018-06-01 12:03:21.000000","2018-06-01 12:03:21.200000","2018-06-01 12:03:21.700000","2018-06-01 12:03:22.600000","2018-06-01 12:03:22.700000","2018-06-01 12:03:23.400000","2018-06-01 12:03:23.700000","2018-06-01 12:03:23.800000","2018-06-01 12:03:24.100000","2018-06-01 12:03:25.100000","2018-06-01 12:03:25.400000","2018-06-01 12:03:25.500000","2018-06-01 12:03:25.800000","2018-06-01 12:03:26.700000","2018-06-01 12:03:27.100000","2018-06-01 12:03:27.600000","2018-06-01 12:03:28.000000","2018-06-01 12:03:28.500000","2018-06-01 12:03:28.700000","2018-06-01 12:03:29.000000","2018-06-01 12:03:29.400000","2018-06-01 12:03:29.600000","2018-06-01 12:03:29.700000","2018-06-01 12:03:29.800000","2018-06-01 12:03:30.400000","2018-06-01 12:03:30.500000","2018-06-01 12:03:31.000000","2018-06-01 12:03:31.200000","2018-06-01 12:03:31.300000","2018-06-01 12:03:31.700000","2018-06-01 12:03:31.900000","2018-06-01 12:03:32.400000","2018-06-01 12:03:32.600000","2018-06-01 12:03:32.700000","2018-06-01 12:03:32.800000","2018-06-01 12:03:32.900000","2018-06-01 12:03:33.000000","2018-06-01 12:03:33.300000","2018-06-01 12:03:33.600000","2018-06-01 12:03:34.700000","2018-06-01 12:03:35.500000","2018-06-01 12:03:36.600000","2018-06-01 12:03:37.100000","2018-06-01 12:03:37.400000","2018-06-01 12:03:37.600000","2018-06-01 12:03:38.000000","2018-06-01 12:03:38.100000","2018-06-01 12:03:38.400000","2018-06-01 12:03:38.600000","2018-06-01 12:03:38.700000","2018-06-01 12:03:38.900000","2018-06-01 12:03:39.100000","2018-06-01 12:03:39.600000","2018-06-01 12:03:40.200000","2018-06-01 12:03:40.800000","2018-06-01 12:03:40.900000","2018-06-01 12:03:41.500000","2018-06-01 12:03:41.700000","2018-06-01 12:03:41.800000","2018-06-01 12:03:42.200000","2018-06-01 12:03:42.500000","2018-06-01 12:03:42.600000","2018-06-01 12:03:43.000000","2018-06-01 12:03:43.500000","2018-06-01 12:03:43.700000","2018-06-01 12:03:43.900000","2018-06-01 12:03:44.500000","2018-06-01 12:03:45.100000","2018-06-01 12:03:45.200000","2018-06-01 12:03:45.400000","2018-06-01 12:03:45.700000","2018-06-01 12:03:45.800000","2018-06-01 12:03:45.900000","2018-06-01 12:03:46.000000","2018-06-01 12:03:46.300000","2018-06-01 12:03:46.500000","2018-06-01 12:03:46.800000","2018-06-01 12:03:47.200000","2018-06-01 12:03:47.800000","2018-06-01 12:03:48.200000","2018-06-01 12:03:48.300000","2018-06-01 12:03:49.900000","2018-06-01 12:03:50.300000","2018-06-01 12:03:50.500000","2018-06-01 12:03:51.100000","2018-06-01 12:03:51.400000","2018-06-01 12:03:51.800000","2018-06-01 12:03:51.900000","2018-06-01 12:03:52.700000","2018-06-01 12:03:52.800000","2018-06-01 12:03:53.200000","2018-06-01 12:03:53.300000","2018-06-01 12:03:54.000000","2018-06-01 12:03:54.700000","2018-06-01 12:03:57.500000","2018-06-01 12:03:57.900000","2018-06-01 12:03:58.100000","2018-06-01 12:03:58.800000","2018-06-01 12:03:59.100000","2018-06-01 12:03:59.300000","2018-06-01 12:03:59.700000","2018-06-01 12:04:00.000000","2018-06-01 12:04:00.100000","2018-06-01 12:04:00.300000","2018-06-01 12:04:00.500000","2018-06-01 12:04:01.100000","2018-06-01 12:04:02.100000","2018-06-01 12:04:03.000000","2018-06-01 12:04:03.900000","2018-06-01 12:04:04.900000","2018-06-01 12:04:05.100000","2018-06-01 12:04:05.200000","2018-06-01 12:04:05.400000","2018-06-01 12:04:06.200000","2018-06-01 12:04:06.300000","2018-06-01 12:04:06.700000","2018-06-01 12:04:06.900000","2018-06-01 12:04:07.000000","2018-06-01 12:04:07.500000","2018-06-01 12:04:07.700000","2018-06-01 12:04:08.200000","2018-06-01 12:04:08.500000","2018-06-01 12:04:08.900000","2018-06-01 12:04:09.500000","2018-06-01 12:04:09.800000","2018-06-01 12:04:10.100000","2018-06-01 12:04:10.200000","2018-06-01 12:04:10.400000","2018-06-01 12:04:10.800000","2018-06-01 12:04:11.400000","2018-06-01 12:04:11.700000","2018-06-01 12:04:12.100000","2018-06-01 12:04:12.300000","2018-06-01 12:04:12.800000","2018-06-01 12:04:12.900000","2018-06-01 12:04:13.200000","2018-06-01 12:04:13.700000","2018-06-01 12:04:14.300000","2018-06-01 12:04:15.200000","2018-06-01 12:04:15.600000","2018-06-01 12:04:15.700000","2018-06-01 12:04:16.500000","2018-06-01 12:04:16.600000","2018-06-01 12:04:17.100000","2018-06-01 12:04:17.200000","2018-06-01 12:04:17.400000","2018-06-01 12:04:18.000000","2018-06-01 12:04:18.100000","2018-06-01 12:04:18.500000","2018-06-01 12:04:18.700000","2018-06-01 12:04:18.900000","2018-06-01 12:04:20.200000","2018-06-01 12:04:20.400000","2018-06-01 12:04:20.700000","2018-06-01 12:04:20.900000","2018-06-01 12:04:21.200000","2018-06-01 12:04:21.400000","2018-06-01 12:04:22.200000","2018-06-01 12:04:22.500000","2018-06-01 12:04:23.200000","2018-06-01 12:04:23.700000","2018-06-01 12:04:24.600000","2018-06-01 12:04:24.900000","2018-06-01 12:04:25.200000","2018-06-01 12:04:25.500000","2018-06-01 12:04:25.600000","2018-06-01 12:04:25.700000","2018-06-01 12:04:25.800000","2018-06-01 12:04:26.000000","2018-06-01 12:04:26.700000","2018-06-01 12:04:27.100000","2018-06-01 12:04:27.300000","2018-06-01 12:04:27.600000","2018-06-01 12:04:27.700000","2018-06-01 12:04:27.800000","2018-06-01 12:04:28.100000","2018-06-01 12:04:28.200000","2018-06-01 12:04:28.600000","2018-06-01 12:04:28.900000","2018-06-01 12:04:29.200000","2018-06-01 12:04:29.800000","2018-06-01 12:04:30.200000","2018-06-01 12:04:30.500000","2018-06-01 12:04:31.100000","2018-06-01 12:04:31.800000","2018-06-01 12:04:32.000000","2018-06-01 12:04:32.600000","2018-06-01 12:04:32.800000","2018-06-01 12:04:32.900000","2018-06-01 12:04:33.000000","2018-06-01 12:04:33.400000","2018-06-01 12:04:33.500000","2018-06-01 12:04:33.600000","2018-06-01 12:04:34.300000","2018-06-01 12:04:34.600000","2018-06-01 12:04:34.700000","2018-06-01 12:04:34.900000","2018-06-01 12:04:35.000000","2018-06-01 12:04:35.300000","2018-06-01 12:04:35.900000","2018-06-01 12:04:36.100000","2018-06-01 12:04:36.500000","2018-06-01 12:04:36.900000","2018-06-01 12:04:37.000000","2018-06-01 12:04:37.100000","2018-06-01 12:04:38.400000","2018-06-01 12:04:39.000000","2018-06-01 12:04:39.200000","2018-06-01 12:04:39.300000","2018-06-01 12:04:39.400000","2018-06-01 12:04:39.600000","2018-06-01 12:04:40.500000","2018-06-01 12:04:40.800000","2018-06-01 12:04:41.100000","2018-06-01 12:04:41.800000","2018-06-01 12:04:41.900000","2018-06-01 12:04:42.400000","2018-06-01 12:04:42.500000","2018-06-01 12:04:42.600000","2018-06-01 12:04:42.700000","2018-06-01 12:04:42.900000","2018-06-01 12:04:43.500000","2018-06-01 12:04:44.200000","2018-06-01 12:04:44.500000","2018-06-01 12:04:45.000000","2018-06-01 12:04:45.200000","2018-06-01 12:04:45.300000","2018-06-01 12:04:45.400000","2018-06-01 12:04:46.700000","2018-06-01 12:04:47.400000","2018-06-01 12:04:47.500000","2018-06-01 12:04:47.800000","2018-06-01 12:04:47.900000","2018-06-01 12:04:48.200000","2018-06-01 12:04:48.400000","2018-06-01 12:04:48.500000","2018-06-01 12:04:49.000000","2018-06-01 12:04:49.700000","2018-06-01 12:04:49.800000","2018-06-01 12:04:50.100000","2018-06-01 12:04:50.600000","2018-06-01 12:04:51.000000","2018-06-01 12:04:51.900000","2018-06-01 12:04:52.100000","2018-06-01 12:04:52.200000","2018-06-01 12:04:52.900000","2018-06-01 12:04:53.500000","2018-06-01 12:04:53.800000","2018-06-01 12:04:54.700000","2018-06-01 12:04:55.200000","2018-06-01 12:04:55.700000","2018-06-01 12:04:56.000000","2018-06-01 12:04:56.200000","2018-06-01 12:04:56.500000","2018-06-01 12:04:56.800000","2018-06-01 12:04:57.400000","2018-06-01 12:04:57.900000","2018-06-01 12:04:58.400000","2018-06-01 12:04:58.600000","2018-06-01 12:04:58.700000","2018-06-01 12:04:59.000000","2018-06-01 12:04:59.700000"],"xaxis":"x","y":[102.47,102.49000000000001,102.47666666666667,102.49000000000001,102.53200000000001,102.60833333333335,102.72142857142858,102.87125,103.02555555555556,103.19000000000001,103.35636363636364,103.53000000000002,103.70615384615385,103.88285714285715,104.04666666666667,104.205625,104.35588235294118,104.50444444444445,104.65315789473684,104.8045,105.085,105.39099999999999,105.71399999999998,106.0465,106.37849999999999,106.70049999999999,107.00449999999998,107.27950000000001,107.546,107.798,108.03699999999999,108.26199999999999,108.474,108.66600000000001,108.85349999999998,109.025,109.1845,109.33899999999998,109.477,109.595,109.68499999999999,109.74499999999998,109.78450000000001,109.8115,109.83699999999999,109.85900000000001,109.877,109.891,109.89099999999999,109.88499999999999,109.877,109.86399999999999,109.84949999999999,109.8415,109.83099999999999,109.8345,109.852,109.87449999999998,109.90599999999999,109.949,110.00549999999998,110.06750000000002,110.13499999999999,110.194,110.23649999999998,110.2645,110.2865,110.30749999999998,110.319,110.31300000000002,110.28699999999999,110.24299999999998,110.17849999999999,110.08899999999998,109.971,109.8175,109.6375,109.4315,109.2065,108.96550000000002,108.71700000000001,108.46300000000001,108.19900000000003,107.936,107.681,107.4355,107.19650000000001,106.96599999999998,106.745,106.5385,106.3525,106.1845,106.0355,105.9135,105.833,105.7915,105.7775,105.7855,105.816,105.8575,105.90950000000001,105.97649999999999,106.06199999999998,106.1605,106.27000000000001,106.39650000000002,106.53400000000002,106.68800000000002,106.87550000000002,107.08400000000002,107.30900000000001,107.5545,107.81500000000001,108.0835,108.346,108.6,108.85050000000001,109.103,109.3575,109.6125,109.8585,110.0915,110.31599999999999,110.53900000000002,110.7585,110.96599999999998,111.1655,111.34699999999998,111.506,111.64799999999998,111.77849999999998,111.8905,111.9915,112.074,112.144,112.20899999999999,112.2655,112.314,112.35549999999998,112.396,112.45,112.506,112.5605,112.60999999999999,112.65899999999999,112.70899999999999,112.75999999999999,112.8175,112.87950000000001,112.952,113.0335,113.11949999999999,113.21,113.31649999999999,113.439,113.56700000000001,113.70749999999998,113.8545,114.0095,114.17049999999999,114.32249999999999,114.46549999999999,114.60349999999998,114.74449999999999,114.883,115.0205,115.1585,115.2945,115.41900000000001,115.525,115.60499999999999,115.667,115.7165,115.74749999999999,115.76100000000001,115.76500000000001,115.753,115.7325,115.6955,115.6475,115.60499999999999,115.5785,115.569,115.56400000000001,115.5675,115.5835,115.60749999999999,115.63000000000002,115.665,115.71950000000001,115.7835,115.85499999999999,115.931,116.0175,116.119,116.2335,116.36100000000002,116.5,116.65050000000001,116.81499999999998,116.98499999999999,117.15549999999999,117.33,117.50050000000002,117.66199999999999,117.8125,117.95750000000001,118.1055,118.2565,118.401,118.5605,118.742,118.9425,119.1685,119.421,119.70349999999999,120.01199999999999,120.34450000000001,120.70900000000002,121.10349999999998,121.51799999999999,121.95100000000002,122.39949999999999,122.87,123.3635,123.87749999999998,124.405,124.94099999999999,125.47049999999999,125.9935,126.4965,126.97199999999998,127.4185,127.83449999999998,128.2175,128.55749999999998,128.85399999999998,129.10649999999998,129.3095,129.45649999999998,129.55199999999996,129.6095,129.6255,129.59599999999998,129.522,129.4105,129.2635,129.09099999999998,128.89749999999998,128.6975,128.49899999999997,128.305,128.10999999999999,127.91499999999999,127.71799999999999,127.523,127.32949999999998,127.13899999999998,126.95249999999999,126.76799999999999,126.58699999999999,126.41199999999999,126.24600000000001,126.09700000000001,125.9635,125.84049999999999,125.732,125.628,125.52950000000001,125.4315,125.33200000000002,125.23049999999998,125.1405,125.04549999999999,124.94850000000001,124.8475,124.74699999999999,124.6405,124.53150000000001,124.4245,124.32300000000001,124.21849999999999,124.1055,123.98150000000001,123.84,123.6815,123.5115,123.343,123.1845,123.04050000000002,122.905,122.77799999999999,122.647,122.5175,122.38499999999999,122.2565,122.12899999999999,122.01100000000001,121.8955,121.78249999999998,121.6665,121.5495,121.4375,121.3335,121.25049999999999,121.18699999999998,121.14349999999999,121.11099999999999,121.0785,121.03400000000002,120.97650000000002,120.90450000000001,120.828,120.7625,120.7095,120.6655,120.6235,120.57399999999998,120.51999999999998,120.46849999999999,120.41599999999998,120.35349999999998,120.2835,120.2145,120.15050000000001,120.08800000000001,120.021,119.946,119.8685,119.792,119.71300000000001,119.63899999999998,119.56800000000001,119.49600000000001,119.425,119.3625,119.32000000000001,119.30149999999999,119.31149999999998,119.3415,119.396,119.47449999999999,119.56799999999998,119.66199999999999,119.74249999999999,119.8145,119.87150000000001,119.92150000000001,119.9625,119.997,120.0385,120.085,120.127,120.1645,120.19299999999998,120.2065,120.203,120.1865,120.1585,120.11500000000001,120.0565,119.994,119.928,119.8615,119.79749999999999,119.731,119.6655,119.5925,119.50699999999999,119.40299999999999,119.2805,119.128,118.94800000000001,118.729,118.473,118.186,117.88049999999998,117.53800000000001,117.15149999999998,116.7365,116.29400000000001,115.819,115.31649999999999,114.795,114.2595,113.71900000000001,113.17349999999999,112.63,112.09299999999999,111.5655,111.046,110.542,110.054,109.58399999999999,109.133,108.69749999999999,108.2705,107.8685,107.497,107.14649999999999,106.8235,106.529,106.261,106.011,105.77150000000002,105.546,105.3375,105.148,104.9835,104.84450000000001,104.728,104.6365,104.574,104.54249999999999,104.5385,104.55199999999999,104.58600000000001,104.63400000000001,104.69449999999999,104.77350000000001,104.8655,104.9725,105.09049999999999,105.22849999999998,105.397,105.5895,105.809,106.04849999999999,106.2945,106.546,106.8,107.056,107.31299999999999,107.5655,107.81949999999999,108.08899999999998,108.3665,108.6555,108.953,109.2585,109.56999999999998,109.88899999999998,110.22049999999999,110.55499999999999,110.883,111.1935,111.47550000000001,111.7335,111.96550000000002,112.18400000000001,112.38250000000001,112.55,112.6935,112.82150000000001,112.93200000000002,113.01350000000002,113.069,113.1,113.1085,113.09400000000001,113.05499999999999,112.99000000000001,112.89349999999999,112.7635,112.6025,112.415,112.2105,111.98899999999999,111.7705,111.545,111.3185,111.1045,110.8945,110.68699999999998,110.48049999999998,110.27799999999998,110.07849999999999,109.88250000000001,109.69300000000001,109.50049999999999,109.30849999999998,109.11399999999999,108.92949999999999,108.76849999999999,108.63050000000001,108.52149999999999,108.44850000000001,108.4085,108.38600000000001,108.38000000000002,108.391,108.4105,108.44500000000001,108.494,108.55799999999999,108.63200000000002,108.71300000000001,108.79749999999999,108.88050000000001,108.98299999999999,109.106,109.2515,109.41300000000001,109.59049999999999,109.777,109.977,110.18499999999999,110.39949999999999,110.62800000000001,110.876,111.1475,111.4505,111.77450000000002,112.1105,112.45150000000001,112.799,113.15700000000001,113.52799999999999,113.90500000000002,114.272,114.63000000000002,114.978,115.3185,115.6415,115.95450000000001,116.25450000000001,116.52449999999999,116.769,116.98799999999999,117.17849999999999,117.33399999999999,117.451,117.54100000000001,117.6105,117.66749999999999,117.71100000000001,117.73299999999999,117.74099999999999,117.747,117.75550000000001,117.7625,117.76999999999998,117.766,117.755,117.73700000000001,117.70249999999999,117.66399999999999,117.62449999999998,117.5875,117.556,117.53150000000001,117.5145,117.50050000000002,117.49600000000001,117.4965,117.5125,117.5465,117.5925,117.636,117.678,117.71600000000001,117.74549999999999,117.779,117.80799999999999,117.83600000000001,117.86300000000001,117.89250000000001,117.915,117.928,117.93050000000001,117.929,117.928,117.9245,117.91100000000002,117.8875,117.8415,117.772,117.67550000000001,117.55700000000002,117.4115,117.24600000000001,117.0635,116.86449999999999,116.649,116.41900000000001,116.18050000000001,115.9355,115.68699999999998,115.42750000000001,115.15450000000001,114.8625,114.549,114.21999999999998,113.88899999999998,113.55050000000001,113.20899999999999,112.8765,112.548,112.2405,111.9565,111.69850000000001,111.46100000000001,111.2375,111.03600000000002,110.8545,110.68800000000002,110.5415,110.4155,110.316,110.242,110.20250000000001,110.18900000000001,110.19200000000001,110.1905,110.18499999999999,110.18199999999999,110.179,110.1855,110.194,110.202,110.19649999999999,110.17850000000001,110.14949999999999,110.107,110.048,109.97650000000002,109.87950000000001,109.766,109.641,109.506,109.354,109.19300000000001,109.02449999999999,108.8585,108.7005,108.54749999999999,108.398,108.25999999999999,108.12950000000001,107.994,107.84999999999998,107.7125,107.57949999999998,107.4595,107.3525,107.26199999999999,107.196,107.1525,107.12100000000001,107.09649999999999,107.0875,107.0885,107.0995,107.128,107.1825,107.258,107.35149999999999,107.45549999999999,107.56700000000001,107.6925,107.84049999999999,107.9915,108.15450000000001,108.32350000000001,108.49750000000002,108.672,108.83699999999999,108.9905,109.143,109.29400000000001,109.4325,109.56649999999999,109.70149999999998,109.832,109.94250000000002,110.0405,110.12750000000001,110.2005,110.27000000000001,110.34049999999999,110.41399999999999,110.50150000000001,110.59949999999999,110.708,110.825,110.9505,111.08099999999999,111.21549999999999,111.3425,111.46700000000001,111.595,111.728,111.86899999999999,112.02150000000002,112.19699999999997,112.38699999999999,112.5875,112.80500000000002,113.03150000000001,113.26849999999999,113.51100000000001,113.7585,114.01399999999998,114.26599999999999,114.52299999999998,114.782,115.04749999999999,115.3115,115.58399999999999,115.8665,116.15150000000001,116.425,116.676,116.90149999999998,117.09400000000001,117.2665,117.41399999999999,117.527,117.60799999999999,117.65749999999998,117.68350000000001,117.68649999999998,117.66799999999998,117.62749999999998,117.564,117.48499999999999,117.3925,117.29299999999998,117.18199999999999,117.05199999999999,116.9215,116.79299999999998,116.675,116.561,116.46199999999999,116.3715,116.2935,116.232,116.18699999999998,116.15949999999998,116.1455,116.1415,116.1385,116.14649999999999,116.16599999999998,116.199,116.245,116.304,116.367,116.45149999999998,116.54250000000002,116.65299999999999,116.77149999999999,116.89349999999999,117.0125,117.13049999999998,117.258,117.39649999999999,117.54249999999999,117.702,117.87650000000001,118.06199999999998,118.26700000000001,118.494,118.7385,118.99650000000001,119.276,119.577,119.897,120.22250000000001,120.553,120.88400000000001,121.21849999999999,121.5645,121.92450000000001,122.3,122.66950000000001,123.03600000000002,123.40450000000001,123.7705,124.13050000000001,124.48600000000002,124.83100000000002,125.165,125.4805,125.7775,126.05400000000002,126.31300000000002,126.5635,126.8075,127.046,127.2665,127.47350000000002,127.66400000000002,127.83600000000001,127.978,128.1035,128.207,128.28249999999997,128.3245,128.3295,128.29450000000003,128.22600000000003,128.121,127.98299999999999,127.804,127.5835,127.30799999999999,126.99050000000003,126.6315,126.23499999999999,125.80850000000001,125.353,124.87899999999999,124.388,123.8845,123.375,122.85499999999999,122.3285,121.79749999999999,121.25550000000001,120.70250000000001,120.151,119.60249999999999,119.06799999999998,118.5645,118.09250000000002,117.66100000000002,117.252,116.86349999999997,116.48800000000001,116.123,115.773,115.43700000000001,115.119,114.82750000000001,114.55550000000001,114.2905,114.047,113.82600000000002,113.646,113.5065,113.391,113.2875,113.1895,113.09200000000001,112.9965,112.9055],"yaxis":"y","type":"scatter"}],"layout":{"legend":{"tracegroupgap":0},"template":{"data":{"barpolar":[{"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"type":"carpet"}],"choropleth":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"choropleth"}],"contourcarpet":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"contourcarpet"}],"contour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"contour"}],"heatmap":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"heatmap"}],"histogram2dcontour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"histogram2dcontour"}],"histogram2d":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"histogram2d"}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"mesh3d":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"mesh3d"}],"parcoords":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"parcoords"}],"pie":[{"automargin":true,"type":"pie"}],"scatter3d":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatter3d"}],"scattercarpet":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattercarpet"}],"scattergeo":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergeo"}],"scattergl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergl"}],"scattermapbox":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermapbox"}],"scattermap":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermap"}],"scatterpolargl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolargl"}],"scatterpolar":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolar"}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"scatterternary":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterternary"}],"surface":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"surface"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}]},"layout":{"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"autotypenumbers":"strict","coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]],"sequential":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"sequentialminus":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]]},"colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"geo":{"bgcolor":"white","lakecolor":"white","landcolor":"#E5ECF6","showlakes":true,"showland":true,"subunitcolor":"white"},"hoverlabel":{"align":"left"},"hovermode":"closest","mapbox":{"style":"light"},"paper_bgcolor":"white","plot_bgcolor":"#E5ECF6","polar":{"angularaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"bgcolor":"#E5ECF6","radialaxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"scene":{"xaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"},"yaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"},"zaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"ternary":{"aaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"baxis":{"gridcolor":"white","linecolor":"white","ticks":""},"bgcolor":"#E5ECF6","caxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"title":{"x":0.05},"xaxis":{"automargin":true,"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","zerolinewidth":2},"yaxis":{"automargin":true,"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","zerolinewidth":2}}},"xaxis":{"anchor":"y","domain":[0,1],"side":"bottom","title":{"text":"Timestamp"}},"yaxis":{"anchor":"x","domain":[0,1],"side":"left","title":{"text":"AvgPrice"}}},"isDefaultTemplate":true}}}} \ No newline at end of file diff --git a/plugins/plotly-express/docs/snapshots/5b78eaccb06050ae106f9d812a774395.json b/plugins/plotly-express/docs/snapshots/5b78eaccb06050ae106f9d812a774395.json new file mode 100644 index 000000000..c38df128f --- /dev/null +++ b/plugins/plotly-express/docs/snapshots/5b78eaccb06050ae106f9d812a774395.json @@ -0,0 +1 @@ +{"file":"events.md","objects":{"gapminder":{"type":"Table","data":{"columns":[{"name":"Country","type":"java.lang.String"},{"name":"Continent","type":"java.lang.String"},{"name":"Year","type":"long"},{"name":"Month","type":"long"},{"name":"LifeExp","type":"double"},{"name":"Pop","type":"long"},{"name":"GdpPerCap","type":"double"}],"rows":[[{"value":"Afghanistan"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"28.8010"},{"value":"8,425,333"},{"value":"779.4453"}],[{"value":"Albania"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"55.2300"},{"value":"1,282,697"},{"value":"1,601.0561"}],[{"value":"Algeria"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"43.0770"},{"value":"9,279,525"},{"value":"2,449.0082"}],[{"value":"Angola"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"30.0150"},{"value":"4,232,095"},{"value":"3,520.6103"}],[{"value":"Argentina"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"62.4850"},{"value":"17,876,956"},{"value":"5,911.3151"}],[{"value":"Australia"},{"value":"Oceania"},{"value":"1,952"},{"value":"1"},{"value":"69.1200"},{"value":"8,691,212"},{"value":"10,039.5956"}],[{"value":"Austria"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"66.8000"},{"value":"6,927,772"},{"value":"6,137.0765"}],[{"value":"Bahrain"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"50.9390"},{"value":"120,447"},{"value":"9,867.0848"}],[{"value":"Bangladesh"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"37.4840"},{"value":"46,886,859"},{"value":"684.2442"}],[{"value":"Belgium"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"68.0000"},{"value":"8,730,405"},{"value":"8,343.1051"}],[{"value":"Benin"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"38.2230"},{"value":"1,738,315"},{"value":"1,062.7522"}],[{"value":"Bolivia"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"40.4140"},{"value":"2,883,315"},{"value":"2,677.3263"}],[{"value":"Bosnia and Herzegovina"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"53.8200"},{"value":"2,791,000"},{"value":"973.5332"}],[{"value":"Botswana"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"47.6220"},{"value":"442,308"},{"value":"851.2411"}],[{"value":"Brazil"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"50.9170"},{"value":"56,602,560"},{"value":"2,108.9444"}],[{"value":"Bulgaria"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"59.6000"},{"value":"7,274,900"},{"value":"2,444.2866"}],[{"value":"Burkina Faso"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"31.9750"},{"value":"4,469,979"},{"value":"543.2552"}],[{"value":"Burundi"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"39.0310"},{"value":"2,445,618"},{"value":"339.2965"}],[{"value":"Cambodia"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"39.4170"},{"value":"4,693,836"},{"value":"368.4693"}],[{"value":"Cameroon"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"38.5230"},{"value":"5,009,067"},{"value":"1,172.6677"}],[{"value":"Canada"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"68.7500"},{"value":"14,785,584"},{"value":"11,367.1611"}],[{"value":"Central African Republic"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"35.4630"},{"value":"1,291,695"},{"value":"1,071.3107"}],[{"value":"Chad"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"38.0920"},{"value":"2,682,462"},{"value":"1,178.6659"}],[{"value":"Chile"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"54.7450"},{"value":"6,377,619"},{"value":"3,939.9788"}],[{"value":"China"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"44.0000"},{"value":"556,263,527"},{"value":"400.4486"}],[{"value":"Colombia"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"50.6430"},{"value":"12,350,771"},{"value":"2,144.1151"}],[{"value":"Comoros"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"40.7150"},{"value":"153,936"},{"value":"1,102.9909"}],[{"value":"Congo, Dem. Rep."},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"39.1430"},{"value":"14,100,005"},{"value":"780.5423"}],[{"value":"Congo, Rep."},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"42.1110"},{"value":"854,885"},{"value":"2,125.6214"}],[{"value":"Costa Rica"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"57.2060"},{"value":"926,317"},{"value":"2,627.0095"}],[{"value":"Cote d'Ivoire"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"40.4770"},{"value":"2,977,019"},{"value":"1,388.5947"}],[{"value":"Croatia"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"61.2100"},{"value":"3,882,229"},{"value":"3,119.2365"}],[{"value":"Cuba"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"59.4210"},{"value":"6,007,797"},{"value":"5,586.5388"}],[{"value":"Czech Republic"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"66.8700"},{"value":"9,125,183"},{"value":"6,876.1403"}],[{"value":"Denmark"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"70.7800"},{"value":"4,334,000"},{"value":"9,692.3852"}],[{"value":"Djibouti"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"34.8120"},{"value":"63,149"},{"value":"2,669.5295"}],[{"value":"Dominican Republic"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"45.9280"},{"value":"2,491,346"},{"value":"1,397.7171"}],[{"value":"Ecuador"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"48.3570"},{"value":"3,548,753"},{"value":"3,522.1107"}],[{"value":"Egypt"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"41.8930"},{"value":"22,223,309"},{"value":"1,418.8224"}],[{"value":"El Salvador"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"45.2620"},{"value":"2,042,865"},{"value":"3,048.3029"}],[{"value":"Equatorial Guinea"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"34.4820"},{"value":"216,964"},{"value":"375.6431"}],[{"value":"Eritrea"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"35.9280"},{"value":"1,438,760"},{"value":"328.9406"}],[{"value":"Ethiopia"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"34.0780"},{"value":"20,860,941"},{"value":"362.1463"}],[{"value":"Finland"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"66.5500"},{"value":"4,090,500"},{"value":"6,424.5191"}],[{"value":"France"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"67.4100"},{"value":"42,459,667"},{"value":"7,029.8093"}],[{"value":"Gabon"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"37.0030"},{"value":"420,702"},{"value":"4,293.4765"}],[{"value":"Gambia"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"30.0000"},{"value":"284,320"},{"value":"485.2307"}],[{"value":"Germany"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"67.5000"},{"value":"69,145,952"},{"value":"7,144.1144"}],[{"value":"Ghana"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"43.1490"},{"value":"5,581,001"},{"value":"911.2989"}],[{"value":"Greece"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"65.8600"},{"value":"7,733,250"},{"value":"3,530.6901"}],[{"value":"Guatemala"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"42.0230"},{"value":"3,146,381"},{"value":"2,428.2378"}],[{"value":"Guinea"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"33.6090"},{"value":"2,664,249"},{"value":"510.1965"}],[{"value":"Guinea-Bissau"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"32.5000"},{"value":"580,653"},{"value":"299.8503"}],[{"value":"Haiti"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"37.5790"},{"value":"3,201,488"},{"value":"1,840.3669"}],[{"value":"Honduras"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"41.9120"},{"value":"1,517,453"},{"value":"2,194.9262"}],[{"value":"Hong Kong, China"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"60.9600"},{"value":"2,125,900"},{"value":"3,054.4212"}],[{"value":"Hungary"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"64.0300"},{"value":"9,504,000"},{"value":"5,263.6738"}],[{"value":"Iceland"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"72.4900"},{"value":"147,962"},{"value":"7,267.6884"}],[{"value":"India"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"37.3730"},{"value":"372,000,000"},{"value":"546.5657"}],[{"value":"Indonesia"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"37.4680"},{"value":"82,052,000"},{"value":"749.6817"}],[{"value":"Iran"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"44.8690"},{"value":"17,272,000"},{"value":"3,035.3260"}],[{"value":"Iraq"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"45.3200"},{"value":"5,441,766"},{"value":"4,129.7661"}],[{"value":"Ireland"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"66.9100"},{"value":"2,952,156"},{"value":"5,210.2803"}],[{"value":"Israel"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"65.3900"},{"value":"1,620,914"},{"value":"4,086.5221"}],[{"value":"Italy"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"65.9400"},{"value":"47,666,000"},{"value":"4,931.4042"}],[{"value":"Jamaica"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"58.5300"},{"value":"1,426,095"},{"value":"2,898.5309"}],[{"value":"Japan"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"63.0300"},{"value":"86,459,025"},{"value":"3,216.9563"}],[{"value":"Jordan"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"43.1580"},{"value":"607,914"},{"value":"1,546.9078"}],[{"value":"Kenya"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"42.2700"},{"value":"6,464,046"},{"value":"853.5409"}],[{"value":"Korea, Dem. Rep."},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"50.0560"},{"value":"8,865,488"},{"value":"1,088.2778"}],[{"value":"Korea, Rep."},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"47.4530"},{"value":"20,947,571"},{"value":"1,030.5922"}],[{"value":"Kuwait"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"55.5650"},{"value":"160,000"},{"value":"108,382.3529"}],[{"value":"Lebanon"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"55.9280"},{"value":"1,439,529"},{"value":"4,834.8041"}],[{"value":"Lesotho"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"42.1380"},{"value":"748,747"},{"value":"298.8462"}],[{"value":"Liberia"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"38.4800"},{"value":"863,308"},{"value":"575.5730"}],[{"value":"Libya"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"42.7230"},{"value":"1,019,729"},{"value":"2,387.5481"}],[{"value":"Madagascar"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"36.6810"},{"value":"4,762,912"},{"value":"1,443.0117"}],[{"value":"Malawi"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"36.2560"},{"value":"2,917,802"},{"value":"369.1651"}],[{"value":"Malaysia"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"48.4630"},{"value":"6,748,378"},{"value":"1,831.1329"}],[{"value":"Mali"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"33.6850"},{"value":"3,838,168"},{"value":"452.3370"}],[{"value":"Mauritania"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"40.5430"},{"value":"1,022,556"},{"value":"743.1159"}],[{"value":"Mauritius"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"50.9860"},{"value":"516,556"},{"value":"1,967.9557"}],[{"value":"Mexico"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"50.7890"},{"value":"30,144,317"},{"value":"3,478.1255"}],[{"value":"Mongolia"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"42.2440"},{"value":"800,663"},{"value":"786.5669"}],[{"value":"Montenegro"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"59.1640"},{"value":"413,834"},{"value":"2,647.5856"}],[{"value":"Morocco"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"42.8730"},{"value":"9,939,217"},{"value":"1,688.2036"}],[{"value":"Mozambique"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"31.2860"},{"value":"6,446,316"},{"value":"468.5260"}],[{"value":"Myanmar"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"36.3190"},{"value":"20,092,996"},{"value":"331.0000"}],[{"value":"Namibia"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"41.7250"},{"value":"485,831"},{"value":"2,423.7804"}],[{"value":"Nepal"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"36.1570"},{"value":"9,182,536"},{"value":"545.8657"}],[{"value":"Netherlands"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"72.1300"},{"value":"10,381,988"},{"value":"8,941.5719"}],[{"value":"New Zealand"},{"value":"Oceania"},{"value":"1,952"},{"value":"1"},{"value":"69.3900"},{"value":"1,994,794"},{"value":"10,556.5757"}],[{"value":"Nicaragua"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"42.3140"},{"value":"1,165,790"},{"value":"3,112.3639"}],[{"value":"Niger"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"37.4440"},{"value":"3,379,468"},{"value":"761.8794"}],[{"value":"Nigeria"},{"value":"Africa"},{"value":"1,952"},{"value":"1"},{"value":"36.3240"},{"value":"33,119,096"},{"value":"1,077.2819"}],[{"value":"Norway"},{"value":"Europe"},{"value":"1,952"},{"value":"1"},{"value":"72.6700"},{"value":"3,327,728"},{"value":"10,095.4217"}],[{"value":"Oman"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"37.5780"},{"value":"507,833"},{"value":"1,828.2303"}],[{"value":"Pakistan"},{"value":"Asia"},{"value":"1,952"},{"value":"1"},{"value":"43.4360"},{"value":"41,346,560"},{"value":"684.5971"}],[{"value":"Panama"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"55.1910"},{"value":"940,080"},{"value":"2,480.3803"}],[{"value":"Paraguay"},{"value":"Americas"},{"value":"1,952"},{"value":"1"},{"value":"62.6490"},{"value":"1,555,876"},{"value":"1,952.3087"}]]}},"gapminder_hierarchy":{"type":"Table","data":{"columns":[{"name":"Country","type":"java.lang.String"},{"name":"Continent","type":"java.lang.String"},{"name":"Year","type":"long"},{"name":"Month","type":"long"},{"name":"LifeExp","type":"double"},{"name":"Pop","type":"long"},{"name":"GdpPerCap","type":"double"},{"name":"World","type":"java.lang.String"}],"rows":[[{"value":"Afghanistan"},{"value":"Asia"},{"value":"1,961"},{"value":"1"},{"value":"31.6640"},{"value":"10,061,853"},{"value":"846.6512"},{"value":"World"}],[{"value":"Albania"},{"value":"Europe"},{"value":"1,961"},{"value":"1"},{"value":"63.7120"},{"value":"1,677,811"},{"value":"2,238.7680"},{"value":"World"}],[{"value":"Algeria"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"47.7794"},{"value":"10,854,930"},{"value":"2,643.4487"},{"value":"World"}],[{"value":"Angola"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"33.5998"},{"value":"4,773,084"},{"value":"4,181.0095"},{"value":"World"}],[{"value":"Argentina"},{"value":"Americas"},{"value":"1,961"},{"value":"1"},{"value":"64.9934"},{"value":"20,949,134"},{"value":"7,077.9041"},{"value":"World"}],[{"value":"Australia"},{"value":"Oceania"},{"value":"1,961"},{"value":"1"},{"value":"70.8100"},{"value":"10,578,488"},{"value":"11,963.7114"},{"value":"World"}],[{"value":"Austria"},{"value":"Europe"},{"value":"1,961"},{"value":"1"},{"value":"69.1280"},{"value":"7,097,063"},{"value":"10,369.0965"},{"value":"World"}],[{"value":"Bahrain"},{"value":"Asia"},{"value":"1,961"},{"value":"1"},{"value":"56.3048"},{"value":"165,221"},{"value":"12,529.7800"},{"value":"World"}],[{"value":"Bangladesh"},{"value":"Asia"},{"value":"1,961"},{"value":"1"},{"value":"40.8424"},{"value":"55,744,525"},{"value":"681.4007"},{"value":"World"}],[{"value":"Belgium"},{"value":"Europe"},{"value":"1,961"},{"value":"1"},{"value":"70.0480"},{"value":"9,172,542"},{"value":"10,735.9575"},{"value":"World"}],[{"value":"Benin"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"42.1660"},{"value":"2,106,551"},{"value":"951.5195"},{"value":"World"}],[{"value":"Bolivia"},{"value":"Americas"},{"value":"1,961"},{"value":"1"},{"value":"43.1204"},{"value":"3,517,482"},{"value":"2,170.3153"},{"value":"World"}],[{"value":"Bosnia and Herzegovina"},{"value":"Europe"},{"value":"1,961"},{"value":"1"},{"value":"61.2340"},{"value":"3,294,400"},{"value":"1,638.5448"},{"value":"World"}],[{"value":"Botswana"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"51.1396"},{"value":"505,139"},{"value":"970.5697"},{"value":"World"}],[{"value":"Brazil"},{"value":"Americas"},{"value":"1,961"},{"value":"1"},{"value":"55.1890"},{"value":"73,941,746"},{"value":"3,166.7418"},{"value":"World"}],[{"value":"Bulgaria"},{"value":"Europe"},{"value":"1,961"},{"value":"1"},{"value":"68.9300"},{"value":"7,940,608"},{"value":"4,005.2044"},{"value":"World"}],[{"value":"Burkina Faso"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"37.2324"},{"value":"4,878,389"},{"value":"701.4463"},{"value":"World"}],[{"value":"Burundi"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"41.7426"},{"value":"2,903,036"},{"value":"360.0755"},{"value":"World"}],[{"value":"Cambodia"},{"value":"Asia"},{"value":"1,961"},{"value":"1"},{"value":"43.0052"},{"value":"5,931,402"},{"value":"484.3386"},{"value":"World"}],[{"value":"Cameroon"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"42.2000"},{"value":"5,706,891"},{"value":"1,382.2956"},{"value":"World"}],[{"value":"Canada"},{"value":"Americas"},{"value":"1,961"},{"value":"1"},{"value":"71.0320"},{"value":"18,590,710"},{"value":"13,267.9785"},{"value":"World"}],[{"value":"Central African Republic"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"39.0728"},{"value":"1,497,239"},{"value":"1,192.6239"},{"value":"World"}],[{"value":"Chad"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"41.3490"},{"value":"3,099,305"},{"value":"1,373.5532"},{"value":"World"}],[{"value":"Chile"},{"value":"Americas"},{"value":"1,961"},{"value":"1"},{"value":"57.5540"},{"value":"7,778,692"},{"value":"4,478.4000"},{"value":"World"}],[{"value":"China"},{"value":"Asia"},{"value":"1,961"},{"value":"1"},{"value":"45.7109"},{"value":"660,097,600"},{"value":"505.3366"},{"value":"World"}],[{"value":"Colombia"},{"value":"Americas"},{"value":"1,961"},{"value":"1"},{"value":"57.3140"},{"value":"16,505,107"},{"value":"2,458.6420"},{"value":"World"}],[{"value":"Comoros"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"44.0656"},{"value":"187,537"},{"value":"1,367.5483"},{"value":"World"}],[{"value":"Congo, Dem. Rep."},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"41.8280"},{"value":"17,104,734"},{"value":"898.2238"},{"value":"World"}],[{"value":"Congo, Rep."},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"47.7586"},{"value":"1,026,431"},{"value":"2,434.8378"},{"value":"World"}],[{"value":"Costa Rica"},{"value":"Americas"},{"value":"1,961"},{"value":"1"},{"value":"62.2788"},{"value":"1,298,610"},{"value":"3,366.7518"},{"value":"World"}],[{"value":"Cote d'Ivoire"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"44.4378"},{"value":"3,725,926"},{"value":"1,683.2747"},{"value":"World"}],[{"value":"Croatia"},{"value":"Europe"},{"value":"1,961"},{"value":"1"},{"value":"66.6580"},{"value":"4,059,494"},{"value":"5,249.9583"},{"value":"World"}],[{"value":"Cuba"},{"value":"Americas"},{"value":"1,961"},{"value":"1"},{"value":"64.6618"},{"value":"7,131,649"},{"value":"5,363.0396"},{"value":"World"}],[{"value":"Czech Republic"},{"value":"Europe"},{"value":"1,961"},{"value":"1"},{"value":"69.7260"},{"value":"9,598,977"},{"value":"9,760.7625"},{"value":"World"}],[{"value":"Denmark"},{"value":"Europe"},{"value":"1,961"},{"value":"1"},{"value":"72.2420"},{"value":"4,615,085"},{"value":"13,086.5827"},{"value":"World"}],[{"value":"Djibouti"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"39.2200"},{"value":"86,289"},{"value":"2,989.7852"},{"value":"World"}],[{"value":"Dominican Republic"},{"value":"Americas"},{"value":"1,961"},{"value":"1"},{"value":"52.7328"},{"value":"3,347,384"},{"value":"1,638.5905"},{"value":"World"}],[{"value":"Ecuador"},{"value":"Americas"},{"value":"1,961"},{"value":"1"},{"value":"53.9832"},{"value":"4,557,043"},{"value":"4,025.0006"},{"value":"World"}],[{"value":"Egypt"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"46.4824"},{"value":"27,540,595"},{"value":"1,646.4517"},{"value":"World"}],[{"value":"El Salvador"},{"value":"Americas"},{"value":"1,961"},{"value":"1"},{"value":"51.5596"},{"value":"2,669,311"},{"value":"3,705.7475"},{"value":"World"}],[{"value":"Equatorial Guinea"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"37.1846"},{"value":"245,960"},{"value":"551.4929"},{"value":"World"}],[{"value":"Eritrea"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"39.7358"},{"value":"1,641,817"},{"value":"373.6291"},{"value":"World"}],[{"value":"Ethiopia"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"39.3806"},{"value":"24,679,420"},{"value":"411.3460"},{"value":"World"}],[{"value":"Finland"},{"value":"Europe"},{"value":"1,961"},{"value":"1"},{"value":"68.4980"},{"value":"4,457,954"},{"value":"9,006.5571"},{"value":"World"}],[{"value":"France"},{"value":"Europe"},{"value":"1,961"},{"value":"1"},{"value":"70.1940"},{"value":"46,561,373"},{"value":"10,180.9554"},{"value":"World"}],[{"value":"Gabon"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"40.1910"},{"value":"451,510"},{"value":"6,300.4070"},{"value":"World"}],[{"value":"Gambia"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"33.5298"},{"value":"363,846"},{"value":"583.9056"},{"value":"World"}],[{"value":"Germany"},{"value":"Europe"},{"value":"1,961"},{"value":"1"},{"value":"70.0600"},{"value":"73,195,107"},{"value":"12,359.5357"},{"value":"World"}],[{"value":"Ghana"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"46.1174"},{"value":"7,162,456"},{"value":"1,160.7452"},{"value":"World"}],[{"value":"Greece"},{"value":"Europe"},{"value":"1,961"},{"value":"1"},{"value":"69.1800"},{"value":"8,377,830"},{"value":"5,797.0126"},{"value":"World"}],[{"value":"Guatemala"},{"value":"Americas"},{"value":"1,961"},{"value":"1"},{"value":"46.3916"},{"value":"4,095,262"},{"value":"2,723.7228"},{"value":"World"}],[{"value":"Guinea"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"35.5140"},{"value":"3,087,348"},{"value":"664.3523"},{"value":"World"}],[{"value":"Guinea-Bissau"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"34.2882"},{"value":"622,475"},{"value":"503.9856"},{"value":"World"}],[{"value":"Haiti"},{"value":"Americas"},{"value":"1,961"},{"value":"1"},{"value":"43.0112"},{"value":"3,805,644"},{"value":"1,782.6488"},{"value":"World"}],[{"value":"Honduras"},{"value":"Americas"},{"value":"1,961"},{"value":"1"},{"value":"47.3658"},{"value":"2,026,208"},{"value":"2,277.0230"},{"value":"World"}],[{"value":"Hong Kong, China"},{"value":"Asia"},{"value":"1,961"},{"value":"1"},{"value":"67.0700"},{"value":"3,191,420"},{"value":"4,479.9339"},{"value":"World"}],[{"value":"Hungary"},{"value":"Europe"},{"value":"1,961"},{"value":"1"},{"value":"67.6500"},{"value":"10,018,200"},{"value":"7,248.3239"},{"value":"World"}],[{"value":"Iceland"},{"value":"Europe"},{"value":"1,961"},{"value":"1"},{"value":"73.6380"},{"value":"178,664"},{"value":"10,128.9275"},{"value":"World"}],[{"value":"India"},{"value":"Asia"},{"value":"1,961"},{"value":"1"},{"value":"42.9338"},{"value":"445,000,000"},{"value":"644.6901"},{"value":"World"}],[{"value":"Indonesia"},{"value":"Asia"},{"value":"1,961"},{"value":"1"},{"value":"41.9980"},{"value":"97,247,200"},{"value":"851.2119"},{"value":"World"}],[{"value":"Iran"},{"value":"Asia"},{"value":"1,961"},{"value":"1"},{"value":"48.8962"},{"value":"22,257,600"},{"value":"4,007.9154"},{"value":"World"}],[{"value":"Iraq"},{"value":"Asia"},{"value":"1,961"},{"value":"1"},{"value":"50.8530"},{"value":"7,041,937"},{"value":"7,919.2570"},{"value":"World"}],[{"value":"Ireland"},{"value":"Europe"},{"value":"1,961"},{"value":"1"},{"value":"70.0120"},{"value":"2,839,644"},{"value":"6,425.0934"},{"value":"World"}],[{"value":"Israel"},{"value":"Asia"},{"value":"1,961"},{"value":"1"},{"value":"69.0800"},{"value":"2,237,603"},{"value":"6,761.5603"},{"value":"World"}],[{"value":"Italy"},{"value":"Europe"},{"value":"1,961"},{"value":"1"},{"value":"68.9540"},{"value":"50,510,960"},{"value":"7,844.5971"},{"value":"World"}],[{"value":"Jamaica"},{"value":"Americas"},{"value":"1,961"},{"value":"1"},{"value":"65.0100"},{"value":"1,639,120"},{"value":"5,148.1912"},{"value":"World"}],[{"value":"Japan"},{"value":"Asia"},{"value":"1,961"},{"value":"1"},{"value":"68.0840"},{"value":"94,978,007"},{"value":"6,124.8584"},{"value":"World"}],[{"value":"Jordan"},{"value":"Asia"},{"value":"1,961"},{"value":"1"},{"value":"47.6346"},{"value":"896,159"},{"value":"2,255.6234"},{"value":"World"}],[{"value":"Kenya"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"47.2964"},{"value":"8,433,801"},{"value":"906.4608"},{"value":"World"}],[{"value":"Korea, Dem. Rep."},{"value":"Asia"},{"value":"1,961"},{"value":"1"},{"value":"56.1410"},{"value":"10,616,271"},{"value":"1,611.5818"},{"value":"World"}],[{"value":"Korea, Rep."},{"value":"Asia"},{"value":"1,961"},{"value":"1"},{"value":"54.7698"},{"value":"25,658,556"},{"value":"1,526.5942"},{"value":"World"}],[{"value":"Kuwait"},{"value":"Asia"},{"value":"1,961"},{"value":"1"},{"value":"59.9826"},{"value":"329,182"},{"value":"99,071.1160"},{"value":"World"}],[{"value":"Lebanon"},{"value":"Asia"},{"value":"1,961"},{"value":"1"},{"value":"61.5730"},{"value":"1,838,961"},{"value":"5,789.6059"},{"value":"World"}],[{"value":"Lesotho"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"47.2070"},{"value":"877,182"},{"value":"396.6399"},{"value":"World"}],[{"value":"Liberia"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"40.2988"},{"value":"1,085,427"},{"value":"631.5501"},{"value":"World"}],[{"value":"Libya"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"47.3042"},{"value":"1,393,806"},{"value":"6,095.2815"},{"value":"World"}],[{"value":"Madagascar"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"40.4514"},{"value":"5,598,995"},{"value":"1,632.5502"},{"value":"World"}],[{"value":"Malawi"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"38.1694"},{"value":"3,547,134"},{"value":"425.5948"},{"value":"World"}],[{"value":"Malaysia"},{"value":"Asia"},{"value":"1,961"},{"value":"1"},{"value":"55.0100"},{"value":"8,672,955"},{"value":"1,991.5214"},{"value":"World"}],[{"value":"Mali"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"36.6102"},{"value":"4,600,674"},{"value":"495.0159"},{"value":"World"}],[{"value":"Mauritania"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"43.8660"},{"value":"1,132,776"},{"value":"1,013.9409"},{"value":"World"}],[{"value":"Mauritius"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"59.8146"},{"value":"682,776"},{"value":"2,430.0616"},{"value":"World"}],[{"value":"Mexico"},{"value":"Americas"},{"value":"1,961"},{"value":"1"},{"value":"57.6772"},{"value":"39,900,298"},{"value":"4,491.5968"},{"value":"World"}],[{"value":"Mongolia"},{"value":"Asia"},{"value":"1,961"},{"value":"1"},{"value":"47.6504"},{"value":"984,651"},{"value":"1,027.6157"},{"value":"World"}],[{"value":"Montenegro"},{"value":"Europe"},{"value":"1,961"},{"value":"1"},{"value":"63.2720"},{"value":"468,188"},{"value":"4,456.1270"},{"value":"World"}],[{"value":"Morocco"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"47.4238"},{"value":"12,726,553"},{"value":"1,581.4833"},{"value":"World"}],[{"value":"Mozambique"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"35.6846"},{"value":"7,638,762"},{"value":"544.4664"},{"value":"World"}],[{"value":"Myanmar"},{"value":"Asia"},{"value":"1,961"},{"value":"1"},{"value":"44.4674"},{"value":"23,253,918"},{"value":"380.4000"},{"value":"World"}],[{"value":"Namibia"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"47.7540"},{"value":"606,730"},{"value":"3,062.8621"},{"value":"World"}],[{"value":"Nepal"},{"value":"Asia"},{"value":"1,961"},{"value":"1"},{"value":"39.0516"},{"value":"10,202,113"},{"value":"641.5048"},{"value":"World"}],[{"value":"Netherlands"},{"value":"Europe"},{"value":"1,961"},{"value":"1"},{"value":"73.1820"},{"value":"11,649,828"},{"value":"12,487.9183"},{"value":"World"}],[{"value":"New Zealand"},{"value":"Oceania"},{"value":"1,961"},{"value":"1"},{"value":"71.0440"},{"value":"2,436,721"},{"value":"12,990.0215"},{"value":"World"}],[{"value":"Nicaragua"},{"value":"Americas"},{"value":"1,961"},{"value":"1"},{"value":"47.9920"},{"value":"1,544,243"},{"value":"3,598.9747"},{"value":"World"}],[{"value":"Niger"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"39.3092"},{"value":"3,999,243"},{"value":"965.3176"},{"value":"World"}],[{"value":"Nigeria"},{"value":"Africa"},{"value":"1,961"},{"value":"1"},{"value":"39.0484"},{"value":"40,931,749"},{"value":"1,140.8605"},{"value":"World"}],[{"value":"Norway"},{"value":"Europe"},{"value":"1,961"},{"value":"1"},{"value":"73.4640"},{"value":"3,609,523"},{"value":"13,091.1158"},{"value":"World"}],[{"value":"Oman"},{"value":"Asia"},{"value":"1,961"},{"value":"1"},{"value":"42.5480"},{"value":"614,927"},{"value":"2,788.2598"},{"value":"World"}],[{"value":"Pakistan"},{"value":"Asia"},{"value":"1,961"},{"value":"1"},{"value":"47.2474"},{"value":"51,816,526"},{"value":"792.0909"},{"value":"World"}],[{"value":"Panama"},{"value":"Americas"},{"value":"1,961"},{"value":"1"},{"value":"61.2938"},{"value":"1,185,281"},{"value":"3,421.5924"},{"value":"World"}],[{"value":"Paraguay"},{"value":"Americas"},{"value":"1,961"},{"value":"1"},{"value":"64.1280"},{"value":"1,962,031"},{"value":"2,127.6527"},{"value":"World"}]]}},"fig":{"type":"deephaven.plot.express.DeephavenFigure","data":{"data":[{"branchvalues":"total","domain":{"x":[0,1],"y":[0,1]},"hovertemplate":"Names=%{label}
Pop=%{value}
Parents=%{parent}
Ids=%{id}","ids":["World/Asia/Afghanistan","World/Europe/Albania","World/Africa/Algeria","World/Africa/Angola","World/Americas/Argentina","World/Oceania/Australia","World/Europe/Austria","World/Asia/Bahrain","World/Asia/Bangladesh","World/Europe/Belgium","World/Africa/Benin","World/Americas/Bolivia","World/Europe/Bosnia and Herzegovina","World/Africa/Botswana","World/Americas/Brazil","World/Europe/Bulgaria","World/Africa/Burkina Faso","World/Africa/Burundi","World/Asia/Cambodia","World/Africa/Cameroon","World/Americas/Canada","World/Africa/Central African Republic","World/Africa/Chad","World/Americas/Chile","World/Asia/China","World/Americas/Colombia","World/Africa/Comoros","World/Africa/Congo, Dem. Rep.","World/Africa/Congo, Rep.","World/Americas/Costa Rica","World/Africa/Cote d'Ivoire","World/Europe/Croatia","World/Americas/Cuba","World/Europe/Czech Republic","World/Europe/Denmark","World/Africa/Djibouti","World/Americas/Dominican Republic","World/Americas/Ecuador","World/Africa/Egypt","World/Americas/El Salvador","World/Africa/Equatorial Guinea","World/Africa/Eritrea","World/Africa/Ethiopia","World/Europe/Finland","World/Europe/France","World/Africa/Gabon","World/Africa/Gambia","World/Europe/Germany","World/Africa/Ghana","World/Europe/Greece","World/Americas/Guatemala","World/Africa/Guinea","World/Africa/Guinea-Bissau","World/Americas/Haiti","World/Americas/Honduras","World/Asia/Hong Kong, China","World/Europe/Hungary","World/Europe/Iceland","World/Asia/India","World/Asia/Indonesia","World/Asia/Iran","World/Asia/Iraq","World/Europe/Ireland","World/Asia/Israel","World/Europe/Italy","World/Americas/Jamaica","World/Asia/Japan","World/Asia/Jordan","World/Africa/Kenya","World/Asia/Korea, Dem. Rep.","World/Asia/Korea, Rep.","World/Asia/Kuwait","World/Asia/Lebanon","World/Africa/Lesotho","World/Africa/Liberia","World/Africa/Libya","World/Africa/Madagascar","World/Africa/Malawi","World/Asia/Malaysia","World/Africa/Mali","World/Africa/Mauritania","World/Africa/Mauritius","World/Americas/Mexico","World/Asia/Mongolia","World/Europe/Montenegro","World/Africa/Morocco","World/Africa/Mozambique","World/Asia/Myanmar","World/Africa/Namibia","World/Asia/Nepal","World/Europe/Netherlands","World/Oceania/New Zealand","World/Americas/Nicaragua","World/Africa/Niger","World/Africa/Nigeria","World/Europe/Norway","World/Asia/Oman","World/Asia/Pakistan","World/Americas/Panama","World/Americas/Paraguay","World/Americas/Peru","World/Asia/Philippines","World/Europe/Poland","World/Europe/Portugal","World/Americas/Puerto Rico","World/Africa/Reunion","World/Europe/Romania","World/Africa/Rwanda","World/Africa/Sao Tome and Principe","World/Asia/Saudi Arabia","World/Africa/Senegal","World/Europe/Serbia","World/Africa/Sierra Leone","World/Asia/Singapore","World/Europe/Slovak Republic","World/Europe/Slovenia","World/Africa/Somalia","World/Africa/South Africa","World/Europe/Spain","World/Asia/Sri Lanka","World/Africa/Sudan","World/Africa/Swaziland","World/Europe/Sweden","World/Europe/Switzerland","World/Asia/Syria","World/Asia/Taiwan","World/Africa/Tanzania","World/Asia/Thailand","World/Africa/Togo","World/Americas/Trinidad and Tobago","World/Africa/Tunisia","World/Europe/Turkey","World/Africa/Uganda","World/Europe/United Kingdom","World/Americas/United States","World/Americas/Uruguay","World/Americas/Venezuela","World/Asia/Vietnam","World/Asia/West Bank and Gaza","World/Asia/Yemen, Rep.","World/Africa/Zambia","World/Africa/Zimbabwe","World/Asia","World/Europe","World/Africa","World/Americas","World/Oceania","World"],"labels":["Afghanistan","Albania","Algeria","Angola","Argentina","Australia","Austria","Bahrain","Bangladesh","Belgium","Benin","Bolivia","Bosnia and Herzegovina","Botswana","Brazil","Bulgaria","Burkina Faso","Burundi","Cambodia","Cameroon","Canada","Central African Republic","Chad","Chile","China","Colombia","Comoros","Congo, Dem. Rep.","Congo, Rep.","Costa Rica","Cote d'Ivoire","Croatia","Cuba","Czech Republic","Denmark","Djibouti","Dominican Republic","Ecuador","Egypt","El Salvador","Equatorial Guinea","Eritrea","Ethiopia","Finland","France","Gabon","Gambia","Germany","Ghana","Greece","Guatemala","Guinea","Guinea-Bissau","Haiti","Honduras","Hong Kong, China","Hungary","Iceland","India","Indonesia","Iran","Iraq","Ireland","Israel","Italy","Jamaica","Japan","Jordan","Kenya","Korea, Dem. Rep.","Korea, Rep.","Kuwait","Lebanon","Lesotho","Liberia","Libya","Madagascar","Malawi","Malaysia","Mali","Mauritania","Mauritius","Mexico","Mongolia","Montenegro","Morocco","Mozambique","Myanmar","Namibia","Nepal","Netherlands","New Zealand","Nicaragua","Niger","Nigeria","Norway","Oman","Pakistan","Panama","Paraguay","Peru","Philippines","Poland","Portugal","Puerto Rico","Reunion","Romania","Rwanda","Sao Tome and Principe","Saudi Arabia","Senegal","Serbia","Sierra Leone","Singapore","Slovak Republic","Slovenia","Somalia","South Africa","Spain","Sri Lanka","Sudan","Swaziland","Sweden","Switzerland","Syria","Taiwan","Tanzania","Thailand","Togo","Trinidad and Tobago","Tunisia","Turkey","Uganda","United Kingdom","United States","Uruguay","Venezuela","Vietnam","West Bank and Gaza","Yemen, Rep.","Zambia","Zimbabwe","Asia","Europe","Africa","Americas","Oceania","World"],"name":"","parents":["World/Asia","World/Europe","World/Africa","World/Africa","World/Americas","World/Oceania","World/Europe","World/Asia","World/Asia","World/Europe","World/Africa","World/Americas","World/Europe","World/Africa","World/Americas","World/Europe","World/Africa","World/Africa","World/Asia","World/Africa","World/Americas","World/Africa","World/Africa","World/Americas","World/Asia","World/Americas","World/Africa","World/Africa","World/Africa","World/Americas","World/Africa","World/Europe","World/Americas","World/Europe","World/Europe","World/Africa","World/Americas","World/Americas","World/Africa","World/Americas","World/Africa","World/Africa","World/Africa","World/Europe","World/Europe","World/Africa","World/Africa","World/Europe","World/Africa","World/Europe","World/Americas","World/Africa","World/Africa","World/Americas","World/Americas","World/Asia","World/Europe","World/Europe","World/Asia","World/Asia","World/Asia","World/Asia","World/Europe","World/Asia","World/Europe","World/Americas","World/Asia","World/Asia","World/Africa","World/Asia","World/Asia","World/Asia","World/Asia","World/Africa","World/Africa","World/Africa","World/Africa","World/Africa","World/Asia","World/Africa","World/Africa","World/Africa","World/Americas","World/Asia","World/Europe","World/Africa","World/Africa","World/Asia","World/Africa","World/Asia","World/Europe","World/Oceania","World/Americas","World/Africa","World/Africa","World/Europe","World/Asia","World/Asia","World/Americas","World/Americas","World/Americas","World/Asia","World/Europe","World/Europe","World/Americas","World/Africa","World/Europe","World/Africa","World/Africa","World/Asia","World/Africa","World/Europe","World/Africa","World/Asia","World/Europe","World/Europe","World/Africa","World/Africa","World/Europe","World/Asia","World/Africa","World/Africa","World/Europe","World/Europe","World/Asia","World/Asia","World/Africa","World/Asia","World/Africa","World/Americas","World/Africa","World/Europe","World/Africa","World/Europe","World/Americas","World/Americas","World/Americas","World/Asia","World/Asia","World/Asia","World/Africa","World/Africa","World","World","World","World","World",""],"values":[10061853,1677811,10854930,4773084,20949134,10578488,7097063,165221,55744525,9172542,2106551,3517482,3294400,505139,73941746,7940608,4878389,2903036,5931402,5706891,18590710,1497239,3099305,7778692,660097600,16505107,187537,17104734,1026431,1298610,3725926,4059494,7131649,9598977,4615085,86289,3347384,4557043,27540595,2669311,245960,1641817,24679420,4457954,46561373,451510,363846,73195107,7162456,8377830,4095262,3087348,622475,3805644,2026208,3191420,10018200,178664,445000000,97247200,22257600,7041937,2839644,2237603,50510960,1639120,94978007,896159,8433801,10616271,25658556,329182,1838961,877182,1085427,1393806,5598995,3547134,8672955,4600674,1132776,682776,39900298,984651,468188,12726553,7638762,23253918,606730,10202113,11649828,2436721,1544243,3999243,40931749,3609523,614927,51816526,1185281,1962031,10242420,29474650,29910763,8979370,2410437,348860,18510442,3005410,64541,4838353,3355104,7547075,2433452,1689346,4158763,1572984,3020205,17915635,30894772,10163258,10897260,361353,7522031,5558000,4697678,11567993,10581732,28419101,1493967,862978,4219411,28965144,7486138,52919600,183627200,2563765,7855234,32836621,1120595,5995683,3340000,4151457,1669641865,455862195,290181041,424006989,13015209,2852707299],"type":"sunburst"}],"layout":{"legend":{"tracegroupgap":0},"template":{"data":{"barpolar":[{"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"type":"carpet"}],"choropleth":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"choropleth"}],"contourcarpet":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"contourcarpet"}],"contour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"contour"}],"heatmap":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"heatmap"}],"histogram2dcontour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"histogram2dcontour"}],"histogram2d":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"histogram2d"}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"mesh3d":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"mesh3d"}],"parcoords":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"parcoords"}],"pie":[{"automargin":true,"type":"pie"}],"scatter3d":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatter3d"}],"scattercarpet":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattercarpet"}],"scattergeo":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergeo"}],"scattergl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergl"}],"scattermapbox":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermapbox"}],"scattermap":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermap"}],"scatterpolargl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolargl"}],"scatterpolar":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolar"}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"scatterternary":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterternary"}],"surface":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"surface"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}]},"layout":{"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"autotypenumbers":"strict","coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]],"sequential":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"sequentialminus":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]]},"colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"geo":{"bgcolor":"white","lakecolor":"white","landcolor":"#E5ECF6","showlakes":true,"showland":true,"subunitcolor":"white"},"hoverlabel":{"align":"left"},"hovermode":"closest","mapbox":{"style":"light"},"paper_bgcolor":"white","plot_bgcolor":"#E5ECF6","polar":{"angularaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"bgcolor":"#E5ECF6","radialaxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"scene":{"xaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"},"yaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"},"zaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"ternary":{"aaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"baxis":{"gridcolor":"white","linecolor":"white","ticks":""},"bgcolor":"#E5ECF6","caxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"title":{"x":0.05},"xaxis":{"automargin":true,"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","zerolinewidth":2},"yaxis":{"automargin":true,"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","zerolinewidth":2}}}},"isDefaultTemplate":true}}}} \ No newline at end of file diff --git a/plugins/plotly-express/docs/snapshots/6af882a19bac439d7f4534f65a2769c0.json b/plugins/plotly-express/docs/snapshots/6af882a19bac439d7f4534f65a2769c0.json new file mode 100644 index 000000000..2c70a5b4a --- /dev/null +++ b/plugins/plotly-express/docs/snapshots/6af882a19bac439d7f4534f65a2769c0.json @@ -0,0 +1 @@ +{"file":"events.md","objects":{"stocks":{"type":"Table","data":{"columns":[{"name":"Timestamp","type":"java.time.Instant"},{"name":"Sym","type":"java.lang.String"},{"name":"Exchange","type":"java.lang.String"},{"name":"Size","type":"long"},{"name":"Price","type":"double"},{"name":"Dollars","type":"double"},{"name":"Side","type":"java.lang.String"},{"name":"SPet500","type":"double"},{"name":"Index","type":"long"},{"name":"Random","type":"double"}],"rows":[[{"value":"2018-06-01 08:00:00.000"},{"value":"BIRD"},{"value":"TPET"},{"value":"245"},{"value":"164.6300"},{"value":"40,334.3500"},{"value":"buy"},{"value":"150.6253"},{"value":"0"},{"value":"0.6253"}],[{"value":"2018-06-01 08:00:00.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,150"},{"value":"102.4700"},{"value":"322,780.5000"},{"value":"buy"},{"value":"150.8910"},{"value":"1"},{"value":"1.4656"}],[{"value":"2018-06-01 08:00:00.200"},{"value":"LIZARD"},{"value":"TPET"},{"value":"100"},{"value":"224.8800"},{"value":"22,488.0000"},{"value":"sell"},{"value":"151.0861"},{"value":"2"},{"value":"-0.1232"}],[{"value":"2018-06-01 08:00:00.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"77"},{"value":"102.5100"},{"value":"7,893.2700"},{"value":"buy"},{"value":"151.3228"},{"value":"3"},{"value":"0.4242"}],[{"value":"2018-06-01 08:00:00.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"848"},{"value":"102.4500"},{"value":"86,877.6000"},{"value":"sell"},{"value":"151.3451"},{"value":"4"},{"value":"-0.9462"}],[{"value":"2018-06-01 08:00:00.500"},{"value":"FISH"},{"value":"PETX"},{"value":"15"},{"value":"127.2400"},{"value":"1,908.6000"},{"value":"buy"},{"value":"151.4074"},{"value":"5"},{"value":"0.2434"}],[{"value":"2018-06-01 08:00:00.600"},{"value":"BIRD"},{"value":"TPET"},{"value":"2,908"},{"value":"164.4900"},{"value":"478,336.9200"},{"value":"sell"},{"value":"151.1998"},{"value":"6"},{"value":"-1.4273"}],[{"value":"2018-06-01 08:00:00.700"},{"value":"DOG"},{"value":"PETX"},{"value":"111"},{"value":"108.4800"},{"value":"12,041.2800"},{"value":"buy"},{"value":"151.1169"},{"value":"7"},{"value":"0.4805"}],[{"value":"2018-06-01 08:00:00.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"102.5300"},{"value":"10,253.0000"},{"value":"buy"},{"value":"151.2862"},{"value":"8"},{"value":"1.3088"}],[{"value":"2018-06-01 08:00:00.900"},{"value":"DOG"},{"value":"PETX"},{"value":"88"},{"value":"108.4400"},{"value":"9,542.7200"},{"value":"sell"},{"value":"151.3445"},{"value":"9"},{"value":"-0.4436"}],[{"value":"2018-06-01 08:00:01.000"},{"value":"FISH"},{"value":"PETX"},{"value":"102"},{"value":"127.2900"},{"value":"12,983.5800"},{"value":"buy"},{"value":"151.4768"},{"value":"10"},{"value":"0.4669"}],[{"value":"2018-06-01 08:00:01.100"},{"value":"DOG"},{"value":"PETX"},{"value":"1,791"},{"value":"108.2800"},{"value":"193,929.4800"},{"value":"sell"},{"value":"151.3650"},{"value":"11"},{"value":"-1.2143"}],[{"value":"2018-06-01 08:00:01.200"},{"value":"DOG"},{"value":"PETX"},{"value":"28"},{"value":"108.1200"},{"value":"3,027.3600"},{"value":"sell"},{"value":"151.2188"},{"value":"12"},{"value":"-0.3019"}],[{"value":"2018-06-01 08:00:01.300"},{"value":"CAT"},{"value":"PETX"},{"value":"1,090"},{"value":"102.7000"},{"value":"111,943.0000"},{"value":"buy"},{"value":"151.2854"},{"value":"13"},{"value":"1.0280"}],[{"value":"2018-06-01 08:00:01.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,600"},{"value":"102.9900"},{"value":"370,764.0000"},{"value":"buy"},{"value":"151.6178"},{"value":"14"},{"value":"1.5331"}],[{"value":"2018-06-01 08:00:01.500"},{"value":"LIZARD"},{"value":"TPET"},{"value":"227"},{"value":"224.9300"},{"value":"51,059.1100"},{"value":"buy"},{"value":"152.0005"},{"value":"15"},{"value":"0.6095"}],[{"value":"2018-06-01 08:00:01.600"},{"value":"DOG"},{"value":"PETX"},{"value":"35"},{"value":"107.9300"},{"value":"3,777.5500"},{"value":"sell"},{"value":"152.2546"},{"value":"16"},{"value":"-0.3267"}],[{"value":"2018-06-01 08:00:01.700"},{"value":"DOG"},{"value":"PETX"},{"value":"2"},{"value":"107.8400"},{"value":"215.6800"},{"value":"buy"},{"value":"152.6027"},{"value":"17"},{"value":"0.7731"}],[{"value":"2018-06-01 08:00:01.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,350"},{"value":"103.4000"},{"value":"346,390.0000"},{"value":"buy"},{"value":"153.1590"},{"value":"18"},{"value":"1.4963"}],[{"value":"2018-06-01 08:00:01.900"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.2900"},{"value":"12,729.0000"},{"value":"sell"},{"value":"153.5402"},{"value":"19"},{"value":"-0.4094"}],[{"value":"2018-06-01 08:00:02.000"},{"value":"LIZARD"},{"value":"TPET"},{"value":"15"},{"value":"225.0100"},{"value":"3,375.1500"},{"value":"buy"},{"value":"153.8970"},{"value":"20"},{"value":"0.2463"}],[{"value":"2018-06-01 08:00:02.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,780"},{"value":"103.9200"},{"value":"392,817.6000"},{"value":"buy"},{"value":"154.4713"},{"value":"21"},{"value":"1.5570"}],[{"value":"2018-06-01 08:00:02.200"},{"value":"LIZARD"},{"value":"TPET"},{"value":"727"},{"value":"225.1600"},{"value":"163,691.3200"},{"value":"buy"},{"value":"155.1045"},{"value":"22"},{"value":"0.8989"}],[{"value":"2018-06-01 08:00:02.300"},{"value":"LIZARD"},{"value":"TPET"},{"value":"2,250"},{"value":"225.4300"},{"value":"507,217.5000"},{"value":"buy"},{"value":"155.8603"},{"value":"23"},{"value":"1.3097"}],[{"value":"2018-06-01 08:00:02.400"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.3400"},{"value":"12,734.0000"},{"value":"buy"},{"value":"156.5817"},{"value":"24"},{"value":"0.5662"}],[{"value":"2018-06-01 08:00:02.500"},{"value":"DOG"},{"value":"PETX"},{"value":"1,491"},{"value":"107.6500"},{"value":"160,506.1500"},{"value":"sell"},{"value":"156.9654"},{"value":"25"},{"value":"-1.1422"}],[{"value":"2018-06-01 08:00:02.600"},{"value":"FISH"},{"value":"PETX"},{"value":"367"},{"value":"127.3300"},{"value":"46,730.1100"},{"value":"sell"},{"value":"157.1497"},{"value":"26"},{"value":"-0.7155"}],[{"value":"2018-06-01 08:00:02.700"},{"value":"FISH"},{"value":"PETX"},{"value":"293"},{"value":"127.2500"},{"value":"37,284.2500"},{"value":"sell"},{"value":"157.1804"},{"value":"27"},{"value":"-0.6637"}],[{"value":"2018-06-01 08:00:02.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"104.2600"},{"value":"10,426.0000"},{"value":"sell"},{"value":"156.9481"},{"value":"28"},{"value":"-1.4200"}],[{"value":"2018-06-01 08:00:02.900"},{"value":"DOG"},{"value":"PETX"},{"value":"1,798"},{"value":"107.3600"},{"value":"193,033.2800"},{"value":"sell"},{"value":"156.5375"},{"value":"29"},{"value":"-1.2159"}],[{"value":"2018-06-01 08:00:03.000"},{"value":"DOG"},{"value":"PETX"},{"value":"410"},{"value":"107.1700"},{"value":"43,939.7000"},{"value":"buy"},{"value":"156.3359"},{"value":"30"},{"value":"0.7425"}],[{"value":"2018-06-01 08:00:03.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,510"},{"value":"104.6700"},{"value":"158,051.7000"},{"value":"buy"},{"value":"156.3789"},{"value":"31"},{"value":"1.1473"}],[{"value":"2018-06-01 08:00:03.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"21"},{"value":"105.0200"},{"value":"2,205.4200"},{"value":"sell"},{"value":"156.3644"},{"value":"32"},{"value":"-0.2738"}],[{"value":"2018-06-01 08:00:03.300"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.1800"},{"value":"12,718.0000"},{"value":"buy"},{"value":"156.3572"},{"value":"33"},{"value":"0.0258"}],[{"value":"2018-06-01 08:00:03.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"106.9800"},{"value":"10,698.0000"},{"value":"sell"},{"value":"156.3239"},{"value":"34"},{"value":"-0.1515"}],[{"value":"2018-06-01 08:00:03.500"},{"value":"DOG"},{"value":"PETX"},{"value":"650"},{"value":"106.8900"},{"value":"69,478.5000"},{"value":"buy"},{"value":"156.4535"},{"value":"35"},{"value":"0.8659"}],[{"value":"2018-06-01 08:00:03.600"},{"value":"DOG"},{"value":"PETX"},{"value":"155"},{"value":"106.7600"},{"value":"16,547.8000"},{"value":"sell"},{"value":"156.4623"},{"value":"36"},{"value":"-0.5371"}],[{"value":"2018-06-01 08:00:03.700"},{"value":"FISH"},{"value":"PETX"},{"value":"12"},{"value":"127.0900"},{"value":"1,525.0800"},{"value":"sell"},{"value":"156.4283"},{"value":"37"},{"value":"-0.2274"}],[{"value":"2018-06-01 08:00:03.800"},{"value":"FISH"},{"value":"PETX"},{"value":"7"},{"value":"127.0300"},{"value":"889.2100"},{"value":"buy"},{"value":"156.4335"},{"value":"38"},{"value":"0.1822"}],[{"value":"2018-06-01 08:00:03.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,310"},{"value":"105.4400"},{"value":"138,126.4000"},{"value":"buy"},{"value":"156.6358"},{"value":"39"},{"value":"1.0928"}],[{"value":"2018-06-01 08:00:04.000"},{"value":"DOG"},{"value":"PETX"},{"value":"1,629"},{"value":"106.5400"},{"value":"173,553.6600"},{"value":"sell"},{"value":"156.5882"},{"value":"40"},{"value":"-1.1765"}],[{"value":"2018-06-01 08:00:04.100"},{"value":"DOG"},{"value":"PETX"},{"value":"4"},{"value":"106.3100"},{"value":"425.2400"},{"value":"sell"},{"value":"156.5216"},{"value":"41"},{"value":"-0.1522"}],[{"value":"2018-06-01 08:00:04.200"},{"value":"FISH"},{"value":"PETX"},{"value":"1"},{"value":"126.9800"},{"value":"126.9800"},{"value":"buy"},{"value":"156.4686"},{"value":"42"},{"value":"0.0083"}],[{"value":"2018-06-01 08:00:04.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"1"},{"value":"105.8200"},{"value":"105.8200"},{"value":"buy"},{"value":"156.4396"},{"value":"43"},{"value":"0.0791"}],[{"value":"2018-06-01 08:00:04.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"106.0100"},{"value":"10,601.0000"},{"value":"sell"},{"value":"156.2255"},{"value":"44"},{"value":"-1.0499"}],[{"value":"2018-06-01 08:00:04.500"},{"value":"CAT"},{"value":"PETX"},{"value":"2"},{"value":"106.1800"},{"value":"212.3600"},{"value":"buy"},{"value":"156.0723"},{"value":"45"},{"value":"0.1217"}],[{"value":"2018-06-01 08:00:04.600"},{"value":"BIRD"},{"value":"TPET"},{"value":"6"},{"value":"164.3500"},{"value":"986.1000"},{"value":"sell"},{"value":"155.9141"},{"value":"46"},{"value":"-0.1806"}],[{"value":"2018-06-01 08:00:04.700"},{"value":"DOG"},{"value":"PETX"},{"value":"3,485"},{"value":"105.6000"},{"value":"368,016.0000"},{"value":"sell"},{"value":"155.5098"},{"value":"47"},{"value":"-1.5161"}],[{"value":"2018-06-01 08:00:04.800"},{"value":"DOG"},{"value":"PETX"},{"value":"727"},{"value":"105.1300"},{"value":"76,429.5100"},{"value":"sell"},{"value":"155.0158"},{"value":"48"},{"value":"-0.8990"}],[{"value":"2018-06-01 08:00:04.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"5,421"},{"value":"106.3400"},{"value":"576,469.1400"},{"value":"sell"},{"value":"154.2929"},{"value":"49"},{"value":"-1.7566"}],[{"value":"2018-06-01 08:00:05.000"},{"value":"DOG"},{"value":"PETX"},{"value":"2,113"},{"value":"104.5900"},{"value":"220,998.6700"},{"value":"sell"},{"value":"153.4685"},{"value":"50"},{"value":"-1.2830"}],[{"value":"2018-06-01 08:00:05.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,130"},{"value":"106.5900"},{"value":"120,446.7000"},{"value":"buy"},{"value":"152.9825"},{"value":"51"},{"value":"1.0424"}],[{"value":"2018-06-01 08:00:05.200"},{"value":"LIZARD"},{"value":"TPET"},{"value":"2"},{"value":"225.5600"},{"value":"451.1200"},{"value":"sell"},{"value":"152.3781"},{"value":"52"},{"value":"-1.1386"}],[{"value":"2018-06-01 08:00:05.300"},{"value":"FISH"},{"value":"PETX"},{"value":"529"},{"value":"127.0100"},{"value":"67,188.2900"},{"value":"buy"},{"value":"152.0299"},{"value":"53"},{"value":"0.8084"}],[{"value":"2018-06-01 08:00:05.400"},{"value":"LIZARD"},{"value":"TPET"},{"value":"293"},{"value":"225.7400"},{"value":"66,141.8200"},{"value":"buy"},{"value":"151.8651"},{"value":"54"},{"value":"0.6639"}],[{"value":"2018-06-01 08:00:05.500"},{"value":"CAT"},{"value":"NYPE"},{"value":"123"},{"value":"106.7600"},{"value":"13,131.4800"},{"value":"sell"},{"value":"151.6401"},{"value":"55"},{"value":"-0.4972"}],[{"value":"2018-06-01 08:00:05.600"},{"value":"LIZARD"},{"value":"TPET"},{"value":"100"},{"value":"225.7600"},{"value":"22,576.0000"},{"value":"sell"},{"value":"151.1844"},{"value":"56"},{"value":"-1.4976"}],[{"value":"2018-06-01 08:00:05.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,990"},{"value":"107.0300"},{"value":"212,989.7000"},{"value":"buy"},{"value":"151.0393"},{"value":"57"},{"value":"1.2576"}],[{"value":"2018-06-01 08:00:05.800"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.0700"},{"value":"12,707.0000"},{"value":"buy"},{"value":"150.9961"},{"value":"58"},{"value":"0.4170"}],[{"value":"2018-06-01 08:00:05.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"140"},{"value":"107.3300"},{"value":"15,026.2000"},{"value":"buy"},{"value":"151.0546"},{"value":"59"},{"value":"0.5181"}],[{"value":"2018-06-01 08:00:06.000"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"104.3000"},{"value":"10,430.0000"},{"value":"buy"},{"value":"151.4827"},{"value":"60"},{"value":"2.0973"}],[{"value":"2018-06-01 08:00:06.100"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"103.9800"},{"value":"10,398.0000"},{"value":"sell"},{"value":"151.7109"},{"value":"61"},{"value":"-0.6743"}],[{"value":"2018-06-01 08:00:06.200"},{"value":"LIZARD"},{"value":"TPET"},{"value":"8"},{"value":"225.7600"},{"value":"1,806.0800"},{"value":"sell"},{"value":"151.8624"},{"value":"62"},{"value":"-0.1954"}],[{"value":"2018-06-01 08:00:06.300"},{"value":"DOG"},{"value":"PETX"},{"value":"4,262"},{"value":"103.5300"},{"value":"441,244.8600"},{"value":"sell"},{"value":"151.6925"},{"value":"63"},{"value":"-1.6213"}],[{"value":"2018-06-01 08:00:06.400"},{"value":"DOG"},{"value":"PETX"},{"value":"35"},{"value":"103.1500"},{"value":"3,610.2500"},{"value":"buy"},{"value":"151.6126"},{"value":"64"},{"value":"0.3264"}],[{"value":"2018-06-01 08:00:06.500"},{"value":"DOG"},{"value":"PETX"},{"value":"20"},{"value":"102.8600"},{"value":"2,057.2000"},{"value":"buy"},{"value":"151.6337"},{"value":"65"},{"value":"0.4772"}],[{"value":"2018-06-01 08:00:06.600"},{"value":"CAT"},{"value":"NYPE"},{"value":"534"},{"value":"107.6800"},{"value":"57,501.1200"},{"value":"buy"},{"value":"151.7980"},{"value":"66"},{"value":"0.8109"}],[{"value":"2018-06-01 08:00:06.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"711"},{"value":"108.0800"},{"value":"76,844.8800"},{"value":"buy"},{"value":"152.0942"},{"value":"67"},{"value":"0.8923"}],[{"value":"2018-06-01 08:00:06.800"},{"value":"FISH"},{"value":"PETX"},{"value":"88"},{"value":"127.0900"},{"value":"11,183.9200"},{"value":"sell"},{"value":"152.2562"},{"value":"68"},{"value":"-0.4441"}],[{"value":"2018-06-01 08:00:06.900"},{"value":"FISH"},{"value":"PETX"},{"value":"3,070"},{"value":"127.2500"},{"value":"390,657.5000"},{"value":"buy"},{"value":"152.6523"},{"value":"69"},{"value":"1.4534"}],[{"value":"2018-06-01 08:00:07.000"},{"value":"LIZARD"},{"value":"TPET"},{"value":"300"},{"value":"225.8000"},{"value":"67,740.0000"},{"value":"buy"},{"value":"153.0397"},{"value":"70"},{"value":"0.3482"}],[{"value":"2018-06-01 08:00:07.100"},{"value":"DOG"},{"value":"PETX"},{"value":"371"},{"value":"102.6600"},{"value":"38,086.8600"},{"value":"buy"},{"value":"153.4871"},{"value":"71"},{"value":"0.7180"}],[{"value":"2018-06-01 08:00:07.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"7,480"},{"value":"108.6300"},{"value":"812,552.4000"},{"value":"buy"},{"value":"154.2078"},{"value":"72"},{"value":"1.9555"}],[{"value":"2018-06-01 08:00:07.300"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"102.3600"},{"value":"10,236.0000"},{"value":"sell"},{"value":"154.5609"},{"value":"73"},{"value":"-1.3072"}],[{"value":"2018-06-01 08:00:07.400"},{"value":"BIRD"},{"value":"TPET"},{"value":"428"},{"value":"164.2900"},{"value":"70,316.1200"},{"value":"buy"},{"value":"154.9867"},{"value":"74"},{"value":"0.7535"}],[{"value":"2018-06-01 08:00:07.500"},{"value":"DOG"},{"value":"PETX"},{"value":"99"},{"value":"102.1200"},{"value":"10,109.8800"},{"value":"buy"},{"value":"155.4189"},{"value":"75"},{"value":"0.4616"}],[{"value":"2018-06-01 08:00:07.600"},{"value":"DOG"},{"value":"PETX"},{"value":"347"},{"value":"101.9800"},{"value":"35,387.0600"},{"value":"buy"},{"value":"155.9001"},{"value":"76"},{"value":"0.7026"}],[{"value":"2018-06-01 08:00:07.700"},{"value":"BIRD"},{"value":"TPET"},{"value":"500"},{"value":"164.2600"},{"value":"82,130.0000"},{"value":"buy"},{"value":"156.3253"},{"value":"77"},{"value":"0.1723"}],[{"value":"2018-06-01 08:00:07.800"},{"value":"BIRD"},{"value":"TPET"},{"value":"2,128"},{"value":"164.1100"},{"value":"349,226.0800"},{"value":"sell"},{"value":"156.4403"},{"value":"78"},{"value":"-1.2862"}],[{"value":"2018-06-01 08:00:07.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"12,212"},{"value":"108.9100"},{"value":"1,330,008.9200"},{"value":"sell"},{"value":"156.1171"},{"value":"79"},{"value":"-2.3028"}],[{"value":"2018-06-01 08:00:08.000"},{"value":"CAT"},{"value":"PETX"},{"value":"9"},{"value":"109.1800"},{"value":"982.6200"},{"value":"buy"},{"value":"155.8891"},{"value":"80"},{"value":"0.2025"}],[{"value":"2018-06-01 08:00:08.100"},{"value":"DOG"},{"value":"PETX"},{"value":"98"},{"value":"101.9000"},{"value":"9,986.2000"},{"value":"buy"},{"value":"155.7859"},{"value":"81"},{"value":"0.4606"}],[{"value":"2018-06-01 08:00:08.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"489"},{"value":"109.3400"},{"value":"53,467.2600"},{"value":"sell"},{"value":"155.5587"},{"value":"82"},{"value":"-0.7874"}],[{"value":"2018-06-01 08:00:08.300"},{"value":"DOG"},{"value":"PETX"},{"value":"436"},{"value":"101.7500"},{"value":"44,363.0000"},{"value":"sell"},{"value":"155.2354"},{"value":"83"},{"value":"-0.7578"}],[{"value":"2018-06-01 08:00:08.400"},{"value":"FISH"},{"value":"PETX"},{"value":"2"},{"value":"127.2100"},{"value":"254.4200"},{"value":"sell"},{"value":"154.6404"},{"value":"84"},{"value":"-1.8217"}],[{"value":"2018-06-01 08:00:08.500"},{"value":"CAT"},{"value":"NYPE"},{"value":"309"},{"value":"109.4300"},{"value":"33,813.8700"},{"value":"sell"},{"value":"154.0307"},{"value":"85"},{"value":"-0.6757"}],[{"value":"2018-06-01 08:00:08.600"},{"value":"BIRD"},{"value":"TPET"},{"value":"3,273"},{"value":"163.8300"},{"value":"536,215.5900"},{"value":"sell"},{"value":"153.2625"},{"value":"86"},{"value":"-1.4847"}],[{"value":"2018-06-01 08:00:08.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"28"},{"value":"109.4800"},{"value":"3,065.4400"},{"value":"sell"},{"value":"152.5787"},{"value":"87"},{"value":"-0.3026"}],[{"value":"2018-06-01 08:00:08.800"},{"value":"DOG"},{"value":"PETX"},{"value":"4,020"},{"value":"101.7700"},{"value":"409,115.4000"},{"value":"buy"},{"value":"152.3070"},{"value":"88"},{"value":"1.5903"}],[{"value":"2018-06-01 08:00:08.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"50"},{"value":"109.4200"},{"value":"5,471.0000"},{"value":"sell"},{"value":"151.8779"},{"value":"89"},{"value":"-1.1409"}],[{"value":"2018-06-01 08:00:09.000"},{"value":"CAT"},{"value":"NYPE"},{"value":"12,540"},{"value":"109.5900"},{"value":"1,374,258.6000"},{"value":"buy"},{"value":"151.9476"},{"value":"90"},{"value":"2.3232"}],[{"value":"2018-06-01 08:00:09.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"109.7100"},{"value":"10,971.0000"},{"value":"sell"},{"value":"151.9575"},{"value":"91"},{"value":"-0.2603"}],[{"value":"2018-06-01 08:00:09.200"},{"value":"DOG"},{"value":"PETX"},{"value":"4,143"},{"value":"101.6300"},{"value":"421,053.0900"},{"value":"sell"},{"value":"151.6745"},{"value":"92"},{"value":"-1.6061"}],[{"value":"2018-06-01 08:00:09.300"},{"value":"LIZARD"},{"value":"TPET"},{"value":"947"},{"value":"225.7400"},{"value":"213,775.7800"},{"value":"sell"},{"value":"151.2648"},{"value":"93"},{"value":"-0.9818"}],[{"value":"2018-06-01 08:00:09.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"101.5900"},{"value":"10,159.0000"},{"value":"buy"},{"value":"151.0986"},{"value":"94"},{"value":"0.9333"}],[{"value":"2018-06-01 08:00:09.500"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.1200"},{"value":"12,712.0000"},{"value":"sell"},{"value":"150.8477"},{"value":"95"},{"value":"-0.6329"}],[{"value":"2018-06-01 08:00:09.600"},{"value":"DOG"},{"value":"PETX"},{"value":"2,887"},{"value":"101.4200"},{"value":"292,799.5400"},{"value":"sell"},{"value":"150.3843"},{"value":"96"},{"value":"-1.4239"}],[{"value":"2018-06-01 08:00:09.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"20"},{"value":"109.8000"},{"value":"2,196.0000"},{"value":"sell"},{"value":"149.9563"},{"value":"97"},{"value":"-0.2677"}],[{"value":"2018-06-01 08:00:09.800"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"101.3200"},{"value":"10,132.0000"},{"value":"buy"},{"value":"149.6898"},{"value":"98"},{"value":"0.4629"}],[{"value":"2018-06-01 08:00:09.900"},{"value":"DOG"},{"value":"PETX"},{"value":"1,130"},{"value":"101.1200"},{"value":"114,265.6000"},{"value":"sell"},{"value":"149.2828"},{"value":"99"},{"value":"-1.0415"}]]}},"click_history":{"type":"Table","data":{"columns":[{"name":"Sym","type":"java.lang.String"},{"name":"Price","type":"double"}],"rows":[]}},"fig":{"type":"deephaven.plot.express.DeephavenFigure","data":{"data":[{"hovertemplate":"Sym=BIRD
Timestamp=%{x}
Price=%{y}","legendgroup":"BIRD","marker":{"symbol":"circle"},"mode":"markers","name":"BIRD","showlegend":true,"x":["2018-06-01 12:00:00.000000","2018-06-01 12:00:00.600000","2018-06-01 12:00:04.600000","2018-06-01 12:00:07.400000","2018-06-01 12:00:07.700000","2018-06-01 12:00:07.800000","2018-06-01 12:00:08.600000","2018-06-01 12:00:10.500000","2018-06-01 12:00:11.100000","2018-06-01 12:00:11.500000","2018-06-01 12:00:11.600000","2018-06-01 12:00:14.000000","2018-06-01 12:00:14.500000","2018-06-01 12:00:15.000000","2018-06-01 12:00:17.000000","2018-06-01 12:00:17.100000","2018-06-01 12:00:17.400000","2018-06-01 12:00:18.800000","2018-06-01 12:00:19.400000","2018-06-01 12:00:21.600000","2018-06-01 12:00:22.200000","2018-06-01 12:00:23.100000","2018-06-01 12:00:23.800000","2018-06-01 12:00:24.000000","2018-06-01 12:00:24.800000","2018-06-01 12:00:25.200000","2018-06-01 12:00:26.500000","2018-06-01 12:00:27.000000","2018-06-01 12:00:28.900000","2018-06-01 12:00:29.500000","2018-06-01 12:00:31.100000","2018-06-01 12:00:32.200000","2018-06-01 12:00:32.700000","2018-06-01 12:00:32.900000","2018-06-01 12:00:33.100000","2018-06-01 12:00:34.500000","2018-06-01 12:00:34.800000","2018-06-01 12:00:35.000000","2018-06-01 12:00:35.100000","2018-06-01 12:00:35.200000","2018-06-01 12:00:36.300000","2018-06-01 12:00:36.400000","2018-06-01 12:00:36.800000","2018-06-01 12:00:36.900000","2018-06-01 12:00:38.800000","2018-06-01 12:00:40.200000","2018-06-01 12:00:40.800000","2018-06-01 12:00:40.900000","2018-06-01 12:00:41.300000","2018-06-01 12:00:41.500000","2018-06-01 12:00:44.600000","2018-06-01 12:00:47.200000","2018-06-01 12:00:48.700000","2018-06-01 12:00:49.200000","2018-06-01 12:00:49.300000","2018-06-01 12:00:50.000000","2018-06-01 12:00:51.600000","2018-06-01 12:00:51.700000","2018-06-01 12:00:52.500000","2018-06-01 12:00:52.800000","2018-06-01 12:00:53.000000","2018-06-01 12:00:54.300000","2018-06-01 12:00:55.000000","2018-06-01 12:00:56.600000","2018-06-01 12:00:58.700000","2018-06-01 12:00:59.800000","2018-06-01 12:01:01.200000","2018-06-01 12:01:02.800000","2018-06-01 12:01:03.100000","2018-06-01 12:01:05.500000","2018-06-01 12:01:06.300000","2018-06-01 12:01:06.400000","2018-06-01 12:01:07.100000","2018-06-01 12:01:08.800000","2018-06-01 12:01:09.200000","2018-06-01 12:01:09.800000","2018-06-01 12:01:10.400000","2018-06-01 12:01:10.500000","2018-06-01 12:01:11.400000","2018-06-01 12:01:12.400000","2018-06-01 12:01:12.700000","2018-06-01 12:01:13.800000","2018-06-01 12:01:15.500000","2018-06-01 12:01:16.700000","2018-06-01 12:01:18.600000","2018-06-01 12:01:19.300000","2018-06-01 12:01:19.900000","2018-06-01 12:01:21.300000","2018-06-01 12:01:21.500000","2018-06-01 12:01:24.200000","2018-06-01 12:01:24.800000","2018-06-01 12:01:25.000000","2018-06-01 12:01:25.200000","2018-06-01 12:01:26.100000","2018-06-01 12:01:26.700000","2018-06-01 12:01:27.800000","2018-06-01 12:01:28.400000","2018-06-01 12:01:29.900000","2018-06-01 12:01:31.700000","2018-06-01 12:01:31.800000","2018-06-01 12:01:32.300000","2018-06-01 12:01:33.100000","2018-06-01 12:01:33.500000","2018-06-01 12:01:36.400000","2018-06-01 12:01:36.800000","2018-06-01 12:01:37.000000","2018-06-01 12:01:37.600000","2018-06-01 12:01:38.400000","2018-06-01 12:01:38.900000","2018-06-01 12:01:39.000000","2018-06-01 12:01:39.900000","2018-06-01 12:01:40.000000","2018-06-01 12:01:40.100000","2018-06-01 12:01:40.700000","2018-06-01 12:01:42.400000","2018-06-01 12:01:43.400000","2018-06-01 12:01:44.400000","2018-06-01 12:01:45.700000","2018-06-01 12:01:46.500000","2018-06-01 12:01:46.600000","2018-06-01 12:01:47.200000","2018-06-01 12:01:47.400000","2018-06-01 12:01:48.000000","2018-06-01 12:01:51.600000","2018-06-01 12:01:52.900000","2018-06-01 12:01:53.900000","2018-06-01 12:01:54.700000","2018-06-01 12:01:56.500000","2018-06-01 12:01:56.700000","2018-06-01 12:01:56.900000","2018-06-01 12:01:57.600000","2018-06-01 12:02:00.300000","2018-06-01 12:02:00.900000","2018-06-01 12:02:01.200000","2018-06-01 12:02:01.900000","2018-06-01 12:02:04.700000","2018-06-01 12:02:05.200000","2018-06-01 12:02:07.300000","2018-06-01 12:02:08.000000","2018-06-01 12:02:08.800000","2018-06-01 12:02:09.000000","2018-06-01 12:02:09.400000","2018-06-01 12:02:10.100000","2018-06-01 12:02:10.200000","2018-06-01 12:02:10.600000","2018-06-01 12:02:11.300000","2018-06-01 12:02:11.800000","2018-06-01 12:02:13.800000","2018-06-01 12:02:14.200000","2018-06-01 12:02:16.000000","2018-06-01 12:02:16.200000","2018-06-01 12:02:18.600000","2018-06-01 12:02:18.700000","2018-06-01 12:02:20.400000","2018-06-01 12:02:21.200000","2018-06-01 12:02:21.400000","2018-06-01 12:02:21.500000","2018-06-01 12:02:21.800000","2018-06-01 12:02:22.300000","2018-06-01 12:02:23.000000","2018-06-01 12:02:23.600000","2018-06-01 12:02:24.100000","2018-06-01 12:02:26.800000","2018-06-01 12:02:28.600000","2018-06-01 12:02:28.700000","2018-06-01 12:02:29.300000","2018-06-01 12:02:29.600000","2018-06-01 12:02:30.900000","2018-06-01 12:02:31.500000","2018-06-01 12:02:32.500000","2018-06-01 12:02:33.200000","2018-06-01 12:02:33.300000","2018-06-01 12:02:34.700000","2018-06-01 12:02:35.100000","2018-06-01 12:02:35.800000","2018-06-01 12:02:35.900000","2018-06-01 12:02:37.700000","2018-06-01 12:02:38.000000","2018-06-01 12:02:38.400000","2018-06-01 12:02:39.400000","2018-06-01 12:02:39.700000","2018-06-01 12:02:40.200000","2018-06-01 12:02:41.700000","2018-06-01 12:02:42.300000","2018-06-01 12:02:43.500000","2018-06-01 12:02:43.600000","2018-06-01 12:02:44.000000","2018-06-01 12:02:44.100000","2018-06-01 12:02:45.300000","2018-06-01 12:02:45.800000","2018-06-01 12:02:46.100000","2018-06-01 12:02:46.700000","2018-06-01 12:02:46.900000","2018-06-01 12:02:47.000000","2018-06-01 12:02:47.400000","2018-06-01 12:02:49.200000","2018-06-01 12:02:49.900000","2018-06-01 12:02:50.900000","2018-06-01 12:02:51.100000","2018-06-01 12:02:51.400000","2018-06-01 12:02:51.700000","2018-06-01 12:02:52.100000","2018-06-01 12:02:52.200000","2018-06-01 12:02:53.500000","2018-06-01 12:02:54.900000","2018-06-01 12:02:56.400000","2018-06-01 12:02:56.800000","2018-06-01 12:02:57.800000","2018-06-01 12:02:58.500000","2018-06-01 12:02:58.800000","2018-06-01 12:02:59.100000","2018-06-01 12:02:59.500000","2018-06-01 12:03:00.500000","2018-06-01 12:03:01.900000","2018-06-01 12:03:02.200000","2018-06-01 12:03:02.500000","2018-06-01 12:03:03.300000","2018-06-01 12:03:03.500000","2018-06-01 12:03:04.000000","2018-06-01 12:03:04.600000","2018-06-01 12:03:04.800000","2018-06-01 12:03:06.000000","2018-06-01 12:03:06.100000","2018-06-01 12:03:06.900000","2018-06-01 12:03:07.300000","2018-06-01 12:03:07.600000","2018-06-01 12:03:08.000000","2018-06-01 12:03:08.400000","2018-06-01 12:03:09.500000","2018-06-01 12:03:13.000000","2018-06-01 12:03:13.100000","2018-06-01 12:03:14.200000","2018-06-01 12:03:14.600000","2018-06-01 12:03:16.600000","2018-06-01 12:03:17.600000","2018-06-01 12:03:18.200000","2018-06-01 12:03:18.600000","2018-06-01 12:03:18.800000","2018-06-01 12:03:20.800000","2018-06-01 12:03:21.900000","2018-06-01 12:03:22.100000","2018-06-01 12:03:23.200000","2018-06-01 12:03:23.500000","2018-06-01 12:03:23.600000","2018-06-01 12:03:24.200000","2018-06-01 12:03:25.600000","2018-06-01 12:03:26.200000","2018-06-01 12:03:26.300000","2018-06-01 12:03:26.800000","2018-06-01 12:03:27.300000","2018-06-01 12:03:29.200000","2018-06-01 12:03:29.900000","2018-06-01 12:03:30.300000","2018-06-01 12:03:30.700000","2018-06-01 12:03:30.800000","2018-06-01 12:03:32.100000","2018-06-01 12:03:34.400000","2018-06-01 12:03:34.600000","2018-06-01 12:03:34.800000","2018-06-01 12:03:34.900000","2018-06-01 12:03:35.700000","2018-06-01 12:03:36.100000","2018-06-01 12:03:36.800000","2018-06-01 12:03:37.000000","2018-06-01 12:03:38.800000","2018-06-01 12:03:39.200000","2018-06-01 12:03:42.700000","2018-06-01 12:03:43.100000","2018-06-01 12:03:43.400000","2018-06-01 12:03:49.100000","2018-06-01 12:03:49.400000","2018-06-01 12:03:50.200000","2018-06-01 12:03:51.300000","2018-06-01 12:03:51.600000","2018-06-01 12:03:54.100000","2018-06-01 12:03:55.200000","2018-06-01 12:03:55.600000","2018-06-01 12:03:55.700000","2018-06-01 12:03:56.600000","2018-06-01 12:03:57.800000","2018-06-01 12:03:58.900000","2018-06-01 12:03:59.200000","2018-06-01 12:04:01.000000","2018-06-01 12:04:01.400000","2018-06-01 12:04:01.500000","2018-06-01 12:04:01.600000","2018-06-01 12:04:01.800000","2018-06-01 12:04:03.600000","2018-06-01 12:04:04.800000","2018-06-01 12:04:06.100000","2018-06-01 12:04:07.400000","2018-06-01 12:04:07.600000","2018-06-01 12:04:08.100000","2018-06-01 12:04:09.000000","2018-06-01 12:04:09.200000","2018-06-01 12:04:10.000000","2018-06-01 12:04:10.500000","2018-06-01 12:04:11.100000","2018-06-01 12:04:11.900000","2018-06-01 12:04:14.000000","2018-06-01 12:04:14.100000","2018-06-01 12:04:14.500000","2018-06-01 12:04:14.800000","2018-06-01 12:04:15.000000","2018-06-01 12:04:15.100000","2018-06-01 12:04:16.700000","2018-06-01 12:04:17.300000","2018-06-01 12:04:18.200000","2018-06-01 12:04:18.300000","2018-06-01 12:04:19.600000","2018-06-01 12:04:20.100000","2018-06-01 12:04:20.300000","2018-06-01 12:04:20.600000","2018-06-01 12:04:20.800000","2018-06-01 12:04:21.000000","2018-06-01 12:04:21.700000","2018-06-01 12:04:22.300000","2018-06-01 12:04:22.600000","2018-06-01 12:04:23.400000","2018-06-01 12:04:24.100000","2018-06-01 12:04:24.400000","2018-06-01 12:04:24.800000","2018-06-01 12:04:26.100000","2018-06-01 12:04:26.600000","2018-06-01 12:04:27.900000","2018-06-01 12:04:31.200000","2018-06-01 12:04:31.900000","2018-06-01 12:04:32.300000","2018-06-01 12:04:34.100000","2018-06-01 12:04:34.400000","2018-06-01 12:04:34.800000","2018-06-01 12:04:35.100000","2018-06-01 12:04:36.200000","2018-06-01 12:04:38.600000","2018-06-01 12:04:38.900000","2018-06-01 12:04:39.900000","2018-06-01 12:04:40.900000","2018-06-01 12:04:41.500000","2018-06-01 12:04:41.700000","2018-06-01 12:04:43.200000","2018-06-01 12:04:48.100000","2018-06-01 12:04:49.200000","2018-06-01 12:04:49.300000","2018-06-01 12:04:50.300000","2018-06-01 12:04:51.200000","2018-06-01 12:04:51.500000","2018-06-01 12:04:51.700000","2018-06-01 12:04:52.300000","2018-06-01 12:04:53.000000","2018-06-01 12:04:53.200000","2018-06-01 12:04:54.900000","2018-06-01 12:04:56.700000","2018-06-01 12:04:57.000000","2018-06-01 12:04:57.200000","2018-06-01 12:04:57.300000","2018-06-01 12:04:58.900000","2018-06-01 12:04:59.300000"],"xaxis":"x","y":[164.63,164.49,164.35,164.29,164.26,164.11,163.83,163.5,163.19,162.92,162.76,162.66,162.59,162.38,162.17,161.93,161.8,161.59,161.53,161.38,161.14,160.84,160.71,160.39,160.19,160.06,159.71,159.46,159.18,158.89,158.63,158.39,158.25,158.21,158.2,158.36,158.55,158.76,158.82,159.02,159.18,159.17,159.23,159.29,159.42,159.64,159.75,159.77,159.67,159.53,159.3,158.99,158.68,158.44,158.24,158.05,157.89,157.83,157.76,157.65,157.43,157.13,156.81,156.64,156.42,156.24,156.03,155.78,155.61,155.42,155.35,155.46,155.54,155.72,155.81,155.93,155.96,155.92,156.06,155.97,155.93,155.82,155.74,155.66,155.57,155.42,155.07,154.81,154.46,154.07,153.59,153.12,152.66,152.22,151.68,151.14,150.54,150.09,149.66,149.49,149.34,149.21,149.05,148.83,148.71,148.52,148.34,147.99,147.66,147.35,147.17,146.93,146.74,146.62,146.58,146.77,146.99,147.12,147.19,147.13,147.07,147.04,146.94,146.73,146.67,146.75,146.87,147.04,147.17,147.36,147.66,148.1,148.43,148.77,148.98,149.16,149.33,149.58,149.73,149.82,149.85,149.72,149.64,149.65,149.58,149.6,149.71,149.85,149.98,150.02,149.98,149.92,149.76,149.8,150.03,150.16,150.37,150.6,150.86,151.07,151.18,151.38,151.49,151.56,151.72,151.9,151.94,152.04,152.23,152.6,152.96,153.24,153.57,153.81,154.16,154.53,154.88,155.22,155.48,155.89,156.24,156.39,156.45,156.42,156.34,156.43,156.64,156.88,157.09,157.34,157.57,157.78,157.96,158.04,157.95,157.78,157.62,157.43,157.25,156.96,156.61,156.3,156,155.89,155.78,155.68,155.5,155.16,154.83,154.53,154.34,154.2,154.01,153.7,153.31,152.95,152.54,151.99,151.36,150.66,149.87,149.25,148.8,148.37,147.97,147.7,147.64,147.71,147.91,148.1,148.39,148.61,148.94,149.03,149.07,149.14,149.16,149.19,149.32,149.39,149.54,149.68,149.56,149.3,149.05,148.79,148.62,148.4,148.24,147.96,147.63,147.29,146.95,146.75,146.54,146.38,146.2,146.3,146.3,146.2,146.14,146.1,146.17,146.26,146.41,146.74,146.96,147.29,147.56,147.83,147.96,148.03,148.07,148.27,148.46,148.58,148.71,148.87,149.15,149.31,149.46,149.4,149.25,149.14,149.01,148.84,148.81,148.75,148.71,148.71,148.73,148.93,148.98,149.05,149.03,149.07,149.14,149.25,149.33,149.31,149.32,149.14,148.89,148.52,148.25,148.22,148.17,148.03,147.93,147.81,147.79,147.81,147.75,147.63,147.56,147.25,146.95,146.67,146.28,145.9,145.7,145.6,145.42,145.1,144.73,144.42,144.26,144.28,144.36,144.43,144.56,144.63,144.66,144.67,144.59,144.66,144.65,144.66,144.79,144.95,145.07,145.02,144.99,145.02,145.11,145.42,145.77,145.96,146.06,146.22,146.45,146.77,147,147.2,147.45,147.57,147.75],"yaxis":"y","type":"scatter"},{"hovertemplate":"Sym=CAT
Timestamp=%{x}
Price=%{y}","legendgroup":"CAT","marker":{"symbol":"circle"},"mode":"markers","name":"CAT","showlegend":true,"x":["2018-06-01 12:00:00.100000","2018-06-01 12:00:00.300000","2018-06-01 12:00:00.400000","2018-06-01 12:00:00.800000","2018-06-01 12:00:01.300000","2018-06-01 12:00:01.400000","2018-06-01 12:00:01.800000","2018-06-01 12:00:02.100000","2018-06-01 12:00:02.800000","2018-06-01 12:00:03.100000","2018-06-01 12:00:03.200000","2018-06-01 12:00:03.900000","2018-06-01 12:00:04.300000","2018-06-01 12:00:04.500000","2018-06-01 12:00:04.900000","2018-06-01 12:00:05.100000","2018-06-01 12:00:05.500000","2018-06-01 12:00:05.700000","2018-06-01 12:00:05.900000","2018-06-01 12:00:06.600000","2018-06-01 12:00:06.700000","2018-06-01 12:00:07.200000","2018-06-01 12:00:07.900000","2018-06-01 12:00:08.000000","2018-06-01 12:00:08.200000","2018-06-01 12:00:08.500000","2018-06-01 12:00:08.700000","2018-06-01 12:00:08.900000","2018-06-01 12:00:09.000000","2018-06-01 12:00:09.100000","2018-06-01 12:00:09.700000","2018-06-01 12:00:10.000000","2018-06-01 12:00:10.200000","2018-06-01 12:00:10.700000","2018-06-01 12:00:10.800000","2018-06-01 12:00:11.300000","2018-06-01 12:00:11.400000","2018-06-01 12:00:11.700000","2018-06-01 12:00:12.100000","2018-06-01 12:00:12.300000","2018-06-01 12:00:12.700000","2018-06-01 12:00:13.700000","2018-06-01 12:00:13.800000","2018-06-01 12:00:13.900000","2018-06-01 12:00:14.600000","2018-06-01 12:00:14.900000","2018-06-01 12:00:15.400000","2018-06-01 12:00:16.000000","2018-06-01 12:00:16.200000","2018-06-01 12:00:16.400000","2018-06-01 12:00:16.500000","2018-06-01 12:00:16.600000","2018-06-01 12:00:16.700000","2018-06-01 12:00:16.900000","2018-06-01 12:00:17.600000","2018-06-01 12:00:18.000000","2018-06-01 12:00:18.300000","2018-06-01 12:00:19.000000","2018-06-01 12:00:19.800000","2018-06-01 12:00:20.000000","2018-06-01 12:00:20.100000","2018-06-01 12:00:20.300000","2018-06-01 12:00:20.600000","2018-06-01 12:00:21.300000","2018-06-01 12:00:21.500000","2018-06-01 12:00:22.100000","2018-06-01 12:00:22.400000","2018-06-01 12:00:23.900000","2018-06-01 12:00:24.500000","2018-06-01 12:00:24.900000","2018-06-01 12:00:25.500000","2018-06-01 12:00:25.900000","2018-06-01 12:00:26.000000","2018-06-01 12:00:26.700000","2018-06-01 12:00:26.900000","2018-06-01 12:00:27.300000","2018-06-01 12:00:27.400000","2018-06-01 12:00:28.100000","2018-06-01 12:00:28.400000","2018-06-01 12:00:29.400000","2018-06-01 12:00:29.600000","2018-06-01 12:00:29.800000","2018-06-01 12:00:30.300000","2018-06-01 12:00:30.400000","2018-06-01 12:00:30.500000","2018-06-01 12:00:30.800000","2018-06-01 12:00:30.900000","2018-06-01 12:00:31.400000","2018-06-01 12:00:31.600000","2018-06-01 12:00:31.900000","2018-06-01 12:00:32.600000","2018-06-01 12:00:33.200000","2018-06-01 12:00:33.500000","2018-06-01 12:00:33.600000","2018-06-01 12:00:33.700000","2018-06-01 12:00:33.800000","2018-06-01 12:00:33.900000","2018-06-01 12:00:34.200000","2018-06-01 12:00:34.300000","2018-06-01 12:00:35.300000","2018-06-01 12:00:35.400000","2018-06-01 12:00:35.500000","2018-06-01 12:00:35.700000","2018-06-01 12:00:35.900000","2018-06-01 12:00:36.600000","2018-06-01 12:00:36.700000","2018-06-01 12:00:37.000000","2018-06-01 12:00:37.200000","2018-06-01 12:00:37.300000","2018-06-01 12:00:37.500000","2018-06-01 12:00:37.700000","2018-06-01 12:00:37.800000","2018-06-01 12:00:37.900000","2018-06-01 12:00:38.200000","2018-06-01 12:00:39.600000","2018-06-01 12:00:39.700000","2018-06-01 12:00:39.900000","2018-06-01 12:00:40.300000","2018-06-01 12:00:40.400000","2018-06-01 12:00:40.500000","2018-06-01 12:00:41.000000","2018-06-01 12:00:41.100000","2018-06-01 12:00:41.600000","2018-06-01 12:00:42.000000","2018-06-01 12:00:42.600000","2018-06-01 12:00:42.700000","2018-06-01 12:00:42.800000","2018-06-01 12:00:43.000000","2018-06-01 12:00:43.300000","2018-06-01 12:00:43.800000","2018-06-01 12:00:44.000000","2018-06-01 12:00:44.100000","2018-06-01 12:00:44.900000","2018-06-01 12:00:45.000000","2018-06-01 12:00:45.100000","2018-06-01 12:00:45.300000","2018-06-01 12:00:45.800000","2018-06-01 12:00:46.300000","2018-06-01 12:00:46.400000","2018-06-01 12:00:46.500000","2018-06-01 12:00:46.700000","2018-06-01 12:00:46.900000","2018-06-01 12:00:47.000000","2018-06-01 12:00:47.400000","2018-06-01 12:00:48.500000","2018-06-01 12:00:48.600000","2018-06-01 12:00:48.800000","2018-06-01 12:00:49.700000","2018-06-01 12:00:49.900000","2018-06-01 12:00:50.300000","2018-06-01 12:00:50.500000","2018-06-01 12:00:51.100000","2018-06-01 12:00:51.200000","2018-06-01 12:00:51.300000","2018-06-01 12:00:51.500000","2018-06-01 12:00:52.100000","2018-06-01 12:00:52.200000","2018-06-01 12:00:52.400000","2018-06-01 12:00:53.200000","2018-06-01 12:00:53.500000","2018-06-01 12:00:53.800000","2018-06-01 12:00:54.500000","2018-06-01 12:00:54.600000","2018-06-01 12:00:54.700000","2018-06-01 12:00:55.200000","2018-06-01 12:00:55.500000","2018-06-01 12:00:55.700000","2018-06-01 12:00:55.900000","2018-06-01 12:00:56.700000","2018-06-01 12:00:56.800000","2018-06-01 12:00:57.000000","2018-06-01 12:00:57.100000","2018-06-01 12:00:58.200000","2018-06-01 12:00:58.500000","2018-06-01 12:00:58.900000","2018-06-01 12:00:59.000000","2018-06-01 12:00:59.200000","2018-06-01 12:00:59.400000","2018-06-01 12:00:59.700000","2018-06-01 12:01:00.100000","2018-06-01 12:01:00.300000","2018-06-01 12:01:00.400000","2018-06-01 12:01:00.500000","2018-06-01 12:01:00.800000","2018-06-01 12:01:01.400000","2018-06-01 12:01:01.500000","2018-06-01 12:01:01.600000","2018-06-01 12:01:02.000000","2018-06-01 12:01:02.300000","2018-06-01 12:01:02.400000","2018-06-01 12:01:02.900000","2018-06-01 12:01:03.300000","2018-06-01 12:01:03.400000","2018-06-01 12:01:03.600000","2018-06-01 12:01:04.000000","2018-06-01 12:01:04.500000","2018-06-01 12:01:05.100000","2018-06-01 12:01:05.200000","2018-06-01 12:01:05.800000","2018-06-01 12:01:06.000000","2018-06-01 12:01:06.700000","2018-06-01 12:01:07.200000","2018-06-01 12:01:07.500000","2018-06-01 12:01:07.600000","2018-06-01 12:01:07.800000","2018-06-01 12:01:09.600000","2018-06-01 12:01:09.700000","2018-06-01 12:01:10.000000","2018-06-01 12:01:10.300000","2018-06-01 12:01:10.700000","2018-06-01 12:01:10.800000","2018-06-01 12:01:11.600000","2018-06-01 12:01:11.700000","2018-06-01 12:01:11.800000","2018-06-01 12:01:12.100000","2018-06-01 12:01:12.500000","2018-06-01 12:01:12.600000","2018-06-01 12:01:13.600000","2018-06-01 12:01:13.700000","2018-06-01 12:01:13.900000","2018-06-01 12:01:14.100000","2018-06-01 12:01:14.500000","2018-06-01 12:01:14.800000","2018-06-01 12:01:15.400000","2018-06-01 12:01:15.900000","2018-06-01 12:01:16.000000","2018-06-01 12:01:16.100000","2018-06-01 12:01:16.500000","2018-06-01 12:01:16.800000","2018-06-01 12:01:16.900000","2018-06-01 12:01:17.200000","2018-06-01 12:01:17.300000","2018-06-01 12:01:17.700000","2018-06-01 12:01:17.800000","2018-06-01 12:01:18.000000","2018-06-01 12:01:18.100000","2018-06-01 12:01:20.100000","2018-06-01 12:01:20.300000","2018-06-01 12:01:20.900000","2018-06-01 12:01:21.100000","2018-06-01 12:01:21.200000","2018-06-01 12:01:21.600000","2018-06-01 12:01:21.700000","2018-06-01 12:01:22.000000","2018-06-01 12:01:22.500000","2018-06-01 12:01:22.800000","2018-06-01 12:01:22.900000","2018-06-01 12:01:23.000000","2018-06-01 12:01:23.100000","2018-06-01 12:01:24.000000","2018-06-01 12:01:24.500000","2018-06-01 12:01:24.600000","2018-06-01 12:01:24.900000","2018-06-01 12:01:25.500000","2018-06-01 12:01:25.600000","2018-06-01 12:01:26.000000","2018-06-01 12:01:27.000000","2018-06-01 12:01:27.300000","2018-06-01 12:01:27.700000","2018-06-01 12:01:27.900000","2018-06-01 12:01:28.600000","2018-06-01 12:01:28.800000","2018-06-01 12:01:29.000000","2018-06-01 12:01:29.200000","2018-06-01 12:01:29.600000","2018-06-01 12:01:29.700000","2018-06-01 12:01:30.300000","2018-06-01 12:01:30.600000","2018-06-01 12:01:30.900000","2018-06-01 12:01:31.300000","2018-06-01 12:01:31.400000","2018-06-01 12:01:31.500000","2018-06-01 12:01:32.200000","2018-06-01 12:01:32.900000","2018-06-01 12:01:33.600000","2018-06-01 12:01:34.400000","2018-06-01 12:01:34.600000","2018-06-01 12:01:34.700000","2018-06-01 12:01:35.000000","2018-06-01 12:01:35.200000","2018-06-01 12:01:35.300000","2018-06-01 12:01:35.400000","2018-06-01 12:01:36.200000","2018-06-01 12:01:36.500000","2018-06-01 12:01:36.600000","2018-06-01 12:01:37.100000","2018-06-01 12:01:37.300000","2018-06-01 12:01:38.600000","2018-06-01 12:01:39.100000","2018-06-01 12:01:39.300000","2018-06-01 12:01:39.500000","2018-06-01 12:01:39.800000","2018-06-01 12:01:40.900000","2018-06-01 12:01:41.500000","2018-06-01 12:01:41.900000","2018-06-01 12:01:42.000000","2018-06-01 12:01:42.200000","2018-06-01 12:01:42.500000","2018-06-01 12:01:42.600000","2018-06-01 12:01:42.700000","2018-06-01 12:01:43.700000","2018-06-01 12:01:43.800000","2018-06-01 12:01:44.200000","2018-06-01 12:01:44.700000","2018-06-01 12:01:44.800000","2018-06-01 12:01:45.100000","2018-06-01 12:01:45.400000","2018-06-01 12:01:45.500000","2018-06-01 12:01:45.600000","2018-06-01 12:01:45.900000","2018-06-01 12:01:46.000000","2018-06-01 12:01:46.200000","2018-06-01 12:01:46.300000","2018-06-01 12:01:46.400000","2018-06-01 12:01:46.700000","2018-06-01 12:01:47.100000","2018-06-01 12:01:47.800000","2018-06-01 12:01:48.200000","2018-06-01 12:01:48.300000","2018-06-01 12:01:48.700000","2018-06-01 12:01:49.500000","2018-06-01 12:01:49.800000","2018-06-01 12:01:50.400000","2018-06-01 12:01:50.800000","2018-06-01 12:01:51.100000","2018-06-01 12:01:51.300000","2018-06-01 12:01:51.500000","2018-06-01 12:01:51.800000","2018-06-01 12:01:51.900000","2018-06-01 12:01:52.500000","2018-06-01 12:01:52.600000","2018-06-01 12:01:52.800000","2018-06-01 12:01:53.600000","2018-06-01 12:01:54.200000","2018-06-01 12:01:54.500000","2018-06-01 12:01:55.000000","2018-06-01 12:01:55.100000","2018-06-01 12:01:55.300000","2018-06-01 12:01:55.500000","2018-06-01 12:01:55.900000","2018-06-01 12:01:56.300000","2018-06-01 12:01:56.400000","2018-06-01 12:01:57.000000","2018-06-01 12:01:57.400000","2018-06-01 12:01:58.500000","2018-06-01 12:01:58.600000","2018-06-01 12:01:59.600000","2018-06-01 12:02:00.100000","2018-06-01 12:02:00.800000","2018-06-01 12:02:01.000000","2018-06-01 12:02:02.000000","2018-06-01 12:02:02.100000","2018-06-01 12:02:02.400000","2018-06-01 12:02:02.800000","2018-06-01 12:02:02.900000","2018-06-01 12:02:03.700000","2018-06-01 12:02:03.800000","2018-06-01 12:02:03.900000","2018-06-01 12:02:04.200000","2018-06-01 12:02:04.400000","2018-06-01 12:02:04.600000","2018-06-01 12:02:05.000000","2018-06-01 12:02:05.800000","2018-06-01 12:02:06.000000","2018-06-01 12:02:06.100000","2018-06-01 12:02:06.200000","2018-06-01 12:02:06.400000","2018-06-01 12:02:06.500000","2018-06-01 12:02:06.700000","2018-06-01 12:02:06.800000","2018-06-01 12:02:07.200000","2018-06-01 12:02:07.400000","2018-06-01 12:02:07.600000","2018-06-01 12:02:07.700000","2018-06-01 12:02:07.800000","2018-06-01 12:02:08.100000","2018-06-01 12:02:08.200000","2018-06-01 12:02:08.500000","2018-06-01 12:02:09.500000","2018-06-01 12:02:10.500000","2018-06-01 12:02:11.100000","2018-06-01 12:02:11.600000","2018-06-01 12:02:12.000000","2018-06-01 12:02:12.700000","2018-06-01 12:02:12.800000","2018-06-01 12:02:13.200000","2018-06-01 12:02:14.500000","2018-06-01 12:02:14.900000","2018-06-01 12:02:15.100000","2018-06-01 12:02:15.300000","2018-06-01 12:02:15.600000","2018-06-01 12:02:15.800000","2018-06-01 12:02:16.100000","2018-06-01 12:02:16.300000","2018-06-01 12:02:16.800000","2018-06-01 12:02:17.300000","2018-06-01 12:02:17.400000","2018-06-01 12:02:17.500000","2018-06-01 12:02:17.700000","2018-06-01 12:02:17.800000","2018-06-01 12:02:18.300000","2018-06-01 12:02:18.500000","2018-06-01 12:02:18.900000","2018-06-01 12:02:19.000000","2018-06-01 12:02:19.100000","2018-06-01 12:02:19.200000","2018-06-01 12:02:19.600000","2018-06-01 12:02:19.700000","2018-06-01 12:02:20.000000","2018-06-01 12:02:20.700000","2018-06-01 12:02:20.900000","2018-06-01 12:02:21.600000","2018-06-01 12:02:22.100000","2018-06-01 12:02:22.200000","2018-06-01 12:02:22.400000","2018-06-01 12:02:22.900000","2018-06-01 12:02:23.400000","2018-06-01 12:02:23.700000","2018-06-01 12:02:24.000000","2018-06-01 12:02:24.300000","2018-06-01 12:02:24.500000","2018-06-01 12:02:24.700000","2018-06-01 12:02:24.900000","2018-06-01 12:02:25.200000","2018-06-01 12:02:25.800000","2018-06-01 12:02:26.100000","2018-06-01 12:02:26.200000","2018-06-01 12:02:26.500000","2018-06-01 12:02:26.900000","2018-06-01 12:02:27.100000","2018-06-01 12:02:27.200000","2018-06-01 12:02:27.300000","2018-06-01 12:02:27.400000","2018-06-01 12:02:27.500000","2018-06-01 12:02:27.900000","2018-06-01 12:02:28.100000","2018-06-01 12:02:28.200000","2018-06-01 12:02:28.400000","2018-06-01 12:02:28.800000","2018-06-01 12:02:29.100000","2018-06-01 12:02:29.400000","2018-06-01 12:02:29.700000","2018-06-01 12:02:29.800000","2018-06-01 12:02:30.200000","2018-06-01 12:02:30.500000","2018-06-01 12:02:30.600000","2018-06-01 12:02:30.700000","2018-06-01 12:02:31.100000","2018-06-01 12:02:31.400000","2018-06-01 12:02:31.600000","2018-06-01 12:02:31.800000","2018-06-01 12:02:31.900000","2018-06-01 12:02:32.100000","2018-06-01 12:02:32.300000","2018-06-01 12:02:32.400000","2018-06-01 12:02:33.000000","2018-06-01 12:02:33.900000","2018-06-01 12:02:34.000000","2018-06-01 12:02:34.300000","2018-06-01 12:02:34.400000","2018-06-01 12:02:34.500000","2018-06-01 12:02:34.600000","2018-06-01 12:02:34.800000","2018-06-01 12:02:35.200000","2018-06-01 12:02:35.700000","2018-06-01 12:02:36.400000","2018-06-01 12:02:36.600000","2018-06-01 12:02:37.000000","2018-06-01 12:02:37.100000","2018-06-01 12:02:38.200000","2018-06-01 12:02:38.700000","2018-06-01 12:02:38.900000","2018-06-01 12:02:39.000000","2018-06-01 12:02:39.600000","2018-06-01 12:02:40.000000","2018-06-01 12:02:40.400000","2018-06-01 12:02:40.500000","2018-06-01 12:02:40.800000","2018-06-01 12:02:41.200000","2018-06-01 12:02:41.400000","2018-06-01 12:02:41.900000","2018-06-01 12:02:42.100000","2018-06-01 12:02:42.400000","2018-06-01 12:02:42.800000","2018-06-01 12:02:43.000000","2018-06-01 12:02:43.200000","2018-06-01 12:02:43.900000","2018-06-01 12:02:44.800000","2018-06-01 12:02:45.100000","2018-06-01 12:02:45.400000","2018-06-01 12:02:47.500000","2018-06-01 12:02:47.600000","2018-06-01 12:02:47.800000","2018-06-01 12:02:47.900000","2018-06-01 12:02:48.100000","2018-06-01 12:02:48.600000","2018-06-01 12:02:49.000000","2018-06-01 12:02:49.100000","2018-06-01 12:02:49.500000","2018-06-01 12:02:49.600000","2018-06-01 12:02:50.700000","2018-06-01 12:02:51.600000","2018-06-01 12:02:52.400000","2018-06-01 12:02:52.600000","2018-06-01 12:02:53.000000","2018-06-01 12:02:53.200000","2018-06-01 12:02:53.300000","2018-06-01 12:02:53.400000","2018-06-01 12:02:53.600000","2018-06-01 12:02:53.700000","2018-06-01 12:02:53.900000","2018-06-01 12:02:54.200000","2018-06-01 12:02:54.600000","2018-06-01 12:02:55.100000","2018-06-01 12:02:55.200000","2018-06-01 12:02:55.400000","2018-06-01 12:02:55.800000","2018-06-01 12:02:56.100000","2018-06-01 12:02:56.200000","2018-06-01 12:02:56.500000","2018-06-01 12:02:56.600000","2018-06-01 12:02:56.900000","2018-06-01 12:02:57.100000","2018-06-01 12:02:57.200000","2018-06-01 12:02:58.100000","2018-06-01 12:02:58.400000","2018-06-01 12:02:58.700000","2018-06-01 12:02:59.000000","2018-06-01 12:02:59.300000","2018-06-01 12:02:59.900000","2018-06-01 12:03:00.100000","2018-06-01 12:03:00.600000","2018-06-01 12:03:00.800000","2018-06-01 12:03:01.000000","2018-06-01 12:03:01.500000","2018-06-01 12:03:01.800000","2018-06-01 12:03:02.000000","2018-06-01 12:03:02.400000","2018-06-01 12:03:03.600000","2018-06-01 12:03:03.800000","2018-06-01 12:03:03.900000","2018-06-01 12:03:04.200000","2018-06-01 12:03:04.500000","2018-06-01 12:03:04.700000","2018-06-01 12:03:05.200000","2018-06-01 12:03:05.300000","2018-06-01 12:03:06.400000","2018-06-01 12:03:07.200000","2018-06-01 12:03:07.500000","2018-06-01 12:03:07.700000","2018-06-01 12:03:08.600000","2018-06-01 12:03:09.900000","2018-06-01 12:03:10.000000","2018-06-01 12:03:10.200000","2018-06-01 12:03:10.500000","2018-06-01 12:03:10.600000","2018-06-01 12:03:10.700000","2018-06-01 12:03:10.800000","2018-06-01 12:03:10.900000","2018-06-01 12:03:11.000000","2018-06-01 12:03:11.200000","2018-06-01 12:03:11.400000","2018-06-01 12:03:11.600000","2018-06-01 12:03:11.700000","2018-06-01 12:03:11.800000","2018-06-01 12:03:12.200000","2018-06-01 12:03:12.500000","2018-06-01 12:03:12.800000","2018-06-01 12:03:13.400000","2018-06-01 12:03:13.500000","2018-06-01 12:03:14.400000","2018-06-01 12:03:15.000000","2018-06-01 12:03:15.100000","2018-06-01 12:03:16.000000","2018-06-01 12:03:17.000000","2018-06-01 12:03:17.100000","2018-06-01 12:03:17.300000","2018-06-01 12:03:17.800000","2018-06-01 12:03:17.900000","2018-06-01 12:03:18.000000","2018-06-01 12:03:18.100000","2018-06-01 12:03:19.000000","2018-06-01 12:03:19.900000","2018-06-01 12:03:20.300000","2018-06-01 12:03:20.700000","2018-06-01 12:03:20.900000","2018-06-01 12:03:21.000000","2018-06-01 12:03:21.200000","2018-06-01 12:03:21.700000","2018-06-01 12:03:22.600000","2018-06-01 12:03:22.700000","2018-06-01 12:03:23.400000","2018-06-01 12:03:23.700000","2018-06-01 12:03:23.800000","2018-06-01 12:03:24.100000","2018-06-01 12:03:25.100000","2018-06-01 12:03:25.400000","2018-06-01 12:03:25.500000","2018-06-01 12:03:25.800000","2018-06-01 12:03:26.700000","2018-06-01 12:03:27.100000","2018-06-01 12:03:27.600000","2018-06-01 12:03:28.000000","2018-06-01 12:03:28.500000","2018-06-01 12:03:28.700000","2018-06-01 12:03:29.000000","2018-06-01 12:03:29.400000","2018-06-01 12:03:29.600000","2018-06-01 12:03:29.700000","2018-06-01 12:03:29.800000","2018-06-01 12:03:30.400000","2018-06-01 12:03:30.500000","2018-06-01 12:03:31.000000","2018-06-01 12:03:31.200000","2018-06-01 12:03:31.300000","2018-06-01 12:03:31.700000","2018-06-01 12:03:31.900000","2018-06-01 12:03:32.400000","2018-06-01 12:03:32.600000","2018-06-01 12:03:32.700000","2018-06-01 12:03:32.800000","2018-06-01 12:03:32.900000","2018-06-01 12:03:33.000000","2018-06-01 12:03:33.300000","2018-06-01 12:03:33.600000","2018-06-01 12:03:34.700000","2018-06-01 12:03:35.500000","2018-06-01 12:03:36.600000","2018-06-01 12:03:37.100000","2018-06-01 12:03:37.400000","2018-06-01 12:03:37.600000","2018-06-01 12:03:38.000000","2018-06-01 12:03:38.100000","2018-06-01 12:03:38.400000","2018-06-01 12:03:38.600000","2018-06-01 12:03:38.700000","2018-06-01 12:03:38.900000","2018-06-01 12:03:39.100000","2018-06-01 12:03:39.600000","2018-06-01 12:03:40.200000","2018-06-01 12:03:40.800000","2018-06-01 12:03:40.900000","2018-06-01 12:03:41.500000","2018-06-01 12:03:41.700000","2018-06-01 12:03:41.800000","2018-06-01 12:03:42.200000","2018-06-01 12:03:42.500000","2018-06-01 12:03:42.600000","2018-06-01 12:03:43.000000","2018-06-01 12:03:43.500000","2018-06-01 12:03:43.700000","2018-06-01 12:03:43.900000","2018-06-01 12:03:44.500000","2018-06-01 12:03:45.100000","2018-06-01 12:03:45.200000","2018-06-01 12:03:45.400000","2018-06-01 12:03:45.700000","2018-06-01 12:03:45.800000","2018-06-01 12:03:45.900000","2018-06-01 12:03:46.000000","2018-06-01 12:03:46.300000","2018-06-01 12:03:46.500000","2018-06-01 12:03:46.800000","2018-06-01 12:03:47.200000","2018-06-01 12:03:47.800000","2018-06-01 12:03:48.200000","2018-06-01 12:03:48.300000","2018-06-01 12:03:49.900000","2018-06-01 12:03:50.300000","2018-06-01 12:03:50.500000","2018-06-01 12:03:51.100000","2018-06-01 12:03:51.400000","2018-06-01 12:03:51.800000","2018-06-01 12:03:51.900000","2018-06-01 12:03:52.700000","2018-06-01 12:03:52.800000","2018-06-01 12:03:53.200000","2018-06-01 12:03:53.300000","2018-06-01 12:03:54.000000","2018-06-01 12:03:54.700000","2018-06-01 12:03:57.500000","2018-06-01 12:03:57.900000","2018-06-01 12:03:58.100000","2018-06-01 12:03:58.800000","2018-06-01 12:03:59.100000","2018-06-01 12:03:59.300000","2018-06-01 12:03:59.700000","2018-06-01 12:04:00.000000","2018-06-01 12:04:00.100000","2018-06-01 12:04:00.300000","2018-06-01 12:04:00.500000","2018-06-01 12:04:01.100000","2018-06-01 12:04:02.100000","2018-06-01 12:04:03.000000","2018-06-01 12:04:03.900000","2018-06-01 12:04:04.900000","2018-06-01 12:04:05.100000","2018-06-01 12:04:05.200000","2018-06-01 12:04:05.400000","2018-06-01 12:04:06.200000","2018-06-01 12:04:06.300000","2018-06-01 12:04:06.700000","2018-06-01 12:04:06.900000","2018-06-01 12:04:07.000000","2018-06-01 12:04:07.500000","2018-06-01 12:04:07.700000","2018-06-01 12:04:08.200000","2018-06-01 12:04:08.500000","2018-06-01 12:04:08.900000","2018-06-01 12:04:09.500000","2018-06-01 12:04:09.800000","2018-06-01 12:04:10.100000","2018-06-01 12:04:10.200000","2018-06-01 12:04:10.400000","2018-06-01 12:04:10.800000","2018-06-01 12:04:11.400000","2018-06-01 12:04:11.700000","2018-06-01 12:04:12.100000","2018-06-01 12:04:12.300000","2018-06-01 12:04:12.800000","2018-06-01 12:04:12.900000","2018-06-01 12:04:13.200000","2018-06-01 12:04:13.700000","2018-06-01 12:04:14.300000","2018-06-01 12:04:15.200000","2018-06-01 12:04:15.600000","2018-06-01 12:04:15.700000","2018-06-01 12:04:16.500000","2018-06-01 12:04:16.600000","2018-06-01 12:04:17.100000","2018-06-01 12:04:17.200000","2018-06-01 12:04:17.400000","2018-06-01 12:04:18.000000","2018-06-01 12:04:18.100000","2018-06-01 12:04:18.500000","2018-06-01 12:04:18.700000","2018-06-01 12:04:18.900000","2018-06-01 12:04:20.200000","2018-06-01 12:04:20.400000","2018-06-01 12:04:20.700000","2018-06-01 12:04:20.900000","2018-06-01 12:04:21.200000","2018-06-01 12:04:21.400000","2018-06-01 12:04:22.200000","2018-06-01 12:04:22.500000","2018-06-01 12:04:23.200000","2018-06-01 12:04:23.700000","2018-06-01 12:04:24.600000","2018-06-01 12:04:24.900000","2018-06-01 12:04:25.200000","2018-06-01 12:04:25.500000","2018-06-01 12:04:25.600000","2018-06-01 12:04:25.700000","2018-06-01 12:04:25.800000","2018-06-01 12:04:26.000000","2018-06-01 12:04:26.700000","2018-06-01 12:04:27.100000","2018-06-01 12:04:27.300000","2018-06-01 12:04:27.600000","2018-06-01 12:04:27.700000","2018-06-01 12:04:27.800000","2018-06-01 12:04:28.100000","2018-06-01 12:04:28.200000","2018-06-01 12:04:28.600000","2018-06-01 12:04:28.900000","2018-06-01 12:04:29.200000","2018-06-01 12:04:29.800000","2018-06-01 12:04:30.200000","2018-06-01 12:04:30.500000","2018-06-01 12:04:31.100000","2018-06-01 12:04:31.800000","2018-06-01 12:04:32.000000","2018-06-01 12:04:32.600000","2018-06-01 12:04:32.800000","2018-06-01 12:04:32.900000","2018-06-01 12:04:33.000000","2018-06-01 12:04:33.400000","2018-06-01 12:04:33.500000","2018-06-01 12:04:33.600000","2018-06-01 12:04:34.300000","2018-06-01 12:04:34.600000","2018-06-01 12:04:34.700000","2018-06-01 12:04:34.900000","2018-06-01 12:04:35.000000","2018-06-01 12:04:35.300000","2018-06-01 12:04:35.900000","2018-06-01 12:04:36.100000","2018-06-01 12:04:36.500000","2018-06-01 12:04:36.900000","2018-06-01 12:04:37.000000","2018-06-01 12:04:37.100000","2018-06-01 12:04:38.400000","2018-06-01 12:04:39.000000","2018-06-01 12:04:39.200000","2018-06-01 12:04:39.300000","2018-06-01 12:04:39.400000","2018-06-01 12:04:39.600000","2018-06-01 12:04:40.500000","2018-06-01 12:04:40.800000","2018-06-01 12:04:41.100000","2018-06-01 12:04:41.800000","2018-06-01 12:04:41.900000","2018-06-01 12:04:42.400000","2018-06-01 12:04:42.500000","2018-06-01 12:04:42.600000","2018-06-01 12:04:42.700000","2018-06-01 12:04:42.900000","2018-06-01 12:04:43.500000","2018-06-01 12:04:44.200000","2018-06-01 12:04:44.500000","2018-06-01 12:04:45.000000","2018-06-01 12:04:45.200000","2018-06-01 12:04:45.300000","2018-06-01 12:04:45.400000","2018-06-01 12:04:46.700000","2018-06-01 12:04:47.400000","2018-06-01 12:04:47.500000","2018-06-01 12:04:47.800000","2018-06-01 12:04:47.900000","2018-06-01 12:04:48.200000","2018-06-01 12:04:48.400000","2018-06-01 12:04:48.500000","2018-06-01 12:04:49.000000","2018-06-01 12:04:49.700000","2018-06-01 12:04:49.800000","2018-06-01 12:04:50.100000","2018-06-01 12:04:50.600000","2018-06-01 12:04:51.000000","2018-06-01 12:04:51.900000","2018-06-01 12:04:52.100000","2018-06-01 12:04:52.200000","2018-06-01 12:04:52.900000","2018-06-01 12:04:53.500000","2018-06-01 12:04:53.800000","2018-06-01 12:04:54.700000","2018-06-01 12:04:55.200000","2018-06-01 12:04:55.700000","2018-06-01 12:04:56.000000","2018-06-01 12:04:56.200000","2018-06-01 12:04:56.500000","2018-06-01 12:04:56.800000","2018-06-01 12:04:57.400000","2018-06-01 12:04:57.900000","2018-06-01 12:04:58.400000","2018-06-01 12:04:58.600000","2018-06-01 12:04:58.700000","2018-06-01 12:04:59.000000","2018-06-01 12:04:59.700000"],"xaxis":"x","y":[102.47,102.51,102.45,102.53,102.7,102.99,103.4,103.92,104.26,104.67,105.02,105.44,105.82,106.18,106.34,106.59,106.76,107.03,107.33,107.68,108.08,108.63,108.91,109.18,109.34,109.43,109.48,109.42,109.59,109.71,109.8,109.94,110.06,110.02,110.09,110.02,109.95,110.12,110.09,110.04,109.88,109.83,109.7,109.72,109.85,109.87,109.84,109.7,109.59,109.59,109.64,109.68,109.77,109.86,109.88,110.09,110.3,110.57,110.72,110.9,111.01,111.07,111.05,110.9,110.7,110.43,110.28,110.12,109.82,109.47,109.12,108.8,108.48,108.07,107.52,107.02,106.7,106.45,106.22,106.08,106.04,105.99,105.77,105.64,105.6,105.52,105.5,105.51,105.4,105.34,105.4,105.44,105.5,105.63,105.91,106.19,106.42,106.61,106.83,106.91,107.08,107.33,107.48,107.61,107.79,108.05,108.25,108.59,109.15,109.51,109.9,110.35,110.71,111,111.16,111.27,111.43,111.66,111.92,112.01,112,111.99,111.97,112.07,112.18,112.2,112.24,112.22,112.33,112.35,112.51,112.59,112.73,112.65,112.56,112.57,112.56,112.63,112.75,112.82,113.08,113.11,113.06,113.06,113.16,113.2,113.26,113.37,113.57,113.8,114.14,114.31,114.54,114.78,115.01,115.13,115.37,115.57,115.85,116.04,116.12,115.97,115.82,115.88,115.93,115.95,116.02,116.09,116.06,115.92,115.74,115.55,115.53,115.4,115.28,115.21,115.13,115.16,115.11,115.08,115.27,115.44,115.63,115.78,116,116.27,116.5,116.54,116.76,117.01,117.02,116.98,117.05,117.13,117.31,117.5,117.68,117.94,118.12,118.37,118.67,118.85,119.12,119.19,119.23,119.28,119.4,119.5,119.78,119.9,120.21,120.61,121.06,121.65,122.36,123.15,123.85,124.59,125.41,126.26,126.96,127.51,128.09,128.6,129.1,129.56,129.95,130.22,130.37,130.36,130.27,130.12,129.99,129.97,130.02,129.95,129.78,129.64,129.47,129.2,128.87,128.66,128.41,128.01,127.62,127.33,127.01,126.77,126.5,126.36,126.3,126.24,126.09,126.07,126.08,126.05,125.91,125.83,125.74,125.51,125.25,125.16,125.09,125.03,124.95,124.87,124.84,124.69,124.53,124.4,124.31,124.21,124.29,124.17,124.14,124.03,123.9,123.7,123.56,123.37,123.22,123.07,122.83,122.55,122.12,121.7,121.44,121.32,121.36,121.52,121.6,121.67,121.67,121.58,121.49,121.46,121.35,121.34,121.25,121.11,120.9,120.73,120.59,120.47,120.46,120.43,120.57,120.67,120.71,120.63,120.45,120.23,120.14,120.27,120.43,120.58,120.51,120.35,120.17,120.08,119.85,119.48,119.19,119.09,119.18,119.18,119.23,119.17,119.16,119.1,118.87,118.75,118.72,118.83,119.01,119.33,119.66,119.98,120.37,120.68,120.94,121.05,121.06,120.97,120.79,120.62,120.37,120.17,119.98,119.79,119.7,119.68,119.56,119.58,119.58,119.6,119.59,119.65,119.81,119.81,119.77,119.8,119.74,119.64,119.51,119.29,119.06,118.71,118.27,117.71,117.25,116.63,115.96,115.2,114.46,113.86,113.48,112.8,112.08,111.51,110.92,110.3,109.69,109.21,108.8,108.48,108.15,107.84,107.53,107.16,106.86,106.55,106.2,105.8,105.44,105.15,104.94,104.76,104.65,104.5,104.46,104.41,104.33,104.21,104.01,103.97,103.98,104.05,104.24,104.38,104.53,104.72,104.95,105.17,105.36,105.42,105.62,105.72,105.86,106.08,106.3,106.55,106.69,106.97,107.38,107.82,108.37,108.84,109.16,109.41,109.61,109.84,110.09,110.22,110.44,110.81,111.17,111.5,111.81,112.19,112.53,112.93,113.32,113.66,113.94,114.03,114.01,114,113.8,113.78,113.58,113.19,112.96,112.78,112.65,112.44,112.28,112.12,111.98,111.9,111.75,111.63,111.39,111.06,110.72,110.28,109.92,109.57,109.43,109.27,109.05,108.91,108.76,108.63,108.52,108.39,108.29,108.2,108.19,108.05,107.91,107.74,107.7,107.84,107.96,108.1,108.46,108.77,108.98,109.15,109.27,109.3,109.45,109.61,109.8,109.87,109.91,109.89,109.85,110.1,110.37,110.65,110.93,111.39,111.69,112.1,112.62,113.06,113.55,114.11,114.7,115.36,115.93,116.33,116.62,116.82,117.07,117.31,117.39,117.44,117.53,117.61,117.74,117.85,117.95,118.1,118.02,117.95,117.93,117.92,117.81,117.7,117.73,117.72,117.76,117.69,117.51,117.47,117.51,117.61,117.67,117.76,117.66,117.63,117.59,117.41,117.25,117.16,117.19,117.29,117.32,117.36,117.45,117.63,117.77,118.01,118.19,118.39,118.38,118.45,118.43,118.35,118.33,118.21,118.15,117.95,117.84,117.61,117.45,117.34,117.29,117.34,117.38,117.36,117.3,117.09,116.8,116.46,116.01,115.54,115.12,114.7,114.35,113.9,113.55,113.18,112.94,112.64,112.26,111.88,111.45,111.07,110.8,110.74,110.53,110.26,110.15,109.89,109.86,109.86,109.96,109.95,109.88,109.87,109.92,109.85,110.01,110.12,110.27,110.4,110.66,110.8,110.86,110.71,110.42,110.2,110.09,110.02,110.03,110.02,109.85,109.59,109.3,109.02,108.74,108.42,108.07,107.85,107.77,107.7,107.62,107.58,107.49,107.39,107.26,107.14,107.1,107.26,107.42,107.31,106.97,106.84,106.64,106.62,106.6,106.61,106.75,106.98,107.14,107.21,107.44,107.6,107.71,107.96,108.35,108.65,108.97,109.34,109.65,109.82,109.93,109.86,109.9,110,110.08,110.1,110.05,110.05,110.19,110.23,110.21,110.28,110.41,110.57,110.56,110.61,110.71,110.8,111.04,111.23,111.4,111.61,111.86,112.17,112.42,112.61,112.66,112.74,112.73,112.72,112.77,112.94,113.23,113.62,114.07,114.41,114.72,115.15,115.57,115.97,116.25,116.56,116.97,117.21,117.56,117.79,117.97,118.02,118.18,118.37,118.47,118.41,118.25,118.13,117.92,117.86,117.67,117.41,117.19,116.96,116.77,116.62,116.6,116.4,116.29,116.21,116.12,116.03,115.96,115.77,115.86,115.84,115.89,115.85,115.94,116.05,116.11,116.18,116.29,116.41,116.49,116.54,116.54,116.56,116.68,116.87,117.04,117.21,117.22,117.46,117.68,118.05,118.26,118.29,118.32,118.41,118.66,118.95,119.21,119.6,119.98,120.25,120.64,121.1,121.57,122.03,122.63,123.23,123.62,123.97,124.29,124.67,124.95,125.21,125.52,125.92,126.05,126.28,126.58,126.92,127.18,127.36,127.54,127.78,127.88,127.97,128.16,128.41,128.63,128.85,129.06,129.08,129.09,129.02,128.96,128.76,128.56,128.35,128.09,127.76,127.28,126.66,126.17,125.68,125.12,124.39,123.75,122.9,122.28,121.67,121.13,120.55,119.98,119.54,119.14,118.69,118.37,117.95,117.56,117.14,116.44,115.6,115.14,114.71,114.43,114.32,114.31,114.27,114.1,113.9,113.62,113.25,112.98,112.82,112.78,112.86,112.93,112.65,112.69,112.72,112.84,112.81,112.83,112.64,112.47,112.37,112.4,112.45],"yaxis":"y","type":"scatter"},{"hovertemplate":"Sym=LIZARD
Timestamp=%{x}
Price=%{y}","legendgroup":"LIZARD","marker":{"symbol":"circle"},"mode":"markers","name":"LIZARD","showlegend":true,"x":["2018-06-01 12:00:00.200000","2018-06-01 12:00:01.500000","2018-06-01 12:00:02.000000","2018-06-01 12:00:02.200000","2018-06-01 12:00:02.300000","2018-06-01 12:00:05.200000","2018-06-01 12:00:05.400000","2018-06-01 12:00:05.600000","2018-06-01 12:00:06.200000","2018-06-01 12:00:07.000000","2018-06-01 12:00:09.300000","2018-06-01 12:00:10.300000","2018-06-01 12:00:10.400000","2018-06-01 12:00:11.000000","2018-06-01 12:00:11.900000","2018-06-01 12:00:12.400000","2018-06-01 12:00:12.500000","2018-06-01 12:00:12.800000","2018-06-01 12:00:14.300000","2018-06-01 12:00:15.200000","2018-06-01 12:00:15.300000","2018-06-01 12:00:17.700000","2018-06-01 12:00:17.800000","2018-06-01 12:00:17.900000","2018-06-01 12:00:18.500000","2018-06-01 12:00:21.700000","2018-06-01 12:00:22.800000","2018-06-01 12:00:24.300000","2018-06-01 12:00:24.400000","2018-06-01 12:00:24.600000","2018-06-01 12:00:26.600000","2018-06-01 12:00:27.200000","2018-06-01 12:00:27.700000","2018-06-01 12:00:27.800000","2018-06-01 12:00:28.800000","2018-06-01 12:00:30.200000","2018-06-01 12:00:33.000000","2018-06-01 12:00:33.400000","2018-06-01 12:00:36.000000","2018-06-01 12:00:36.100000","2018-06-01 12:00:38.000000","2018-06-01 12:00:38.500000","2018-06-01 12:00:39.400000","2018-06-01 12:00:39.800000","2018-06-01 12:00:41.700000","2018-06-01 12:00:43.100000","2018-06-01 12:00:43.500000","2018-06-01 12:00:45.500000","2018-06-01 12:00:45.900000","2018-06-01 12:00:46.600000","2018-06-01 12:00:46.800000","2018-06-01 12:00:47.100000","2018-06-01 12:00:47.500000","2018-06-01 12:00:47.800000","2018-06-01 12:00:47.900000","2018-06-01 12:00:48.900000","2018-06-01 12:00:49.000000","2018-06-01 12:00:51.800000","2018-06-01 12:00:52.000000","2018-06-01 12:00:52.300000","2018-06-01 12:00:52.600000","2018-06-01 12:00:52.700000","2018-06-01 12:00:53.100000","2018-06-01 12:00:54.800000","2018-06-01 12:00:54.900000","2018-06-01 12:00:55.800000","2018-06-01 12:00:56.400000","2018-06-01 12:00:56.500000","2018-06-01 12:00:57.200000","2018-06-01 12:00:59.300000","2018-06-01 12:00:59.500000","2018-06-01 12:01:00.000000","2018-06-01 12:01:02.500000","2018-06-01 12:01:02.700000","2018-06-01 12:01:03.000000","2018-06-01 12:01:04.700000","2018-06-01 12:01:06.100000","2018-06-01 12:01:07.900000","2018-06-01 12:01:08.600000","2018-06-01 12:01:12.800000","2018-06-01 12:01:16.200000","2018-06-01 12:01:16.400000","2018-06-01 12:01:17.100000","2018-06-01 12:01:19.700000","2018-06-01 12:01:20.600000","2018-06-01 12:01:22.200000","2018-06-01 12:01:25.400000","2018-06-01 12:01:25.700000","2018-06-01 12:01:26.600000","2018-06-01 12:01:28.000000","2018-06-01 12:01:28.200000","2018-06-01 12:01:29.100000","2018-06-01 12:01:30.000000","2018-06-01 12:01:30.200000","2018-06-01 12:01:32.100000","2018-06-01 12:01:32.500000","2018-06-01 12:01:33.000000","2018-06-01 12:01:33.900000","2018-06-01 12:01:34.200000","2018-06-01 12:01:36.300000","2018-06-01 12:01:36.700000","2018-06-01 12:01:37.400000","2018-06-01 12:01:37.800000","2018-06-01 12:01:38.100000","2018-06-01 12:01:38.800000","2018-06-01 12:01:39.200000","2018-06-01 12:01:39.400000","2018-06-01 12:01:39.600000","2018-06-01 12:01:41.300000","2018-06-01 12:01:43.000000","2018-06-01 12:01:43.300000","2018-06-01 12:01:44.300000","2018-06-01 12:01:44.500000","2018-06-01 12:01:44.900000","2018-06-01 12:01:45.200000","2018-06-01 12:01:46.900000","2018-06-01 12:01:48.600000","2018-06-01 12:01:50.000000","2018-06-01 12:01:52.400000","2018-06-01 12:01:53.100000","2018-06-01 12:01:53.400000","2018-06-01 12:01:54.000000","2018-06-01 12:01:55.400000","2018-06-01 12:01:56.100000","2018-06-01 12:01:59.700000","2018-06-01 12:01:59.900000","2018-06-01 12:02:00.000000","2018-06-01 12:02:01.400000","2018-06-01 12:02:01.700000","2018-06-01 12:02:02.300000","2018-06-01 12:02:03.400000","2018-06-01 12:02:03.500000","2018-06-01 12:02:06.300000","2018-06-01 12:02:06.600000","2018-06-01 12:02:09.800000","2018-06-01 12:02:11.000000","2018-06-01 12:02:12.300000","2018-06-01 12:02:12.500000","2018-06-01 12:02:14.700000","2018-06-01 12:02:14.800000","2018-06-01 12:02:15.700000","2018-06-01 12:02:15.900000","2018-06-01 12:02:16.500000","2018-06-01 12:02:18.100000","2018-06-01 12:02:18.400000","2018-06-01 12:02:20.600000","2018-06-01 12:02:22.000000","2018-06-01 12:02:22.600000","2018-06-01 12:02:23.500000","2018-06-01 12:02:23.800000","2018-06-01 12:02:27.000000","2018-06-01 12:02:28.000000","2018-06-01 12:02:29.200000","2018-06-01 12:02:30.400000","2018-06-01 12:02:33.600000","2018-06-01 12:02:36.000000","2018-06-01 12:02:36.300000","2018-06-01 12:02:36.500000","2018-06-01 12:02:36.800000","2018-06-01 12:02:37.500000","2018-06-01 12:02:37.900000","2018-06-01 12:02:39.500000","2018-06-01 12:02:39.800000","2018-06-01 12:02:40.700000","2018-06-01 12:02:40.900000","2018-06-01 12:02:41.100000","2018-06-01 12:02:42.000000","2018-06-01 12:02:43.100000","2018-06-01 12:02:43.700000","2018-06-01 12:02:44.200000","2018-06-01 12:02:44.300000","2018-06-01 12:02:44.900000","2018-06-01 12:02:45.600000","2018-06-01 12:02:48.300000","2018-06-01 12:02:49.300000","2018-06-01 12:02:51.000000","2018-06-01 12:02:52.900000","2018-06-01 12:02:54.500000","2018-06-01 12:02:54.800000","2018-06-01 12:02:55.300000","2018-06-01 12:02:55.700000","2018-06-01 12:02:59.600000","2018-06-01 12:03:01.400000","2018-06-01 12:03:05.600000","2018-06-01 12:03:05.700000","2018-06-01 12:03:06.200000","2018-06-01 12:03:06.500000","2018-06-01 12:03:07.900000","2018-06-01 12:03:09.200000","2018-06-01 12:03:09.400000","2018-06-01 12:03:09.700000","2018-06-01 12:03:12.400000","2018-06-01 12:03:16.100000","2018-06-01 12:03:17.400000","2018-06-01 12:03:18.300000","2018-06-01 12:03:18.700000","2018-06-01 12:03:23.900000","2018-06-01 12:03:24.400000","2018-06-01 12:03:24.500000","2018-06-01 12:03:25.200000","2018-06-01 12:03:25.700000","2018-06-01 12:03:27.500000","2018-06-01 12:03:27.800000","2018-06-01 12:03:28.300000","2018-06-01 12:03:28.900000","2018-06-01 12:03:31.400000","2018-06-01 12:03:32.000000","2018-06-01 12:03:34.100000","2018-06-01 12:03:34.200000","2018-06-01 12:03:35.200000","2018-06-01 12:03:35.300000","2018-06-01 12:03:35.400000","2018-06-01 12:03:36.500000","2018-06-01 12:03:37.200000","2018-06-01 12:03:38.500000","2018-06-01 12:03:39.300000","2018-06-01 12:03:39.900000","2018-06-01 12:03:40.400000","2018-06-01 12:03:40.600000","2018-06-01 12:03:41.400000","2018-06-01 12:03:45.500000","2018-06-01 12:03:45.600000","2018-06-01 12:03:46.200000","2018-06-01 12:03:46.400000","2018-06-01 12:03:46.600000","2018-06-01 12:03:47.300000","2018-06-01 12:03:47.500000","2018-06-01 12:03:50.100000","2018-06-01 12:03:50.800000","2018-06-01 12:03:51.500000","2018-06-01 12:03:52.400000","2018-06-01 12:03:54.600000","2018-06-01 12:03:54.800000","2018-06-01 12:03:55.300000","2018-06-01 12:03:57.100000","2018-06-01 12:03:57.600000","2018-06-01 12:03:58.700000","2018-06-01 12:03:59.800000","2018-06-01 12:04:01.300000","2018-06-01 12:04:01.900000","2018-06-01 12:04:02.500000","2018-06-01 12:04:03.100000","2018-06-01 12:04:04.700000","2018-06-01 12:04:05.700000","2018-06-01 12:04:06.000000","2018-06-01 12:04:08.700000","2018-06-01 12:04:08.800000","2018-06-01 12:04:09.300000","2018-06-01 12:04:09.600000","2018-06-01 12:04:11.600000","2018-06-01 12:04:12.600000","2018-06-01 12:04:13.500000","2018-06-01 12:04:13.900000","2018-06-01 12:04:14.200000","2018-06-01 12:04:15.900000","2018-06-01 12:04:16.000000","2018-06-01 12:04:16.100000","2018-06-01 12:04:16.400000","2018-06-01 12:04:16.800000","2018-06-01 12:04:17.600000","2018-06-01 12:04:19.200000","2018-06-01 12:04:19.300000","2018-06-01 12:04:20.500000","2018-06-01 12:04:21.900000","2018-06-01 12:04:22.900000","2018-06-01 12:04:24.000000","2018-06-01 12:04:24.300000","2018-06-01 12:04:24.500000","2018-06-01 12:04:25.300000","2018-06-01 12:04:26.400000","2018-06-01 12:04:27.200000","2018-06-01 12:04:28.500000","2018-06-01 12:04:29.600000","2018-06-01 12:04:30.000000","2018-06-01 12:04:30.100000","2018-06-01 12:04:30.800000","2018-06-01 12:04:31.600000","2018-06-01 12:04:33.900000","2018-06-01 12:04:35.200000","2018-06-01 12:04:35.500000","2018-06-01 12:04:35.600000","2018-06-01 12:04:36.000000","2018-06-01 12:04:36.300000","2018-06-01 12:04:37.200000","2018-06-01 12:04:37.300000","2018-06-01 12:04:37.800000","2018-06-01 12:04:42.100000","2018-06-01 12:04:46.300000","2018-06-01 12:04:47.200000","2018-06-01 12:04:48.300000","2018-06-01 12:04:48.600000","2018-06-01 12:04:49.100000","2018-06-01 12:04:50.000000","2018-06-01 12:04:50.200000","2018-06-01 12:04:51.100000","2018-06-01 12:04:51.800000","2018-06-01 12:04:52.800000","2018-06-01 12:04:53.900000","2018-06-01 12:04:54.300000","2018-06-01 12:04:54.400000","2018-06-01 12:04:55.000000","2018-06-01 12:04:55.400000","2018-06-01 12:04:55.800000","2018-06-01 12:04:56.900000","2018-06-01 12:04:58.500000","2018-06-01 12:04:59.600000"],"xaxis":"x","y":[224.88,224.93,225.01,225.16,225.43,225.56,225.74,225.76,225.76,225.8,225.74,225.68,225.62,225.51,225.32,225.21,225.01,224.61,224.4,224.15,223.97,223.92,223.86,223.81,223.86,223.82,223.85,223.84,223.75,223.61,223.56,223.45,223.38,223.56,223.51,223.48,223.34,223.32,223.32,223.32,223.28,223.36,223.45,223.49,223.46,223.43,223.34,223.35,223.36,223.28,223.17,223.11,223.17,223.28,223.39,223.49,223.6,223.66,223.61,223.65,223.73,223.94,224.34,224.64,224.88,225.13,225.41,225.71,226.2,226.58,226.91,227.17,227.71,228.17,228.59,228.85,229.14,229.45,229.73,230.02,230.29,230.38,230.45,230.52,230.5,230.42,230.41,230.25,230.12,229.78,229.51,229.35,229.17,229.02,228.8,228.7,228.6,228.47,228.31,228.22,228.27,228.35,228.34,228.34,228.16,228.1,228.15,228.21,228.29,228.5,228.63,228.75,228.86,228.91,228.99,228.97,229.06,229.31,229.44,229.79,229.97,229.96,229.83,229.67,229.5,229.32,229.38,229.31,229.39,229.39,229.5,229.55,229.66,229.77,229.68,229.57,229.71,229.74,229.65,229.61,229.67,229.72,229.77,229.8,229.85,229.92,230.13,230.39,230.53,230.56,230.64,230.73,230.75,230.77,230.73,230.57,230.33,230.18,229.93,229.63,229.33,229.11,228.85,228.36,227.94,227.7,227.46,227.39,227.29,227.4,227.57,227.78,228.06,228.25,228.34,228.32,228.42,228.5,228.53,228.4,228.32,228.04,227.73,227.5,227.33,227.2,226.98,226.78,226.51,226.19,226.01,225.86,225.51,225.12,224.69,224.43,224.25,224.04,223.88,223.7,223.41,223.03,222.68,222.48,222.33,222.13,221.85,221.63,221.35,221.04,220.79,220.57,220.32,220.14,220.03,219.97,219.86,219.75,219.77,219.77,219.94,220.07,220.1,220.17,220.39,220.68,220.9,221.1,221.35,221.51,221.76,221.99,222.33,222.54,222.62,222.66,222.67,222.65,222.63,222.74,222.8,222.96,222.95,222.91,222.73,222.67,222.5,222.41,222.31,222.25,222.37,222.64,222.92,223.36,223.66,223.88,223.98,224.17,224.29,224.32,224.37,224.41,224.29,224.2,224.06,223.92,223.81,223.56,223.42,223.37,223.31,223.36,223.54,223.64,223.6,223.53,223.52,223.63,223.7,223.81,224.04,224.27,224.6,224.93,225.16,225.42,225.8,226.34,226.8,227.17,227.7,228.15,228.65,229.05,229.41,229.77,230.08,230.4,230.66,230.76,230.79,230.89,231.03,231.25,231.49,231.7],"yaxis":"y","type":"scatter"},{"hovertemplate":"Sym=FISH
Timestamp=%{x}
Price=%{y}","legendgroup":"FISH","marker":{"symbol":"circle"},"mode":"markers","name":"FISH","showlegend":true,"x":["2018-06-01 12:00:00.500000","2018-06-01 12:00:01.000000","2018-06-01 12:00:01.900000","2018-06-01 12:00:02.400000","2018-06-01 12:00:02.600000","2018-06-01 12:00:02.700000","2018-06-01 12:00:03.300000","2018-06-01 12:00:03.700000","2018-06-01 12:00:03.800000","2018-06-01 12:00:04.200000","2018-06-01 12:00:05.300000","2018-06-01 12:00:05.800000","2018-06-01 12:00:06.800000","2018-06-01 12:00:06.900000","2018-06-01 12:00:08.400000","2018-06-01 12:00:09.500000","2018-06-01 12:00:10.100000","2018-06-01 12:00:10.600000","2018-06-01 12:00:11.800000","2018-06-01 12:00:12.600000","2018-06-01 12:00:12.900000","2018-06-01 12:00:13.500000","2018-06-01 12:00:13.600000","2018-06-01 12:00:14.200000","2018-06-01 12:00:14.700000","2018-06-01 12:00:15.100000","2018-06-01 12:00:15.500000","2018-06-01 12:00:15.700000","2018-06-01 12:00:15.800000","2018-06-01 12:00:16.800000","2018-06-01 12:00:18.100000","2018-06-01 12:00:19.100000","2018-06-01 12:00:19.500000","2018-06-01 12:00:19.600000","2018-06-01 12:00:20.200000","2018-06-01 12:00:21.900000","2018-06-01 12:00:22.000000","2018-06-01 12:00:22.500000","2018-06-01 12:00:23.000000","2018-06-01 12:00:23.300000","2018-06-01 12:00:23.600000","2018-06-01 12:00:23.700000","2018-06-01 12:00:24.100000","2018-06-01 12:00:25.800000","2018-06-01 12:00:26.300000","2018-06-01 12:00:26.400000","2018-06-01 12:00:26.800000","2018-06-01 12:00:27.500000","2018-06-01 12:00:28.200000","2018-06-01 12:00:28.300000","2018-06-01 12:00:28.500000","2018-06-01 12:00:29.100000","2018-06-01 12:00:29.200000","2018-06-01 12:00:30.000000","2018-06-01 12:00:30.700000","2018-06-01 12:00:31.200000","2018-06-01 12:00:31.800000","2018-06-01 12:00:32.300000","2018-06-01 12:00:32.400000","2018-06-01 12:00:32.800000","2018-06-01 12:00:34.100000","2018-06-01 12:00:35.600000","2018-06-01 12:00:35.800000","2018-06-01 12:00:36.200000","2018-06-01 12:00:36.500000","2018-06-01 12:00:37.600000","2018-06-01 12:00:38.400000","2018-06-01 12:00:38.600000","2018-06-01 12:00:38.900000","2018-06-01 12:00:39.000000","2018-06-01 12:00:39.200000","2018-06-01 12:00:40.700000","2018-06-01 12:00:41.900000","2018-06-01 12:00:42.100000","2018-06-01 12:00:42.900000","2018-06-01 12:00:43.200000","2018-06-01 12:00:44.300000","2018-06-01 12:00:45.600000","2018-06-01 12:00:45.700000","2018-06-01 12:00:46.100000","2018-06-01 12:00:46.200000","2018-06-01 12:00:47.700000","2018-06-01 12:00:48.100000","2018-06-01 12:00:48.400000","2018-06-01 12:00:49.400000","2018-06-01 12:00:49.500000","2018-06-01 12:00:49.600000","2018-06-01 12:00:50.100000","2018-06-01 12:00:50.600000","2018-06-01 12:00:50.900000","2018-06-01 12:00:51.000000","2018-06-01 12:00:51.900000","2018-06-01 12:00:52.900000","2018-06-01 12:00:53.600000","2018-06-01 12:00:53.700000","2018-06-01 12:00:54.000000","2018-06-01 12:00:54.400000","2018-06-01 12:00:55.600000","2018-06-01 12:00:56.000000","2018-06-01 12:00:56.100000","2018-06-01 12:00:56.200000","2018-06-01 12:00:56.900000","2018-06-01 12:00:57.300000","2018-06-01 12:00:57.600000","2018-06-01 12:00:57.800000","2018-06-01 12:00:58.100000","2018-06-01 12:00:58.400000","2018-06-01 12:00:58.600000","2018-06-01 12:00:58.800000","2018-06-01 12:00:59.900000","2018-06-01 12:01:00.600000","2018-06-01 12:01:00.700000","2018-06-01 12:01:00.900000","2018-06-01 12:01:01.700000","2018-06-01 12:01:03.800000","2018-06-01 12:01:03.900000","2018-06-01 12:01:04.200000","2018-06-01 12:01:04.600000","2018-06-01 12:01:04.800000","2018-06-01 12:01:05.300000","2018-06-01 12:01:05.400000","2018-06-01 12:01:05.600000","2018-06-01 12:01:05.700000","2018-06-01 12:01:05.900000","2018-06-01 12:01:06.200000","2018-06-01 12:01:07.700000","2018-06-01 12:01:08.000000","2018-06-01 12:01:08.900000","2018-06-01 12:01:09.100000","2018-06-01 12:01:09.400000","2018-06-01 12:01:10.100000","2018-06-01 12:01:10.200000","2018-06-01 12:01:10.600000","2018-06-01 12:01:11.100000","2018-06-01 12:01:12.000000","2018-06-01 12:01:12.200000","2018-06-01 12:01:12.900000","2018-06-01 12:01:13.100000","2018-06-01 12:01:13.200000","2018-06-01 12:01:13.400000","2018-06-01 12:01:14.000000","2018-06-01 12:01:14.300000","2018-06-01 12:01:14.900000","2018-06-01 12:01:15.100000","2018-06-01 12:01:15.300000","2018-06-01 12:01:16.300000","2018-06-01 12:01:18.200000","2018-06-01 12:01:18.800000","2018-06-01 12:01:19.000000","2018-06-01 12:01:19.100000","2018-06-01 12:01:19.200000","2018-06-01 12:01:20.000000","2018-06-01 12:01:21.000000","2018-06-01 12:01:21.400000","2018-06-01 12:01:22.100000","2018-06-01 12:01:22.400000","2018-06-01 12:01:23.200000","2018-06-01 12:01:23.300000","2018-06-01 12:01:23.500000","2018-06-01 12:01:23.900000","2018-06-01 12:01:24.100000","2018-06-01 12:01:24.300000","2018-06-01 12:01:24.400000","2018-06-01 12:01:25.100000","2018-06-01 12:01:25.900000","2018-06-01 12:01:26.300000","2018-06-01 12:01:27.600000","2018-06-01 12:01:28.100000","2018-06-01 12:01:28.900000","2018-06-01 12:01:29.500000","2018-06-01 12:01:30.400000","2018-06-01 12:01:30.500000","2018-06-01 12:01:30.700000","2018-06-01 12:01:30.800000","2018-06-01 12:01:31.000000","2018-06-01 12:01:31.600000","2018-06-01 12:01:31.900000","2018-06-01 12:01:32.000000","2018-06-01 12:01:32.600000","2018-06-01 12:01:32.700000","2018-06-01 12:01:35.100000","2018-06-01 12:01:35.500000","2018-06-01 12:01:35.600000","2018-06-01 12:01:36.100000","2018-06-01 12:01:37.200000","2018-06-01 12:01:37.700000","2018-06-01 12:01:38.300000","2018-06-01 12:01:41.000000","2018-06-01 12:01:42.900000","2018-06-01 12:01:43.100000","2018-06-01 12:01:43.500000","2018-06-01 12:01:43.900000","2018-06-01 12:01:45.300000","2018-06-01 12:01:47.700000","2018-06-01 12:01:48.400000","2018-06-01 12:01:48.500000","2018-06-01 12:01:49.200000","2018-06-01 12:01:49.600000","2018-06-01 12:01:50.200000","2018-06-01 12:01:50.500000","2018-06-01 12:01:50.700000","2018-06-01 12:01:52.000000","2018-06-01 12:01:52.100000","2018-06-01 12:01:54.300000","2018-06-01 12:01:54.600000","2018-06-01 12:01:54.900000","2018-06-01 12:01:55.600000","2018-06-01 12:01:55.700000","2018-06-01 12:01:55.800000","2018-06-01 12:01:56.600000","2018-06-01 12:01:56.800000","2018-06-01 12:01:57.100000","2018-06-01 12:01:57.800000","2018-06-01 12:01:57.900000","2018-06-01 12:01:58.200000","2018-06-01 12:01:58.700000","2018-06-01 12:01:58.800000","2018-06-01 12:01:58.900000","2018-06-01 12:01:59.200000","2018-06-01 12:01:59.400000","2018-06-01 12:02:00.500000","2018-06-01 12:02:00.700000","2018-06-01 12:02:02.200000","2018-06-01 12:02:02.700000","2018-06-01 12:02:03.200000","2018-06-01 12:02:04.000000","2018-06-01 12:02:04.100000","2018-06-01 12:02:04.300000","2018-06-01 12:02:04.800000","2018-06-01 12:02:05.100000","2018-06-01 12:02:05.300000","2018-06-01 12:02:06.900000","2018-06-01 12:02:07.000000","2018-06-01 12:02:07.500000","2018-06-01 12:02:07.900000","2018-06-01 12:02:08.900000","2018-06-01 12:02:09.100000","2018-06-01 12:02:10.700000","2018-06-01 12:02:11.700000","2018-06-01 12:02:13.100000","2018-06-01 12:02:13.400000","2018-06-01 12:02:13.500000","2018-06-01 12:02:13.700000","2018-06-01 12:02:13.900000","2018-06-01 12:02:15.500000","2018-06-01 12:02:16.400000","2018-06-01 12:02:16.900000","2018-06-01 12:02:17.000000","2018-06-01 12:02:17.100000","2018-06-01 12:02:17.200000","2018-06-01 12:02:17.900000","2018-06-01 12:02:18.000000","2018-06-01 12:02:18.200000","2018-06-01 12:02:18.800000","2018-06-01 12:02:19.500000","2018-06-01 12:02:20.100000","2018-06-01 12:02:20.200000","2018-06-01 12:02:21.100000","2018-06-01 12:02:21.900000","2018-06-01 12:02:22.700000","2018-06-01 12:02:23.300000","2018-06-01 12:02:24.200000","2018-06-01 12:02:24.400000","2018-06-01 12:02:25.400000","2018-06-01 12:02:26.000000","2018-06-01 12:02:26.300000","2018-06-01 12:02:26.600000","2018-06-01 12:02:26.700000","2018-06-01 12:02:27.700000","2018-06-01 12:02:27.800000","2018-06-01 12:02:28.300000","2018-06-01 12:02:30.100000","2018-06-01 12:02:32.200000","2018-06-01 12:02:32.600000","2018-06-01 12:02:32.700000","2018-06-01 12:02:33.100000","2018-06-01 12:02:35.000000","2018-06-01 12:02:35.300000","2018-06-01 12:02:36.100000","2018-06-01 12:02:36.700000","2018-06-01 12:02:36.900000","2018-06-01 12:02:37.200000","2018-06-01 12:02:37.300000","2018-06-01 12:02:37.600000","2018-06-01 12:02:38.100000","2018-06-01 12:02:38.500000","2018-06-01 12:02:38.800000","2018-06-01 12:02:41.800000","2018-06-01 12:02:42.900000","2018-06-01 12:02:43.400000","2018-06-01 12:02:43.800000","2018-06-01 12:02:44.500000","2018-06-01 12:02:45.700000","2018-06-01 12:02:46.000000","2018-06-01 12:02:46.200000","2018-06-01 12:02:46.300000","2018-06-01 12:02:46.400000","2018-06-01 12:02:46.800000","2018-06-01 12:02:47.700000","2018-06-01 12:02:48.700000","2018-06-01 12:02:48.800000","2018-06-01 12:02:48.900000","2018-06-01 12:02:49.400000","2018-06-01 12:02:49.700000","2018-06-01 12:02:50.500000","2018-06-01 12:02:51.200000","2018-06-01 12:02:51.300000","2018-06-01 12:02:52.700000","2018-06-01 12:02:54.000000","2018-06-01 12:02:54.100000","2018-06-01 12:02:54.300000","2018-06-01 12:02:55.500000","2018-06-01 12:02:55.600000","2018-06-01 12:02:55.900000","2018-06-01 12:02:56.300000","2018-06-01 12:02:56.700000","2018-06-01 12:02:57.600000","2018-06-01 12:02:57.700000","2018-06-01 12:02:58.900000","2018-06-01 12:02:59.200000","2018-06-01 12:03:00.200000","2018-06-01 12:03:00.400000","2018-06-01 12:03:00.900000","2018-06-01 12:03:02.600000","2018-06-01 12:03:02.800000","2018-06-01 12:03:03.000000","2018-06-01 12:03:04.100000","2018-06-01 12:03:05.000000","2018-06-01 12:03:05.800000","2018-06-01 12:03:05.900000","2018-06-01 12:03:06.600000","2018-06-01 12:03:06.700000","2018-06-01 12:03:06.800000","2018-06-01 12:03:07.400000","2018-06-01 12:03:08.300000","2018-06-01 12:03:08.500000","2018-06-01 12:03:08.800000","2018-06-01 12:03:09.100000","2018-06-01 12:03:09.300000","2018-06-01 12:03:09.600000","2018-06-01 12:03:10.300000","2018-06-01 12:03:12.100000","2018-06-01 12:03:12.600000","2018-06-01 12:03:12.700000","2018-06-01 12:03:12.900000","2018-06-01 12:03:13.700000","2018-06-01 12:03:13.900000","2018-06-01 12:03:14.000000","2018-06-01 12:03:14.300000","2018-06-01 12:03:14.700000","2018-06-01 12:03:15.200000","2018-06-01 12:03:15.300000","2018-06-01 12:03:15.400000","2018-06-01 12:03:15.500000","2018-06-01 12:03:15.600000","2018-06-01 12:03:15.800000","2018-06-01 12:03:15.900000","2018-06-01 12:03:16.200000","2018-06-01 12:03:16.400000","2018-06-01 12:03:16.500000","2018-06-01 12:03:16.700000","2018-06-01 12:03:16.800000","2018-06-01 12:03:17.200000","2018-06-01 12:03:17.500000","2018-06-01 12:03:18.900000","2018-06-01 12:03:19.100000","2018-06-01 12:03:19.200000","2018-06-01 12:03:19.500000","2018-06-01 12:03:19.600000","2018-06-01 12:03:19.700000","2018-06-01 12:03:19.800000","2018-06-01 12:03:20.100000","2018-06-01 12:03:20.200000","2018-06-01 12:03:21.500000","2018-06-01 12:03:21.600000","2018-06-01 12:03:22.000000","2018-06-01 12:03:22.900000","2018-06-01 12:03:23.100000","2018-06-01 12:03:24.700000","2018-06-01 12:03:25.000000","2018-06-01 12:03:26.000000","2018-06-01 12:03:26.400000","2018-06-01 12:03:26.500000","2018-06-01 12:03:26.600000","2018-06-01 12:03:27.400000","2018-06-01 12:03:28.200000","2018-06-01 12:03:28.600000","2018-06-01 12:03:30.000000","2018-06-01 12:03:30.100000","2018-06-01 12:03:31.600000","2018-06-01 12:03:32.300000","2018-06-01 12:03:33.100000","2018-06-01 12:03:33.500000","2018-06-01 12:03:33.700000","2018-06-01 12:03:33.900000","2018-06-01 12:03:34.000000","2018-06-01 12:03:35.100000","2018-06-01 12:03:35.600000","2018-06-01 12:03:36.700000","2018-06-01 12:03:37.300000","2018-06-01 12:03:37.700000","2018-06-01 12:03:37.800000","2018-06-01 12:03:39.000000","2018-06-01 12:03:39.500000","2018-06-01 12:03:39.700000","2018-06-01 12:03:39.800000","2018-06-01 12:03:40.100000","2018-06-01 12:03:40.500000","2018-06-01 12:03:40.700000","2018-06-01 12:03:41.000000","2018-06-01 12:03:41.600000","2018-06-01 12:03:41.900000","2018-06-01 12:03:42.000000","2018-06-01 12:03:42.100000","2018-06-01 12:03:42.300000","2018-06-01 12:03:42.400000","2018-06-01 12:03:43.200000","2018-06-01 12:03:43.800000","2018-06-01 12:03:44.000000","2018-06-01 12:03:44.100000","2018-06-01 12:03:44.600000","2018-06-01 12:03:44.700000","2018-06-01 12:03:46.900000","2018-06-01 12:03:47.400000","2018-06-01 12:03:48.000000","2018-06-01 12:03:48.500000","2018-06-01 12:03:48.700000","2018-06-01 12:03:48.800000","2018-06-01 12:03:48.900000","2018-06-01 12:03:49.000000","2018-06-01 12:03:49.300000","2018-06-01 12:03:49.800000","2018-06-01 12:03:50.900000","2018-06-01 12:03:51.200000","2018-06-01 12:03:52.200000","2018-06-01 12:03:52.300000","2018-06-01 12:03:52.900000","2018-06-01 12:03:53.400000","2018-06-01 12:03:53.500000","2018-06-01 12:03:53.700000","2018-06-01 12:03:53.900000","2018-06-01 12:03:54.500000","2018-06-01 12:03:54.900000","2018-06-01 12:03:55.000000","2018-06-01 12:03:55.800000","2018-06-01 12:03:56.100000","2018-06-01 12:03:56.200000","2018-06-01 12:03:58.500000","2018-06-01 12:03:58.600000","2018-06-01 12:03:59.500000","2018-06-01 12:03:59.900000","2018-06-01 12:04:00.200000","2018-06-01 12:04:02.300000","2018-06-01 12:04:02.700000","2018-06-01 12:04:03.200000","2018-06-01 12:04:03.300000","2018-06-01 12:04:03.500000","2018-06-01 12:04:05.600000","2018-06-01 12:04:05.800000","2018-06-01 12:04:07.800000","2018-06-01 12:04:08.000000","2018-06-01 12:04:08.400000","2018-06-01 12:04:08.600000","2018-06-01 12:04:09.100000","2018-06-01 12:04:09.400000","2018-06-01 12:04:09.900000","2018-06-01 12:04:10.600000","2018-06-01 12:04:10.700000","2018-06-01 12:04:11.200000","2018-06-01 12:04:11.500000","2018-06-01 12:04:12.400000","2018-06-01 12:04:12.700000","2018-06-01 12:04:13.100000","2018-06-01 12:04:13.300000","2018-06-01 12:04:13.800000","2018-06-01 12:04:14.900000","2018-06-01 12:04:15.300000","2018-06-01 12:04:17.000000","2018-06-01 12:04:17.700000","2018-06-01 12:04:17.900000","2018-06-01 12:04:18.800000","2018-06-01 12:04:19.000000","2018-06-01 12:04:19.500000","2018-06-01 12:04:19.800000","2018-06-01 12:04:21.800000","2018-06-01 12:04:22.000000","2018-06-01 12:04:22.400000","2018-06-01 12:04:22.700000","2018-06-01 12:04:23.000000","2018-06-01 12:04:23.100000","2018-06-01 12:04:23.500000","2018-06-01 12:04:23.600000","2018-06-01 12:04:24.200000","2018-06-01 12:04:25.000000","2018-06-01 12:04:25.100000","2018-06-01 12:04:26.200000","2018-06-01 12:04:26.300000","2018-06-01 12:04:26.500000","2018-06-01 12:04:27.000000","2018-06-01 12:04:27.400000","2018-06-01 12:04:27.500000","2018-06-01 12:04:28.300000","2018-06-01 12:04:28.800000","2018-06-01 12:04:29.300000","2018-06-01 12:04:29.500000","2018-06-01 12:04:29.700000","2018-06-01 12:04:30.400000","2018-06-01 12:04:30.600000","2018-06-01 12:04:30.900000","2018-06-01 12:04:31.500000","2018-06-01 12:04:31.700000","2018-06-01 12:04:32.400000","2018-06-01 12:04:33.100000","2018-06-01 12:04:33.200000","2018-06-01 12:04:33.300000","2018-06-01 12:04:34.000000","2018-06-01 12:04:35.400000","2018-06-01 12:04:36.800000","2018-06-01 12:04:37.400000","2018-06-01 12:04:37.500000","2018-06-01 12:04:37.700000","2018-06-01 12:04:37.900000","2018-06-01 12:04:38.000000","2018-06-01 12:04:38.300000","2018-06-01 12:04:38.700000","2018-06-01 12:04:39.100000","2018-06-01 12:04:39.500000","2018-06-01 12:04:39.700000","2018-06-01 12:04:39.800000","2018-06-01 12:04:40.000000","2018-06-01 12:04:40.300000","2018-06-01 12:04:40.600000","2018-06-01 12:04:41.200000","2018-06-01 12:04:41.300000","2018-06-01 12:04:42.000000","2018-06-01 12:04:43.000000","2018-06-01 12:04:43.300000","2018-06-01 12:04:43.600000","2018-06-01 12:04:43.800000","2018-06-01 12:04:44.000000","2018-06-01 12:04:44.300000","2018-06-01 12:04:44.700000","2018-06-01 12:04:45.600000","2018-06-01 12:04:45.700000","2018-06-01 12:04:45.800000","2018-06-01 12:04:46.000000","2018-06-01 12:04:46.200000","2018-06-01 12:04:46.500000","2018-06-01 12:04:47.100000","2018-06-01 12:04:47.300000","2018-06-01 12:04:48.700000","2018-06-01 12:04:49.500000","2018-06-01 12:04:50.400000","2018-06-01 12:04:50.500000","2018-06-01 12:04:50.800000","2018-06-01 12:04:50.900000","2018-06-01 12:04:51.400000","2018-06-01 12:04:52.000000","2018-06-01 12:04:52.500000","2018-06-01 12:04:52.600000","2018-06-01 12:04:52.700000","2018-06-01 12:04:53.600000","2018-06-01 12:04:53.700000","2018-06-01 12:04:54.000000","2018-06-01 12:04:54.200000","2018-06-01 12:04:54.500000","2018-06-01 12:04:55.100000","2018-06-01 12:04:55.500000","2018-06-01 12:04:55.600000","2018-06-01 12:04:55.900000","2018-06-01 12:04:56.300000","2018-06-01 12:04:56.400000","2018-06-01 12:04:56.600000","2018-06-01 12:04:57.100000","2018-06-01 12:04:57.500000","2018-06-01 12:04:57.800000","2018-06-01 12:04:58.100000","2018-06-01 12:04:58.200000","2018-06-01 12:04:58.800000","2018-06-01 12:04:59.100000","2018-06-01 12:04:59.200000","2018-06-01 12:04:59.400000","2018-06-01 12:04:59.900000"],"xaxis":"x","y":[127.24,127.29,127.29,127.34,127.33,127.25,127.18,127.09,127.03,126.98,127.01,127.07,127.09,127.25,127.21,127.12,127.06,126.89,126.95,127,126.98,127.11,127.23,127.34,127.43,127.46,127.5,127.42,127.56,127.69,128,128.31,128.57,128.87,129.1,129.27,129.43,129.74,130,130.23,130.46,130.54,130.54,130.62,130.54,130.33,130.1,129.93,129.77,129.7,129.82,129.93,130.22,130.56,130.87,131.2,131.7,132.27,132.96,133.48,134,134.43,134.85,135.16,135.44,135.88,136.34,136.67,136.98,137.33,137.75,138,138.14,138.31,138.61,139,139.31,139.63,139.96,140.28,140.67,141.02,141.32,141.68,142.12,142.59,142.91,143.01,143.09,143.26,143.34,143.54,143.7,143.6,143.5,143.38,143.29,143.12,142.82,142.48,142.05,141.64,141.09,140.63,140.28,140.09,139.86,139.48,139.07,138.86,138.75,138.79,138.76,138.65,138.55,138.33,138,137.57,137.22,136.86,136.59,136.01,135.43,134.72,134.23,133.8,133.31,133,132.63,132.2,131.76,131.33,131.04,130.64,130.18,129.85,129.6,129.28,128.95,128.53,128.04,127.82,127.49,127.14,126.78,126.52,126.36,126.16,125.96,125.88,125.92,126.03,126.03,126.07,126.17,126,125.87,125.8,125.75,125.78,125.82,125.89,126.05,126.27,126.52,126.85,127.2,127.34,127.45,127.64,127.8,128.04,128.17,128.12,128.16,128.29,128.4,128.49,128.53,128.58,128.63,128.72,128.89,129.03,129.1,129.26,129.16,128.89,128.6,128.25,128.03,127.75,127.54,127.38,127.33,127.35,127.38,127.43,127.43,127.39,127.44,127.48,127.4,127.39,127.4,127.35,127.39,127.41,127.22,127.14,126.94,126.69,126.35,126.12,125.99,125.98,125.92,125.84,125.88,126.04,126.24,126.31,126.26,126.18,126.22,126.16,126.12,126.11,126.03,125.92,125.85,125.76,125.56,125.59,125.66,125.56,125.38,125.39,125.46,125.62,125.89,126.22,126.5,126.78,127.02,127.17,127.36,127.51,127.67,127.86,127.98,128.03,128.2,128.27,128.44,128.31,128.13,128.08,128.02,127.99,128.12,128.1,128.1,128.16,128.22,128.22,128.05,127.92,127.97,128.13,128.26,128.35,128.25,128.1,127.96,127.92,127.86,127.84,127.79,127.75,127.7,127.69,127.63,127.63,127.55,127.33,127.05,126.68,126.28,125.91,125.61,125.24,124.77,124.33,123.92,123.62,123.24,122.81,122.41,122,121.41,120.92,120.3,119.88,119.64,119.54,119.31,119.1,118.89,118.81,118.8,118.85,118.73,118.61,118.37,118.17,118,117.83,117.72,117.67,117.45,117.32,117.07,116.74,116.49,116.23,115.89,115.49,115.28,115.1,114.97,114.93,114.92,114.69,114.41,114.02,113.64,113.4,113.21,112.84,112.66,112.5,112.46,112.32,112.23,112.19,112.19,112.18,112.21,112.16,112.09,111.89,111.65,111.42,111.3,111.23,111.2,111.3,111.36,111.54,111.66,111.72,111.85,111.96,112.08,112.05,112.04,112.03,112.07,112.06,111.96,111.99,112.09,112.25,112.46,112.64,112.87,113.15,113.45,113.74,113.82,113.92,114.04,114.21,114.32,114.38,114.53,114.68,115,115.39,116.04,116.68,117.37,118.01,118.52,118.88,119.15,119.4,119.63,119.88,120.02,120.04,119.93,119.77,119.47,119.33,119.2,119.15,119.16,119.12,119.15,119.16,119.16,119.14,119.11,119.15,119.42,119.69,119.73,119.76,119.7,119.78,119.66,119.42,119.09,118.73,118.38,118.04,117.74,117.34,117.06,116.89,116.86,116.92,117.06,117.21,117.24,117.34,117.45,117.46,117.34,117.38,117.44,117.56,117.84,118.25,118.71,119.07,119.41,119.67,119.83,119.97,120.02,120.09,120.19,120.21,120.32,120.36,120.49,120.73,120.97,121.11,121.36,121.74,122.03,122.2,122.3,122.47,122.71,123.02,123.43,123.63,123.86,124.19,124.4,124.47,124.45,124.55,124.58,124.48,124.53,124.65,124.61,124.67,124.84,125.1,125.22,125.31,125.49,125.7,125.87,126.04,126.15,126.25,126.08,125.85,125.54,125.38,125.24,125.24,125.24,125.17,124.93,124.73,124.64,124.6,124.43,124.23,124.04,123.94,123.84,123.5,123.38,123.19,122.86,122.65,122.37,122.08,121.85,121.89,122.03,122.24,122.44,122.6,122.87,123.17,123.26,123.2,123.07,122.9,122.93,122.98,123.17,123.42,123.67,123.83,123.95,124,124.03,124.05,124.1,124.17,124.27,124.44,124.57,124.78,124.92,124.93,124.92,124.97,125.02,125.19,125.45,125.66,125.85,126.05,126.37,126.63,126.77,126.75,126.62,126.49,126.32,126.24,126.16,126.04,125.98,125.96,126.01,126.16,126.38,126.7,127.04,127.4,127.7,127.98,128.29,128.44,128.72,128.98,129.14,129.29,129.37],"yaxis":"y","type":"scatter"},{"hovertemplate":"Sym=DOG
Timestamp=%{x}
Price=%{y}","legendgroup":"DOG","marker":{"symbol":"circle"},"mode":"markers","name":"DOG","showlegend":true,"x":["2018-06-01 12:00:00.700000","2018-06-01 12:00:00.900000","2018-06-01 12:00:01.100000","2018-06-01 12:00:01.200000","2018-06-01 12:00:01.600000","2018-06-01 12:00:01.700000","2018-06-01 12:00:02.500000","2018-06-01 12:00:02.900000","2018-06-01 12:00:03.000000","2018-06-01 12:00:03.400000","2018-06-01 12:00:03.500000","2018-06-01 12:00:03.600000","2018-06-01 12:00:04.000000","2018-06-01 12:00:04.100000","2018-06-01 12:00:04.400000","2018-06-01 12:00:04.700000","2018-06-01 12:00:04.800000","2018-06-01 12:00:05.000000","2018-06-01 12:00:06.000000","2018-06-01 12:00:06.100000","2018-06-01 12:00:06.300000","2018-06-01 12:00:06.400000","2018-06-01 12:00:06.500000","2018-06-01 12:00:07.100000","2018-06-01 12:00:07.300000","2018-06-01 12:00:07.500000","2018-06-01 12:00:07.600000","2018-06-01 12:00:08.100000","2018-06-01 12:00:08.300000","2018-06-01 12:00:08.800000","2018-06-01 12:00:09.200000","2018-06-01 12:00:09.400000","2018-06-01 12:00:09.600000","2018-06-01 12:00:09.800000","2018-06-01 12:00:09.900000","2018-06-01 12:00:10.900000","2018-06-01 12:00:11.200000","2018-06-01 12:00:12.000000","2018-06-01 12:00:12.200000","2018-06-01 12:00:13.000000","2018-06-01 12:00:13.100000","2018-06-01 12:00:13.200000","2018-06-01 12:00:13.300000","2018-06-01 12:00:13.400000","2018-06-01 12:00:14.100000","2018-06-01 12:00:14.400000","2018-06-01 12:00:14.800000","2018-06-01 12:00:15.600000","2018-06-01 12:00:15.900000","2018-06-01 12:00:16.100000","2018-06-01 12:00:16.300000","2018-06-01 12:00:17.200000","2018-06-01 12:00:17.300000","2018-06-01 12:00:17.500000","2018-06-01 12:00:18.200000","2018-06-01 12:00:18.400000","2018-06-01 12:00:18.600000","2018-06-01 12:00:18.700000","2018-06-01 12:00:18.900000","2018-06-01 12:00:19.200000","2018-06-01 12:00:19.300000","2018-06-01 12:00:19.700000","2018-06-01 12:00:19.900000","2018-06-01 12:00:20.400000","2018-06-01 12:00:20.500000","2018-06-01 12:00:20.700000","2018-06-01 12:00:20.800000","2018-06-01 12:00:20.900000","2018-06-01 12:00:21.000000","2018-06-01 12:00:21.100000","2018-06-01 12:00:21.200000","2018-06-01 12:00:21.400000","2018-06-01 12:00:21.800000","2018-06-01 12:00:22.300000","2018-06-01 12:00:22.600000","2018-06-01 12:00:22.700000","2018-06-01 12:00:22.900000","2018-06-01 12:00:23.200000","2018-06-01 12:00:23.400000","2018-06-01 12:00:23.500000","2018-06-01 12:00:24.200000","2018-06-01 12:00:24.700000","2018-06-01 12:00:25.000000","2018-06-01 12:00:25.100000","2018-06-01 12:00:25.300000","2018-06-01 12:00:25.400000","2018-06-01 12:00:25.600000","2018-06-01 12:00:25.700000","2018-06-01 12:00:26.100000","2018-06-01 12:00:26.200000","2018-06-01 12:00:27.100000","2018-06-01 12:00:27.600000","2018-06-01 12:00:27.900000","2018-06-01 12:00:28.000000","2018-06-01 12:00:28.600000","2018-06-01 12:00:28.700000","2018-06-01 12:00:29.000000","2018-06-01 12:00:29.300000","2018-06-01 12:00:29.700000","2018-06-01 12:00:29.900000","2018-06-01 12:00:30.100000","2018-06-01 12:00:30.600000","2018-06-01 12:00:31.000000","2018-06-01 12:00:31.300000","2018-06-01 12:00:31.500000","2018-06-01 12:00:31.700000","2018-06-01 12:00:32.000000","2018-06-01 12:00:32.100000","2018-06-01 12:00:32.500000","2018-06-01 12:00:33.300000","2018-06-01 12:00:34.000000","2018-06-01 12:00:34.400000","2018-06-01 12:00:34.600000","2018-06-01 12:00:34.700000","2018-06-01 12:00:34.900000","2018-06-01 12:00:37.100000","2018-06-01 12:00:37.400000","2018-06-01 12:00:38.100000","2018-06-01 12:00:38.300000","2018-06-01 12:00:38.700000","2018-06-01 12:00:39.100000","2018-06-01 12:00:39.300000","2018-06-01 12:00:39.500000","2018-06-01 12:00:40.000000","2018-06-01 12:00:40.100000","2018-06-01 12:00:40.600000","2018-06-01 12:00:41.200000","2018-06-01 12:00:41.400000","2018-06-01 12:00:41.800000","2018-06-01 12:00:42.200000","2018-06-01 12:00:42.300000","2018-06-01 12:00:42.400000","2018-06-01 12:00:42.500000","2018-06-01 12:00:43.400000","2018-06-01 12:00:43.600000","2018-06-01 12:00:43.700000","2018-06-01 12:00:43.900000","2018-06-01 12:00:44.200000","2018-06-01 12:00:44.400000","2018-06-01 12:00:44.500000","2018-06-01 12:00:44.700000","2018-06-01 12:00:44.800000","2018-06-01 12:00:45.200000","2018-06-01 12:00:45.400000","2018-06-01 12:00:46.000000","2018-06-01 12:00:47.300000","2018-06-01 12:00:47.600000","2018-06-01 12:00:48.000000","2018-06-01 12:00:48.200000","2018-06-01 12:00:48.300000","2018-06-01 12:00:49.100000","2018-06-01 12:00:49.800000","2018-06-01 12:00:50.200000","2018-06-01 12:00:50.400000","2018-06-01 12:00:50.700000","2018-06-01 12:00:50.800000","2018-06-01 12:00:51.400000","2018-06-01 12:00:53.300000","2018-06-01 12:00:53.400000","2018-06-01 12:00:53.900000","2018-06-01 12:00:54.100000","2018-06-01 12:00:54.200000","2018-06-01 12:00:55.100000","2018-06-01 12:00:55.300000","2018-06-01 12:00:55.400000","2018-06-01 12:00:56.300000","2018-06-01 12:00:57.400000","2018-06-01 12:00:57.500000","2018-06-01 12:00:57.700000","2018-06-01 12:00:57.900000","2018-06-01 12:00:58.000000","2018-06-01 12:00:58.300000","2018-06-01 12:00:59.100000","2018-06-01 12:00:59.600000","2018-06-01 12:01:00.200000","2018-06-01 12:01:01.000000","2018-06-01 12:01:01.100000","2018-06-01 12:01:01.300000","2018-06-01 12:01:01.800000","2018-06-01 12:01:01.900000","2018-06-01 12:01:02.100000","2018-06-01 12:01:02.200000","2018-06-01 12:01:02.600000","2018-06-01 12:01:03.200000","2018-06-01 12:01:03.500000","2018-06-01 12:01:03.700000","2018-06-01 12:01:04.100000","2018-06-01 12:01:04.300000","2018-06-01 12:01:04.400000","2018-06-01 12:01:04.900000","2018-06-01 12:01:05.000000","2018-06-01 12:01:06.500000","2018-06-01 12:01:06.600000","2018-06-01 12:01:06.800000","2018-06-01 12:01:06.900000","2018-06-01 12:01:07.000000","2018-06-01 12:01:07.300000","2018-06-01 12:01:07.400000","2018-06-01 12:01:08.100000","2018-06-01 12:01:08.200000","2018-06-01 12:01:08.300000","2018-06-01 12:01:08.400000","2018-06-01 12:01:08.500000","2018-06-01 12:01:08.700000","2018-06-01 12:01:09.000000","2018-06-01 12:01:09.300000","2018-06-01 12:01:09.500000","2018-06-01 12:01:09.900000","2018-06-01 12:01:10.900000","2018-06-01 12:01:11.000000","2018-06-01 12:01:11.200000","2018-06-01 12:01:11.300000","2018-06-01 12:01:11.500000","2018-06-01 12:01:11.900000","2018-06-01 12:01:12.300000","2018-06-01 12:01:13.000000","2018-06-01 12:01:13.300000","2018-06-01 12:01:13.500000","2018-06-01 12:01:14.200000","2018-06-01 12:01:14.400000","2018-06-01 12:01:14.600000","2018-06-01 12:01:14.700000","2018-06-01 12:01:15.000000","2018-06-01 12:01:15.200000","2018-06-01 12:01:15.600000","2018-06-01 12:01:15.700000","2018-06-01 12:01:15.800000","2018-06-01 12:01:16.600000","2018-06-01 12:01:17.000000","2018-06-01 12:01:17.400000","2018-06-01 12:01:17.500000","2018-06-01 12:01:17.600000","2018-06-01 12:01:17.900000","2018-06-01 12:01:18.300000","2018-06-01 12:01:18.400000","2018-06-01 12:01:18.500000","2018-06-01 12:01:18.700000","2018-06-01 12:01:18.900000","2018-06-01 12:01:19.400000","2018-06-01 12:01:19.500000","2018-06-01 12:01:19.600000","2018-06-01 12:01:19.800000","2018-06-01 12:01:20.200000","2018-06-01 12:01:20.400000","2018-06-01 12:01:20.500000","2018-06-01 12:01:20.700000","2018-06-01 12:01:20.800000","2018-06-01 12:01:21.800000","2018-06-01 12:01:21.900000","2018-06-01 12:01:22.300000","2018-06-01 12:01:22.600000","2018-06-01 12:01:22.700000","2018-06-01 12:01:23.400000","2018-06-01 12:01:23.600000","2018-06-01 12:01:23.700000","2018-06-01 12:01:23.800000","2018-06-01 12:01:24.700000","2018-06-01 12:01:25.300000","2018-06-01 12:01:25.800000","2018-06-01 12:01:26.200000","2018-06-01 12:01:26.400000","2018-06-01 12:01:26.500000","2018-06-01 12:01:26.800000","2018-06-01 12:01:26.900000","2018-06-01 12:01:27.100000","2018-06-01 12:01:27.200000","2018-06-01 12:01:27.400000","2018-06-01 12:01:27.500000","2018-06-01 12:01:28.300000","2018-06-01 12:01:28.500000","2018-06-01 12:01:28.700000","2018-06-01 12:01:29.300000","2018-06-01 12:01:29.400000","2018-06-01 12:01:29.800000","2018-06-01 12:01:30.100000","2018-06-01 12:01:31.100000","2018-06-01 12:01:31.200000","2018-06-01 12:01:32.400000","2018-06-01 12:01:32.800000","2018-06-01 12:01:33.200000","2018-06-01 12:01:33.300000","2018-06-01 12:01:33.400000","2018-06-01 12:01:33.700000","2018-06-01 12:01:33.800000","2018-06-01 12:01:34.000000","2018-06-01 12:01:34.100000","2018-06-01 12:01:34.300000","2018-06-01 12:01:34.500000","2018-06-01 12:01:34.800000","2018-06-01 12:01:34.900000","2018-06-01 12:01:35.700000","2018-06-01 12:01:35.800000","2018-06-01 12:01:35.900000","2018-06-01 12:01:36.000000","2018-06-01 12:01:36.900000","2018-06-01 12:01:37.500000","2018-06-01 12:01:37.900000","2018-06-01 12:01:38.000000","2018-06-01 12:01:38.200000","2018-06-01 12:01:38.500000","2018-06-01 12:01:38.700000","2018-06-01 12:01:39.700000","2018-06-01 12:01:40.200000","2018-06-01 12:01:40.300000","2018-06-01 12:01:40.400000","2018-06-01 12:01:40.500000","2018-06-01 12:01:40.600000","2018-06-01 12:01:40.800000","2018-06-01 12:01:41.100000","2018-06-01 12:01:41.200000","2018-06-01 12:01:41.400000","2018-06-01 12:01:41.600000","2018-06-01 12:01:41.700000","2018-06-01 12:01:41.800000","2018-06-01 12:01:42.100000","2018-06-01 12:01:42.300000","2018-06-01 12:01:42.800000","2018-06-01 12:01:43.200000","2018-06-01 12:01:43.600000","2018-06-01 12:01:44.000000","2018-06-01 12:01:44.100000","2018-06-01 12:01:44.600000","2018-06-01 12:01:45.000000","2018-06-01 12:01:45.800000","2018-06-01 12:01:46.100000","2018-06-01 12:01:46.800000","2018-06-01 12:01:47.000000","2018-06-01 12:01:47.300000","2018-06-01 12:01:47.500000","2018-06-01 12:01:47.600000","2018-06-01 12:01:47.900000","2018-06-01 12:01:48.100000","2018-06-01 12:01:48.800000","2018-06-01 12:01:48.900000","2018-06-01 12:01:49.000000","2018-06-01 12:01:49.100000","2018-06-01 12:01:49.300000","2018-06-01 12:01:49.400000","2018-06-01 12:01:49.700000","2018-06-01 12:01:49.900000","2018-06-01 12:01:50.100000","2018-06-01 12:01:50.300000","2018-06-01 12:01:50.600000","2018-06-01 12:01:50.900000","2018-06-01 12:01:51.000000","2018-06-01 12:01:51.200000","2018-06-01 12:01:51.400000","2018-06-01 12:01:51.700000","2018-06-01 12:01:52.200000","2018-06-01 12:01:52.300000","2018-06-01 12:01:52.700000","2018-06-01 12:01:53.000000","2018-06-01 12:01:53.200000","2018-06-01 12:01:53.300000","2018-06-01 12:01:53.500000","2018-06-01 12:01:53.700000","2018-06-01 12:01:53.800000","2018-06-01 12:01:54.100000","2018-06-01 12:01:54.400000","2018-06-01 12:01:54.800000","2018-06-01 12:01:55.200000","2018-06-01 12:01:56.000000","2018-06-01 12:01:56.200000","2018-06-01 12:01:57.200000","2018-06-01 12:01:57.300000","2018-06-01 12:01:57.500000","2018-06-01 12:01:57.700000","2018-06-01 12:01:58.000000","2018-06-01 12:01:58.100000","2018-06-01 12:01:58.300000","2018-06-01 12:01:58.400000","2018-06-01 12:01:59.000000","2018-06-01 12:01:59.100000","2018-06-01 12:01:59.300000","2018-06-01 12:01:59.500000","2018-06-01 12:01:59.800000","2018-06-01 12:02:00.200000","2018-06-01 12:02:00.400000","2018-06-01 12:02:00.600000","2018-06-01 12:02:01.100000","2018-06-01 12:02:01.300000","2018-06-01 12:02:01.500000","2018-06-01 12:02:01.600000","2018-06-01 12:02:01.800000","2018-06-01 12:02:02.500000","2018-06-01 12:02:02.600000","2018-06-01 12:02:03.000000","2018-06-01 12:02:03.100000","2018-06-01 12:02:03.300000","2018-06-01 12:02:03.600000","2018-06-01 12:02:04.500000","2018-06-01 12:02:04.900000","2018-06-01 12:02:05.400000","2018-06-01 12:02:05.500000","2018-06-01 12:02:05.600000","2018-06-01 12:02:05.700000","2018-06-01 12:02:05.900000","2018-06-01 12:02:07.100000","2018-06-01 12:02:08.300000","2018-06-01 12:02:08.400000","2018-06-01 12:02:08.600000","2018-06-01 12:02:08.700000","2018-06-01 12:02:09.200000","2018-06-01 12:02:09.300000","2018-06-01 12:02:09.600000","2018-06-01 12:02:09.700000","2018-06-01 12:02:09.900000","2018-06-01 12:02:10.000000","2018-06-01 12:02:10.300000","2018-06-01 12:02:10.400000","2018-06-01 12:02:10.800000","2018-06-01 12:02:10.900000","2018-06-01 12:02:11.200000","2018-06-01 12:02:11.400000","2018-06-01 12:02:11.500000","2018-06-01 12:02:11.900000","2018-06-01 12:02:12.100000","2018-06-01 12:02:12.200000","2018-06-01 12:02:12.400000","2018-06-01 12:02:12.600000","2018-06-01 12:02:12.900000","2018-06-01 12:02:13.000000","2018-06-01 12:02:13.300000","2018-06-01 12:02:13.600000","2018-06-01 12:02:14.000000","2018-06-01 12:02:14.100000","2018-06-01 12:02:14.300000","2018-06-01 12:02:14.400000","2018-06-01 12:02:14.600000","2018-06-01 12:02:15.000000","2018-06-01 12:02:15.200000","2018-06-01 12:02:15.400000","2018-06-01 12:02:16.600000","2018-06-01 12:02:16.700000","2018-06-01 12:02:17.600000","2018-06-01 12:02:19.300000","2018-06-01 12:02:19.400000","2018-06-01 12:02:19.800000","2018-06-01 12:02:19.900000","2018-06-01 12:02:20.300000","2018-06-01 12:02:20.500000","2018-06-01 12:02:20.800000","2018-06-01 12:02:21.000000","2018-06-01 12:02:21.300000","2018-06-01 12:02:21.700000","2018-06-01 12:02:22.500000","2018-06-01 12:02:22.800000","2018-06-01 12:02:23.100000","2018-06-01 12:02:23.200000","2018-06-01 12:02:23.900000","2018-06-01 12:02:24.600000","2018-06-01 12:02:24.800000","2018-06-01 12:02:25.000000","2018-06-01 12:02:25.100000","2018-06-01 12:02:25.300000","2018-06-01 12:02:25.500000","2018-06-01 12:02:25.600000","2018-06-01 12:02:25.700000","2018-06-01 12:02:25.900000","2018-06-01 12:02:26.400000","2018-06-01 12:02:27.600000","2018-06-01 12:02:28.500000","2018-06-01 12:02:28.900000","2018-06-01 12:02:29.000000","2018-06-01 12:02:29.500000","2018-06-01 12:02:29.900000","2018-06-01 12:02:30.000000","2018-06-01 12:02:30.300000","2018-06-01 12:02:30.800000","2018-06-01 12:02:31.000000","2018-06-01 12:02:31.200000","2018-06-01 12:02:31.300000","2018-06-01 12:02:31.700000","2018-06-01 12:02:32.000000","2018-06-01 12:02:32.800000","2018-06-01 12:02:32.900000","2018-06-01 12:02:33.400000","2018-06-01 12:02:33.500000","2018-06-01 12:02:33.700000","2018-06-01 12:02:33.800000","2018-06-01 12:02:34.100000","2018-06-01 12:02:34.200000","2018-06-01 12:02:34.900000","2018-06-01 12:02:35.400000","2018-06-01 12:02:35.500000","2018-06-01 12:02:35.600000","2018-06-01 12:02:36.200000","2018-06-01 12:02:37.400000","2018-06-01 12:02:37.800000","2018-06-01 12:02:38.300000","2018-06-01 12:02:38.600000","2018-06-01 12:02:39.100000","2018-06-01 12:02:39.200000","2018-06-01 12:02:39.300000","2018-06-01 12:02:39.900000","2018-06-01 12:02:40.100000","2018-06-01 12:02:40.300000","2018-06-01 12:02:40.600000","2018-06-01 12:02:41.000000","2018-06-01 12:02:41.300000","2018-06-01 12:02:41.500000","2018-06-01 12:02:41.600000","2018-06-01 12:02:42.200000","2018-06-01 12:02:42.500000","2018-06-01 12:02:42.600000","2018-06-01 12:02:42.700000","2018-06-01 12:02:43.300000","2018-06-01 12:02:44.400000","2018-06-01 12:02:44.600000","2018-06-01 12:02:44.700000","2018-06-01 12:02:45.000000","2018-06-01 12:02:45.200000","2018-06-01 12:02:45.500000","2018-06-01 12:02:45.900000","2018-06-01 12:02:46.500000","2018-06-01 12:02:46.600000","2018-06-01 12:02:47.100000","2018-06-01 12:02:47.200000","2018-06-01 12:02:47.300000","2018-06-01 12:02:48.000000","2018-06-01 12:02:48.200000","2018-06-01 12:02:48.400000","2018-06-01 12:02:48.500000","2018-06-01 12:02:49.800000","2018-06-01 12:02:50.000000","2018-06-01 12:02:50.100000","2018-06-01 12:02:50.200000","2018-06-01 12:02:50.300000","2018-06-01 12:02:50.400000","2018-06-01 12:02:50.600000","2018-06-01 12:02:50.800000","2018-06-01 12:02:51.500000","2018-06-01 12:02:51.800000","2018-06-01 12:02:51.900000","2018-06-01 12:02:52.000000","2018-06-01 12:02:52.300000","2018-06-01 12:02:52.500000","2018-06-01 12:02:52.800000","2018-06-01 12:02:53.100000","2018-06-01 12:02:53.800000","2018-06-01 12:02:54.400000","2018-06-01 12:02:54.700000","2018-06-01 12:02:55.000000","2018-06-01 12:02:56.000000","2018-06-01 12:02:57.000000","2018-06-01 12:02:57.300000","2018-06-01 12:02:57.400000","2018-06-01 12:02:57.500000","2018-06-01 12:02:57.900000","2018-06-01 12:02:58.000000","2018-06-01 12:02:58.200000","2018-06-01 12:02:58.300000","2018-06-01 12:02:58.600000","2018-06-01 12:02:59.400000","2018-06-01 12:02:59.700000","2018-06-01 12:02:59.800000","2018-06-01 12:03:00.000000","2018-06-01 12:03:00.300000","2018-06-01 12:03:00.700000","2018-06-01 12:03:01.100000","2018-06-01 12:03:01.200000","2018-06-01 12:03:01.300000","2018-06-01 12:03:01.600000","2018-06-01 12:03:01.700000","2018-06-01 12:03:02.100000","2018-06-01 12:03:02.300000","2018-06-01 12:03:02.700000","2018-06-01 12:03:02.900000","2018-06-01 12:03:03.100000","2018-06-01 12:03:03.200000","2018-06-01 12:03:03.400000","2018-06-01 12:03:03.700000","2018-06-01 12:03:04.300000","2018-06-01 12:03:04.400000","2018-06-01 12:03:04.900000","2018-06-01 12:03:05.100000","2018-06-01 12:03:05.400000","2018-06-01 12:03:05.500000","2018-06-01 12:03:06.300000","2018-06-01 12:03:07.000000","2018-06-01 12:03:07.100000","2018-06-01 12:03:07.800000","2018-06-01 12:03:08.100000","2018-06-01 12:03:08.200000","2018-06-01 12:03:08.700000","2018-06-01 12:03:08.900000","2018-06-01 12:03:09.000000","2018-06-01 12:03:09.800000","2018-06-01 12:03:10.100000","2018-06-01 12:03:10.400000","2018-06-01 12:03:11.100000","2018-06-01 12:03:11.300000","2018-06-01 12:03:11.500000","2018-06-01 12:03:11.900000","2018-06-01 12:03:12.000000","2018-06-01 12:03:12.300000","2018-06-01 12:03:13.200000","2018-06-01 12:03:13.300000","2018-06-01 12:03:13.600000","2018-06-01 12:03:13.800000","2018-06-01 12:03:14.100000","2018-06-01 12:03:14.500000","2018-06-01 12:03:14.800000","2018-06-01 12:03:14.900000","2018-06-01 12:03:15.700000","2018-06-01 12:03:16.300000","2018-06-01 12:03:16.900000","2018-06-01 12:03:17.700000","2018-06-01 12:03:18.400000","2018-06-01 12:03:18.500000","2018-06-01 12:03:19.300000","2018-06-01 12:03:19.400000","2018-06-01 12:03:20.000000","2018-06-01 12:03:20.400000","2018-06-01 12:03:20.500000","2018-06-01 12:03:20.600000","2018-06-01 12:03:21.100000","2018-06-01 12:03:21.300000","2018-06-01 12:03:21.400000","2018-06-01 12:03:21.800000","2018-06-01 12:03:22.200000","2018-06-01 12:03:22.300000","2018-06-01 12:03:22.400000","2018-06-01 12:03:22.500000","2018-06-01 12:03:22.800000","2018-06-01 12:03:23.000000","2018-06-01 12:03:23.300000","2018-06-01 12:03:24.000000","2018-06-01 12:03:24.300000","2018-06-01 12:03:24.600000","2018-06-01 12:03:24.800000","2018-06-01 12:03:24.900000","2018-06-01 12:03:25.300000","2018-06-01 12:03:25.900000","2018-06-01 12:03:26.100000","2018-06-01 12:03:26.900000","2018-06-01 12:03:27.000000","2018-06-01 12:03:27.200000","2018-06-01 12:03:27.700000","2018-06-01 12:03:27.900000","2018-06-01 12:03:28.100000","2018-06-01 12:03:28.400000","2018-06-01 12:03:28.800000","2018-06-01 12:03:29.100000","2018-06-01 12:03:29.300000","2018-06-01 12:03:29.500000","2018-06-01 12:03:30.200000","2018-06-01 12:03:30.600000","2018-06-01 12:03:30.900000","2018-06-01 12:03:31.100000","2018-06-01 12:03:31.500000","2018-06-01 12:03:31.800000","2018-06-01 12:03:32.200000","2018-06-01 12:03:32.500000","2018-06-01 12:03:33.200000","2018-06-01 12:03:33.400000","2018-06-01 12:03:33.800000","2018-06-01 12:03:34.300000","2018-06-01 12:03:34.500000","2018-06-01 12:03:35.000000","2018-06-01 12:03:35.800000","2018-06-01 12:03:35.900000","2018-06-01 12:03:36.000000","2018-06-01 12:03:36.200000","2018-06-01 12:03:36.300000","2018-06-01 12:03:36.400000","2018-06-01 12:03:36.900000","2018-06-01 12:03:37.500000","2018-06-01 12:03:37.900000","2018-06-01 12:03:38.200000","2018-06-01 12:03:38.300000","2018-06-01 12:03:39.400000","2018-06-01 12:03:40.000000","2018-06-01 12:03:40.300000","2018-06-01 12:03:41.100000","2018-06-01 12:03:41.200000","2018-06-01 12:03:41.300000","2018-06-01 12:03:42.800000","2018-06-01 12:03:42.900000","2018-06-01 12:03:43.300000","2018-06-01 12:03:43.600000","2018-06-01 12:03:44.200000","2018-06-01 12:03:44.300000","2018-06-01 12:03:44.400000","2018-06-01 12:03:44.800000","2018-06-01 12:03:44.900000","2018-06-01 12:03:45.000000","2018-06-01 12:03:45.300000","2018-06-01 12:03:46.100000","2018-06-01 12:03:46.700000","2018-06-01 12:03:47.000000","2018-06-01 12:03:47.100000","2018-06-01 12:03:47.600000","2018-06-01 12:03:47.700000","2018-06-01 12:03:47.900000","2018-06-01 12:03:48.100000","2018-06-01 12:03:48.400000","2018-06-01 12:03:48.600000","2018-06-01 12:03:49.200000","2018-06-01 12:03:49.500000","2018-06-01 12:03:49.600000","2018-06-01 12:03:49.700000","2018-06-01 12:03:50.000000","2018-06-01 12:03:50.400000","2018-06-01 12:03:50.600000","2018-06-01 12:03:50.700000","2018-06-01 12:03:51.000000","2018-06-01 12:03:51.700000","2018-06-01 12:03:52.000000","2018-06-01 12:03:52.100000","2018-06-01 12:03:52.500000","2018-06-01 12:03:52.600000","2018-06-01 12:03:53.000000","2018-06-01 12:03:53.100000","2018-06-01 12:03:53.600000","2018-06-01 12:03:53.800000","2018-06-01 12:03:54.200000","2018-06-01 12:03:54.300000","2018-06-01 12:03:54.400000","2018-06-01 12:03:55.100000","2018-06-01 12:03:55.400000","2018-06-01 12:03:55.500000","2018-06-01 12:03:55.900000","2018-06-01 12:03:56.000000","2018-06-01 12:03:56.300000","2018-06-01 12:03:56.400000","2018-06-01 12:03:56.500000","2018-06-01 12:03:56.700000","2018-06-01 12:03:56.800000","2018-06-01 12:03:56.900000","2018-06-01 12:03:57.000000","2018-06-01 12:03:57.200000","2018-06-01 12:03:57.300000","2018-06-01 12:03:57.400000","2018-06-01 12:03:57.700000","2018-06-01 12:03:58.000000","2018-06-01 12:03:58.200000","2018-06-01 12:03:58.300000","2018-06-01 12:03:58.400000","2018-06-01 12:03:59.000000","2018-06-01 12:03:59.400000","2018-06-01 12:03:59.600000","2018-06-01 12:04:00.400000","2018-06-01 12:04:00.600000","2018-06-01 12:04:00.700000","2018-06-01 12:04:00.800000","2018-06-01 12:04:00.900000","2018-06-01 12:04:01.200000","2018-06-01 12:04:01.700000","2018-06-01 12:04:02.000000","2018-06-01 12:04:02.200000","2018-06-01 12:04:02.400000","2018-06-01 12:04:02.600000","2018-06-01 12:04:02.800000","2018-06-01 12:04:02.900000","2018-06-01 12:04:03.400000","2018-06-01 12:04:03.700000","2018-06-01 12:04:03.800000","2018-06-01 12:04:04.000000","2018-06-01 12:04:04.100000","2018-06-01 12:04:04.200000","2018-06-01 12:04:04.300000","2018-06-01 12:04:04.400000","2018-06-01 12:04:04.500000","2018-06-01 12:04:04.600000","2018-06-01 12:04:05.000000","2018-06-01 12:04:05.300000","2018-06-01 12:04:05.500000","2018-06-01 12:04:05.900000","2018-06-01 12:04:06.400000","2018-06-01 12:04:06.500000","2018-06-01 12:04:06.600000","2018-06-01 12:04:06.800000","2018-06-01 12:04:07.100000","2018-06-01 12:04:07.200000","2018-06-01 12:04:07.300000","2018-06-01 12:04:07.900000","2018-06-01 12:04:08.300000","2018-06-01 12:04:09.700000","2018-06-01 12:04:10.300000","2018-06-01 12:04:10.900000","2018-06-01 12:04:11.000000","2018-06-01 12:04:11.300000","2018-06-01 12:04:11.800000","2018-06-01 12:04:12.000000","2018-06-01 12:04:12.200000","2018-06-01 12:04:12.500000","2018-06-01 12:04:13.000000","2018-06-01 12:04:13.400000","2018-06-01 12:04:13.600000","2018-06-01 12:04:14.400000","2018-06-01 12:04:14.600000","2018-06-01 12:04:14.700000","2018-06-01 12:04:15.400000","2018-06-01 12:04:15.500000","2018-06-01 12:04:15.800000","2018-06-01 12:04:16.200000","2018-06-01 12:04:16.300000","2018-06-01 12:04:16.900000","2018-06-01 12:04:17.500000","2018-06-01 12:04:17.800000","2018-06-01 12:04:18.400000","2018-06-01 12:04:18.600000","2018-06-01 12:04:19.100000","2018-06-01 12:04:19.400000","2018-06-01 12:04:19.700000","2018-06-01 12:04:19.900000","2018-06-01 12:04:20.000000","2018-06-01 12:04:21.100000","2018-06-01 12:04:21.300000","2018-06-01 12:04:21.500000","2018-06-01 12:04:21.600000","2018-06-01 12:04:22.100000","2018-06-01 12:04:22.800000","2018-06-01 12:04:23.300000","2018-06-01 12:04:23.800000","2018-06-01 12:04:23.900000","2018-06-01 12:04:24.700000","2018-06-01 12:04:25.400000","2018-06-01 12:04:25.900000","2018-06-01 12:04:26.800000","2018-06-01 12:04:26.900000","2018-06-01 12:04:28.000000","2018-06-01 12:04:28.400000","2018-06-01 12:04:28.700000","2018-06-01 12:04:29.000000","2018-06-01 12:04:29.100000","2018-06-01 12:04:29.400000","2018-06-01 12:04:29.900000","2018-06-01 12:04:30.300000","2018-06-01 12:04:30.700000","2018-06-01 12:04:31.000000","2018-06-01 12:04:31.300000","2018-06-01 12:04:31.400000","2018-06-01 12:04:32.100000","2018-06-01 12:04:32.200000","2018-06-01 12:04:32.500000","2018-06-01 12:04:32.700000","2018-06-01 12:04:33.700000","2018-06-01 12:04:33.800000","2018-06-01 12:04:34.200000","2018-06-01 12:04:34.500000","2018-06-01 12:04:35.700000","2018-06-01 12:04:35.800000","2018-06-01 12:04:36.400000","2018-06-01 12:04:36.600000","2018-06-01 12:04:36.700000","2018-06-01 12:04:37.600000","2018-06-01 12:04:38.100000","2018-06-01 12:04:38.200000","2018-06-01 12:04:38.500000","2018-06-01 12:04:38.800000","2018-06-01 12:04:40.100000","2018-06-01 12:04:40.200000","2018-06-01 12:04:40.400000","2018-06-01 12:04:40.700000","2018-06-01 12:04:41.000000","2018-06-01 12:04:41.400000","2018-06-01 12:04:41.600000","2018-06-01 12:04:42.200000","2018-06-01 12:04:42.300000","2018-06-01 12:04:42.800000","2018-06-01 12:04:43.100000","2018-06-01 12:04:43.400000","2018-06-01 12:04:43.700000","2018-06-01 12:04:43.900000","2018-06-01 12:04:44.100000","2018-06-01 12:04:44.400000","2018-06-01 12:04:44.600000","2018-06-01 12:04:44.800000","2018-06-01 12:04:44.900000","2018-06-01 12:04:45.100000","2018-06-01 12:04:45.500000","2018-06-01 12:04:45.900000","2018-06-01 12:04:46.100000","2018-06-01 12:04:46.400000","2018-06-01 12:04:46.600000","2018-06-01 12:04:46.800000","2018-06-01 12:04:46.900000","2018-06-01 12:04:47.000000","2018-06-01 12:04:47.600000","2018-06-01 12:04:47.700000","2018-06-01 12:04:48.000000","2018-06-01 12:04:48.800000","2018-06-01 12:04:48.900000","2018-06-01 12:04:49.400000","2018-06-01 12:04:49.600000","2018-06-01 12:04:49.900000","2018-06-01 12:04:50.700000","2018-06-01 12:04:51.300000","2018-06-01 12:04:51.600000","2018-06-01 12:04:52.400000","2018-06-01 12:04:53.100000","2018-06-01 12:04:53.300000","2018-06-01 12:04:53.400000","2018-06-01 12:04:54.100000","2018-06-01 12:04:54.600000","2018-06-01 12:04:54.800000","2018-06-01 12:04:55.300000","2018-06-01 12:04:56.100000","2018-06-01 12:04:57.600000","2018-06-01 12:04:57.700000","2018-06-01 12:04:58.000000","2018-06-01 12:04:58.300000","2018-06-01 12:04:59.500000","2018-06-01 12:04:59.800000"],"xaxis":"x","y":[108.48,108.44,108.28,108.12,107.93,107.84,107.65,107.36,107.17,106.98,106.89,106.76,106.54,106.31,106.01,105.6,105.13,104.59,104.3,103.98,103.53,103.15,102.86,102.66,102.36,102.12,101.98,101.9,101.75,101.77,101.63,101.59,101.42,101.32,101.12,100.97,100.78,100.42,100.24,100.2,100.09,100.07,100.21,100.44,100.71,101.08,101.28,101.48,101.64,101.95,102.41,102.84,103.23,103.52,103.75,103.78,103.72,103.5,103.37,103.23,103.33,103.51,103.69,103.81,103.91,103.87,103.76,103.68,103.78,103.82,103.93,103.99,104.06,104.21,104.31,104.38,104.48,104.73,104.88,105.03,105.19,105.26,105.23,105.49,105.62,105.62,105.61,105.49,105.31,105.23,105.3,105.35,105.32,105.27,105.13,105,104.87,104.75,104.44,104.11,103.89,103.67,103.45,103.08,102.75,102.35,101.86,101.3,100.59,100.03,99.57,99.2,99.05,98.88,98.73,98.73,98.78,98.69,98.58,98.49,98.47,98.19,97.89,97.63,97.39,97.19,97.07,96.95,96.81,96.75,96.69,96.59,96.34,96.24,96.26,96.23,96.14,96.13,96.14,96.09,95.93,95.73,95.62,95.5,95.51,95.51,95.27,95.25,95.39,95.46,95.45,95.36,95.3,95.41,95.64,95.7,95.9,96.22,96.35,96.59,96.89,97.06,97.14,97,97,96.92,97.02,97.09,97.21,97.3,97.37,97.41,97.44,97.31,97.06,96.72,96.53,96.26,96,95.86,95.7,95.52,95.42,95.34,95.25,95.22,95.09,94.94,94.95,95.03,95.07,95.23,95.35,95.5,95.69,95.97,96.26,96.57,97.02,97.5,97.79,98.02,98.23,98.38,98.51,98.52,98.64,98.91,99.1,99.27,99.37,99.5,99.59,99.66,99.63,99.71,99.79,99.8,99.61,99.5,99.51,99.54,99.4,99.21,99.06,98.9,98.7,98.51,98.44,98.5,98.46,98.59,98.67,98.75,98.79,98.82,98.68,98.36,98.08,97.76,97.42,97.13,96.89,96.64,96.63,96.61,96.66,96.75,96.85,96.97,96.95,96.89,96.83,96.83,96.82,96.78,96.75,96.54,96.35,96.17,95.98,95.75,95.57,95.39,95.08,94.81,94.55,94.39,94.18,93.81,93.62,93.33,93.11,92.86,92.75,92.74,92.72,92.66,92.44,92.25,92.19,92.18,92.1,91.99,92,92.09,92.23,92.41,92.6,92.74,93.03,93.15,93.26,93.42,93.66,93.92,94.06,94.19,94.32,94.33,94.33,94.36,94.37,94.53,94.78,94.87,95.15,95.58,95.85,96.08,96.34,96.72,96.9,97.17,97.4,97.66,97.91,98.2,98.44,98.64,98.89,99.19,99.5,99.76,100.09,100.31,100.62,100.81,100.93,101.18,101.43,101.76,102.14,102.53,102.75,102.97,103.11,103.28,103.4,103.28,103.06,102.89,102.76,102.78,102.67,102.7,102.8,102.86,102.87,102.86,102.95,102.9,102.75,102.7,102.54,102.31,102.19,102.05,101.75,101.47,101.07,100.66,100.32,99.99,99.7,99.58,99.56,99.5,99.49,99.43,99.29,99.19,99.15,99.06,99,99.01,98.94,98.82,98.77,98.77,98.7,98.6,98.7,98.92,99.2,99.46,99.76,100.02,100.39,100.64,100.82,101.14,101.44,101.7,102.08,102.31,102.52,102.59,102.93,103.1,103.19,103.42,103.76,104.1,104.32,104.56,104.81,105.14,105.5,105.8,106.06,106.22,106.23,106.27,106.4,106.5,106.6,106.7,106.6,106.43,106.2,105.8,105.38,104.98,104.66,104.22,103.94,103.67,103.34,103.13,102.91,102.52,102.09,101.78,101.38,101.02,100.62,100.26,99.98,99.78,99.69,99.59,99.5,99.41,99.4,99.3,99.28,99.35,99.53,99.71,99.92,100.13,100.1,99.97,99.88,100.03,100.22,100.28,100.22,100.08,99.89,99.73,99.48,99.23,98.94,98.61,98.45,98.34,98.25,98.39,98.6,98.88,99.06,99.24,99.39,99.55,99.68,99.82,99.78,99.69,99.63,99.36,99.03,98.64,98.19,97.93,97.77,97.65,97.45,97.35,97.29,97.32,97.5,97.84,98.03,98.35,98.62,98.8,98.75,98.84,99.05,99.19,99.28,99.45,99.53,99.84,100.08,100.2,100.21,100.17,100.16,100.31,100.51,100.68,100.99,101.24,101.41,101.52,101.6,101.71,101.98,102.18,102.46,102.6,102.6,102.52,102.35,102.18,102.04,102.02,102.05,102.12,102.23,102.19,102.16,102.15,102.28,102.55,102.82,103.04,103.19,103.44,103.55,103.8,104.08,104.34,104.57,104.76,104.8,105.01,105.27,105.43,105.59,105.84,106.04,105.95,105.94,105.93,105.94,106.16,106.45,106.66,106.98,107.32,107.74,108.12,108.5,108.76,108.97,109.26,109.28,109.36,109.48,109.56,109.76,109.87,109.92,109.82,109.63,109.69,109.9,110.09,110.26,110.41,110.55,110.65,111.02,111.69,112.21,112.95,113.62,114.21,114.87,115.66,116.42,117.1,117.66,118.25,118.74,119.22,119.49,119.8,119.93,120.11,120.3,120.24,120.26,120.48,120.7,121.04,121.42,121.73,122.03,122.4,122.78,123.04,123.38,123.8,124.25,124.69,125.28,125.85,126.28,126.76,127.2,127.61,128.08,128.43,128.79,129.25,129.61,130.11,130.58,131,131.51,132.05,132.76,133.42,134.06,134.51,134.82,135.04,135.31,135.53,135.55,135.63,135.69,135.79,136.04,136.26,136.5,136.54,136.56,136.72,136.95,137.01,137.11,137.29,137.62,138.05,138.4,138.71,139.04,139.32,139.74,140.09,140.38,140.65,140.92,141.17,141.41,141.55,141.75,141.96,142.01,141.97,141.96,141.9,141.89,141.86,141.74,141.65,141.65,141.63,141.53,141.36,141.19,141.06,140.93,140.79,140.61,140.59,140.49,140.44,140.5,140.57,140.7,140.76,140.88,140.94,141,141.08,141.26,141.53,141.8,142.1,142.33,142.63,142.75,142.79,142.75,142.65,142.63,142.54,142.44,142.3,142.14,141.91,141.63,141.47,141.45,141.42,141.4,141.49,141.54,141.59,141.62,141.59,141.68,141.8,141.92,141.99,142.15,142.3,142.36,142.46,142.54,142.6,142.78,143.04,143.43,143.79,143.96,144.14,144.38,144.69,145.01,145.26,145.53,145.78,145.99,146.09,146.32,146.58,146.91,147.17,147.45,147.59,147.67,147.68,147.84,148.12,148.41,148.61,148.63,148.67,148.65,148.64,148.7,148.77,148.74,148.69,148.62,148.64,148.79,149.05,149.22,149.32,149.36,149.65,149.85,150.15,150.47,150.94,151.45,151.82,152.16,152.46,152.78,152.98,153.15,153.48,153.93,154.4,154.77,155.08,155.36,155.48,155.54,155.57,155.53,155.64,155.86,156.14,156.45,156.73,156.9,157.31,157.68,158.06,158.45,158.69,158.87,159.11,159.52,160.04,160.75,161.83,162.62,163.48,164.38,165.23,166,166.54,167.26,167.81,168.18,168.43,168.66,168.74,168.94,168.95,169.17,169.35,169.48,169.66,169.67,169.97,169.99,170,170.13,170.19,169.96,169.55,169.13,168.61,168.24,167.92,167.7,167.22,166.61,166,165.34,164.7,164.16,163.79,163.74,164.1,164.3,164.41,164.2,163.97,163.68,163.36,162.92,162.66,162.55,162.49,162.32,162.16,161.75,161.48,161.16,160.75,160.53,160.46,160.4,160.37,160.46,160.7,160.88,161.12,161.32,161.17,161.16,161.18,161.42,161.69,161.93,161.93,161.76,161.62,161.56,161.48,161.45,161.38,161.32,161.19,161.16,161.19,161.13,161.29,161.59,162.07,162.44,162.76],"yaxis":"y","type":"scatter"}],"layout":{"legend":{"title":{"side":"top","text":"Sym"},"tracegroupgap":0},"template":{"data":{"barpolar":[{"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"type":"carpet"}],"choropleth":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"choropleth"}],"contourcarpet":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"contourcarpet"}],"contour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"contour"}],"heatmap":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"heatmap"}],"histogram2dcontour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"histogram2dcontour"}],"histogram2d":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"histogram2d"}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"mesh3d":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"mesh3d"}],"parcoords":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"parcoords"}],"pie":[{"automargin":true,"type":"pie"}],"scatter3d":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatter3d"}],"scattercarpet":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattercarpet"}],"scattergeo":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergeo"}],"scattergl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergl"}],"scattermapbox":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermapbox"}],"scattermap":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermap"}],"scatterpolargl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolargl"}],"scatterpolar":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolar"}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"scatterternary":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterternary"}],"surface":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"surface"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}]},"layout":{"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"autotypenumbers":"strict","coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]],"sequential":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"sequentialminus":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]]},"colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"geo":{"bgcolor":"white","lakecolor":"white","landcolor":"#E5ECF6","showlakes":true,"showland":true,"subunitcolor":"white"},"hoverlabel":{"align":"left"},"hovermode":"closest","mapbox":{"style":"light"},"paper_bgcolor":"white","plot_bgcolor":"#E5ECF6","polar":{"angularaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"bgcolor":"#E5ECF6","radialaxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"scene":{"xaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"},"yaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"},"zaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"ternary":{"aaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"baxis":{"gridcolor":"white","linecolor":"white","ticks":""},"bgcolor":"#E5ECF6","caxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"title":{"x":0.05},"xaxis":{"automargin":true,"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","zerolinewidth":2},"yaxis":{"automargin":true,"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","zerolinewidth":2}}},"xaxis":{"anchor":"y","domain":[0,1],"side":"bottom","title":{"text":"Timestamp"}},"yaxis":{"anchor":"x","domain":[0,1],"side":"left","title":{"text":"Price"}}},"isDefaultTemplate":true}}}} \ No newline at end of file diff --git a/plugins/plotly-express/docs/snapshots/7074238fabd9a505c9e35f3ed9ea52df.json b/plugins/plotly-express/docs/snapshots/7074238fabd9a505c9e35f3ed9ea52df.json new file mode 100644 index 000000000..89c4b677f --- /dev/null +++ b/plugins/plotly-express/docs/snapshots/7074238fabd9a505c9e35f3ed9ea52df.json @@ -0,0 +1 @@ +{"file":"events.md","objects":{"stocks":{"type":"Table","data":{"columns":[{"name":"Timestamp","type":"java.time.Instant"},{"name":"Sym","type":"java.lang.String"},{"name":"Exchange","type":"java.lang.String"},{"name":"Size","type":"long"},{"name":"Price","type":"double"},{"name":"Dollars","type":"double"},{"name":"Side","type":"java.lang.String"},{"name":"SPet500","type":"double"},{"name":"Index","type":"long"},{"name":"Random","type":"double"}],"rows":[[{"value":"2018-06-01 08:00:00.000"},{"value":"BIRD"},{"value":"TPET"},{"value":"245"},{"value":"164.6300"},{"value":"40,334.3500"},{"value":"buy"},{"value":"150.6253"},{"value":"0"},{"value":"0.6253"}],[{"value":"2018-06-01 08:00:00.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,150"},{"value":"102.4700"},{"value":"322,780.5000"},{"value":"buy"},{"value":"150.8910"},{"value":"1"},{"value":"1.4656"}],[{"value":"2018-06-01 08:00:00.200"},{"value":"LIZARD"},{"value":"TPET"},{"value":"100"},{"value":"224.8800"},{"value":"22,488.0000"},{"value":"sell"},{"value":"151.0861"},{"value":"2"},{"value":"-0.1232"}],[{"value":"2018-06-01 08:00:00.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"77"},{"value":"102.5100"},{"value":"7,893.2700"},{"value":"buy"},{"value":"151.3228"},{"value":"3"},{"value":"0.4242"}],[{"value":"2018-06-01 08:00:00.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"848"},{"value":"102.4500"},{"value":"86,877.6000"},{"value":"sell"},{"value":"151.3451"},{"value":"4"},{"value":"-0.9462"}],[{"value":"2018-06-01 08:00:00.500"},{"value":"FISH"},{"value":"PETX"},{"value":"15"},{"value":"127.2400"},{"value":"1,908.6000"},{"value":"buy"},{"value":"151.4074"},{"value":"5"},{"value":"0.2434"}],[{"value":"2018-06-01 08:00:00.600"},{"value":"BIRD"},{"value":"TPET"},{"value":"2,908"},{"value":"164.4900"},{"value":"478,336.9200"},{"value":"sell"},{"value":"151.1998"},{"value":"6"},{"value":"-1.4273"}],[{"value":"2018-06-01 08:00:00.700"},{"value":"DOG"},{"value":"PETX"},{"value":"111"},{"value":"108.4800"},{"value":"12,041.2800"},{"value":"buy"},{"value":"151.1169"},{"value":"7"},{"value":"0.4805"}],[{"value":"2018-06-01 08:00:00.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"102.5300"},{"value":"10,253.0000"},{"value":"buy"},{"value":"151.2862"},{"value":"8"},{"value":"1.3088"}],[{"value":"2018-06-01 08:00:00.900"},{"value":"DOG"},{"value":"PETX"},{"value":"88"},{"value":"108.4400"},{"value":"9,542.7200"},{"value":"sell"},{"value":"151.3445"},{"value":"9"},{"value":"-0.4436"}],[{"value":"2018-06-01 08:00:01.000"},{"value":"FISH"},{"value":"PETX"},{"value":"102"},{"value":"127.2900"},{"value":"12,983.5800"},{"value":"buy"},{"value":"151.4768"},{"value":"10"},{"value":"0.4669"}],[{"value":"2018-06-01 08:00:01.100"},{"value":"DOG"},{"value":"PETX"},{"value":"1,791"},{"value":"108.2800"},{"value":"193,929.4800"},{"value":"sell"},{"value":"151.3650"},{"value":"11"},{"value":"-1.2143"}],[{"value":"2018-06-01 08:00:01.200"},{"value":"DOG"},{"value":"PETX"},{"value":"28"},{"value":"108.1200"},{"value":"3,027.3600"},{"value":"sell"},{"value":"151.2188"},{"value":"12"},{"value":"-0.3019"}],[{"value":"2018-06-01 08:00:01.300"},{"value":"CAT"},{"value":"PETX"},{"value":"1,090"},{"value":"102.7000"},{"value":"111,943.0000"},{"value":"buy"},{"value":"151.2854"},{"value":"13"},{"value":"1.0280"}],[{"value":"2018-06-01 08:00:01.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,600"},{"value":"102.9900"},{"value":"370,764.0000"},{"value":"buy"},{"value":"151.6178"},{"value":"14"},{"value":"1.5331"}],[{"value":"2018-06-01 08:00:01.500"},{"value":"LIZARD"},{"value":"TPET"},{"value":"227"},{"value":"224.9300"},{"value":"51,059.1100"},{"value":"buy"},{"value":"152.0005"},{"value":"15"},{"value":"0.6095"}],[{"value":"2018-06-01 08:00:01.600"},{"value":"DOG"},{"value":"PETX"},{"value":"35"},{"value":"107.9300"},{"value":"3,777.5500"},{"value":"sell"},{"value":"152.2546"},{"value":"16"},{"value":"-0.3267"}],[{"value":"2018-06-01 08:00:01.700"},{"value":"DOG"},{"value":"PETX"},{"value":"2"},{"value":"107.8400"},{"value":"215.6800"},{"value":"buy"},{"value":"152.6027"},{"value":"17"},{"value":"0.7731"}],[{"value":"2018-06-01 08:00:01.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,350"},{"value":"103.4000"},{"value":"346,390.0000"},{"value":"buy"},{"value":"153.1590"},{"value":"18"},{"value":"1.4963"}],[{"value":"2018-06-01 08:00:01.900"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.2900"},{"value":"12,729.0000"},{"value":"sell"},{"value":"153.5402"},{"value":"19"},{"value":"-0.4094"}],[{"value":"2018-06-01 08:00:02.000"},{"value":"LIZARD"},{"value":"TPET"},{"value":"15"},{"value":"225.0100"},{"value":"3,375.1500"},{"value":"buy"},{"value":"153.8970"},{"value":"20"},{"value":"0.2463"}],[{"value":"2018-06-01 08:00:02.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,780"},{"value":"103.9200"},{"value":"392,817.6000"},{"value":"buy"},{"value":"154.4713"},{"value":"21"},{"value":"1.5570"}],[{"value":"2018-06-01 08:00:02.200"},{"value":"LIZARD"},{"value":"TPET"},{"value":"727"},{"value":"225.1600"},{"value":"163,691.3200"},{"value":"buy"},{"value":"155.1045"},{"value":"22"},{"value":"0.8989"}],[{"value":"2018-06-01 08:00:02.300"},{"value":"LIZARD"},{"value":"TPET"},{"value":"2,250"},{"value":"225.4300"},{"value":"507,217.5000"},{"value":"buy"},{"value":"155.8603"},{"value":"23"},{"value":"1.3097"}],[{"value":"2018-06-01 08:00:02.400"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.3400"},{"value":"12,734.0000"},{"value":"buy"},{"value":"156.5817"},{"value":"24"},{"value":"0.5662"}],[{"value":"2018-06-01 08:00:02.500"},{"value":"DOG"},{"value":"PETX"},{"value":"1,491"},{"value":"107.6500"},{"value":"160,506.1500"},{"value":"sell"},{"value":"156.9654"},{"value":"25"},{"value":"-1.1422"}],[{"value":"2018-06-01 08:00:02.600"},{"value":"FISH"},{"value":"PETX"},{"value":"367"},{"value":"127.3300"},{"value":"46,730.1100"},{"value":"sell"},{"value":"157.1497"},{"value":"26"},{"value":"-0.7155"}],[{"value":"2018-06-01 08:00:02.700"},{"value":"FISH"},{"value":"PETX"},{"value":"293"},{"value":"127.2500"},{"value":"37,284.2500"},{"value":"sell"},{"value":"157.1804"},{"value":"27"},{"value":"-0.6637"}],[{"value":"2018-06-01 08:00:02.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"104.2600"},{"value":"10,426.0000"},{"value":"sell"},{"value":"156.9481"},{"value":"28"},{"value":"-1.4200"}],[{"value":"2018-06-01 08:00:02.900"},{"value":"DOG"},{"value":"PETX"},{"value":"1,798"},{"value":"107.3600"},{"value":"193,033.2800"},{"value":"sell"},{"value":"156.5375"},{"value":"29"},{"value":"-1.2159"}],[{"value":"2018-06-01 08:00:03.000"},{"value":"DOG"},{"value":"PETX"},{"value":"410"},{"value":"107.1700"},{"value":"43,939.7000"},{"value":"buy"},{"value":"156.3359"},{"value":"30"},{"value":"0.7425"}],[{"value":"2018-06-01 08:00:03.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,510"},{"value":"104.6700"},{"value":"158,051.7000"},{"value":"buy"},{"value":"156.3789"},{"value":"31"},{"value":"1.1473"}],[{"value":"2018-06-01 08:00:03.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"21"},{"value":"105.0200"},{"value":"2,205.4200"},{"value":"sell"},{"value":"156.3644"},{"value":"32"},{"value":"-0.2738"}],[{"value":"2018-06-01 08:00:03.300"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.1800"},{"value":"12,718.0000"},{"value":"buy"},{"value":"156.3572"},{"value":"33"},{"value":"0.0258"}],[{"value":"2018-06-01 08:00:03.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"106.9800"},{"value":"10,698.0000"},{"value":"sell"},{"value":"156.3239"},{"value":"34"},{"value":"-0.1515"}],[{"value":"2018-06-01 08:00:03.500"},{"value":"DOG"},{"value":"PETX"},{"value":"650"},{"value":"106.8900"},{"value":"69,478.5000"},{"value":"buy"},{"value":"156.4535"},{"value":"35"},{"value":"0.8659"}],[{"value":"2018-06-01 08:00:03.600"},{"value":"DOG"},{"value":"PETX"},{"value":"155"},{"value":"106.7600"},{"value":"16,547.8000"},{"value":"sell"},{"value":"156.4623"},{"value":"36"},{"value":"-0.5371"}],[{"value":"2018-06-01 08:00:03.700"},{"value":"FISH"},{"value":"PETX"},{"value":"12"},{"value":"127.0900"},{"value":"1,525.0800"},{"value":"sell"},{"value":"156.4283"},{"value":"37"},{"value":"-0.2274"}],[{"value":"2018-06-01 08:00:03.800"},{"value":"FISH"},{"value":"PETX"},{"value":"7"},{"value":"127.0300"},{"value":"889.2100"},{"value":"buy"},{"value":"156.4335"},{"value":"38"},{"value":"0.1822"}],[{"value":"2018-06-01 08:00:03.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,310"},{"value":"105.4400"},{"value":"138,126.4000"},{"value":"buy"},{"value":"156.6358"},{"value":"39"},{"value":"1.0928"}],[{"value":"2018-06-01 08:00:04.000"},{"value":"DOG"},{"value":"PETX"},{"value":"1,629"},{"value":"106.5400"},{"value":"173,553.6600"},{"value":"sell"},{"value":"156.5882"},{"value":"40"},{"value":"-1.1765"}],[{"value":"2018-06-01 08:00:04.100"},{"value":"DOG"},{"value":"PETX"},{"value":"4"},{"value":"106.3100"},{"value":"425.2400"},{"value":"sell"},{"value":"156.5216"},{"value":"41"},{"value":"-0.1522"}],[{"value":"2018-06-01 08:00:04.200"},{"value":"FISH"},{"value":"PETX"},{"value":"1"},{"value":"126.9800"},{"value":"126.9800"},{"value":"buy"},{"value":"156.4686"},{"value":"42"},{"value":"0.0083"}],[{"value":"2018-06-01 08:00:04.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"1"},{"value":"105.8200"},{"value":"105.8200"},{"value":"buy"},{"value":"156.4396"},{"value":"43"},{"value":"0.0791"}],[{"value":"2018-06-01 08:00:04.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"106.0100"},{"value":"10,601.0000"},{"value":"sell"},{"value":"156.2255"},{"value":"44"},{"value":"-1.0499"}],[{"value":"2018-06-01 08:00:04.500"},{"value":"CAT"},{"value":"PETX"},{"value":"2"},{"value":"106.1800"},{"value":"212.3600"},{"value":"buy"},{"value":"156.0723"},{"value":"45"},{"value":"0.1217"}],[{"value":"2018-06-01 08:00:04.600"},{"value":"BIRD"},{"value":"TPET"},{"value":"6"},{"value":"164.3500"},{"value":"986.1000"},{"value":"sell"},{"value":"155.9141"},{"value":"46"},{"value":"-0.1806"}],[{"value":"2018-06-01 08:00:04.700"},{"value":"DOG"},{"value":"PETX"},{"value":"3,485"},{"value":"105.6000"},{"value":"368,016.0000"},{"value":"sell"},{"value":"155.5098"},{"value":"47"},{"value":"-1.5161"}],[{"value":"2018-06-01 08:00:04.800"},{"value":"DOG"},{"value":"PETX"},{"value":"727"},{"value":"105.1300"},{"value":"76,429.5100"},{"value":"sell"},{"value":"155.0158"},{"value":"48"},{"value":"-0.8990"}],[{"value":"2018-06-01 08:00:04.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"5,421"},{"value":"106.3400"},{"value":"576,469.1400"},{"value":"sell"},{"value":"154.2929"},{"value":"49"},{"value":"-1.7566"}],[{"value":"2018-06-01 08:00:05.000"},{"value":"DOG"},{"value":"PETX"},{"value":"2,113"},{"value":"104.5900"},{"value":"220,998.6700"},{"value":"sell"},{"value":"153.4685"},{"value":"50"},{"value":"-1.2830"}],[{"value":"2018-06-01 08:00:05.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,130"},{"value":"106.5900"},{"value":"120,446.7000"},{"value":"buy"},{"value":"152.9825"},{"value":"51"},{"value":"1.0424"}],[{"value":"2018-06-01 08:00:05.200"},{"value":"LIZARD"},{"value":"TPET"},{"value":"2"},{"value":"225.5600"},{"value":"451.1200"},{"value":"sell"},{"value":"152.3781"},{"value":"52"},{"value":"-1.1386"}],[{"value":"2018-06-01 08:00:05.300"},{"value":"FISH"},{"value":"PETX"},{"value":"529"},{"value":"127.0100"},{"value":"67,188.2900"},{"value":"buy"},{"value":"152.0299"},{"value":"53"},{"value":"0.8084"}],[{"value":"2018-06-01 08:00:05.400"},{"value":"LIZARD"},{"value":"TPET"},{"value":"293"},{"value":"225.7400"},{"value":"66,141.8200"},{"value":"buy"},{"value":"151.8651"},{"value":"54"},{"value":"0.6639"}],[{"value":"2018-06-01 08:00:05.500"},{"value":"CAT"},{"value":"NYPE"},{"value":"123"},{"value":"106.7600"},{"value":"13,131.4800"},{"value":"sell"},{"value":"151.6401"},{"value":"55"},{"value":"-0.4972"}],[{"value":"2018-06-01 08:00:05.600"},{"value":"LIZARD"},{"value":"TPET"},{"value":"100"},{"value":"225.7600"},{"value":"22,576.0000"},{"value":"sell"},{"value":"151.1844"},{"value":"56"},{"value":"-1.4976"}],[{"value":"2018-06-01 08:00:05.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,990"},{"value":"107.0300"},{"value":"212,989.7000"},{"value":"buy"},{"value":"151.0393"},{"value":"57"},{"value":"1.2576"}],[{"value":"2018-06-01 08:00:05.800"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.0700"},{"value":"12,707.0000"},{"value":"buy"},{"value":"150.9961"},{"value":"58"},{"value":"0.4170"}],[{"value":"2018-06-01 08:00:05.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"140"},{"value":"107.3300"},{"value":"15,026.2000"},{"value":"buy"},{"value":"151.0546"},{"value":"59"},{"value":"0.5181"}],[{"value":"2018-06-01 08:00:06.000"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"104.3000"},{"value":"10,430.0000"},{"value":"buy"},{"value":"151.4827"},{"value":"60"},{"value":"2.0973"}],[{"value":"2018-06-01 08:00:06.100"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"103.9800"},{"value":"10,398.0000"},{"value":"sell"},{"value":"151.7109"},{"value":"61"},{"value":"-0.6743"}],[{"value":"2018-06-01 08:00:06.200"},{"value":"LIZARD"},{"value":"TPET"},{"value":"8"},{"value":"225.7600"},{"value":"1,806.0800"},{"value":"sell"},{"value":"151.8624"},{"value":"62"},{"value":"-0.1954"}],[{"value":"2018-06-01 08:00:06.300"},{"value":"DOG"},{"value":"PETX"},{"value":"4,262"},{"value":"103.5300"},{"value":"441,244.8600"},{"value":"sell"},{"value":"151.6925"},{"value":"63"},{"value":"-1.6213"}],[{"value":"2018-06-01 08:00:06.400"},{"value":"DOG"},{"value":"PETX"},{"value":"35"},{"value":"103.1500"},{"value":"3,610.2500"},{"value":"buy"},{"value":"151.6126"},{"value":"64"},{"value":"0.3264"}],[{"value":"2018-06-01 08:00:06.500"},{"value":"DOG"},{"value":"PETX"},{"value":"20"},{"value":"102.8600"},{"value":"2,057.2000"},{"value":"buy"},{"value":"151.6337"},{"value":"65"},{"value":"0.4772"}],[{"value":"2018-06-01 08:00:06.600"},{"value":"CAT"},{"value":"NYPE"},{"value":"534"},{"value":"107.6800"},{"value":"57,501.1200"},{"value":"buy"},{"value":"151.7980"},{"value":"66"},{"value":"0.8109"}],[{"value":"2018-06-01 08:00:06.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"711"},{"value":"108.0800"},{"value":"76,844.8800"},{"value":"buy"},{"value":"152.0942"},{"value":"67"},{"value":"0.8923"}],[{"value":"2018-06-01 08:00:06.800"},{"value":"FISH"},{"value":"PETX"},{"value":"88"},{"value":"127.0900"},{"value":"11,183.9200"},{"value":"sell"},{"value":"152.2562"},{"value":"68"},{"value":"-0.4441"}],[{"value":"2018-06-01 08:00:06.900"},{"value":"FISH"},{"value":"PETX"},{"value":"3,070"},{"value":"127.2500"},{"value":"390,657.5000"},{"value":"buy"},{"value":"152.6523"},{"value":"69"},{"value":"1.4534"}],[{"value":"2018-06-01 08:00:07.000"},{"value":"LIZARD"},{"value":"TPET"},{"value":"300"},{"value":"225.8000"},{"value":"67,740.0000"},{"value":"buy"},{"value":"153.0397"},{"value":"70"},{"value":"0.3482"}],[{"value":"2018-06-01 08:00:07.100"},{"value":"DOG"},{"value":"PETX"},{"value":"371"},{"value":"102.6600"},{"value":"38,086.8600"},{"value":"buy"},{"value":"153.4871"},{"value":"71"},{"value":"0.7180"}],[{"value":"2018-06-01 08:00:07.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"7,480"},{"value":"108.6300"},{"value":"812,552.4000"},{"value":"buy"},{"value":"154.2078"},{"value":"72"},{"value":"1.9555"}],[{"value":"2018-06-01 08:00:07.300"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"102.3600"},{"value":"10,236.0000"},{"value":"sell"},{"value":"154.5609"},{"value":"73"},{"value":"-1.3072"}],[{"value":"2018-06-01 08:00:07.400"},{"value":"BIRD"},{"value":"TPET"},{"value":"428"},{"value":"164.2900"},{"value":"70,316.1200"},{"value":"buy"},{"value":"154.9867"},{"value":"74"},{"value":"0.7535"}],[{"value":"2018-06-01 08:00:07.500"},{"value":"DOG"},{"value":"PETX"},{"value":"99"},{"value":"102.1200"},{"value":"10,109.8800"},{"value":"buy"},{"value":"155.4189"},{"value":"75"},{"value":"0.4616"}],[{"value":"2018-06-01 08:00:07.600"},{"value":"DOG"},{"value":"PETX"},{"value":"347"},{"value":"101.9800"},{"value":"35,387.0600"},{"value":"buy"},{"value":"155.9001"},{"value":"76"},{"value":"0.7026"}],[{"value":"2018-06-01 08:00:07.700"},{"value":"BIRD"},{"value":"TPET"},{"value":"500"},{"value":"164.2600"},{"value":"82,130.0000"},{"value":"buy"},{"value":"156.3253"},{"value":"77"},{"value":"0.1723"}],[{"value":"2018-06-01 08:00:07.800"},{"value":"BIRD"},{"value":"TPET"},{"value":"2,128"},{"value":"164.1100"},{"value":"349,226.0800"},{"value":"sell"},{"value":"156.4403"},{"value":"78"},{"value":"-1.2862"}],[{"value":"2018-06-01 08:00:07.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"12,212"},{"value":"108.9100"},{"value":"1,330,008.9200"},{"value":"sell"},{"value":"156.1171"},{"value":"79"},{"value":"-2.3028"}],[{"value":"2018-06-01 08:00:08.000"},{"value":"CAT"},{"value":"PETX"},{"value":"9"},{"value":"109.1800"},{"value":"982.6200"},{"value":"buy"},{"value":"155.8891"},{"value":"80"},{"value":"0.2025"}],[{"value":"2018-06-01 08:00:08.100"},{"value":"DOG"},{"value":"PETX"},{"value":"98"},{"value":"101.9000"},{"value":"9,986.2000"},{"value":"buy"},{"value":"155.7859"},{"value":"81"},{"value":"0.4606"}],[{"value":"2018-06-01 08:00:08.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"489"},{"value":"109.3400"},{"value":"53,467.2600"},{"value":"sell"},{"value":"155.5587"},{"value":"82"},{"value":"-0.7874"}],[{"value":"2018-06-01 08:00:08.300"},{"value":"DOG"},{"value":"PETX"},{"value":"436"},{"value":"101.7500"},{"value":"44,363.0000"},{"value":"sell"},{"value":"155.2354"},{"value":"83"},{"value":"-0.7578"}],[{"value":"2018-06-01 08:00:08.400"},{"value":"FISH"},{"value":"PETX"},{"value":"2"},{"value":"127.2100"},{"value":"254.4200"},{"value":"sell"},{"value":"154.6404"},{"value":"84"},{"value":"-1.8217"}],[{"value":"2018-06-01 08:00:08.500"},{"value":"CAT"},{"value":"NYPE"},{"value":"309"},{"value":"109.4300"},{"value":"33,813.8700"},{"value":"sell"},{"value":"154.0307"},{"value":"85"},{"value":"-0.6757"}],[{"value":"2018-06-01 08:00:08.600"},{"value":"BIRD"},{"value":"TPET"},{"value":"3,273"},{"value":"163.8300"},{"value":"536,215.5900"},{"value":"sell"},{"value":"153.2625"},{"value":"86"},{"value":"-1.4847"}],[{"value":"2018-06-01 08:00:08.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"28"},{"value":"109.4800"},{"value":"3,065.4400"},{"value":"sell"},{"value":"152.5787"},{"value":"87"},{"value":"-0.3026"}],[{"value":"2018-06-01 08:00:08.800"},{"value":"DOG"},{"value":"PETX"},{"value":"4,020"},{"value":"101.7700"},{"value":"409,115.4000"},{"value":"buy"},{"value":"152.3070"},{"value":"88"},{"value":"1.5903"}],[{"value":"2018-06-01 08:00:08.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"50"},{"value":"109.4200"},{"value":"5,471.0000"},{"value":"sell"},{"value":"151.8779"},{"value":"89"},{"value":"-1.1409"}],[{"value":"2018-06-01 08:00:09.000"},{"value":"CAT"},{"value":"NYPE"},{"value":"12,540"},{"value":"109.5900"},{"value":"1,374,258.6000"},{"value":"buy"},{"value":"151.9476"},{"value":"90"},{"value":"2.3232"}],[{"value":"2018-06-01 08:00:09.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"109.7100"},{"value":"10,971.0000"},{"value":"sell"},{"value":"151.9575"},{"value":"91"},{"value":"-0.2603"}],[{"value":"2018-06-01 08:00:09.200"},{"value":"DOG"},{"value":"PETX"},{"value":"4,143"},{"value":"101.6300"},{"value":"421,053.0900"},{"value":"sell"},{"value":"151.6745"},{"value":"92"},{"value":"-1.6061"}],[{"value":"2018-06-01 08:00:09.300"},{"value":"LIZARD"},{"value":"TPET"},{"value":"947"},{"value":"225.7400"},{"value":"213,775.7800"},{"value":"sell"},{"value":"151.2648"},{"value":"93"},{"value":"-0.9818"}],[{"value":"2018-06-01 08:00:09.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"101.5900"},{"value":"10,159.0000"},{"value":"buy"},{"value":"151.0986"},{"value":"94"},{"value":"0.9333"}],[{"value":"2018-06-01 08:00:09.500"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.1200"},{"value":"12,712.0000"},{"value":"sell"},{"value":"150.8477"},{"value":"95"},{"value":"-0.6329"}],[{"value":"2018-06-01 08:00:09.600"},{"value":"DOG"},{"value":"PETX"},{"value":"2,887"},{"value":"101.4200"},{"value":"292,799.5400"},{"value":"sell"},{"value":"150.3843"},{"value":"96"},{"value":"-1.4239"}],[{"value":"2018-06-01 08:00:09.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"20"},{"value":"109.8000"},{"value":"2,196.0000"},{"value":"sell"},{"value":"149.9563"},{"value":"97"},{"value":"-0.2677"}],[{"value":"2018-06-01 08:00:09.800"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"101.3200"},{"value":"10,132.0000"},{"value":"buy"},{"value":"149.6898"},{"value":"98"},{"value":"0.4629"}],[{"value":"2018-06-01 08:00:09.900"},{"value":"DOG"},{"value":"PETX"},{"value":"1,130"},{"value":"101.1200"},{"value":"114,265.6000"},{"value":"sell"},{"value":"149.2828"},{"value":"99"},{"value":"-1.0415"}]]}},"synced_chart_panel":{"type":"deephaven.ui.Element","data":{"document":{"__dhElemName":"__main__.synced_chart","props":{"children":{"__dhElemName":"deephaven.ui.components.Flex","props":{"direction":"column","gap":"size-100","flex":"auto","children":[{"__dhObid":0},{"__dhElemName":"deephaven.ui.elements.UITable","props":{"table":{"__dhObid":1},"showQuickFilters":false,"showGroupingColumn":true,"showSearch":false,"reverse":false}}]}}}},"state":"{}"}}}} \ No newline at end of file diff --git a/plugins/plotly-express/docs/snapshots/7f0d2bf82f3aacf6cca931c84c3a0828.json b/plugins/plotly-express/docs/snapshots/7f0d2bf82f3aacf6cca931c84c3a0828.json new file mode 100644 index 000000000..a7cddc2aa --- /dev/null +++ b/plugins/plotly-express/docs/snapshots/7f0d2bf82f3aacf6cca931c84c3a0828.json @@ -0,0 +1 @@ +{"file":"events.md","objects":{"stocks":{"type":"Table","data":{"columns":[{"name":"Timestamp","type":"java.time.Instant"},{"name":"Sym","type":"java.lang.String"},{"name":"Exchange","type":"java.lang.String"},{"name":"Size","type":"long"},{"name":"Price","type":"double"},{"name":"Dollars","type":"double"},{"name":"Side","type":"java.lang.String"},{"name":"SPet500","type":"double"},{"name":"Index","type":"long"},{"name":"Random","type":"double"}],"rows":[[{"value":"2018-06-01 08:00:00.000"},{"value":"BIRD"},{"value":"TPET"},{"value":"245"},{"value":"164.6300"},{"value":"40,334.3500"},{"value":"buy"},{"value":"150.6253"},{"value":"0"},{"value":"0.6253"}],[{"value":"2018-06-01 08:00:00.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,150"},{"value":"102.4700"},{"value":"322,780.5000"},{"value":"buy"},{"value":"150.8910"},{"value":"1"},{"value":"1.4656"}],[{"value":"2018-06-01 08:00:00.200"},{"value":"LIZARD"},{"value":"TPET"},{"value":"100"},{"value":"224.8800"},{"value":"22,488.0000"},{"value":"sell"},{"value":"151.0861"},{"value":"2"},{"value":"-0.1232"}],[{"value":"2018-06-01 08:00:00.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"77"},{"value":"102.5100"},{"value":"7,893.2700"},{"value":"buy"},{"value":"151.3228"},{"value":"3"},{"value":"0.4242"}],[{"value":"2018-06-01 08:00:00.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"848"},{"value":"102.4500"},{"value":"86,877.6000"},{"value":"sell"},{"value":"151.3451"},{"value":"4"},{"value":"-0.9462"}],[{"value":"2018-06-01 08:00:00.500"},{"value":"FISH"},{"value":"PETX"},{"value":"15"},{"value":"127.2400"},{"value":"1,908.6000"},{"value":"buy"},{"value":"151.4074"},{"value":"5"},{"value":"0.2434"}],[{"value":"2018-06-01 08:00:00.600"},{"value":"BIRD"},{"value":"TPET"},{"value":"2,908"},{"value":"164.4900"},{"value":"478,336.9200"},{"value":"sell"},{"value":"151.1998"},{"value":"6"},{"value":"-1.4273"}],[{"value":"2018-06-01 08:00:00.700"},{"value":"DOG"},{"value":"PETX"},{"value":"111"},{"value":"108.4800"},{"value":"12,041.2800"},{"value":"buy"},{"value":"151.1169"},{"value":"7"},{"value":"0.4805"}],[{"value":"2018-06-01 08:00:00.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"102.5300"},{"value":"10,253.0000"},{"value":"buy"},{"value":"151.2862"},{"value":"8"},{"value":"1.3088"}],[{"value":"2018-06-01 08:00:00.900"},{"value":"DOG"},{"value":"PETX"},{"value":"88"},{"value":"108.4400"},{"value":"9,542.7200"},{"value":"sell"},{"value":"151.3445"},{"value":"9"},{"value":"-0.4436"}],[{"value":"2018-06-01 08:00:01.000"},{"value":"FISH"},{"value":"PETX"},{"value":"102"},{"value":"127.2900"},{"value":"12,983.5800"},{"value":"buy"},{"value":"151.4768"},{"value":"10"},{"value":"0.4669"}],[{"value":"2018-06-01 08:00:01.100"},{"value":"DOG"},{"value":"PETX"},{"value":"1,791"},{"value":"108.2800"},{"value":"193,929.4800"},{"value":"sell"},{"value":"151.3650"},{"value":"11"},{"value":"-1.2143"}],[{"value":"2018-06-01 08:00:01.200"},{"value":"DOG"},{"value":"PETX"},{"value":"28"},{"value":"108.1200"},{"value":"3,027.3600"},{"value":"sell"},{"value":"151.2188"},{"value":"12"},{"value":"-0.3019"}],[{"value":"2018-06-01 08:00:01.300"},{"value":"CAT"},{"value":"PETX"},{"value":"1,090"},{"value":"102.7000"},{"value":"111,943.0000"},{"value":"buy"},{"value":"151.2854"},{"value":"13"},{"value":"1.0280"}],[{"value":"2018-06-01 08:00:01.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,600"},{"value":"102.9900"},{"value":"370,764.0000"},{"value":"buy"},{"value":"151.6178"},{"value":"14"},{"value":"1.5331"}],[{"value":"2018-06-01 08:00:01.500"},{"value":"LIZARD"},{"value":"TPET"},{"value":"227"},{"value":"224.9300"},{"value":"51,059.1100"},{"value":"buy"},{"value":"152.0005"},{"value":"15"},{"value":"0.6095"}],[{"value":"2018-06-01 08:00:01.600"},{"value":"DOG"},{"value":"PETX"},{"value":"35"},{"value":"107.9300"},{"value":"3,777.5500"},{"value":"sell"},{"value":"152.2546"},{"value":"16"},{"value":"-0.3267"}],[{"value":"2018-06-01 08:00:01.700"},{"value":"DOG"},{"value":"PETX"},{"value":"2"},{"value":"107.8400"},{"value":"215.6800"},{"value":"buy"},{"value":"152.6027"},{"value":"17"},{"value":"0.7731"}],[{"value":"2018-06-01 08:00:01.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,350"},{"value":"103.4000"},{"value":"346,390.0000"},{"value":"buy"},{"value":"153.1590"},{"value":"18"},{"value":"1.4963"}],[{"value":"2018-06-01 08:00:01.900"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.2900"},{"value":"12,729.0000"},{"value":"sell"},{"value":"153.5402"},{"value":"19"},{"value":"-0.4094"}],[{"value":"2018-06-01 08:00:02.000"},{"value":"LIZARD"},{"value":"TPET"},{"value":"15"},{"value":"225.0100"},{"value":"3,375.1500"},{"value":"buy"},{"value":"153.8970"},{"value":"20"},{"value":"0.2463"}],[{"value":"2018-06-01 08:00:02.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,780"},{"value":"103.9200"},{"value":"392,817.6000"},{"value":"buy"},{"value":"154.4713"},{"value":"21"},{"value":"1.5570"}],[{"value":"2018-06-01 08:00:02.200"},{"value":"LIZARD"},{"value":"TPET"},{"value":"727"},{"value":"225.1600"},{"value":"163,691.3200"},{"value":"buy"},{"value":"155.1045"},{"value":"22"},{"value":"0.8989"}],[{"value":"2018-06-01 08:00:02.300"},{"value":"LIZARD"},{"value":"TPET"},{"value":"2,250"},{"value":"225.4300"},{"value":"507,217.5000"},{"value":"buy"},{"value":"155.8603"},{"value":"23"},{"value":"1.3097"}],[{"value":"2018-06-01 08:00:02.400"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.3400"},{"value":"12,734.0000"},{"value":"buy"},{"value":"156.5817"},{"value":"24"},{"value":"0.5662"}],[{"value":"2018-06-01 08:00:02.500"},{"value":"DOG"},{"value":"PETX"},{"value":"1,491"},{"value":"107.6500"},{"value":"160,506.1500"},{"value":"sell"},{"value":"156.9654"},{"value":"25"},{"value":"-1.1422"}],[{"value":"2018-06-01 08:00:02.600"},{"value":"FISH"},{"value":"PETX"},{"value":"367"},{"value":"127.3300"},{"value":"46,730.1100"},{"value":"sell"},{"value":"157.1497"},{"value":"26"},{"value":"-0.7155"}],[{"value":"2018-06-01 08:00:02.700"},{"value":"FISH"},{"value":"PETX"},{"value":"293"},{"value":"127.2500"},{"value":"37,284.2500"},{"value":"sell"},{"value":"157.1804"},{"value":"27"},{"value":"-0.6637"}],[{"value":"2018-06-01 08:00:02.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"104.2600"},{"value":"10,426.0000"},{"value":"sell"},{"value":"156.9481"},{"value":"28"},{"value":"-1.4200"}],[{"value":"2018-06-01 08:00:02.900"},{"value":"DOG"},{"value":"PETX"},{"value":"1,798"},{"value":"107.3600"},{"value":"193,033.2800"},{"value":"sell"},{"value":"156.5375"},{"value":"29"},{"value":"-1.2159"}],[{"value":"2018-06-01 08:00:03.000"},{"value":"DOG"},{"value":"PETX"},{"value":"410"},{"value":"107.1700"},{"value":"43,939.7000"},{"value":"buy"},{"value":"156.3359"},{"value":"30"},{"value":"0.7425"}],[{"value":"2018-06-01 08:00:03.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,510"},{"value":"104.6700"},{"value":"158,051.7000"},{"value":"buy"},{"value":"156.3789"},{"value":"31"},{"value":"1.1473"}],[{"value":"2018-06-01 08:00:03.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"21"},{"value":"105.0200"},{"value":"2,205.4200"},{"value":"sell"},{"value":"156.3644"},{"value":"32"},{"value":"-0.2738"}],[{"value":"2018-06-01 08:00:03.300"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.1800"},{"value":"12,718.0000"},{"value":"buy"},{"value":"156.3572"},{"value":"33"},{"value":"0.0258"}],[{"value":"2018-06-01 08:00:03.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"106.9800"},{"value":"10,698.0000"},{"value":"sell"},{"value":"156.3239"},{"value":"34"},{"value":"-0.1515"}],[{"value":"2018-06-01 08:00:03.500"},{"value":"DOG"},{"value":"PETX"},{"value":"650"},{"value":"106.8900"},{"value":"69,478.5000"},{"value":"buy"},{"value":"156.4535"},{"value":"35"},{"value":"0.8659"}],[{"value":"2018-06-01 08:00:03.600"},{"value":"DOG"},{"value":"PETX"},{"value":"155"},{"value":"106.7600"},{"value":"16,547.8000"},{"value":"sell"},{"value":"156.4623"},{"value":"36"},{"value":"-0.5371"}],[{"value":"2018-06-01 08:00:03.700"},{"value":"FISH"},{"value":"PETX"},{"value":"12"},{"value":"127.0900"},{"value":"1,525.0800"},{"value":"sell"},{"value":"156.4283"},{"value":"37"},{"value":"-0.2274"}],[{"value":"2018-06-01 08:00:03.800"},{"value":"FISH"},{"value":"PETX"},{"value":"7"},{"value":"127.0300"},{"value":"889.2100"},{"value":"buy"},{"value":"156.4335"},{"value":"38"},{"value":"0.1822"}],[{"value":"2018-06-01 08:00:03.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,310"},{"value":"105.4400"},{"value":"138,126.4000"},{"value":"buy"},{"value":"156.6358"},{"value":"39"},{"value":"1.0928"}],[{"value":"2018-06-01 08:00:04.000"},{"value":"DOG"},{"value":"PETX"},{"value":"1,629"},{"value":"106.5400"},{"value":"173,553.6600"},{"value":"sell"},{"value":"156.5882"},{"value":"40"},{"value":"-1.1765"}],[{"value":"2018-06-01 08:00:04.100"},{"value":"DOG"},{"value":"PETX"},{"value":"4"},{"value":"106.3100"},{"value":"425.2400"},{"value":"sell"},{"value":"156.5216"},{"value":"41"},{"value":"-0.1522"}],[{"value":"2018-06-01 08:00:04.200"},{"value":"FISH"},{"value":"PETX"},{"value":"1"},{"value":"126.9800"},{"value":"126.9800"},{"value":"buy"},{"value":"156.4686"},{"value":"42"},{"value":"0.0083"}],[{"value":"2018-06-01 08:00:04.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"1"},{"value":"105.8200"},{"value":"105.8200"},{"value":"buy"},{"value":"156.4396"},{"value":"43"},{"value":"0.0791"}],[{"value":"2018-06-01 08:00:04.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"106.0100"},{"value":"10,601.0000"},{"value":"sell"},{"value":"156.2255"},{"value":"44"},{"value":"-1.0499"}],[{"value":"2018-06-01 08:00:04.500"},{"value":"CAT"},{"value":"PETX"},{"value":"2"},{"value":"106.1800"},{"value":"212.3600"},{"value":"buy"},{"value":"156.0723"},{"value":"45"},{"value":"0.1217"}],[{"value":"2018-06-01 08:00:04.600"},{"value":"BIRD"},{"value":"TPET"},{"value":"6"},{"value":"164.3500"},{"value":"986.1000"},{"value":"sell"},{"value":"155.9141"},{"value":"46"},{"value":"-0.1806"}],[{"value":"2018-06-01 08:00:04.700"},{"value":"DOG"},{"value":"PETX"},{"value":"3,485"},{"value":"105.6000"},{"value":"368,016.0000"},{"value":"sell"},{"value":"155.5098"},{"value":"47"},{"value":"-1.5161"}],[{"value":"2018-06-01 08:00:04.800"},{"value":"DOG"},{"value":"PETX"},{"value":"727"},{"value":"105.1300"},{"value":"76,429.5100"},{"value":"sell"},{"value":"155.0158"},{"value":"48"},{"value":"-0.8990"}],[{"value":"2018-06-01 08:00:04.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"5,421"},{"value":"106.3400"},{"value":"576,469.1400"},{"value":"sell"},{"value":"154.2929"},{"value":"49"},{"value":"-1.7566"}],[{"value":"2018-06-01 08:00:05.000"},{"value":"DOG"},{"value":"PETX"},{"value":"2,113"},{"value":"104.5900"},{"value":"220,998.6700"},{"value":"sell"},{"value":"153.4685"},{"value":"50"},{"value":"-1.2830"}],[{"value":"2018-06-01 08:00:05.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,130"},{"value":"106.5900"},{"value":"120,446.7000"},{"value":"buy"},{"value":"152.9825"},{"value":"51"},{"value":"1.0424"}],[{"value":"2018-06-01 08:00:05.200"},{"value":"LIZARD"},{"value":"TPET"},{"value":"2"},{"value":"225.5600"},{"value":"451.1200"},{"value":"sell"},{"value":"152.3781"},{"value":"52"},{"value":"-1.1386"}],[{"value":"2018-06-01 08:00:05.300"},{"value":"FISH"},{"value":"PETX"},{"value":"529"},{"value":"127.0100"},{"value":"67,188.2900"},{"value":"buy"},{"value":"152.0299"},{"value":"53"},{"value":"0.8084"}],[{"value":"2018-06-01 08:00:05.400"},{"value":"LIZARD"},{"value":"TPET"},{"value":"293"},{"value":"225.7400"},{"value":"66,141.8200"},{"value":"buy"},{"value":"151.8651"},{"value":"54"},{"value":"0.6639"}],[{"value":"2018-06-01 08:00:05.500"},{"value":"CAT"},{"value":"NYPE"},{"value":"123"},{"value":"106.7600"},{"value":"13,131.4800"},{"value":"sell"},{"value":"151.6401"},{"value":"55"},{"value":"-0.4972"}],[{"value":"2018-06-01 08:00:05.600"},{"value":"LIZARD"},{"value":"TPET"},{"value":"100"},{"value":"225.7600"},{"value":"22,576.0000"},{"value":"sell"},{"value":"151.1844"},{"value":"56"},{"value":"-1.4976"}],[{"value":"2018-06-01 08:00:05.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,990"},{"value":"107.0300"},{"value":"212,989.7000"},{"value":"buy"},{"value":"151.0393"},{"value":"57"},{"value":"1.2576"}],[{"value":"2018-06-01 08:00:05.800"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.0700"},{"value":"12,707.0000"},{"value":"buy"},{"value":"150.9961"},{"value":"58"},{"value":"0.4170"}],[{"value":"2018-06-01 08:00:05.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"140"},{"value":"107.3300"},{"value":"15,026.2000"},{"value":"buy"},{"value":"151.0546"},{"value":"59"},{"value":"0.5181"}],[{"value":"2018-06-01 08:00:06.000"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"104.3000"},{"value":"10,430.0000"},{"value":"buy"},{"value":"151.4827"},{"value":"60"},{"value":"2.0973"}],[{"value":"2018-06-01 08:00:06.100"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"103.9800"},{"value":"10,398.0000"},{"value":"sell"},{"value":"151.7109"},{"value":"61"},{"value":"-0.6743"}],[{"value":"2018-06-01 08:00:06.200"},{"value":"LIZARD"},{"value":"TPET"},{"value":"8"},{"value":"225.7600"},{"value":"1,806.0800"},{"value":"sell"},{"value":"151.8624"},{"value":"62"},{"value":"-0.1954"}],[{"value":"2018-06-01 08:00:06.300"},{"value":"DOG"},{"value":"PETX"},{"value":"4,262"},{"value":"103.5300"},{"value":"441,244.8600"},{"value":"sell"},{"value":"151.6925"},{"value":"63"},{"value":"-1.6213"}],[{"value":"2018-06-01 08:00:06.400"},{"value":"DOG"},{"value":"PETX"},{"value":"35"},{"value":"103.1500"},{"value":"3,610.2500"},{"value":"buy"},{"value":"151.6126"},{"value":"64"},{"value":"0.3264"}],[{"value":"2018-06-01 08:00:06.500"},{"value":"DOG"},{"value":"PETX"},{"value":"20"},{"value":"102.8600"},{"value":"2,057.2000"},{"value":"buy"},{"value":"151.6337"},{"value":"65"},{"value":"0.4772"}],[{"value":"2018-06-01 08:00:06.600"},{"value":"CAT"},{"value":"NYPE"},{"value":"534"},{"value":"107.6800"},{"value":"57,501.1200"},{"value":"buy"},{"value":"151.7980"},{"value":"66"},{"value":"0.8109"}],[{"value":"2018-06-01 08:00:06.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"711"},{"value":"108.0800"},{"value":"76,844.8800"},{"value":"buy"},{"value":"152.0942"},{"value":"67"},{"value":"0.8923"}],[{"value":"2018-06-01 08:00:06.800"},{"value":"FISH"},{"value":"PETX"},{"value":"88"},{"value":"127.0900"},{"value":"11,183.9200"},{"value":"sell"},{"value":"152.2562"},{"value":"68"},{"value":"-0.4441"}],[{"value":"2018-06-01 08:00:06.900"},{"value":"FISH"},{"value":"PETX"},{"value":"3,070"},{"value":"127.2500"},{"value":"390,657.5000"},{"value":"buy"},{"value":"152.6523"},{"value":"69"},{"value":"1.4534"}],[{"value":"2018-06-01 08:00:07.000"},{"value":"LIZARD"},{"value":"TPET"},{"value":"300"},{"value":"225.8000"},{"value":"67,740.0000"},{"value":"buy"},{"value":"153.0397"},{"value":"70"},{"value":"0.3482"}],[{"value":"2018-06-01 08:00:07.100"},{"value":"DOG"},{"value":"PETX"},{"value":"371"},{"value":"102.6600"},{"value":"38,086.8600"},{"value":"buy"},{"value":"153.4871"},{"value":"71"},{"value":"0.7180"}],[{"value":"2018-06-01 08:00:07.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"7,480"},{"value":"108.6300"},{"value":"812,552.4000"},{"value":"buy"},{"value":"154.2078"},{"value":"72"},{"value":"1.9555"}],[{"value":"2018-06-01 08:00:07.300"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"102.3600"},{"value":"10,236.0000"},{"value":"sell"},{"value":"154.5609"},{"value":"73"},{"value":"-1.3072"}],[{"value":"2018-06-01 08:00:07.400"},{"value":"BIRD"},{"value":"TPET"},{"value":"428"},{"value":"164.2900"},{"value":"70,316.1200"},{"value":"buy"},{"value":"154.9867"},{"value":"74"},{"value":"0.7535"}],[{"value":"2018-06-01 08:00:07.500"},{"value":"DOG"},{"value":"PETX"},{"value":"99"},{"value":"102.1200"},{"value":"10,109.8800"},{"value":"buy"},{"value":"155.4189"},{"value":"75"},{"value":"0.4616"}],[{"value":"2018-06-01 08:00:07.600"},{"value":"DOG"},{"value":"PETX"},{"value":"347"},{"value":"101.9800"},{"value":"35,387.0600"},{"value":"buy"},{"value":"155.9001"},{"value":"76"},{"value":"0.7026"}],[{"value":"2018-06-01 08:00:07.700"},{"value":"BIRD"},{"value":"TPET"},{"value":"500"},{"value":"164.2600"},{"value":"82,130.0000"},{"value":"buy"},{"value":"156.3253"},{"value":"77"},{"value":"0.1723"}],[{"value":"2018-06-01 08:00:07.800"},{"value":"BIRD"},{"value":"TPET"},{"value":"2,128"},{"value":"164.1100"},{"value":"349,226.0800"},{"value":"sell"},{"value":"156.4403"},{"value":"78"},{"value":"-1.2862"}],[{"value":"2018-06-01 08:00:07.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"12,212"},{"value":"108.9100"},{"value":"1,330,008.9200"},{"value":"sell"},{"value":"156.1171"},{"value":"79"},{"value":"-2.3028"}],[{"value":"2018-06-01 08:00:08.000"},{"value":"CAT"},{"value":"PETX"},{"value":"9"},{"value":"109.1800"},{"value":"982.6200"},{"value":"buy"},{"value":"155.8891"},{"value":"80"},{"value":"0.2025"}],[{"value":"2018-06-01 08:00:08.100"},{"value":"DOG"},{"value":"PETX"},{"value":"98"},{"value":"101.9000"},{"value":"9,986.2000"},{"value":"buy"},{"value":"155.7859"},{"value":"81"},{"value":"0.4606"}],[{"value":"2018-06-01 08:00:08.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"489"},{"value":"109.3400"},{"value":"53,467.2600"},{"value":"sell"},{"value":"155.5587"},{"value":"82"},{"value":"-0.7874"}],[{"value":"2018-06-01 08:00:08.300"},{"value":"DOG"},{"value":"PETX"},{"value":"436"},{"value":"101.7500"},{"value":"44,363.0000"},{"value":"sell"},{"value":"155.2354"},{"value":"83"},{"value":"-0.7578"}],[{"value":"2018-06-01 08:00:08.400"},{"value":"FISH"},{"value":"PETX"},{"value":"2"},{"value":"127.2100"},{"value":"254.4200"},{"value":"sell"},{"value":"154.6404"},{"value":"84"},{"value":"-1.8217"}],[{"value":"2018-06-01 08:00:08.500"},{"value":"CAT"},{"value":"NYPE"},{"value":"309"},{"value":"109.4300"},{"value":"33,813.8700"},{"value":"sell"},{"value":"154.0307"},{"value":"85"},{"value":"-0.6757"}],[{"value":"2018-06-01 08:00:08.600"},{"value":"BIRD"},{"value":"TPET"},{"value":"3,273"},{"value":"163.8300"},{"value":"536,215.5900"},{"value":"sell"},{"value":"153.2625"},{"value":"86"},{"value":"-1.4847"}],[{"value":"2018-06-01 08:00:08.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"28"},{"value":"109.4800"},{"value":"3,065.4400"},{"value":"sell"},{"value":"152.5787"},{"value":"87"},{"value":"-0.3026"}],[{"value":"2018-06-01 08:00:08.800"},{"value":"DOG"},{"value":"PETX"},{"value":"4,020"},{"value":"101.7700"},{"value":"409,115.4000"},{"value":"buy"},{"value":"152.3070"},{"value":"88"},{"value":"1.5903"}],[{"value":"2018-06-01 08:00:08.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"50"},{"value":"109.4200"},{"value":"5,471.0000"},{"value":"sell"},{"value":"151.8779"},{"value":"89"},{"value":"-1.1409"}],[{"value":"2018-06-01 08:00:09.000"},{"value":"CAT"},{"value":"NYPE"},{"value":"12,540"},{"value":"109.5900"},{"value":"1,374,258.6000"},{"value":"buy"},{"value":"151.9476"},{"value":"90"},{"value":"2.3232"}],[{"value":"2018-06-01 08:00:09.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"109.7100"},{"value":"10,971.0000"},{"value":"sell"},{"value":"151.9575"},{"value":"91"},{"value":"-0.2603"}],[{"value":"2018-06-01 08:00:09.200"},{"value":"DOG"},{"value":"PETX"},{"value":"4,143"},{"value":"101.6300"},{"value":"421,053.0900"},{"value":"sell"},{"value":"151.6745"},{"value":"92"},{"value":"-1.6061"}],[{"value":"2018-06-01 08:00:09.300"},{"value":"LIZARD"},{"value":"TPET"},{"value":"947"},{"value":"225.7400"},{"value":"213,775.7800"},{"value":"sell"},{"value":"151.2648"},{"value":"93"},{"value":"-0.9818"}],[{"value":"2018-06-01 08:00:09.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"101.5900"},{"value":"10,159.0000"},{"value":"buy"},{"value":"151.0986"},{"value":"94"},{"value":"0.9333"}],[{"value":"2018-06-01 08:00:09.500"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.1200"},{"value":"12,712.0000"},{"value":"sell"},{"value":"150.8477"},{"value":"95"},{"value":"-0.6329"}],[{"value":"2018-06-01 08:00:09.600"},{"value":"DOG"},{"value":"PETX"},{"value":"2,887"},{"value":"101.4200"},{"value":"292,799.5400"},{"value":"sell"},{"value":"150.3843"},{"value":"96"},{"value":"-1.4239"}],[{"value":"2018-06-01 08:00:09.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"20"},{"value":"109.8000"},{"value":"2,196.0000"},{"value":"sell"},{"value":"149.9563"},{"value":"97"},{"value":"-0.2677"}],[{"value":"2018-06-01 08:00:09.800"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"101.3200"},{"value":"10,132.0000"},{"value":"buy"},{"value":"149.6898"},{"value":"98"},{"value":"0.4629"}],[{"value":"2018-06-01 08:00:09.900"},{"value":"DOG"},{"value":"PETX"},{"value":"1,130"},{"value":"101.1200"},{"value":"114,265.6000"},{"value":"sell"},{"value":"149.2828"},{"value":"99"},{"value":"-1.0415"}]]}},"selection_panel_instance":{"type":"deephaven.ui.Element","data":{"document":{"__dhElemName":"__main__.selection_panel","props":{"children":{"__dhElemName":"deephaven.ui.components.Flex","props":{"direction":"column","gap":"size-100","flex":"auto","children":[{"__dhObid":0},{"__dhElemName":"deephaven.ui.elements.UITable","props":{"table":{"__dhObid":1},"showQuickFilters":false,"showGroupingColumn":true,"showSearch":false,"reverse":false}}]}}}},"state":"{}"}}}} \ No newline at end of file diff --git a/plugins/plotly-express/docs/snapshots/846c16e63ddb1fa3aeb08f6e2f7d96d2.json b/plugins/plotly-express/docs/snapshots/846c16e63ddb1fa3aeb08f6e2f7d96d2.json new file mode 100644 index 000000000..141095172 --- /dev/null +++ b/plugins/plotly-express/docs/snapshots/846c16e63ddb1fa3aeb08f6e2f7d96d2.json @@ -0,0 +1 @@ +{"file":"events.md","objects":{}} \ No newline at end of file diff --git a/plugins/plotly-express/docs/snapshots/85be7fc6e1425eefd9038059092c01a6.json b/plugins/plotly-express/docs/snapshots/85be7fc6e1425eefd9038059092c01a6.json new file mode 100644 index 000000000..150126b73 --- /dev/null +++ b/plugins/plotly-express/docs/snapshots/85be7fc6e1425eefd9038059092c01a6.json @@ -0,0 +1 @@ +{"file":"events.md","objects":{"stocks":{"type":"Table","data":{"columns":[{"name":"Timestamp","type":"java.time.Instant"},{"name":"Sym","type":"java.lang.String"},{"name":"Exchange","type":"java.lang.String"},{"name":"Size","type":"long"},{"name":"Price","type":"double"},{"name":"Dollars","type":"double"},{"name":"Side","type":"java.lang.String"},{"name":"SPet500","type":"double"},{"name":"Index","type":"long"},{"name":"Random","type":"double"}],"rows":[[{"value":"2018-06-01 08:00:00.700"},{"value":"DOG"},{"value":"PETX"},{"value":"111"},{"value":"108.4800"},{"value":"12,041.2800"},{"value":"buy"},{"value":"151.1169"},{"value":"7"},{"value":"0.4805"}],[{"value":"2018-06-01 08:00:00.900"},{"value":"DOG"},{"value":"PETX"},{"value":"88"},{"value":"108.4400"},{"value":"9,542.7200"},{"value":"sell"},{"value":"151.3445"},{"value":"9"},{"value":"-0.4436"}],[{"value":"2018-06-01 08:00:01.100"},{"value":"DOG"},{"value":"PETX"},{"value":"1,791"},{"value":"108.2800"},{"value":"193,929.4800"},{"value":"sell"},{"value":"151.3650"},{"value":"11"},{"value":"-1.2143"}],[{"value":"2018-06-01 08:00:01.200"},{"value":"DOG"},{"value":"PETX"},{"value":"28"},{"value":"108.1200"},{"value":"3,027.3600"},{"value":"sell"},{"value":"151.2188"},{"value":"12"},{"value":"-0.3019"}],[{"value":"2018-06-01 08:00:01.600"},{"value":"DOG"},{"value":"PETX"},{"value":"35"},{"value":"107.9300"},{"value":"3,777.5500"},{"value":"sell"},{"value":"152.2546"},{"value":"16"},{"value":"-0.3267"}],[{"value":"2018-06-01 08:00:01.700"},{"value":"DOG"},{"value":"PETX"},{"value":"2"},{"value":"107.8400"},{"value":"215.6800"},{"value":"buy"},{"value":"152.6027"},{"value":"17"},{"value":"0.7731"}],[{"value":"2018-06-01 08:00:02.500"},{"value":"DOG"},{"value":"PETX"},{"value":"1,491"},{"value":"107.6500"},{"value":"160,506.1500"},{"value":"sell"},{"value":"156.9654"},{"value":"25"},{"value":"-1.1422"}],[{"value":"2018-06-01 08:00:02.900"},{"value":"DOG"},{"value":"PETX"},{"value":"1,798"},{"value":"107.3600"},{"value":"193,033.2800"},{"value":"sell"},{"value":"156.5375"},{"value":"29"},{"value":"-1.2159"}],[{"value":"2018-06-01 08:00:03.000"},{"value":"DOG"},{"value":"PETX"},{"value":"410"},{"value":"107.1700"},{"value":"43,939.7000"},{"value":"buy"},{"value":"156.3359"},{"value":"30"},{"value":"0.7425"}],[{"value":"2018-06-01 08:00:03.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"106.9800"},{"value":"10,698.0000"},{"value":"sell"},{"value":"156.3239"},{"value":"34"},{"value":"-0.1515"}],[{"value":"2018-06-01 08:00:03.500"},{"value":"DOG"},{"value":"PETX"},{"value":"650"},{"value":"106.8900"},{"value":"69,478.5000"},{"value":"buy"},{"value":"156.4535"},{"value":"35"},{"value":"0.8659"}],[{"value":"2018-06-01 08:00:03.600"},{"value":"DOG"},{"value":"PETX"},{"value":"155"},{"value":"106.7600"},{"value":"16,547.8000"},{"value":"sell"},{"value":"156.4623"},{"value":"36"},{"value":"-0.5371"}],[{"value":"2018-06-01 08:00:04.000"},{"value":"DOG"},{"value":"PETX"},{"value":"1,629"},{"value":"106.5400"},{"value":"173,553.6600"},{"value":"sell"},{"value":"156.5882"},{"value":"40"},{"value":"-1.1765"}],[{"value":"2018-06-01 08:00:04.100"},{"value":"DOG"},{"value":"PETX"},{"value":"4"},{"value":"106.3100"},{"value":"425.2400"},{"value":"sell"},{"value":"156.5216"},{"value":"41"},{"value":"-0.1522"}],[{"value":"2018-06-01 08:00:04.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"106.0100"},{"value":"10,601.0000"},{"value":"sell"},{"value":"156.2255"},{"value":"44"},{"value":"-1.0499"}],[{"value":"2018-06-01 08:00:04.700"},{"value":"DOG"},{"value":"PETX"},{"value":"3,485"},{"value":"105.6000"},{"value":"368,016.0000"},{"value":"sell"},{"value":"155.5098"},{"value":"47"},{"value":"-1.5161"}],[{"value":"2018-06-01 08:00:04.800"},{"value":"DOG"},{"value":"PETX"},{"value":"727"},{"value":"105.1300"},{"value":"76,429.5100"},{"value":"sell"},{"value":"155.0158"},{"value":"48"},{"value":"-0.8990"}],[{"value":"2018-06-01 08:00:05.000"},{"value":"DOG"},{"value":"PETX"},{"value":"2,113"},{"value":"104.5900"},{"value":"220,998.6700"},{"value":"sell"},{"value":"153.4685"},{"value":"50"},{"value":"-1.2830"}],[{"value":"2018-06-01 08:00:06.000"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"104.3000"},{"value":"10,430.0000"},{"value":"buy"},{"value":"151.4827"},{"value":"60"},{"value":"2.0973"}],[{"value":"2018-06-01 08:00:06.100"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"103.9800"},{"value":"10,398.0000"},{"value":"sell"},{"value":"151.7109"},{"value":"61"},{"value":"-0.6743"}],[{"value":"2018-06-01 08:00:06.300"},{"value":"DOG"},{"value":"PETX"},{"value":"4,262"},{"value":"103.5300"},{"value":"441,244.8600"},{"value":"sell"},{"value":"151.6925"},{"value":"63"},{"value":"-1.6213"}],[{"value":"2018-06-01 08:00:06.400"},{"value":"DOG"},{"value":"PETX"},{"value":"35"},{"value":"103.1500"},{"value":"3,610.2500"},{"value":"buy"},{"value":"151.6126"},{"value":"64"},{"value":"0.3264"}],[{"value":"2018-06-01 08:00:06.500"},{"value":"DOG"},{"value":"PETX"},{"value":"20"},{"value":"102.8600"},{"value":"2,057.2000"},{"value":"buy"},{"value":"151.6337"},{"value":"65"},{"value":"0.4772"}],[{"value":"2018-06-01 08:00:07.100"},{"value":"DOG"},{"value":"PETX"},{"value":"371"},{"value":"102.6600"},{"value":"38,086.8600"},{"value":"buy"},{"value":"153.4871"},{"value":"71"},{"value":"0.7180"}],[{"value":"2018-06-01 08:00:07.300"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"102.3600"},{"value":"10,236.0000"},{"value":"sell"},{"value":"154.5609"},{"value":"73"},{"value":"-1.3072"}],[{"value":"2018-06-01 08:00:07.500"},{"value":"DOG"},{"value":"PETX"},{"value":"99"},{"value":"102.1200"},{"value":"10,109.8800"},{"value":"buy"},{"value":"155.4189"},{"value":"75"},{"value":"0.4616"}],[{"value":"2018-06-01 08:00:07.600"},{"value":"DOG"},{"value":"PETX"},{"value":"347"},{"value":"101.9800"},{"value":"35,387.0600"},{"value":"buy"},{"value":"155.9001"},{"value":"76"},{"value":"0.7026"}],[{"value":"2018-06-01 08:00:08.100"},{"value":"DOG"},{"value":"PETX"},{"value":"98"},{"value":"101.9000"},{"value":"9,986.2000"},{"value":"buy"},{"value":"155.7859"},{"value":"81"},{"value":"0.4606"}],[{"value":"2018-06-01 08:00:08.300"},{"value":"DOG"},{"value":"PETX"},{"value":"436"},{"value":"101.7500"},{"value":"44,363.0000"},{"value":"sell"},{"value":"155.2354"},{"value":"83"},{"value":"-0.7578"}],[{"value":"2018-06-01 08:00:08.800"},{"value":"DOG"},{"value":"PETX"},{"value":"4,020"},{"value":"101.7700"},{"value":"409,115.4000"},{"value":"buy"},{"value":"152.3070"},{"value":"88"},{"value":"1.5903"}],[{"value":"2018-06-01 08:00:09.200"},{"value":"DOG"},{"value":"PETX"},{"value":"4,143"},{"value":"101.6300"},{"value":"421,053.0900"},{"value":"sell"},{"value":"151.6745"},{"value":"92"},{"value":"-1.6061"}],[{"value":"2018-06-01 08:00:09.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"101.5900"},{"value":"10,159.0000"},{"value":"buy"},{"value":"151.0986"},{"value":"94"},{"value":"0.9333"}],[{"value":"2018-06-01 08:00:09.600"},{"value":"DOG"},{"value":"PETX"},{"value":"2,887"},{"value":"101.4200"},{"value":"292,799.5400"},{"value":"sell"},{"value":"150.3843"},{"value":"96"},{"value":"-1.4239"}],[{"value":"2018-06-01 08:00:09.800"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"101.3200"},{"value":"10,132.0000"},{"value":"buy"},{"value":"149.6898"},{"value":"98"},{"value":"0.4629"}],[{"value":"2018-06-01 08:00:09.900"},{"value":"DOG"},{"value":"PETX"},{"value":"1,130"},{"value":"101.1200"},{"value":"114,265.6000"},{"value":"sell"},{"value":"149.2828"},{"value":"99"},{"value":"-1.0415"}],[{"value":"2018-06-01 08:00:10.900"},{"value":"DOG"},{"value":"PETX"},{"value":"19"},{"value":"100.9700"},{"value":"1,918.4300"},{"value":"buy"},{"value":"146.8845"},{"value":"109"},{"value":"0.2663"}],[{"value":"2018-06-01 08:00:11.200"},{"value":"DOG"},{"value":"PETX"},{"value":"184"},{"value":"100.7800"},{"value":"18,543.5200"},{"value":"sell"},{"value":"146.0829"},{"value":"112"},{"value":"-0.5682"}],[{"value":"2018-06-01 08:00:12.000"},{"value":"DOG"},{"value":"PETX"},{"value":"6,978"},{"value":"100.4200"},{"value":"700,730.7600"},{"value":"sell"},{"value":"146.1926"},{"value":"120"},{"value":"-1.9109"}],[{"value":"2018-06-01 08:00:12.200"},{"value":"DOG"},{"value":"PETX"},{"value":"3,250"},{"value":"100.2400"},{"value":"325,780.0000"},{"value":"buy"},{"value":"145.8186"},{"value":"122"},{"value":"1.4813"}],[{"value":"2018-06-01 08:00:13.000"},{"value":"DOG"},{"value":"PETX"},{"value":"2,240"},{"value":"100.2000"},{"value":"224,448.0000"},{"value":"buy"},{"value":"143.4828"},{"value":"130"},{"value":"1.3084"}],[{"value":"2018-06-01 08:00:13.100"},{"value":"DOG"},{"value":"PETX"},{"value":"429"},{"value":"100.0900"},{"value":"42,938.6100"},{"value":"sell"},{"value":"143.0835"},{"value":"131"},{"value":"-0.7538"}],[{"value":"2018-06-01 08:00:13.200"},{"value":"DOG"},{"value":"PETX"},{"value":"421"},{"value":"100.0700"},{"value":"42,129.4700"},{"value":"buy"},{"value":"142.8924"},{"value":"132"},{"value":"0.7490"}],[{"value":"2018-06-01 08:00:13.300"},{"value":"DOG"},{"value":"PETX"},{"value":"5,760"},{"value":"100.2100"},{"value":"577,209.6000"},{"value":"buy"},{"value":"143.0608"},{"value":"133"},{"value":"1.7925"}],[{"value":"2018-06-01 08:00:13.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"100.4400"},{"value":"10,044.0000"},{"value":"buy"},{"value":"143.3717"},{"value":"134"},{"value":"0.9541"}],[{"value":"2018-06-01 08:00:14.100"},{"value":"DOG"},{"value":"PETX"},{"value":"460"},{"value":"100.7100"},{"value":"46,326.6000"},{"value":"buy"},{"value":"146.6154"},{"value":"141"},{"value":"0.7718"}],[{"value":"2018-06-01 08:00:14.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"101.0800"},{"value":"10,108.0000"},{"value":"buy"},{"value":"148.5036"},{"value":"144"},{"value":"1.2424"}],[{"value":"2018-06-01 08:00:14.800"},{"value":"DOG"},{"value":"PETX"},{"value":"50"},{"value":"101.2800"},{"value":"5,064.0000"},{"value":"sell"},{"value":"150.8468"},{"value":"148"},{"value":"-1.3911"}],[{"value":"2018-06-01 08:00:15.600"},{"value":"DOG"},{"value":"PETX"},{"value":"2"},{"value":"101.4800"},{"value":"202.9600"},{"value":"buy"},{"value":"148.9938"},{"value":"156"},{"value":"0.1087"}],[{"value":"2018-06-01 08:00:15.900"},{"value":"DOG"},{"value":"PETX"},{"value":"1"},{"value":"101.6400"},{"value":"101.6400"},{"value":"sell"},{"value":"148.8404"},{"value":"159"},{"value":"-0.0997"}],[{"value":"2018-06-01 08:00:16.100"},{"value":"DOG"},{"value":"PETX"},{"value":"5,310"},{"value":"101.9500"},{"value":"541,354.5000"},{"value":"buy"},{"value":"148.9119"},{"value":"161"},{"value":"1.7446"}],[{"value":"2018-06-01 08:00:16.300"},{"value":"DOG"},{"value":"PETX"},{"value":"5,600"},{"value":"102.4100"},{"value":"573,496.0000"},{"value":"buy"},{"value":"149.5777"},{"value":"163"},{"value":"1.7758"}],[{"value":"2018-06-01 08:00:17.200"},{"value":"DOG"},{"value":"PETX"},{"value":"11"},{"value":"102.8400"},{"value":"1,131.2400"},{"value":"buy"},{"value":"152.8909"},{"value":"172"},{"value":"0.2168"}],[{"value":"2018-06-01 08:00:17.300"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"103.2300"},{"value":"10,323.0000"},{"value":"sell"},{"value":"152.9857"},{"value":"173"},{"value":"-0.0353"}],[{"value":"2018-06-01 08:00:17.500"},{"value":"DOG"},{"value":"PETX"},{"value":"174"},{"value":"103.5200"},{"value":"18,012.4800"},{"value":"sell"},{"value":"153.3544"},{"value":"175"},{"value":"-0.5583"}],[{"value":"2018-06-01 08:00:18.200"},{"value":"DOG"},{"value":"PETX"},{"value":"57"},{"value":"103.7500"},{"value":"5,913.7500"},{"value":"sell"},{"value":"155.4856"},{"value":"182"},{"value":"-0.3827"}],[{"value":"2018-06-01 08:00:18.400"},{"value":"DOG"},{"value":"PETX"},{"value":"7,263"},{"value":"103.7800"},{"value":"753,754.1400"},{"value":"sell"},{"value":"156.0415"},{"value":"184"},{"value":"-1.9365"}],[{"value":"2018-06-01 08:00:18.600"},{"value":"DOG"},{"value":"PETX"},{"value":"607"},{"value":"103.7200"},{"value":"62,958.0400"},{"value":"sell"},{"value":"156.3179"},{"value":"186"},{"value":"-0.8464"}],[{"value":"2018-06-01 08:00:18.700"},{"value":"DOG"},{"value":"PETX"},{"value":"5,480"},{"value":"103.5000"},{"value":"567,180.0000"},{"value":"sell"},{"value":"156.0311"},{"value":"187"},{"value":"-1.7630"}],[{"value":"2018-06-01 08:00:18.900"},{"value":"DOG"},{"value":"PETX"},{"value":"362"},{"value":"103.3700"},{"value":"37,419.9400"},{"value":"buy"},{"value":"155.3772"},{"value":"189"},{"value":"0.7122"}],[{"value":"2018-06-01 08:00:19.200"},{"value":"DOG"},{"value":"PETX"},{"value":"18"},{"value":"103.2300"},{"value":"1,858.1400"},{"value":"sell"},{"value":"155.3089"},{"value":"192"},{"value":"-0.2607"}],[{"value":"2018-06-01 08:00:19.300"},{"value":"DOG"},{"value":"PETX"},{"value":"200"},{"value":"103.3300"},{"value":"20,666.0000"},{"value":"buy"},{"value":"155.7080"},{"value":"193"},{"value":"2.3786"}],[{"value":"2018-06-01 08:00:19.700"},{"value":"DOG"},{"value":"PETX"},{"value":"1,080"},{"value":"103.5100"},{"value":"111,790.8000"},{"value":"buy"},{"value":"157.8246"},{"value":"197"},{"value":"1.0274"}],[{"value":"2018-06-01 08:00:19.900"},{"value":"DOG"},{"value":"PETX"},{"value":"4"},{"value":"103.6900"},{"value":"414.7600"},{"value":"buy"},{"value":"158.3577"},{"value":"199"},{"value":"0.1334"}],[{"value":"2018-06-01 08:00:20.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"103.8100"},{"value":"10,381.0000"},{"value":"sell"},{"value":"158.7106"},{"value":"204"},{"value":"-0.5010"}],[{"value":"2018-06-01 08:00:20.500"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"103.9100"},{"value":"10,391.0000"},{"value":"sell"},{"value":"158.6131"},{"value":"205"},{"value":"-0.0454"}],[{"value":"2018-06-01 08:00:20.700"},{"value":"DOG"},{"value":"PETX"},{"value":"2,331"},{"value":"103.8700"},{"value":"242,120.9700"},{"value":"sell"},{"value":"157.9498"},{"value":"207"},{"value":"-1.3259"}],[{"value":"2018-06-01 08:00:20.800"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"103.7600"},{"value":"10,376.0000"},{"value":"sell"},{"value":"157.4521"},{"value":"208"},{"value":"-0.8003"}],[{"value":"2018-06-01 08:00:20.900"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"103.6800"},{"value":"10,368.0000"},{"value":"buy"},{"value":"157.0695"},{"value":"209"},{"value":"0.1376"}],[{"value":"2018-06-01 08:00:21.000"},{"value":"DOG"},{"value":"PETX"},{"value":"6,530"},{"value":"103.7800"},{"value":"677,683.4000"},{"value":"buy"},{"value":"157.0951"},{"value":"210"},{"value":"1.8689"}],[{"value":"2018-06-01 08:00:21.100"},{"value":"DOG"},{"value":"PETX"},{"value":"141"},{"value":"103.8200"},{"value":"14,638.6200"},{"value":"sell"},{"value":"157.0218"},{"value":"211"},{"value":"-0.5197"}],[{"value":"2018-06-01 08:00:21.200"},{"value":"DOG"},{"value":"PETX"},{"value":"475"},{"value":"103.9300"},{"value":"49,366.7500"},{"value":"buy"},{"value":"157.1032"},{"value":"212"},{"value":"0.7799"}],[{"value":"2018-06-01 08:00:21.400"},{"value":"DOG"},{"value":"PETX"},{"value":"87"},{"value":"103.9900"},{"value":"9,047.1300"},{"value":"sell"},{"value":"156.6737"},{"value":"214"},{"value":"-0.4428"}],[{"value":"2018-06-01 08:00:21.800"},{"value":"DOG"},{"value":"PETX"},{"value":"1"},{"value":"104.0600"},{"value":"104.0600"},{"value":"buy"},{"value":"154.9707"},{"value":"218"},{"value":"0.0816"}],[{"value":"2018-06-01 08:00:22.300"},{"value":"DOG"},{"value":"PETX"},{"value":"972"},{"value":"104.2100"},{"value":"101,292.1200"},{"value":"buy"},{"value":"152.9842"},{"value":"223"},{"value":"0.9906"}],[{"value":"2018-06-01 08:00:22.600"},{"value":"DOG"},{"value":"PETX"},{"value":"33"},{"value":"104.3100"},{"value":"3,442.2300"},{"value":"sell"},{"value":"153.4246"},{"value":"226"},{"value":"-0.3193"}],[{"value":"2018-06-01 08:00:22.700"},{"value":"DOG"},{"value":"PETX"},{"value":"16"},{"value":"104.3800"},{"value":"1,670.0800"},{"value":"sell"},{"value":"153.5308"},{"value":"227"},{"value":"-0.2515"}],[{"value":"2018-06-01 08:00:22.900"},{"value":"DOG"},{"value":"PETX"},{"value":"200"},{"value":"104.4800"},{"value":"20,896.0000"},{"value":"buy"},{"value":"153.9573"},{"value":"229"},{"value":"0.3123"}],[{"value":"2018-06-01 08:00:23.200"},{"value":"DOG"},{"value":"PETX"},{"value":"5,900"},{"value":"104.7300"},{"value":"617,907.0000"},{"value":"buy"},{"value":"154.2931"},{"value":"232"},{"value":"1.8074"}],[{"value":"2018-06-01 08:00:23.400"},{"value":"DOG"},{"value":"PETX"},{"value":"300"},{"value":"104.8800"},{"value":"31,464.0000"},{"value":"sell"},{"value":"154.5407"},{"value":"234"},{"value":"-0.9017"}],[{"value":"2018-06-01 08:00:23.500"},{"value":"DOG"},{"value":"PETX"},{"value":"6"},{"value":"105.0300"},{"value":"630.1800"},{"value":"buy"},{"value":"154.5909"},{"value":"235"},{"value":"0.1788"}],[{"value":"2018-06-01 08:00:24.200"},{"value":"DOG"},{"value":"PETX"},{"value":"25"},{"value":"105.1900"},{"value":"2,629.7500"},{"value":"buy"},{"value":"153.7320"},{"value":"242"},{"value":"0.2923"}],[{"value":"2018-06-01 08:00:24.700"},{"value":"DOG"},{"value":"PETX"},{"value":"701"},{"value":"105.2600"},{"value":"73,787.2600"},{"value":"sell"},{"value":"151.1367"},{"value":"247"},{"value":"-0.8883"}],[{"value":"2018-06-01 08:00:25.000"},{"value":"DOG"},{"value":"PETX"},{"value":"613"},{"value":"105.2300"},{"value":"64,505.9900"},{"value":"sell"},{"value":"149.6864"},{"value":"250"},{"value":"-0.8490"}],[{"value":"2018-06-01 08:00:25.100"},{"value":"DOG"},{"value":"PETX"},{"value":"24,460"},{"value":"105.4900"},{"value":"2,580,285.4000"},{"value":"buy"},{"value":"149.7582"},{"value":"251"},{"value":"2.9026"}],[{"value":"2018-06-01 08:00:25.300"},{"value":"DOG"},{"value":"PETX"},{"value":"1,167"},{"value":"105.6200"},{"value":"123,258.5400"},{"value":"sell"},{"value":"149.8753"},{"value":"253"},{"value":"-1.0527"}],[{"value":"2018-06-01 08:00:25.400"},{"value":"DOG"},{"value":"PETX"},{"value":"2,034"},{"value":"105.6200"},{"value":"214,831.0800"},{"value":"sell"},{"value":"149.6029"},{"value":"254"},{"value":"-1.2669"}],[{"value":"2018-06-01 08:00:25.600"},{"value":"DOG"},{"value":"PETX"},{"value":"1"},{"value":"105.6100"},{"value":"105.6100"},{"value":"sell"},{"value":"149.0515"},{"value":"256"},{"value":"-0.0776"}],[{"value":"2018-06-01 08:00:25.700"},{"value":"DOG"},{"value":"PETX"},{"value":"250"},{"value":"105.4900"},{"value":"26,372.5000"},{"value":"sell"},{"value":"148.6323"},{"value":"257"},{"value":"-1.1566"}],[{"value":"2018-06-01 08:00:26.100"},{"value":"DOG"},{"value":"PETX"},{"value":"20"},{"value":"105.3100"},{"value":"2,106.2000"},{"value":"sell"},{"value":"147.7959"},{"value":"261"},{"value":"-0.7128"}],[{"value":"2018-06-01 08:00:26.200"},{"value":"DOG"},{"value":"PETX"},{"value":"500"},{"value":"105.2300"},{"value":"52,615.0000"},{"value":"buy"},{"value":"147.7057"},{"value":"262"},{"value":"0.7937"}],[{"value":"2018-06-01 08:00:27.100"},{"value":"DOG"},{"value":"PETX"},{"value":"3,820"},{"value":"105.3000"},{"value":"402,246.0000"},{"value":"buy"},{"value":"142.3240"},{"value":"271"},{"value":"1.5635"}],[{"value":"2018-06-01 08:00:27.600"},{"value":"DOG"},{"value":"PETX"},{"value":"14"},{"value":"105.3500"},{"value":"1,474.9000"},{"value":"sell"},{"value":"141.9421"},{"value":"276"},{"value":"-0.2404"}],[{"value":"2018-06-01 08:00:27.900"},{"value":"DOG"},{"value":"PETX"},{"value":"294"},{"value":"105.3200"},{"value":"30,964.0800"},{"value":"sell"},{"value":"142.9242"},{"value":"279"},{"value":"-0.6649"}],[{"value":"2018-06-01 08:00:28.000"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"105.2700"},{"value":"10,527.0000"},{"value":"sell"},{"value":"143.1277"},{"value":"280"},{"value":"-0.3641"}],[{"value":"2018-06-01 08:00:28.600"},{"value":"DOG"},{"value":"PETX"},{"value":"693"},{"value":"105.1300"},{"value":"72,855.0900"},{"value":"sell"},{"value":"144.8956"},{"value":"286"},{"value":"-0.8847"}],[{"value":"2018-06-01 08:00:28.700"},{"value":"DOG"},{"value":"PETX"},{"value":"4"},{"value":"105.0000"},{"value":"420.0000"},{"value":"sell"},{"value":"145.1057"},{"value":"287"},{"value":"-0.1537"}],[{"value":"2018-06-01 08:00:29.000"},{"value":"DOG"},{"value":"PETX"},{"value":"1"},{"value":"104.8700"},{"value":"104.8700"},{"value":"sell"},{"value":"144.3364"},{"value":"290"},{"value":"-0.0318"}],[{"value":"2018-06-01 08:00:29.300"},{"value":"DOG"},{"value":"PETX"},{"value":"1"},{"value":"104.7500"},{"value":"104.7500"},{"value":"sell"},{"value":"144.5048"},{"value":"293"},{"value":"-0.0698"}],[{"value":"2018-06-01 08:00:29.700"},{"value":"DOG"},{"value":"PETX"},{"value":"8,511"},{"value":"104.4400"},{"value":"888,888.8400"},{"value":"sell"},{"value":"145.0115"},{"value":"297"},{"value":"-2.0417"}],[{"value":"2018-06-01 08:00:29.900"},{"value":"DOG"},{"value":"PETX"},{"value":"289"},{"value":"104.1100"},{"value":"30,087.7900"},{"value":"sell"},{"value":"144.6353"},{"value":"299"},{"value":"-0.6610"}]]}},"click_points":{"type":"Table","data":{"columns":[{"name":"X","type":"double"},{"name":"Y","type":"double"}],"rows":[]}},"annotated_chart_panel":{"type":"deephaven.ui.Element","data":{"document":{"__dhElemName":"__main__.annotated_chart","props":{"children":{"__dhObid":0}}},"state":"{\"state\": {\"1\": true}}"}}}} \ No newline at end of file diff --git a/plugins/plotly-express/docs/snapshots/9e43977d9c51cafbfe553ce480c2ff7e.json b/plugins/plotly-express/docs/snapshots/9e43977d9c51cafbfe553ce480c2ff7e.json new file mode 100644 index 000000000..141095172 --- /dev/null +++ b/plugins/plotly-express/docs/snapshots/9e43977d9c51cafbfe553ce480c2ff7e.json @@ -0,0 +1 @@ +{"file":"events.md","objects":{}} \ No newline at end of file diff --git a/plugins/plotly-express/docs/snapshots/ab9f520fe7374adc52faee732566fed7.json b/plugins/plotly-express/docs/snapshots/ab9f520fe7374adc52faee732566fed7.json new file mode 100644 index 000000000..141095172 --- /dev/null +++ b/plugins/plotly-express/docs/snapshots/ab9f520fe7374adc52faee732566fed7.json @@ -0,0 +1 @@ +{"file":"events.md","objects":{}} \ No newline at end of file diff --git a/plugins/plotly-express/docs/snapshots/c5231e06dd7651219c563ff7dc009f46.json b/plugins/plotly-express/docs/snapshots/c5231e06dd7651219c563ff7dc009f46.json new file mode 100644 index 000000000..141095172 --- /dev/null +++ b/plugins/plotly-express/docs/snapshots/c5231e06dd7651219c563ff7dc009f46.json @@ -0,0 +1 @@ +{"file":"events.md","objects":{}} \ No newline at end of file diff --git a/plugins/plotly-express/docs/snapshots/d074054d54eb80ee60f68de2dec52d46.json b/plugins/plotly-express/docs/snapshots/d074054d54eb80ee60f68de2dec52d46.json new file mode 100644 index 000000000..141095172 --- /dev/null +++ b/plugins/plotly-express/docs/snapshots/d074054d54eb80ee60f68de2dec52d46.json @@ -0,0 +1 @@ +{"file":"events.md","objects":{}} \ No newline at end of file diff --git a/plugins/plotly-express/docs/snapshots/e0c0efa43781b9463ef0630478847b7b.json b/plugins/plotly-express/docs/snapshots/e0c0efa43781b9463ef0630478847b7b.json new file mode 100644 index 000000000..b5e11b5c0 --- /dev/null +++ b/plugins/plotly-express/docs/snapshots/e0c0efa43781b9463ef0630478847b7b.json @@ -0,0 +1 @@ +{"file":"events.md","objects":{"stocks":{"type":"Table","data":{"columns":[{"name":"Timestamp","type":"java.time.Instant"},{"name":"Sym","type":"java.lang.String"},{"name":"Exchange","type":"java.lang.String"},{"name":"Size","type":"long"},{"name":"Price","type":"double"},{"name":"Dollars","type":"double"},{"name":"Side","type":"java.lang.String"},{"name":"SPet500","type":"double"},{"name":"Index","type":"long"},{"name":"Random","type":"double"}],"rows":[[{"value":"2018-06-01 08:00:00.000"},{"value":"BIRD"},{"value":"TPET"},{"value":"245"},{"value":"164.6300"},{"value":"40,334.3500"},{"value":"buy"},{"value":"150.6253"},{"value":"0"},{"value":"0.6253"}],[{"value":"2018-06-01 08:00:00.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,150"},{"value":"102.4700"},{"value":"322,780.5000"},{"value":"buy"},{"value":"150.8910"},{"value":"1"},{"value":"1.4656"}],[{"value":"2018-06-01 08:00:00.200"},{"value":"LIZARD"},{"value":"TPET"},{"value":"100"},{"value":"224.8800"},{"value":"22,488.0000"},{"value":"sell"},{"value":"151.0861"},{"value":"2"},{"value":"-0.1232"}],[{"value":"2018-06-01 08:00:00.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"77"},{"value":"102.5100"},{"value":"7,893.2700"},{"value":"buy"},{"value":"151.3228"},{"value":"3"},{"value":"0.4242"}],[{"value":"2018-06-01 08:00:00.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"848"},{"value":"102.4500"},{"value":"86,877.6000"},{"value":"sell"},{"value":"151.3451"},{"value":"4"},{"value":"-0.9462"}],[{"value":"2018-06-01 08:00:00.500"},{"value":"FISH"},{"value":"PETX"},{"value":"15"},{"value":"127.2400"},{"value":"1,908.6000"},{"value":"buy"},{"value":"151.4074"},{"value":"5"},{"value":"0.2434"}],[{"value":"2018-06-01 08:00:00.600"},{"value":"BIRD"},{"value":"TPET"},{"value":"2,908"},{"value":"164.4900"},{"value":"478,336.9200"},{"value":"sell"},{"value":"151.1998"},{"value":"6"},{"value":"-1.4273"}],[{"value":"2018-06-01 08:00:00.700"},{"value":"DOG"},{"value":"PETX"},{"value":"111"},{"value":"108.4800"},{"value":"12,041.2800"},{"value":"buy"},{"value":"151.1169"},{"value":"7"},{"value":"0.4805"}],[{"value":"2018-06-01 08:00:00.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"102.5300"},{"value":"10,253.0000"},{"value":"buy"},{"value":"151.2862"},{"value":"8"},{"value":"1.3088"}],[{"value":"2018-06-01 08:00:00.900"},{"value":"DOG"},{"value":"PETX"},{"value":"88"},{"value":"108.4400"},{"value":"9,542.7200"},{"value":"sell"},{"value":"151.3445"},{"value":"9"},{"value":"-0.4436"}],[{"value":"2018-06-01 08:00:01.000"},{"value":"FISH"},{"value":"PETX"},{"value":"102"},{"value":"127.2900"},{"value":"12,983.5800"},{"value":"buy"},{"value":"151.4768"},{"value":"10"},{"value":"0.4669"}],[{"value":"2018-06-01 08:00:01.100"},{"value":"DOG"},{"value":"PETX"},{"value":"1,791"},{"value":"108.2800"},{"value":"193,929.4800"},{"value":"sell"},{"value":"151.3650"},{"value":"11"},{"value":"-1.2143"}],[{"value":"2018-06-01 08:00:01.200"},{"value":"DOG"},{"value":"PETX"},{"value":"28"},{"value":"108.1200"},{"value":"3,027.3600"},{"value":"sell"},{"value":"151.2188"},{"value":"12"},{"value":"-0.3019"}],[{"value":"2018-06-01 08:00:01.300"},{"value":"CAT"},{"value":"PETX"},{"value":"1,090"},{"value":"102.7000"},{"value":"111,943.0000"},{"value":"buy"},{"value":"151.2854"},{"value":"13"},{"value":"1.0280"}],[{"value":"2018-06-01 08:00:01.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,600"},{"value":"102.9900"},{"value":"370,764.0000"},{"value":"buy"},{"value":"151.6178"},{"value":"14"},{"value":"1.5331"}],[{"value":"2018-06-01 08:00:01.500"},{"value":"LIZARD"},{"value":"TPET"},{"value":"227"},{"value":"224.9300"},{"value":"51,059.1100"},{"value":"buy"},{"value":"152.0005"},{"value":"15"},{"value":"0.6095"}],[{"value":"2018-06-01 08:00:01.600"},{"value":"DOG"},{"value":"PETX"},{"value":"35"},{"value":"107.9300"},{"value":"3,777.5500"},{"value":"sell"},{"value":"152.2546"},{"value":"16"},{"value":"-0.3267"}],[{"value":"2018-06-01 08:00:01.700"},{"value":"DOG"},{"value":"PETX"},{"value":"2"},{"value":"107.8400"},{"value":"215.6800"},{"value":"buy"},{"value":"152.6027"},{"value":"17"},{"value":"0.7731"}],[{"value":"2018-06-01 08:00:01.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,350"},{"value":"103.4000"},{"value":"346,390.0000"},{"value":"buy"},{"value":"153.1590"},{"value":"18"},{"value":"1.4963"}],[{"value":"2018-06-01 08:00:01.900"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.2900"},{"value":"12,729.0000"},{"value":"sell"},{"value":"153.5402"},{"value":"19"},{"value":"-0.4094"}],[{"value":"2018-06-01 08:00:02.000"},{"value":"LIZARD"},{"value":"TPET"},{"value":"15"},{"value":"225.0100"},{"value":"3,375.1500"},{"value":"buy"},{"value":"153.8970"},{"value":"20"},{"value":"0.2463"}],[{"value":"2018-06-01 08:00:02.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,780"},{"value":"103.9200"},{"value":"392,817.6000"},{"value":"buy"},{"value":"154.4713"},{"value":"21"},{"value":"1.5570"}],[{"value":"2018-06-01 08:00:02.200"},{"value":"LIZARD"},{"value":"TPET"},{"value":"727"},{"value":"225.1600"},{"value":"163,691.3200"},{"value":"buy"},{"value":"155.1045"},{"value":"22"},{"value":"0.8989"}],[{"value":"2018-06-01 08:00:02.300"},{"value":"LIZARD"},{"value":"TPET"},{"value":"2,250"},{"value":"225.4300"},{"value":"507,217.5000"},{"value":"buy"},{"value":"155.8603"},{"value":"23"},{"value":"1.3097"}],[{"value":"2018-06-01 08:00:02.400"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.3400"},{"value":"12,734.0000"},{"value":"buy"},{"value":"156.5817"},{"value":"24"},{"value":"0.5662"}],[{"value":"2018-06-01 08:00:02.500"},{"value":"DOG"},{"value":"PETX"},{"value":"1,491"},{"value":"107.6500"},{"value":"160,506.1500"},{"value":"sell"},{"value":"156.9654"},{"value":"25"},{"value":"-1.1422"}],[{"value":"2018-06-01 08:00:02.600"},{"value":"FISH"},{"value":"PETX"},{"value":"367"},{"value":"127.3300"},{"value":"46,730.1100"},{"value":"sell"},{"value":"157.1497"},{"value":"26"},{"value":"-0.7155"}],[{"value":"2018-06-01 08:00:02.700"},{"value":"FISH"},{"value":"PETX"},{"value":"293"},{"value":"127.2500"},{"value":"37,284.2500"},{"value":"sell"},{"value":"157.1804"},{"value":"27"},{"value":"-0.6637"}],[{"value":"2018-06-01 08:00:02.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"104.2600"},{"value":"10,426.0000"},{"value":"sell"},{"value":"156.9481"},{"value":"28"},{"value":"-1.4200"}],[{"value":"2018-06-01 08:00:02.900"},{"value":"DOG"},{"value":"PETX"},{"value":"1,798"},{"value":"107.3600"},{"value":"193,033.2800"},{"value":"sell"},{"value":"156.5375"},{"value":"29"},{"value":"-1.2159"}],[{"value":"2018-06-01 08:00:03.000"},{"value":"DOG"},{"value":"PETX"},{"value":"410"},{"value":"107.1700"},{"value":"43,939.7000"},{"value":"buy"},{"value":"156.3359"},{"value":"30"},{"value":"0.7425"}],[{"value":"2018-06-01 08:00:03.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,510"},{"value":"104.6700"},{"value":"158,051.7000"},{"value":"buy"},{"value":"156.3789"},{"value":"31"},{"value":"1.1473"}],[{"value":"2018-06-01 08:00:03.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"21"},{"value":"105.0200"},{"value":"2,205.4200"},{"value":"sell"},{"value":"156.3644"},{"value":"32"},{"value":"-0.2738"}],[{"value":"2018-06-01 08:00:03.300"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.1800"},{"value":"12,718.0000"},{"value":"buy"},{"value":"156.3572"},{"value":"33"},{"value":"0.0258"}],[{"value":"2018-06-01 08:00:03.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"106.9800"},{"value":"10,698.0000"},{"value":"sell"},{"value":"156.3239"},{"value":"34"},{"value":"-0.1515"}],[{"value":"2018-06-01 08:00:03.500"},{"value":"DOG"},{"value":"PETX"},{"value":"650"},{"value":"106.8900"},{"value":"69,478.5000"},{"value":"buy"},{"value":"156.4535"},{"value":"35"},{"value":"0.8659"}],[{"value":"2018-06-01 08:00:03.600"},{"value":"DOG"},{"value":"PETX"},{"value":"155"},{"value":"106.7600"},{"value":"16,547.8000"},{"value":"sell"},{"value":"156.4623"},{"value":"36"},{"value":"-0.5371"}],[{"value":"2018-06-01 08:00:03.700"},{"value":"FISH"},{"value":"PETX"},{"value":"12"},{"value":"127.0900"},{"value":"1,525.0800"},{"value":"sell"},{"value":"156.4283"},{"value":"37"},{"value":"-0.2274"}],[{"value":"2018-06-01 08:00:03.800"},{"value":"FISH"},{"value":"PETX"},{"value":"7"},{"value":"127.0300"},{"value":"889.2100"},{"value":"buy"},{"value":"156.4335"},{"value":"38"},{"value":"0.1822"}],[{"value":"2018-06-01 08:00:03.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,310"},{"value":"105.4400"},{"value":"138,126.4000"},{"value":"buy"},{"value":"156.6358"},{"value":"39"},{"value":"1.0928"}],[{"value":"2018-06-01 08:00:04.000"},{"value":"DOG"},{"value":"PETX"},{"value":"1,629"},{"value":"106.5400"},{"value":"173,553.6600"},{"value":"sell"},{"value":"156.5882"},{"value":"40"},{"value":"-1.1765"}],[{"value":"2018-06-01 08:00:04.100"},{"value":"DOG"},{"value":"PETX"},{"value":"4"},{"value":"106.3100"},{"value":"425.2400"},{"value":"sell"},{"value":"156.5216"},{"value":"41"},{"value":"-0.1522"}],[{"value":"2018-06-01 08:00:04.200"},{"value":"FISH"},{"value":"PETX"},{"value":"1"},{"value":"126.9800"},{"value":"126.9800"},{"value":"buy"},{"value":"156.4686"},{"value":"42"},{"value":"0.0083"}],[{"value":"2018-06-01 08:00:04.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"1"},{"value":"105.8200"},{"value":"105.8200"},{"value":"buy"},{"value":"156.4396"},{"value":"43"},{"value":"0.0791"}],[{"value":"2018-06-01 08:00:04.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"106.0100"},{"value":"10,601.0000"},{"value":"sell"},{"value":"156.2255"},{"value":"44"},{"value":"-1.0499"}],[{"value":"2018-06-01 08:00:04.500"},{"value":"CAT"},{"value":"PETX"},{"value":"2"},{"value":"106.1800"},{"value":"212.3600"},{"value":"buy"},{"value":"156.0723"},{"value":"45"},{"value":"0.1217"}],[{"value":"2018-06-01 08:00:04.600"},{"value":"BIRD"},{"value":"TPET"},{"value":"6"},{"value":"164.3500"},{"value":"986.1000"},{"value":"sell"},{"value":"155.9141"},{"value":"46"},{"value":"-0.1806"}],[{"value":"2018-06-01 08:00:04.700"},{"value":"DOG"},{"value":"PETX"},{"value":"3,485"},{"value":"105.6000"},{"value":"368,016.0000"},{"value":"sell"},{"value":"155.5098"},{"value":"47"},{"value":"-1.5161"}],[{"value":"2018-06-01 08:00:04.800"},{"value":"DOG"},{"value":"PETX"},{"value":"727"},{"value":"105.1300"},{"value":"76,429.5100"},{"value":"sell"},{"value":"155.0158"},{"value":"48"},{"value":"-0.8990"}],[{"value":"2018-06-01 08:00:04.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"5,421"},{"value":"106.3400"},{"value":"576,469.1400"},{"value":"sell"},{"value":"154.2929"},{"value":"49"},{"value":"-1.7566"}],[{"value":"2018-06-01 08:00:05.000"},{"value":"DOG"},{"value":"PETX"},{"value":"2,113"},{"value":"104.5900"},{"value":"220,998.6700"},{"value":"sell"},{"value":"153.4685"},{"value":"50"},{"value":"-1.2830"}],[{"value":"2018-06-01 08:00:05.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,130"},{"value":"106.5900"},{"value":"120,446.7000"},{"value":"buy"},{"value":"152.9825"},{"value":"51"},{"value":"1.0424"}],[{"value":"2018-06-01 08:00:05.200"},{"value":"LIZARD"},{"value":"TPET"},{"value":"2"},{"value":"225.5600"},{"value":"451.1200"},{"value":"sell"},{"value":"152.3781"},{"value":"52"},{"value":"-1.1386"}],[{"value":"2018-06-01 08:00:05.300"},{"value":"FISH"},{"value":"PETX"},{"value":"529"},{"value":"127.0100"},{"value":"67,188.2900"},{"value":"buy"},{"value":"152.0299"},{"value":"53"},{"value":"0.8084"}],[{"value":"2018-06-01 08:00:05.400"},{"value":"LIZARD"},{"value":"TPET"},{"value":"293"},{"value":"225.7400"},{"value":"66,141.8200"},{"value":"buy"},{"value":"151.8651"},{"value":"54"},{"value":"0.6639"}],[{"value":"2018-06-01 08:00:05.500"},{"value":"CAT"},{"value":"NYPE"},{"value":"123"},{"value":"106.7600"},{"value":"13,131.4800"},{"value":"sell"},{"value":"151.6401"},{"value":"55"},{"value":"-0.4972"}],[{"value":"2018-06-01 08:00:05.600"},{"value":"LIZARD"},{"value":"TPET"},{"value":"100"},{"value":"225.7600"},{"value":"22,576.0000"},{"value":"sell"},{"value":"151.1844"},{"value":"56"},{"value":"-1.4976"}],[{"value":"2018-06-01 08:00:05.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,990"},{"value":"107.0300"},{"value":"212,989.7000"},{"value":"buy"},{"value":"151.0393"},{"value":"57"},{"value":"1.2576"}],[{"value":"2018-06-01 08:00:05.800"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.0700"},{"value":"12,707.0000"},{"value":"buy"},{"value":"150.9961"},{"value":"58"},{"value":"0.4170"}],[{"value":"2018-06-01 08:00:05.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"140"},{"value":"107.3300"},{"value":"15,026.2000"},{"value":"buy"},{"value":"151.0546"},{"value":"59"},{"value":"0.5181"}],[{"value":"2018-06-01 08:00:06.000"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"104.3000"},{"value":"10,430.0000"},{"value":"buy"},{"value":"151.4827"},{"value":"60"},{"value":"2.0973"}],[{"value":"2018-06-01 08:00:06.100"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"103.9800"},{"value":"10,398.0000"},{"value":"sell"},{"value":"151.7109"},{"value":"61"},{"value":"-0.6743"}],[{"value":"2018-06-01 08:00:06.200"},{"value":"LIZARD"},{"value":"TPET"},{"value":"8"},{"value":"225.7600"},{"value":"1,806.0800"},{"value":"sell"},{"value":"151.8624"},{"value":"62"},{"value":"-0.1954"}],[{"value":"2018-06-01 08:00:06.300"},{"value":"DOG"},{"value":"PETX"},{"value":"4,262"},{"value":"103.5300"},{"value":"441,244.8600"},{"value":"sell"},{"value":"151.6925"},{"value":"63"},{"value":"-1.6213"}],[{"value":"2018-06-01 08:00:06.400"},{"value":"DOG"},{"value":"PETX"},{"value":"35"},{"value":"103.1500"},{"value":"3,610.2500"},{"value":"buy"},{"value":"151.6126"},{"value":"64"},{"value":"0.3264"}],[{"value":"2018-06-01 08:00:06.500"},{"value":"DOG"},{"value":"PETX"},{"value":"20"},{"value":"102.8600"},{"value":"2,057.2000"},{"value":"buy"},{"value":"151.6337"},{"value":"65"},{"value":"0.4772"}],[{"value":"2018-06-01 08:00:06.600"},{"value":"CAT"},{"value":"NYPE"},{"value":"534"},{"value":"107.6800"},{"value":"57,501.1200"},{"value":"buy"},{"value":"151.7980"},{"value":"66"},{"value":"0.8109"}],[{"value":"2018-06-01 08:00:06.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"711"},{"value":"108.0800"},{"value":"76,844.8800"},{"value":"buy"},{"value":"152.0942"},{"value":"67"},{"value":"0.8923"}],[{"value":"2018-06-01 08:00:06.800"},{"value":"FISH"},{"value":"PETX"},{"value":"88"},{"value":"127.0900"},{"value":"11,183.9200"},{"value":"sell"},{"value":"152.2562"},{"value":"68"},{"value":"-0.4441"}],[{"value":"2018-06-01 08:00:06.900"},{"value":"FISH"},{"value":"PETX"},{"value":"3,070"},{"value":"127.2500"},{"value":"390,657.5000"},{"value":"buy"},{"value":"152.6523"},{"value":"69"},{"value":"1.4534"}],[{"value":"2018-06-01 08:00:07.000"},{"value":"LIZARD"},{"value":"TPET"},{"value":"300"},{"value":"225.8000"},{"value":"67,740.0000"},{"value":"buy"},{"value":"153.0397"},{"value":"70"},{"value":"0.3482"}],[{"value":"2018-06-01 08:00:07.100"},{"value":"DOG"},{"value":"PETX"},{"value":"371"},{"value":"102.6600"},{"value":"38,086.8600"},{"value":"buy"},{"value":"153.4871"},{"value":"71"},{"value":"0.7180"}],[{"value":"2018-06-01 08:00:07.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"7,480"},{"value":"108.6300"},{"value":"812,552.4000"},{"value":"buy"},{"value":"154.2078"},{"value":"72"},{"value":"1.9555"}],[{"value":"2018-06-01 08:00:07.300"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"102.3600"},{"value":"10,236.0000"},{"value":"sell"},{"value":"154.5609"},{"value":"73"},{"value":"-1.3072"}],[{"value":"2018-06-01 08:00:07.400"},{"value":"BIRD"},{"value":"TPET"},{"value":"428"},{"value":"164.2900"},{"value":"70,316.1200"},{"value":"buy"},{"value":"154.9867"},{"value":"74"},{"value":"0.7535"}],[{"value":"2018-06-01 08:00:07.500"},{"value":"DOG"},{"value":"PETX"},{"value":"99"},{"value":"102.1200"},{"value":"10,109.8800"},{"value":"buy"},{"value":"155.4189"},{"value":"75"},{"value":"0.4616"}],[{"value":"2018-06-01 08:00:07.600"},{"value":"DOG"},{"value":"PETX"},{"value":"347"},{"value":"101.9800"},{"value":"35,387.0600"},{"value":"buy"},{"value":"155.9001"},{"value":"76"},{"value":"0.7026"}],[{"value":"2018-06-01 08:00:07.700"},{"value":"BIRD"},{"value":"TPET"},{"value":"500"},{"value":"164.2600"},{"value":"82,130.0000"},{"value":"buy"},{"value":"156.3253"},{"value":"77"},{"value":"0.1723"}],[{"value":"2018-06-01 08:00:07.800"},{"value":"BIRD"},{"value":"TPET"},{"value":"2,128"},{"value":"164.1100"},{"value":"349,226.0800"},{"value":"sell"},{"value":"156.4403"},{"value":"78"},{"value":"-1.2862"}],[{"value":"2018-06-01 08:00:07.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"12,212"},{"value":"108.9100"},{"value":"1,330,008.9200"},{"value":"sell"},{"value":"156.1171"},{"value":"79"},{"value":"-2.3028"}],[{"value":"2018-06-01 08:00:08.000"},{"value":"CAT"},{"value":"PETX"},{"value":"9"},{"value":"109.1800"},{"value":"982.6200"},{"value":"buy"},{"value":"155.8891"},{"value":"80"},{"value":"0.2025"}],[{"value":"2018-06-01 08:00:08.100"},{"value":"DOG"},{"value":"PETX"},{"value":"98"},{"value":"101.9000"},{"value":"9,986.2000"},{"value":"buy"},{"value":"155.7859"},{"value":"81"},{"value":"0.4606"}],[{"value":"2018-06-01 08:00:08.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"489"},{"value":"109.3400"},{"value":"53,467.2600"},{"value":"sell"},{"value":"155.5587"},{"value":"82"},{"value":"-0.7874"}],[{"value":"2018-06-01 08:00:08.300"},{"value":"DOG"},{"value":"PETX"},{"value":"436"},{"value":"101.7500"},{"value":"44,363.0000"},{"value":"sell"},{"value":"155.2354"},{"value":"83"},{"value":"-0.7578"}],[{"value":"2018-06-01 08:00:08.400"},{"value":"FISH"},{"value":"PETX"},{"value":"2"},{"value":"127.2100"},{"value":"254.4200"},{"value":"sell"},{"value":"154.6404"},{"value":"84"},{"value":"-1.8217"}],[{"value":"2018-06-01 08:00:08.500"},{"value":"CAT"},{"value":"NYPE"},{"value":"309"},{"value":"109.4300"},{"value":"33,813.8700"},{"value":"sell"},{"value":"154.0307"},{"value":"85"},{"value":"-0.6757"}],[{"value":"2018-06-01 08:00:08.600"},{"value":"BIRD"},{"value":"TPET"},{"value":"3,273"},{"value":"163.8300"},{"value":"536,215.5900"},{"value":"sell"},{"value":"153.2625"},{"value":"86"},{"value":"-1.4847"}],[{"value":"2018-06-01 08:00:08.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"28"},{"value":"109.4800"},{"value":"3,065.4400"},{"value":"sell"},{"value":"152.5787"},{"value":"87"},{"value":"-0.3026"}],[{"value":"2018-06-01 08:00:08.800"},{"value":"DOG"},{"value":"PETX"},{"value":"4,020"},{"value":"101.7700"},{"value":"409,115.4000"},{"value":"buy"},{"value":"152.3070"},{"value":"88"},{"value":"1.5903"}],[{"value":"2018-06-01 08:00:08.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"50"},{"value":"109.4200"},{"value":"5,471.0000"},{"value":"sell"},{"value":"151.8779"},{"value":"89"},{"value":"-1.1409"}],[{"value":"2018-06-01 08:00:09.000"},{"value":"CAT"},{"value":"NYPE"},{"value":"12,540"},{"value":"109.5900"},{"value":"1,374,258.6000"},{"value":"buy"},{"value":"151.9476"},{"value":"90"},{"value":"2.3232"}],[{"value":"2018-06-01 08:00:09.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"109.7100"},{"value":"10,971.0000"},{"value":"sell"},{"value":"151.9575"},{"value":"91"},{"value":"-0.2603"}],[{"value":"2018-06-01 08:00:09.200"},{"value":"DOG"},{"value":"PETX"},{"value":"4,143"},{"value":"101.6300"},{"value":"421,053.0900"},{"value":"sell"},{"value":"151.6745"},{"value":"92"},{"value":"-1.6061"}],[{"value":"2018-06-01 08:00:09.300"},{"value":"LIZARD"},{"value":"TPET"},{"value":"947"},{"value":"225.7400"},{"value":"213,775.7800"},{"value":"sell"},{"value":"151.2648"},{"value":"93"},{"value":"-0.9818"}],[{"value":"2018-06-01 08:00:09.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"101.5900"},{"value":"10,159.0000"},{"value":"buy"},{"value":"151.0986"},{"value":"94"},{"value":"0.9333"}],[{"value":"2018-06-01 08:00:09.500"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.1200"},{"value":"12,712.0000"},{"value":"sell"},{"value":"150.8477"},{"value":"95"},{"value":"-0.6329"}],[{"value":"2018-06-01 08:00:09.600"},{"value":"DOG"},{"value":"PETX"},{"value":"2,887"},{"value":"101.4200"},{"value":"292,799.5400"},{"value":"sell"},{"value":"150.3843"},{"value":"96"},{"value":"-1.4239"}],[{"value":"2018-06-01 08:00:09.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"20"},{"value":"109.8000"},{"value":"2,196.0000"},{"value":"sell"},{"value":"149.9563"},{"value":"97"},{"value":"-0.2677"}],[{"value":"2018-06-01 08:00:09.800"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"101.3200"},{"value":"10,132.0000"},{"value":"buy"},{"value":"149.6898"},{"value":"98"},{"value":"0.4629"}],[{"value":"2018-06-01 08:00:09.900"},{"value":"DOG"},{"value":"PETX"},{"value":"1,130"},{"value":"101.1200"},{"value":"114,265.6000"},{"value":"sell"},{"value":"149.2828"},{"value":"99"},{"value":"-1.0415"}]]}},"dog_prices":{"type":"Table","data":{"columns":[{"name":"Timestamp","type":"java.time.Instant"},{"name":"Sym","type":"java.lang.String"},{"name":"Exchange","type":"java.lang.String"},{"name":"Size","type":"long"},{"name":"Price","type":"double"},{"name":"Dollars","type":"double"},{"name":"Side","type":"java.lang.String"},{"name":"SPet500","type":"double"},{"name":"Index","type":"long"},{"name":"Random","type":"double"}],"rows":[[{"value":"2018-06-01 08:00:00.700"},{"value":"DOG"},{"value":"PETX"},{"value":"111"},{"value":"108.4800"},{"value":"12,041.2800"},{"value":"buy"},{"value":"151.1169"},{"value":"7"},{"value":"0.4805"}],[{"value":"2018-06-01 08:00:00.900"},{"value":"DOG"},{"value":"PETX"},{"value":"88"},{"value":"108.4400"},{"value":"9,542.7200"},{"value":"sell"},{"value":"151.3445"},{"value":"9"},{"value":"-0.4436"}],[{"value":"2018-06-01 08:00:01.100"},{"value":"DOG"},{"value":"PETX"},{"value":"1,791"},{"value":"108.2800"},{"value":"193,929.4800"},{"value":"sell"},{"value":"151.3650"},{"value":"11"},{"value":"-1.2143"}],[{"value":"2018-06-01 08:00:01.200"},{"value":"DOG"},{"value":"PETX"},{"value":"28"},{"value":"108.1200"},{"value":"3,027.3600"},{"value":"sell"},{"value":"151.2188"},{"value":"12"},{"value":"-0.3019"}],[{"value":"2018-06-01 08:00:01.600"},{"value":"DOG"},{"value":"PETX"},{"value":"35"},{"value":"107.9300"},{"value":"3,777.5500"},{"value":"sell"},{"value":"152.2546"},{"value":"16"},{"value":"-0.3267"}],[{"value":"2018-06-01 08:00:01.700"},{"value":"DOG"},{"value":"PETX"},{"value":"2"},{"value":"107.8400"},{"value":"215.6800"},{"value":"buy"},{"value":"152.6027"},{"value":"17"},{"value":"0.7731"}],[{"value":"2018-06-01 08:00:02.500"},{"value":"DOG"},{"value":"PETX"},{"value":"1,491"},{"value":"107.6500"},{"value":"160,506.1500"},{"value":"sell"},{"value":"156.9654"},{"value":"25"},{"value":"-1.1422"}],[{"value":"2018-06-01 08:00:02.900"},{"value":"DOG"},{"value":"PETX"},{"value":"1,798"},{"value":"107.3600"},{"value":"193,033.2800"},{"value":"sell"},{"value":"156.5375"},{"value":"29"},{"value":"-1.2159"}],[{"value":"2018-06-01 08:00:03.000"},{"value":"DOG"},{"value":"PETX"},{"value":"410"},{"value":"107.1700"},{"value":"43,939.7000"},{"value":"buy"},{"value":"156.3359"},{"value":"30"},{"value":"0.7425"}],[{"value":"2018-06-01 08:00:03.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"106.9800"},{"value":"10,698.0000"},{"value":"sell"},{"value":"156.3239"},{"value":"34"},{"value":"-0.1515"}],[{"value":"2018-06-01 08:00:03.500"},{"value":"DOG"},{"value":"PETX"},{"value":"650"},{"value":"106.8900"},{"value":"69,478.5000"},{"value":"buy"},{"value":"156.4535"},{"value":"35"},{"value":"0.8659"}],[{"value":"2018-06-01 08:00:03.600"},{"value":"DOG"},{"value":"PETX"},{"value":"155"},{"value":"106.7600"},{"value":"16,547.8000"},{"value":"sell"},{"value":"156.4623"},{"value":"36"},{"value":"-0.5371"}],[{"value":"2018-06-01 08:00:04.000"},{"value":"DOG"},{"value":"PETX"},{"value":"1,629"},{"value":"106.5400"},{"value":"173,553.6600"},{"value":"sell"},{"value":"156.5882"},{"value":"40"},{"value":"-1.1765"}],[{"value":"2018-06-01 08:00:04.100"},{"value":"DOG"},{"value":"PETX"},{"value":"4"},{"value":"106.3100"},{"value":"425.2400"},{"value":"sell"},{"value":"156.5216"},{"value":"41"},{"value":"-0.1522"}],[{"value":"2018-06-01 08:00:04.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"106.0100"},{"value":"10,601.0000"},{"value":"sell"},{"value":"156.2255"},{"value":"44"},{"value":"-1.0499"}],[{"value":"2018-06-01 08:00:04.700"},{"value":"DOG"},{"value":"PETX"},{"value":"3,485"},{"value":"105.6000"},{"value":"368,016.0000"},{"value":"sell"},{"value":"155.5098"},{"value":"47"},{"value":"-1.5161"}],[{"value":"2018-06-01 08:00:04.800"},{"value":"DOG"},{"value":"PETX"},{"value":"727"},{"value":"105.1300"},{"value":"76,429.5100"},{"value":"sell"},{"value":"155.0158"},{"value":"48"},{"value":"-0.8990"}],[{"value":"2018-06-01 08:00:05.000"},{"value":"DOG"},{"value":"PETX"},{"value":"2,113"},{"value":"104.5900"},{"value":"220,998.6700"},{"value":"sell"},{"value":"153.4685"},{"value":"50"},{"value":"-1.2830"}],[{"value":"2018-06-01 08:00:06.000"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"104.3000"},{"value":"10,430.0000"},{"value":"buy"},{"value":"151.4827"},{"value":"60"},{"value":"2.0973"}],[{"value":"2018-06-01 08:00:06.100"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"103.9800"},{"value":"10,398.0000"},{"value":"sell"},{"value":"151.7109"},{"value":"61"},{"value":"-0.6743"}],[{"value":"2018-06-01 08:00:06.300"},{"value":"DOG"},{"value":"PETX"},{"value":"4,262"},{"value":"103.5300"},{"value":"441,244.8600"},{"value":"sell"},{"value":"151.6925"},{"value":"63"},{"value":"-1.6213"}],[{"value":"2018-06-01 08:00:06.400"},{"value":"DOG"},{"value":"PETX"},{"value":"35"},{"value":"103.1500"},{"value":"3,610.2500"},{"value":"buy"},{"value":"151.6126"},{"value":"64"},{"value":"0.3264"}],[{"value":"2018-06-01 08:00:06.500"},{"value":"DOG"},{"value":"PETX"},{"value":"20"},{"value":"102.8600"},{"value":"2,057.2000"},{"value":"buy"},{"value":"151.6337"},{"value":"65"},{"value":"0.4772"}],[{"value":"2018-06-01 08:00:07.100"},{"value":"DOG"},{"value":"PETX"},{"value":"371"},{"value":"102.6600"},{"value":"38,086.8600"},{"value":"buy"},{"value":"153.4871"},{"value":"71"},{"value":"0.7180"}],[{"value":"2018-06-01 08:00:07.300"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"102.3600"},{"value":"10,236.0000"},{"value":"sell"},{"value":"154.5609"},{"value":"73"},{"value":"-1.3072"}],[{"value":"2018-06-01 08:00:07.500"},{"value":"DOG"},{"value":"PETX"},{"value":"99"},{"value":"102.1200"},{"value":"10,109.8800"},{"value":"buy"},{"value":"155.4189"},{"value":"75"},{"value":"0.4616"}],[{"value":"2018-06-01 08:00:07.600"},{"value":"DOG"},{"value":"PETX"},{"value":"347"},{"value":"101.9800"},{"value":"35,387.0600"},{"value":"buy"},{"value":"155.9001"},{"value":"76"},{"value":"0.7026"}],[{"value":"2018-06-01 08:00:08.100"},{"value":"DOG"},{"value":"PETX"},{"value":"98"},{"value":"101.9000"},{"value":"9,986.2000"},{"value":"buy"},{"value":"155.7859"},{"value":"81"},{"value":"0.4606"}],[{"value":"2018-06-01 08:00:08.300"},{"value":"DOG"},{"value":"PETX"},{"value":"436"},{"value":"101.7500"},{"value":"44,363.0000"},{"value":"sell"},{"value":"155.2354"},{"value":"83"},{"value":"-0.7578"}],[{"value":"2018-06-01 08:00:08.800"},{"value":"DOG"},{"value":"PETX"},{"value":"4,020"},{"value":"101.7700"},{"value":"409,115.4000"},{"value":"buy"},{"value":"152.3070"},{"value":"88"},{"value":"1.5903"}],[{"value":"2018-06-01 08:00:09.200"},{"value":"DOG"},{"value":"PETX"},{"value":"4,143"},{"value":"101.6300"},{"value":"421,053.0900"},{"value":"sell"},{"value":"151.6745"},{"value":"92"},{"value":"-1.6061"}],[{"value":"2018-06-01 08:00:09.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"101.5900"},{"value":"10,159.0000"},{"value":"buy"},{"value":"151.0986"},{"value":"94"},{"value":"0.9333"}],[{"value":"2018-06-01 08:00:09.600"},{"value":"DOG"},{"value":"PETX"},{"value":"2,887"},{"value":"101.4200"},{"value":"292,799.5400"},{"value":"sell"},{"value":"150.3843"},{"value":"96"},{"value":"-1.4239"}],[{"value":"2018-06-01 08:00:09.800"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"101.3200"},{"value":"10,132.0000"},{"value":"buy"},{"value":"149.6898"},{"value":"98"},{"value":"0.4629"}],[{"value":"2018-06-01 08:00:09.900"},{"value":"DOG"},{"value":"PETX"},{"value":"1,130"},{"value":"101.1200"},{"value":"114,265.6000"},{"value":"sell"},{"value":"149.2828"},{"value":"99"},{"value":"-1.0415"}],[{"value":"2018-06-01 08:00:10.900"},{"value":"DOG"},{"value":"PETX"},{"value":"19"},{"value":"100.9700"},{"value":"1,918.4300"},{"value":"buy"},{"value":"146.8845"},{"value":"109"},{"value":"0.2663"}],[{"value":"2018-06-01 08:00:11.200"},{"value":"DOG"},{"value":"PETX"},{"value":"184"},{"value":"100.7800"},{"value":"18,543.5200"},{"value":"sell"},{"value":"146.0829"},{"value":"112"},{"value":"-0.5682"}],[{"value":"2018-06-01 08:00:12.000"},{"value":"DOG"},{"value":"PETX"},{"value":"6,978"},{"value":"100.4200"},{"value":"700,730.7600"},{"value":"sell"},{"value":"146.1926"},{"value":"120"},{"value":"-1.9109"}],[{"value":"2018-06-01 08:00:12.200"},{"value":"DOG"},{"value":"PETX"},{"value":"3,250"},{"value":"100.2400"},{"value":"325,780.0000"},{"value":"buy"},{"value":"145.8186"},{"value":"122"},{"value":"1.4813"}],[{"value":"2018-06-01 08:00:13.000"},{"value":"DOG"},{"value":"PETX"},{"value":"2,240"},{"value":"100.2000"},{"value":"224,448.0000"},{"value":"buy"},{"value":"143.4828"},{"value":"130"},{"value":"1.3084"}],[{"value":"2018-06-01 08:00:13.100"},{"value":"DOG"},{"value":"PETX"},{"value":"429"},{"value":"100.0900"},{"value":"42,938.6100"},{"value":"sell"},{"value":"143.0835"},{"value":"131"},{"value":"-0.7538"}],[{"value":"2018-06-01 08:00:13.200"},{"value":"DOG"},{"value":"PETX"},{"value":"421"},{"value":"100.0700"},{"value":"42,129.4700"},{"value":"buy"},{"value":"142.8924"},{"value":"132"},{"value":"0.7490"}],[{"value":"2018-06-01 08:00:13.300"},{"value":"DOG"},{"value":"PETX"},{"value":"5,760"},{"value":"100.2100"},{"value":"577,209.6000"},{"value":"buy"},{"value":"143.0608"},{"value":"133"},{"value":"1.7925"}],[{"value":"2018-06-01 08:00:13.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"100.4400"},{"value":"10,044.0000"},{"value":"buy"},{"value":"143.3717"},{"value":"134"},{"value":"0.9541"}],[{"value":"2018-06-01 08:00:14.100"},{"value":"DOG"},{"value":"PETX"},{"value":"460"},{"value":"100.7100"},{"value":"46,326.6000"},{"value":"buy"},{"value":"146.6154"},{"value":"141"},{"value":"0.7718"}],[{"value":"2018-06-01 08:00:14.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"101.0800"},{"value":"10,108.0000"},{"value":"buy"},{"value":"148.5036"},{"value":"144"},{"value":"1.2424"}],[{"value":"2018-06-01 08:00:14.800"},{"value":"DOG"},{"value":"PETX"},{"value":"50"},{"value":"101.2800"},{"value":"5,064.0000"},{"value":"sell"},{"value":"150.8468"},{"value":"148"},{"value":"-1.3911"}],[{"value":"2018-06-01 08:00:15.600"},{"value":"DOG"},{"value":"PETX"},{"value":"2"},{"value":"101.4800"},{"value":"202.9600"},{"value":"buy"},{"value":"148.9938"},{"value":"156"},{"value":"0.1087"}],[{"value":"2018-06-01 08:00:15.900"},{"value":"DOG"},{"value":"PETX"},{"value":"1"},{"value":"101.6400"},{"value":"101.6400"},{"value":"sell"},{"value":"148.8404"},{"value":"159"},{"value":"-0.0997"}],[{"value":"2018-06-01 08:00:16.100"},{"value":"DOG"},{"value":"PETX"},{"value":"5,310"},{"value":"101.9500"},{"value":"541,354.5000"},{"value":"buy"},{"value":"148.9119"},{"value":"161"},{"value":"1.7446"}],[{"value":"2018-06-01 08:00:16.300"},{"value":"DOG"},{"value":"PETX"},{"value":"5,600"},{"value":"102.4100"},{"value":"573,496.0000"},{"value":"buy"},{"value":"149.5777"},{"value":"163"},{"value":"1.7758"}],[{"value":"2018-06-01 08:00:17.200"},{"value":"DOG"},{"value":"PETX"},{"value":"11"},{"value":"102.8400"},{"value":"1,131.2400"},{"value":"buy"},{"value":"152.8909"},{"value":"172"},{"value":"0.2168"}],[{"value":"2018-06-01 08:00:17.300"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"103.2300"},{"value":"10,323.0000"},{"value":"sell"},{"value":"152.9857"},{"value":"173"},{"value":"-0.0353"}],[{"value":"2018-06-01 08:00:17.500"},{"value":"DOG"},{"value":"PETX"},{"value":"174"},{"value":"103.5200"},{"value":"18,012.4800"},{"value":"sell"},{"value":"153.3544"},{"value":"175"},{"value":"-0.5583"}],[{"value":"2018-06-01 08:00:18.200"},{"value":"DOG"},{"value":"PETX"},{"value":"57"},{"value":"103.7500"},{"value":"5,913.7500"},{"value":"sell"},{"value":"155.4856"},{"value":"182"},{"value":"-0.3827"}],[{"value":"2018-06-01 08:00:18.400"},{"value":"DOG"},{"value":"PETX"},{"value":"7,263"},{"value":"103.7800"},{"value":"753,754.1400"},{"value":"sell"},{"value":"156.0415"},{"value":"184"},{"value":"-1.9365"}],[{"value":"2018-06-01 08:00:18.600"},{"value":"DOG"},{"value":"PETX"},{"value":"607"},{"value":"103.7200"},{"value":"62,958.0400"},{"value":"sell"},{"value":"156.3179"},{"value":"186"},{"value":"-0.8464"}],[{"value":"2018-06-01 08:00:18.700"},{"value":"DOG"},{"value":"PETX"},{"value":"5,480"},{"value":"103.5000"},{"value":"567,180.0000"},{"value":"sell"},{"value":"156.0311"},{"value":"187"},{"value":"-1.7630"}],[{"value":"2018-06-01 08:00:18.900"},{"value":"DOG"},{"value":"PETX"},{"value":"362"},{"value":"103.3700"},{"value":"37,419.9400"},{"value":"buy"},{"value":"155.3772"},{"value":"189"},{"value":"0.7122"}],[{"value":"2018-06-01 08:00:19.200"},{"value":"DOG"},{"value":"PETX"},{"value":"18"},{"value":"103.2300"},{"value":"1,858.1400"},{"value":"sell"},{"value":"155.3089"},{"value":"192"},{"value":"-0.2607"}],[{"value":"2018-06-01 08:00:19.300"},{"value":"DOG"},{"value":"PETX"},{"value":"200"},{"value":"103.3300"},{"value":"20,666.0000"},{"value":"buy"},{"value":"155.7080"},{"value":"193"},{"value":"2.3786"}],[{"value":"2018-06-01 08:00:19.700"},{"value":"DOG"},{"value":"PETX"},{"value":"1,080"},{"value":"103.5100"},{"value":"111,790.8000"},{"value":"buy"},{"value":"157.8246"},{"value":"197"},{"value":"1.0274"}],[{"value":"2018-06-01 08:00:19.900"},{"value":"DOG"},{"value":"PETX"},{"value":"4"},{"value":"103.6900"},{"value":"414.7600"},{"value":"buy"},{"value":"158.3577"},{"value":"199"},{"value":"0.1334"}],[{"value":"2018-06-01 08:00:20.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"103.8100"},{"value":"10,381.0000"},{"value":"sell"},{"value":"158.7106"},{"value":"204"},{"value":"-0.5010"}],[{"value":"2018-06-01 08:00:20.500"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"103.9100"},{"value":"10,391.0000"},{"value":"sell"},{"value":"158.6131"},{"value":"205"},{"value":"-0.0454"}],[{"value":"2018-06-01 08:00:20.700"},{"value":"DOG"},{"value":"PETX"},{"value":"2,331"},{"value":"103.8700"},{"value":"242,120.9700"},{"value":"sell"},{"value":"157.9498"},{"value":"207"},{"value":"-1.3259"}],[{"value":"2018-06-01 08:00:20.800"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"103.7600"},{"value":"10,376.0000"},{"value":"sell"},{"value":"157.4521"},{"value":"208"},{"value":"-0.8003"}],[{"value":"2018-06-01 08:00:20.900"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"103.6800"},{"value":"10,368.0000"},{"value":"buy"},{"value":"157.0695"},{"value":"209"},{"value":"0.1376"}],[{"value":"2018-06-01 08:00:21.000"},{"value":"DOG"},{"value":"PETX"},{"value":"6,530"},{"value":"103.7800"},{"value":"677,683.4000"},{"value":"buy"},{"value":"157.0951"},{"value":"210"},{"value":"1.8689"}],[{"value":"2018-06-01 08:00:21.100"},{"value":"DOG"},{"value":"PETX"},{"value":"141"},{"value":"103.8200"},{"value":"14,638.6200"},{"value":"sell"},{"value":"157.0218"},{"value":"211"},{"value":"-0.5197"}],[{"value":"2018-06-01 08:00:21.200"},{"value":"DOG"},{"value":"PETX"},{"value":"475"},{"value":"103.9300"},{"value":"49,366.7500"},{"value":"buy"},{"value":"157.1032"},{"value":"212"},{"value":"0.7799"}],[{"value":"2018-06-01 08:00:21.400"},{"value":"DOG"},{"value":"PETX"},{"value":"87"},{"value":"103.9900"},{"value":"9,047.1300"},{"value":"sell"},{"value":"156.6737"},{"value":"214"},{"value":"-0.4428"}],[{"value":"2018-06-01 08:00:21.800"},{"value":"DOG"},{"value":"PETX"},{"value":"1"},{"value":"104.0600"},{"value":"104.0600"},{"value":"buy"},{"value":"154.9707"},{"value":"218"},{"value":"0.0816"}],[{"value":"2018-06-01 08:00:22.300"},{"value":"DOG"},{"value":"PETX"},{"value":"972"},{"value":"104.2100"},{"value":"101,292.1200"},{"value":"buy"},{"value":"152.9842"},{"value":"223"},{"value":"0.9906"}],[{"value":"2018-06-01 08:00:22.600"},{"value":"DOG"},{"value":"PETX"},{"value":"33"},{"value":"104.3100"},{"value":"3,442.2300"},{"value":"sell"},{"value":"153.4246"},{"value":"226"},{"value":"-0.3193"}],[{"value":"2018-06-01 08:00:22.700"},{"value":"DOG"},{"value":"PETX"},{"value":"16"},{"value":"104.3800"},{"value":"1,670.0800"},{"value":"sell"},{"value":"153.5308"},{"value":"227"},{"value":"-0.2515"}],[{"value":"2018-06-01 08:00:22.900"},{"value":"DOG"},{"value":"PETX"},{"value":"200"},{"value":"104.4800"},{"value":"20,896.0000"},{"value":"buy"},{"value":"153.9573"},{"value":"229"},{"value":"0.3123"}],[{"value":"2018-06-01 08:00:23.200"},{"value":"DOG"},{"value":"PETX"},{"value":"5,900"},{"value":"104.7300"},{"value":"617,907.0000"},{"value":"buy"},{"value":"154.2931"},{"value":"232"},{"value":"1.8074"}],[{"value":"2018-06-01 08:00:23.400"},{"value":"DOG"},{"value":"PETX"},{"value":"300"},{"value":"104.8800"},{"value":"31,464.0000"},{"value":"sell"},{"value":"154.5407"},{"value":"234"},{"value":"-0.9017"}],[{"value":"2018-06-01 08:00:23.500"},{"value":"DOG"},{"value":"PETX"},{"value":"6"},{"value":"105.0300"},{"value":"630.1800"},{"value":"buy"},{"value":"154.5909"},{"value":"235"},{"value":"0.1788"}],[{"value":"2018-06-01 08:00:24.200"},{"value":"DOG"},{"value":"PETX"},{"value":"25"},{"value":"105.1900"},{"value":"2,629.7500"},{"value":"buy"},{"value":"153.7320"},{"value":"242"},{"value":"0.2923"}],[{"value":"2018-06-01 08:00:24.700"},{"value":"DOG"},{"value":"PETX"},{"value":"701"},{"value":"105.2600"},{"value":"73,787.2600"},{"value":"sell"},{"value":"151.1367"},{"value":"247"},{"value":"-0.8883"}],[{"value":"2018-06-01 08:00:25.000"},{"value":"DOG"},{"value":"PETX"},{"value":"613"},{"value":"105.2300"},{"value":"64,505.9900"},{"value":"sell"},{"value":"149.6864"},{"value":"250"},{"value":"-0.8490"}],[{"value":"2018-06-01 08:00:25.100"},{"value":"DOG"},{"value":"PETX"},{"value":"24,460"},{"value":"105.4900"},{"value":"2,580,285.4000"},{"value":"buy"},{"value":"149.7582"},{"value":"251"},{"value":"2.9026"}],[{"value":"2018-06-01 08:00:25.300"},{"value":"DOG"},{"value":"PETX"},{"value":"1,167"},{"value":"105.6200"},{"value":"123,258.5400"},{"value":"sell"},{"value":"149.8753"},{"value":"253"},{"value":"-1.0527"}],[{"value":"2018-06-01 08:00:25.400"},{"value":"DOG"},{"value":"PETX"},{"value":"2,034"},{"value":"105.6200"},{"value":"214,831.0800"},{"value":"sell"},{"value":"149.6029"},{"value":"254"},{"value":"-1.2669"}],[{"value":"2018-06-01 08:00:25.600"},{"value":"DOG"},{"value":"PETX"},{"value":"1"},{"value":"105.6100"},{"value":"105.6100"},{"value":"sell"},{"value":"149.0515"},{"value":"256"},{"value":"-0.0776"}],[{"value":"2018-06-01 08:00:25.700"},{"value":"DOG"},{"value":"PETX"},{"value":"250"},{"value":"105.4900"},{"value":"26,372.5000"},{"value":"sell"},{"value":"148.6323"},{"value":"257"},{"value":"-1.1566"}],[{"value":"2018-06-01 08:00:26.100"},{"value":"DOG"},{"value":"PETX"},{"value":"20"},{"value":"105.3100"},{"value":"2,106.2000"},{"value":"sell"},{"value":"147.7959"},{"value":"261"},{"value":"-0.7128"}],[{"value":"2018-06-01 08:00:26.200"},{"value":"DOG"},{"value":"PETX"},{"value":"500"},{"value":"105.2300"},{"value":"52,615.0000"},{"value":"buy"},{"value":"147.7057"},{"value":"262"},{"value":"0.7937"}],[{"value":"2018-06-01 08:00:27.100"},{"value":"DOG"},{"value":"PETX"},{"value":"3,820"},{"value":"105.3000"},{"value":"402,246.0000"},{"value":"buy"},{"value":"142.3240"},{"value":"271"},{"value":"1.5635"}],[{"value":"2018-06-01 08:00:27.600"},{"value":"DOG"},{"value":"PETX"},{"value":"14"},{"value":"105.3500"},{"value":"1,474.9000"},{"value":"sell"},{"value":"141.9421"},{"value":"276"},{"value":"-0.2404"}],[{"value":"2018-06-01 08:00:27.900"},{"value":"DOG"},{"value":"PETX"},{"value":"294"},{"value":"105.3200"},{"value":"30,964.0800"},{"value":"sell"},{"value":"142.9242"},{"value":"279"},{"value":"-0.6649"}],[{"value":"2018-06-01 08:00:28.000"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"105.2700"},{"value":"10,527.0000"},{"value":"sell"},{"value":"143.1277"},{"value":"280"},{"value":"-0.3641"}],[{"value":"2018-06-01 08:00:28.600"},{"value":"DOG"},{"value":"PETX"},{"value":"693"},{"value":"105.1300"},{"value":"72,855.0900"},{"value":"sell"},{"value":"144.8956"},{"value":"286"},{"value":"-0.8847"}],[{"value":"2018-06-01 08:00:28.700"},{"value":"DOG"},{"value":"PETX"},{"value":"4"},{"value":"105.0000"},{"value":"420.0000"},{"value":"sell"},{"value":"145.1057"},{"value":"287"},{"value":"-0.1537"}],[{"value":"2018-06-01 08:00:29.000"},{"value":"DOG"},{"value":"PETX"},{"value":"1"},{"value":"104.8700"},{"value":"104.8700"},{"value":"sell"},{"value":"144.3364"},{"value":"290"},{"value":"-0.0318"}],[{"value":"2018-06-01 08:00:29.300"},{"value":"DOG"},{"value":"PETX"},{"value":"1"},{"value":"104.7500"},{"value":"104.7500"},{"value":"sell"},{"value":"144.5048"},{"value":"293"},{"value":"-0.0698"}],[{"value":"2018-06-01 08:00:29.700"},{"value":"DOG"},{"value":"PETX"},{"value":"8,511"},{"value":"104.4400"},{"value":"888,888.8400"},{"value":"sell"},{"value":"145.0115"},{"value":"297"},{"value":"-2.0417"}],[{"value":"2018-06-01 08:00:29.900"},{"value":"DOG"},{"value":"PETX"},{"value":"289"},{"value":"104.1100"},{"value":"30,087.7900"},{"value":"sell"},{"value":"144.6353"},{"value":"299"},{"value":"-0.6610"}]]}},"annotation_clicks":{"type":"Table","data":{"columns":[{"name":"Text","type":"java.lang.String"},{"name":"X","type":"java.lang.String"},{"name":"Y","type":"double"}],"rows":[]}},"fig":{"type":"deephaven.plot.express.DeephavenFigure","data":{"data":[{"hovertemplate":"Timestamp=%{x}
Price=%{y}","legendgroup":"","line":{"dash":"solid","shape":"linear"},"marker":{"symbol":"circle"},"mode":"lines","name":"","showlegend":false,"x":["2018-06-01 12:00:00.700000","2018-06-01 12:00:00.900000","2018-06-01 12:00:01.100000","2018-06-01 12:00:01.200000","2018-06-01 12:00:01.600000","2018-06-01 12:00:01.700000","2018-06-01 12:00:02.500000","2018-06-01 12:00:02.900000","2018-06-01 12:00:03.000000","2018-06-01 12:00:03.400000","2018-06-01 12:00:03.500000","2018-06-01 12:00:03.600000","2018-06-01 12:00:04.000000","2018-06-01 12:00:04.100000","2018-06-01 12:00:04.400000","2018-06-01 12:00:04.700000","2018-06-01 12:00:04.800000","2018-06-01 12:00:05.000000","2018-06-01 12:00:06.000000","2018-06-01 12:00:06.100000","2018-06-01 12:00:06.300000","2018-06-01 12:00:06.400000","2018-06-01 12:00:06.500000","2018-06-01 12:00:07.100000","2018-06-01 12:00:07.300000","2018-06-01 12:00:07.500000","2018-06-01 12:00:07.600000","2018-06-01 12:00:08.100000","2018-06-01 12:00:08.300000","2018-06-01 12:00:08.800000","2018-06-01 12:00:09.200000","2018-06-01 12:00:09.400000","2018-06-01 12:00:09.600000","2018-06-01 12:00:09.800000","2018-06-01 12:00:09.900000","2018-06-01 12:00:10.900000","2018-06-01 12:00:11.200000","2018-06-01 12:00:12.000000","2018-06-01 12:00:12.200000","2018-06-01 12:00:13.000000","2018-06-01 12:00:13.100000","2018-06-01 12:00:13.200000","2018-06-01 12:00:13.300000","2018-06-01 12:00:13.400000","2018-06-01 12:00:14.100000","2018-06-01 12:00:14.400000","2018-06-01 12:00:14.800000","2018-06-01 12:00:15.600000","2018-06-01 12:00:15.900000","2018-06-01 12:00:16.100000","2018-06-01 12:00:16.300000","2018-06-01 12:00:17.200000","2018-06-01 12:00:17.300000","2018-06-01 12:00:17.500000","2018-06-01 12:00:18.200000","2018-06-01 12:00:18.400000","2018-06-01 12:00:18.600000","2018-06-01 12:00:18.700000","2018-06-01 12:00:18.900000","2018-06-01 12:00:19.200000","2018-06-01 12:00:19.300000","2018-06-01 12:00:19.700000","2018-06-01 12:00:19.900000","2018-06-01 12:00:20.400000","2018-06-01 12:00:20.500000","2018-06-01 12:00:20.700000","2018-06-01 12:00:20.800000","2018-06-01 12:00:20.900000","2018-06-01 12:00:21.000000","2018-06-01 12:00:21.100000","2018-06-01 12:00:21.200000","2018-06-01 12:00:21.400000","2018-06-01 12:00:21.800000","2018-06-01 12:00:22.300000","2018-06-01 12:00:22.600000","2018-06-01 12:00:22.700000","2018-06-01 12:00:22.900000","2018-06-01 12:00:23.200000","2018-06-01 12:00:23.400000","2018-06-01 12:00:23.500000","2018-06-01 12:00:24.200000","2018-06-01 12:00:24.700000","2018-06-01 12:00:25.000000","2018-06-01 12:00:25.100000","2018-06-01 12:00:25.300000","2018-06-01 12:00:25.400000","2018-06-01 12:00:25.600000","2018-06-01 12:00:25.700000","2018-06-01 12:00:26.100000","2018-06-01 12:00:26.200000","2018-06-01 12:00:27.100000","2018-06-01 12:00:27.600000","2018-06-01 12:00:27.900000","2018-06-01 12:00:28.000000","2018-06-01 12:00:28.600000","2018-06-01 12:00:28.700000","2018-06-01 12:00:29.000000","2018-06-01 12:00:29.300000","2018-06-01 12:00:29.700000","2018-06-01 12:00:29.900000","2018-06-01 12:00:30.100000","2018-06-01 12:00:30.600000","2018-06-01 12:00:31.000000","2018-06-01 12:00:31.300000","2018-06-01 12:00:31.500000","2018-06-01 12:00:31.700000","2018-06-01 12:00:32.000000","2018-06-01 12:00:32.100000","2018-06-01 12:00:32.500000","2018-06-01 12:00:33.300000","2018-06-01 12:00:34.000000","2018-06-01 12:00:34.400000","2018-06-01 12:00:34.600000","2018-06-01 12:00:34.700000","2018-06-01 12:00:34.900000","2018-06-01 12:00:37.100000","2018-06-01 12:00:37.400000","2018-06-01 12:00:38.100000","2018-06-01 12:00:38.300000","2018-06-01 12:00:38.700000","2018-06-01 12:00:39.100000","2018-06-01 12:00:39.300000","2018-06-01 12:00:39.500000","2018-06-01 12:00:40.000000","2018-06-01 12:00:40.100000","2018-06-01 12:00:40.600000","2018-06-01 12:00:41.200000","2018-06-01 12:00:41.400000","2018-06-01 12:00:41.800000","2018-06-01 12:00:42.200000","2018-06-01 12:00:42.300000","2018-06-01 12:00:42.400000","2018-06-01 12:00:42.500000","2018-06-01 12:00:43.400000","2018-06-01 12:00:43.600000","2018-06-01 12:00:43.700000","2018-06-01 12:00:43.900000","2018-06-01 12:00:44.200000","2018-06-01 12:00:44.400000","2018-06-01 12:00:44.500000","2018-06-01 12:00:44.700000","2018-06-01 12:00:44.800000","2018-06-01 12:00:45.200000","2018-06-01 12:00:45.400000","2018-06-01 12:00:46.000000","2018-06-01 12:00:47.300000","2018-06-01 12:00:47.600000","2018-06-01 12:00:48.000000","2018-06-01 12:00:48.200000","2018-06-01 12:00:48.300000","2018-06-01 12:00:49.100000","2018-06-01 12:00:49.800000","2018-06-01 12:00:50.200000","2018-06-01 12:00:50.400000","2018-06-01 12:00:50.700000","2018-06-01 12:00:50.800000","2018-06-01 12:00:51.400000","2018-06-01 12:00:53.300000","2018-06-01 12:00:53.400000","2018-06-01 12:00:53.900000","2018-06-01 12:00:54.100000","2018-06-01 12:00:54.200000","2018-06-01 12:00:55.100000","2018-06-01 12:00:55.300000","2018-06-01 12:00:55.400000","2018-06-01 12:00:56.300000","2018-06-01 12:00:57.400000","2018-06-01 12:00:57.500000","2018-06-01 12:00:57.700000","2018-06-01 12:00:57.900000","2018-06-01 12:00:58.000000","2018-06-01 12:00:58.300000","2018-06-01 12:00:59.100000","2018-06-01 12:00:59.600000","2018-06-01 12:01:00.200000","2018-06-01 12:01:01.000000","2018-06-01 12:01:01.100000","2018-06-01 12:01:01.300000","2018-06-01 12:01:01.800000","2018-06-01 12:01:01.900000","2018-06-01 12:01:02.100000","2018-06-01 12:01:02.200000","2018-06-01 12:01:02.600000","2018-06-01 12:01:03.200000","2018-06-01 12:01:03.500000","2018-06-01 12:01:03.700000","2018-06-01 12:01:04.100000","2018-06-01 12:01:04.300000","2018-06-01 12:01:04.400000","2018-06-01 12:01:04.900000","2018-06-01 12:01:05.000000","2018-06-01 12:01:06.500000","2018-06-01 12:01:06.600000","2018-06-01 12:01:06.800000","2018-06-01 12:01:06.900000","2018-06-01 12:01:07.000000","2018-06-01 12:01:07.300000","2018-06-01 12:01:07.400000","2018-06-01 12:01:08.100000","2018-06-01 12:01:08.200000","2018-06-01 12:01:08.300000","2018-06-01 12:01:08.400000","2018-06-01 12:01:08.500000","2018-06-01 12:01:08.700000","2018-06-01 12:01:09.000000","2018-06-01 12:01:09.300000","2018-06-01 12:01:09.500000","2018-06-01 12:01:09.900000","2018-06-01 12:01:10.900000","2018-06-01 12:01:11.000000","2018-06-01 12:01:11.200000","2018-06-01 12:01:11.300000","2018-06-01 12:01:11.500000","2018-06-01 12:01:11.900000","2018-06-01 12:01:12.300000","2018-06-01 12:01:13.000000","2018-06-01 12:01:13.300000","2018-06-01 12:01:13.500000","2018-06-01 12:01:14.200000","2018-06-01 12:01:14.400000","2018-06-01 12:01:14.600000","2018-06-01 12:01:14.700000","2018-06-01 12:01:15.000000","2018-06-01 12:01:15.200000","2018-06-01 12:01:15.600000","2018-06-01 12:01:15.700000","2018-06-01 12:01:15.800000","2018-06-01 12:01:16.600000","2018-06-01 12:01:17.000000","2018-06-01 12:01:17.400000","2018-06-01 12:01:17.500000","2018-06-01 12:01:17.600000","2018-06-01 12:01:17.900000","2018-06-01 12:01:18.300000","2018-06-01 12:01:18.400000","2018-06-01 12:01:18.500000","2018-06-01 12:01:18.700000","2018-06-01 12:01:18.900000","2018-06-01 12:01:19.400000","2018-06-01 12:01:19.500000","2018-06-01 12:01:19.600000","2018-06-01 12:01:19.800000","2018-06-01 12:01:20.200000","2018-06-01 12:01:20.400000","2018-06-01 12:01:20.500000","2018-06-01 12:01:20.700000","2018-06-01 12:01:20.800000","2018-06-01 12:01:21.800000","2018-06-01 12:01:21.900000","2018-06-01 12:01:22.300000","2018-06-01 12:01:22.600000","2018-06-01 12:01:22.700000","2018-06-01 12:01:23.400000","2018-06-01 12:01:23.600000","2018-06-01 12:01:23.700000","2018-06-01 12:01:23.800000","2018-06-01 12:01:24.700000","2018-06-01 12:01:25.300000","2018-06-01 12:01:25.800000","2018-06-01 12:01:26.200000","2018-06-01 12:01:26.400000","2018-06-01 12:01:26.500000","2018-06-01 12:01:26.800000","2018-06-01 12:01:26.900000","2018-06-01 12:01:27.100000","2018-06-01 12:01:27.200000","2018-06-01 12:01:27.400000","2018-06-01 12:01:27.500000","2018-06-01 12:01:28.300000","2018-06-01 12:01:28.500000","2018-06-01 12:01:28.700000","2018-06-01 12:01:29.300000","2018-06-01 12:01:29.400000","2018-06-01 12:01:29.800000","2018-06-01 12:01:30.100000","2018-06-01 12:01:31.100000","2018-06-01 12:01:31.200000","2018-06-01 12:01:32.400000","2018-06-01 12:01:32.800000","2018-06-01 12:01:33.200000","2018-06-01 12:01:33.300000","2018-06-01 12:01:33.400000","2018-06-01 12:01:33.700000","2018-06-01 12:01:33.800000","2018-06-01 12:01:34.000000","2018-06-01 12:01:34.100000","2018-06-01 12:01:34.300000","2018-06-01 12:01:34.500000","2018-06-01 12:01:34.800000","2018-06-01 12:01:34.900000","2018-06-01 12:01:35.700000","2018-06-01 12:01:35.800000","2018-06-01 12:01:35.900000","2018-06-01 12:01:36.000000","2018-06-01 12:01:36.900000","2018-06-01 12:01:37.500000","2018-06-01 12:01:37.900000","2018-06-01 12:01:38.000000","2018-06-01 12:01:38.200000","2018-06-01 12:01:38.500000","2018-06-01 12:01:38.700000","2018-06-01 12:01:39.700000","2018-06-01 12:01:40.200000","2018-06-01 12:01:40.300000","2018-06-01 12:01:40.400000","2018-06-01 12:01:40.500000","2018-06-01 12:01:40.600000","2018-06-01 12:01:40.800000","2018-06-01 12:01:41.100000","2018-06-01 12:01:41.200000","2018-06-01 12:01:41.400000","2018-06-01 12:01:41.600000","2018-06-01 12:01:41.700000","2018-06-01 12:01:41.800000","2018-06-01 12:01:42.100000","2018-06-01 12:01:42.300000","2018-06-01 12:01:42.800000","2018-06-01 12:01:43.200000","2018-06-01 12:01:43.600000","2018-06-01 12:01:44.000000","2018-06-01 12:01:44.100000","2018-06-01 12:01:44.600000","2018-06-01 12:01:45.000000","2018-06-01 12:01:45.800000","2018-06-01 12:01:46.100000","2018-06-01 12:01:46.800000","2018-06-01 12:01:47.000000","2018-06-01 12:01:47.300000","2018-06-01 12:01:47.500000","2018-06-01 12:01:47.600000","2018-06-01 12:01:47.900000","2018-06-01 12:01:48.100000","2018-06-01 12:01:48.800000","2018-06-01 12:01:48.900000","2018-06-01 12:01:49.000000","2018-06-01 12:01:49.100000","2018-06-01 12:01:49.300000","2018-06-01 12:01:49.400000","2018-06-01 12:01:49.700000","2018-06-01 12:01:49.900000","2018-06-01 12:01:50.100000","2018-06-01 12:01:50.300000","2018-06-01 12:01:50.600000","2018-06-01 12:01:50.900000","2018-06-01 12:01:51.000000","2018-06-01 12:01:51.200000","2018-06-01 12:01:51.400000","2018-06-01 12:01:51.700000","2018-06-01 12:01:52.200000","2018-06-01 12:01:52.300000","2018-06-01 12:01:52.700000","2018-06-01 12:01:53.000000","2018-06-01 12:01:53.200000","2018-06-01 12:01:53.300000","2018-06-01 12:01:53.500000","2018-06-01 12:01:53.700000","2018-06-01 12:01:53.800000","2018-06-01 12:01:54.100000","2018-06-01 12:01:54.400000","2018-06-01 12:01:54.800000","2018-06-01 12:01:55.200000","2018-06-01 12:01:56.000000","2018-06-01 12:01:56.200000","2018-06-01 12:01:57.200000","2018-06-01 12:01:57.300000","2018-06-01 12:01:57.500000","2018-06-01 12:01:57.700000","2018-06-01 12:01:58.000000","2018-06-01 12:01:58.100000","2018-06-01 12:01:58.300000","2018-06-01 12:01:58.400000","2018-06-01 12:01:59.000000","2018-06-01 12:01:59.100000","2018-06-01 12:01:59.300000","2018-06-01 12:01:59.500000","2018-06-01 12:01:59.800000","2018-06-01 12:02:00.200000","2018-06-01 12:02:00.400000","2018-06-01 12:02:00.600000","2018-06-01 12:02:01.100000","2018-06-01 12:02:01.300000","2018-06-01 12:02:01.500000","2018-06-01 12:02:01.600000","2018-06-01 12:02:01.800000","2018-06-01 12:02:02.500000","2018-06-01 12:02:02.600000","2018-06-01 12:02:03.000000","2018-06-01 12:02:03.100000","2018-06-01 12:02:03.300000","2018-06-01 12:02:03.600000","2018-06-01 12:02:04.500000","2018-06-01 12:02:04.900000","2018-06-01 12:02:05.400000","2018-06-01 12:02:05.500000","2018-06-01 12:02:05.600000","2018-06-01 12:02:05.700000","2018-06-01 12:02:05.900000","2018-06-01 12:02:07.100000","2018-06-01 12:02:08.300000","2018-06-01 12:02:08.400000","2018-06-01 12:02:08.600000","2018-06-01 12:02:08.700000","2018-06-01 12:02:09.200000","2018-06-01 12:02:09.300000","2018-06-01 12:02:09.600000","2018-06-01 12:02:09.700000","2018-06-01 12:02:09.900000","2018-06-01 12:02:10.000000","2018-06-01 12:02:10.300000","2018-06-01 12:02:10.400000","2018-06-01 12:02:10.800000","2018-06-01 12:02:10.900000","2018-06-01 12:02:11.200000","2018-06-01 12:02:11.400000","2018-06-01 12:02:11.500000","2018-06-01 12:02:11.900000","2018-06-01 12:02:12.100000","2018-06-01 12:02:12.200000","2018-06-01 12:02:12.400000","2018-06-01 12:02:12.600000","2018-06-01 12:02:12.900000","2018-06-01 12:02:13.000000","2018-06-01 12:02:13.300000","2018-06-01 12:02:13.600000","2018-06-01 12:02:14.000000","2018-06-01 12:02:14.100000","2018-06-01 12:02:14.300000","2018-06-01 12:02:14.400000","2018-06-01 12:02:14.600000","2018-06-01 12:02:15.000000","2018-06-01 12:02:15.200000","2018-06-01 12:02:15.400000","2018-06-01 12:02:16.600000","2018-06-01 12:02:16.700000","2018-06-01 12:02:17.600000","2018-06-01 12:02:19.300000","2018-06-01 12:02:19.400000","2018-06-01 12:02:19.800000","2018-06-01 12:02:19.900000","2018-06-01 12:02:20.300000","2018-06-01 12:02:20.500000","2018-06-01 12:02:20.800000","2018-06-01 12:02:21.000000","2018-06-01 12:02:21.300000","2018-06-01 12:02:21.700000","2018-06-01 12:02:22.500000","2018-06-01 12:02:22.800000","2018-06-01 12:02:23.100000","2018-06-01 12:02:23.200000","2018-06-01 12:02:23.900000","2018-06-01 12:02:24.600000","2018-06-01 12:02:24.800000","2018-06-01 12:02:25.000000","2018-06-01 12:02:25.100000","2018-06-01 12:02:25.300000","2018-06-01 12:02:25.500000","2018-06-01 12:02:25.600000","2018-06-01 12:02:25.700000","2018-06-01 12:02:25.900000","2018-06-01 12:02:26.400000","2018-06-01 12:02:27.600000","2018-06-01 12:02:28.500000","2018-06-01 12:02:28.900000","2018-06-01 12:02:29.000000","2018-06-01 12:02:29.500000","2018-06-01 12:02:29.900000","2018-06-01 12:02:30.000000","2018-06-01 12:02:30.300000","2018-06-01 12:02:30.800000","2018-06-01 12:02:31.000000","2018-06-01 12:02:31.200000","2018-06-01 12:02:31.300000","2018-06-01 12:02:31.700000","2018-06-01 12:02:32.000000","2018-06-01 12:02:32.800000","2018-06-01 12:02:32.900000","2018-06-01 12:02:33.400000","2018-06-01 12:02:33.500000","2018-06-01 12:02:33.700000","2018-06-01 12:02:33.800000","2018-06-01 12:02:34.100000","2018-06-01 12:02:34.200000","2018-06-01 12:02:34.900000","2018-06-01 12:02:35.400000","2018-06-01 12:02:35.500000","2018-06-01 12:02:35.600000","2018-06-01 12:02:36.200000","2018-06-01 12:02:37.400000","2018-06-01 12:02:37.800000","2018-06-01 12:02:38.300000","2018-06-01 12:02:38.600000","2018-06-01 12:02:39.100000","2018-06-01 12:02:39.200000","2018-06-01 12:02:39.300000","2018-06-01 12:02:39.900000","2018-06-01 12:02:40.100000","2018-06-01 12:02:40.300000","2018-06-01 12:02:40.600000","2018-06-01 12:02:41.000000","2018-06-01 12:02:41.300000","2018-06-01 12:02:41.500000","2018-06-01 12:02:41.600000","2018-06-01 12:02:42.200000","2018-06-01 12:02:42.500000","2018-06-01 12:02:42.600000","2018-06-01 12:02:42.700000","2018-06-01 12:02:43.300000","2018-06-01 12:02:44.400000","2018-06-01 12:02:44.600000","2018-06-01 12:02:44.700000","2018-06-01 12:02:45.000000","2018-06-01 12:02:45.200000","2018-06-01 12:02:45.500000","2018-06-01 12:02:45.900000","2018-06-01 12:02:46.500000","2018-06-01 12:02:46.600000","2018-06-01 12:02:47.100000","2018-06-01 12:02:47.200000","2018-06-01 12:02:47.300000","2018-06-01 12:02:48.000000","2018-06-01 12:02:48.200000","2018-06-01 12:02:48.400000","2018-06-01 12:02:48.500000","2018-06-01 12:02:49.800000","2018-06-01 12:02:50.000000","2018-06-01 12:02:50.100000","2018-06-01 12:02:50.200000","2018-06-01 12:02:50.300000","2018-06-01 12:02:50.400000","2018-06-01 12:02:50.600000","2018-06-01 12:02:50.800000","2018-06-01 12:02:51.500000","2018-06-01 12:02:51.800000","2018-06-01 12:02:51.900000","2018-06-01 12:02:52.000000","2018-06-01 12:02:52.300000","2018-06-01 12:02:52.500000","2018-06-01 12:02:52.800000","2018-06-01 12:02:53.100000","2018-06-01 12:02:53.800000","2018-06-01 12:02:54.400000","2018-06-01 12:02:54.700000","2018-06-01 12:02:55.000000","2018-06-01 12:02:56.000000","2018-06-01 12:02:57.000000","2018-06-01 12:02:57.300000","2018-06-01 12:02:57.400000","2018-06-01 12:02:57.500000","2018-06-01 12:02:57.900000","2018-06-01 12:02:58.000000","2018-06-01 12:02:58.200000","2018-06-01 12:02:58.300000","2018-06-01 12:02:58.600000","2018-06-01 12:02:59.400000","2018-06-01 12:02:59.700000","2018-06-01 12:02:59.800000","2018-06-01 12:03:00.000000","2018-06-01 12:03:00.300000","2018-06-01 12:03:00.700000","2018-06-01 12:03:01.100000","2018-06-01 12:03:01.200000","2018-06-01 12:03:01.300000","2018-06-01 12:03:01.600000","2018-06-01 12:03:01.700000","2018-06-01 12:03:02.100000","2018-06-01 12:03:02.300000","2018-06-01 12:03:02.700000","2018-06-01 12:03:02.900000","2018-06-01 12:03:03.100000","2018-06-01 12:03:03.200000","2018-06-01 12:03:03.400000","2018-06-01 12:03:03.700000","2018-06-01 12:03:04.300000","2018-06-01 12:03:04.400000","2018-06-01 12:03:04.900000","2018-06-01 12:03:05.100000","2018-06-01 12:03:05.400000","2018-06-01 12:03:05.500000","2018-06-01 12:03:06.300000","2018-06-01 12:03:07.000000","2018-06-01 12:03:07.100000","2018-06-01 12:03:07.800000","2018-06-01 12:03:08.100000","2018-06-01 12:03:08.200000","2018-06-01 12:03:08.700000","2018-06-01 12:03:08.900000","2018-06-01 12:03:09.000000","2018-06-01 12:03:09.800000","2018-06-01 12:03:10.100000","2018-06-01 12:03:10.400000","2018-06-01 12:03:11.100000","2018-06-01 12:03:11.300000","2018-06-01 12:03:11.500000","2018-06-01 12:03:11.900000","2018-06-01 12:03:12.000000","2018-06-01 12:03:12.300000","2018-06-01 12:03:13.200000","2018-06-01 12:03:13.300000","2018-06-01 12:03:13.600000","2018-06-01 12:03:13.800000","2018-06-01 12:03:14.100000","2018-06-01 12:03:14.500000","2018-06-01 12:03:14.800000","2018-06-01 12:03:14.900000","2018-06-01 12:03:15.700000","2018-06-01 12:03:16.300000","2018-06-01 12:03:16.900000","2018-06-01 12:03:17.700000","2018-06-01 12:03:18.400000","2018-06-01 12:03:18.500000","2018-06-01 12:03:19.300000","2018-06-01 12:03:19.400000","2018-06-01 12:03:20.000000","2018-06-01 12:03:20.400000","2018-06-01 12:03:20.500000","2018-06-01 12:03:20.600000","2018-06-01 12:03:21.100000","2018-06-01 12:03:21.300000","2018-06-01 12:03:21.400000","2018-06-01 12:03:21.800000","2018-06-01 12:03:22.200000","2018-06-01 12:03:22.300000","2018-06-01 12:03:22.400000","2018-06-01 12:03:22.500000","2018-06-01 12:03:22.800000","2018-06-01 12:03:23.000000","2018-06-01 12:03:23.300000","2018-06-01 12:03:24.000000","2018-06-01 12:03:24.300000","2018-06-01 12:03:24.600000","2018-06-01 12:03:24.800000","2018-06-01 12:03:24.900000","2018-06-01 12:03:25.300000","2018-06-01 12:03:25.900000","2018-06-01 12:03:26.100000","2018-06-01 12:03:26.900000","2018-06-01 12:03:27.000000","2018-06-01 12:03:27.200000","2018-06-01 12:03:27.700000","2018-06-01 12:03:27.900000","2018-06-01 12:03:28.100000","2018-06-01 12:03:28.400000","2018-06-01 12:03:28.800000","2018-06-01 12:03:29.100000","2018-06-01 12:03:29.300000","2018-06-01 12:03:29.500000","2018-06-01 12:03:30.200000","2018-06-01 12:03:30.600000","2018-06-01 12:03:30.900000","2018-06-01 12:03:31.100000","2018-06-01 12:03:31.500000","2018-06-01 12:03:31.800000","2018-06-01 12:03:32.200000","2018-06-01 12:03:32.500000","2018-06-01 12:03:33.200000","2018-06-01 12:03:33.400000","2018-06-01 12:03:33.800000","2018-06-01 12:03:34.300000","2018-06-01 12:03:34.500000","2018-06-01 12:03:35.000000","2018-06-01 12:03:35.800000","2018-06-01 12:03:35.900000","2018-06-01 12:03:36.000000","2018-06-01 12:03:36.200000","2018-06-01 12:03:36.300000","2018-06-01 12:03:36.400000","2018-06-01 12:03:36.900000","2018-06-01 12:03:37.500000","2018-06-01 12:03:37.900000","2018-06-01 12:03:38.200000","2018-06-01 12:03:38.300000","2018-06-01 12:03:39.400000","2018-06-01 12:03:40.000000","2018-06-01 12:03:40.300000","2018-06-01 12:03:41.100000","2018-06-01 12:03:41.200000","2018-06-01 12:03:41.300000","2018-06-01 12:03:42.800000","2018-06-01 12:03:42.900000","2018-06-01 12:03:43.300000","2018-06-01 12:03:43.600000","2018-06-01 12:03:44.200000","2018-06-01 12:03:44.300000","2018-06-01 12:03:44.400000","2018-06-01 12:03:44.800000","2018-06-01 12:03:44.900000","2018-06-01 12:03:45.000000","2018-06-01 12:03:45.300000","2018-06-01 12:03:46.100000","2018-06-01 12:03:46.700000","2018-06-01 12:03:47.000000","2018-06-01 12:03:47.100000","2018-06-01 12:03:47.600000","2018-06-01 12:03:47.700000","2018-06-01 12:03:47.900000","2018-06-01 12:03:48.100000","2018-06-01 12:03:48.400000","2018-06-01 12:03:48.600000","2018-06-01 12:03:49.200000","2018-06-01 12:03:49.500000","2018-06-01 12:03:49.600000","2018-06-01 12:03:49.700000","2018-06-01 12:03:50.000000","2018-06-01 12:03:50.400000","2018-06-01 12:03:50.600000","2018-06-01 12:03:50.700000","2018-06-01 12:03:51.000000","2018-06-01 12:03:51.700000","2018-06-01 12:03:52.000000","2018-06-01 12:03:52.100000","2018-06-01 12:03:52.500000","2018-06-01 12:03:52.600000","2018-06-01 12:03:53.000000","2018-06-01 12:03:53.100000","2018-06-01 12:03:53.600000","2018-06-01 12:03:53.800000","2018-06-01 12:03:54.200000","2018-06-01 12:03:54.300000","2018-06-01 12:03:54.400000","2018-06-01 12:03:55.100000","2018-06-01 12:03:55.400000","2018-06-01 12:03:55.500000","2018-06-01 12:03:55.900000","2018-06-01 12:03:56.000000","2018-06-01 12:03:56.300000","2018-06-01 12:03:56.400000","2018-06-01 12:03:56.500000","2018-06-01 12:03:56.700000","2018-06-01 12:03:56.800000","2018-06-01 12:03:56.900000","2018-06-01 12:03:57.000000","2018-06-01 12:03:57.200000","2018-06-01 12:03:57.300000","2018-06-01 12:03:57.400000","2018-06-01 12:03:57.700000","2018-06-01 12:03:58.000000","2018-06-01 12:03:58.200000","2018-06-01 12:03:58.300000","2018-06-01 12:03:58.400000","2018-06-01 12:03:59.000000","2018-06-01 12:03:59.400000","2018-06-01 12:03:59.600000","2018-06-01 12:04:00.400000","2018-06-01 12:04:00.600000","2018-06-01 12:04:00.700000","2018-06-01 12:04:00.800000","2018-06-01 12:04:00.900000","2018-06-01 12:04:01.200000","2018-06-01 12:04:01.700000","2018-06-01 12:04:02.000000","2018-06-01 12:04:02.200000","2018-06-01 12:04:02.400000","2018-06-01 12:04:02.600000","2018-06-01 12:04:02.800000","2018-06-01 12:04:02.900000","2018-06-01 12:04:03.400000","2018-06-01 12:04:03.700000","2018-06-01 12:04:03.800000","2018-06-01 12:04:04.000000","2018-06-01 12:04:04.100000","2018-06-01 12:04:04.200000","2018-06-01 12:04:04.300000","2018-06-01 12:04:04.400000","2018-06-01 12:04:04.500000","2018-06-01 12:04:04.600000","2018-06-01 12:04:05.000000","2018-06-01 12:04:05.300000","2018-06-01 12:04:05.500000","2018-06-01 12:04:05.900000","2018-06-01 12:04:06.400000","2018-06-01 12:04:06.500000","2018-06-01 12:04:06.600000","2018-06-01 12:04:06.800000","2018-06-01 12:04:07.100000","2018-06-01 12:04:07.200000","2018-06-01 12:04:07.300000","2018-06-01 12:04:07.900000","2018-06-01 12:04:08.300000","2018-06-01 12:04:09.700000","2018-06-01 12:04:10.300000","2018-06-01 12:04:10.900000","2018-06-01 12:04:11.000000","2018-06-01 12:04:11.300000","2018-06-01 12:04:11.800000","2018-06-01 12:04:12.000000","2018-06-01 12:04:12.200000","2018-06-01 12:04:12.500000","2018-06-01 12:04:13.000000","2018-06-01 12:04:13.400000","2018-06-01 12:04:13.600000","2018-06-01 12:04:14.400000","2018-06-01 12:04:14.600000","2018-06-01 12:04:14.700000","2018-06-01 12:04:15.400000","2018-06-01 12:04:15.500000","2018-06-01 12:04:15.800000","2018-06-01 12:04:16.200000","2018-06-01 12:04:16.300000","2018-06-01 12:04:16.900000","2018-06-01 12:04:17.500000","2018-06-01 12:04:17.800000","2018-06-01 12:04:18.400000","2018-06-01 12:04:18.600000","2018-06-01 12:04:19.100000","2018-06-01 12:04:19.400000","2018-06-01 12:04:19.700000","2018-06-01 12:04:19.900000","2018-06-01 12:04:20.000000","2018-06-01 12:04:21.100000","2018-06-01 12:04:21.300000","2018-06-01 12:04:21.500000","2018-06-01 12:04:21.600000","2018-06-01 12:04:22.100000","2018-06-01 12:04:22.800000","2018-06-01 12:04:23.300000","2018-06-01 12:04:23.800000","2018-06-01 12:04:23.900000","2018-06-01 12:04:24.700000","2018-06-01 12:04:25.400000","2018-06-01 12:04:25.900000","2018-06-01 12:04:26.800000","2018-06-01 12:04:26.900000","2018-06-01 12:04:28.000000","2018-06-01 12:04:28.400000","2018-06-01 12:04:28.700000","2018-06-01 12:04:29.000000","2018-06-01 12:04:29.100000","2018-06-01 12:04:29.400000","2018-06-01 12:04:29.900000","2018-06-01 12:04:30.300000","2018-06-01 12:04:30.700000","2018-06-01 12:04:31.000000","2018-06-01 12:04:31.300000","2018-06-01 12:04:31.400000","2018-06-01 12:04:32.100000","2018-06-01 12:04:32.200000","2018-06-01 12:04:32.500000","2018-06-01 12:04:32.700000","2018-06-01 12:04:33.700000","2018-06-01 12:04:33.800000","2018-06-01 12:04:34.200000","2018-06-01 12:04:34.500000","2018-06-01 12:04:35.700000","2018-06-01 12:04:35.800000","2018-06-01 12:04:36.400000","2018-06-01 12:04:36.600000","2018-06-01 12:04:36.700000","2018-06-01 12:04:37.600000","2018-06-01 12:04:38.100000","2018-06-01 12:04:38.200000","2018-06-01 12:04:38.500000","2018-06-01 12:04:38.800000","2018-06-01 12:04:40.100000","2018-06-01 12:04:40.200000","2018-06-01 12:04:40.400000","2018-06-01 12:04:40.700000","2018-06-01 12:04:41.000000","2018-06-01 12:04:41.400000","2018-06-01 12:04:41.600000","2018-06-01 12:04:42.200000","2018-06-01 12:04:42.300000","2018-06-01 12:04:42.800000","2018-06-01 12:04:43.100000","2018-06-01 12:04:43.400000","2018-06-01 12:04:43.700000","2018-06-01 12:04:43.900000","2018-06-01 12:04:44.100000","2018-06-01 12:04:44.400000","2018-06-01 12:04:44.600000","2018-06-01 12:04:44.800000","2018-06-01 12:04:44.900000","2018-06-01 12:04:45.100000","2018-06-01 12:04:45.500000","2018-06-01 12:04:45.900000","2018-06-01 12:04:46.100000","2018-06-01 12:04:46.400000","2018-06-01 12:04:46.600000","2018-06-01 12:04:46.800000","2018-06-01 12:04:46.900000","2018-06-01 12:04:47.000000","2018-06-01 12:04:47.600000","2018-06-01 12:04:47.700000","2018-06-01 12:04:48.000000","2018-06-01 12:04:48.800000","2018-06-01 12:04:48.900000","2018-06-01 12:04:49.400000","2018-06-01 12:04:49.600000","2018-06-01 12:04:49.900000","2018-06-01 12:04:50.700000","2018-06-01 12:04:51.300000","2018-06-01 12:04:51.600000","2018-06-01 12:04:52.400000","2018-06-01 12:04:53.100000","2018-06-01 12:04:53.300000","2018-06-01 12:04:53.400000","2018-06-01 12:04:54.100000","2018-06-01 12:04:54.600000","2018-06-01 12:04:54.800000","2018-06-01 12:04:55.300000","2018-06-01 12:04:56.100000","2018-06-01 12:04:57.600000","2018-06-01 12:04:57.700000","2018-06-01 12:04:58.000000","2018-06-01 12:04:58.300000","2018-06-01 12:04:59.500000","2018-06-01 12:04:59.800000"],"xaxis":"x","y":[108.48,108.44,108.28,108.12,107.93,107.84,107.65,107.36,107.17,106.98,106.89,106.76,106.54,106.31,106.01,105.6,105.13,104.59,104.3,103.98,103.53,103.15,102.86,102.66,102.36,102.12,101.98,101.9,101.75,101.77,101.63,101.59,101.42,101.32,101.12,100.97,100.78,100.42,100.24,100.2,100.09,100.07,100.21,100.44,100.71,101.08,101.28,101.48,101.64,101.95,102.41,102.84,103.23,103.52,103.75,103.78,103.72,103.5,103.37,103.23,103.33,103.51,103.69,103.81,103.91,103.87,103.76,103.68,103.78,103.82,103.93,103.99,104.06,104.21,104.31,104.38,104.48,104.73,104.88,105.03,105.19,105.26,105.23,105.49,105.62,105.62,105.61,105.49,105.31,105.23,105.3,105.35,105.32,105.27,105.13,105,104.87,104.75,104.44,104.11,103.89,103.67,103.45,103.08,102.75,102.35,101.86,101.3,100.59,100.03,99.57,99.2,99.05,98.88,98.73,98.73,98.78,98.69,98.58,98.49,98.47,98.19,97.89,97.63,97.39,97.19,97.07,96.95,96.81,96.75,96.69,96.59,96.34,96.24,96.26,96.23,96.14,96.13,96.14,96.09,95.93,95.73,95.62,95.5,95.51,95.51,95.27,95.25,95.39,95.46,95.45,95.36,95.3,95.41,95.64,95.7,95.9,96.22,96.35,96.59,96.89,97.06,97.14,97,97,96.92,97.02,97.09,97.21,97.3,97.37,97.41,97.44,97.31,97.06,96.72,96.53,96.26,96,95.86,95.7,95.52,95.42,95.34,95.25,95.22,95.09,94.94,94.95,95.03,95.07,95.23,95.35,95.5,95.69,95.97,96.26,96.57,97.02,97.5,97.79,98.02,98.23,98.38,98.51,98.52,98.64,98.91,99.1,99.27,99.37,99.5,99.59,99.66,99.63,99.71,99.79,99.8,99.61,99.5,99.51,99.54,99.4,99.21,99.06,98.9,98.7,98.51,98.44,98.5,98.46,98.59,98.67,98.75,98.79,98.82,98.68,98.36,98.08,97.76,97.42,97.13,96.89,96.64,96.63,96.61,96.66,96.75,96.85,96.97,96.95,96.89,96.83,96.83,96.82,96.78,96.75,96.54,96.35,96.17,95.98,95.75,95.57,95.39,95.08,94.81,94.55,94.39,94.18,93.81,93.62,93.33,93.11,92.86,92.75,92.74,92.72,92.66,92.44,92.25,92.19,92.18,92.1,91.99,92,92.09,92.23,92.41,92.6,92.74,93.03,93.15,93.26,93.42,93.66,93.92,94.06,94.19,94.32,94.33,94.33,94.36,94.37,94.53,94.78,94.87,95.15,95.58,95.85,96.08,96.34,96.72,96.9,97.17,97.4,97.66,97.91,98.2,98.44,98.64,98.89,99.19,99.5,99.76,100.09,100.31,100.62,100.81,100.93,101.18,101.43,101.76,102.14,102.53,102.75,102.97,103.11,103.28,103.4,103.28,103.06,102.89,102.76,102.78,102.67,102.7,102.8,102.86,102.87,102.86,102.95,102.9,102.75,102.7,102.54,102.31,102.19,102.05,101.75,101.47,101.07,100.66,100.32,99.99,99.7,99.58,99.56,99.5,99.49,99.43,99.29,99.19,99.15,99.06,99,99.01,98.94,98.82,98.77,98.77,98.7,98.6,98.7,98.92,99.2,99.46,99.76,100.02,100.39,100.64,100.82,101.14,101.44,101.7,102.08,102.31,102.52,102.59,102.93,103.1,103.19,103.42,103.76,104.1,104.32,104.56,104.81,105.14,105.5,105.8,106.06,106.22,106.23,106.27,106.4,106.5,106.6,106.7,106.6,106.43,106.2,105.8,105.38,104.98,104.66,104.22,103.94,103.67,103.34,103.13,102.91,102.52,102.09,101.78,101.38,101.02,100.62,100.26,99.98,99.78,99.69,99.59,99.5,99.41,99.4,99.3,99.28,99.35,99.53,99.71,99.92,100.13,100.1,99.97,99.88,100.03,100.22,100.28,100.22,100.08,99.89,99.73,99.48,99.23,98.94,98.61,98.45,98.34,98.25,98.39,98.6,98.88,99.06,99.24,99.39,99.55,99.68,99.82,99.78,99.69,99.63,99.36,99.03,98.64,98.19,97.93,97.77,97.65,97.45,97.35,97.29,97.32,97.5,97.84,98.03,98.35,98.62,98.8,98.75,98.84,99.05,99.19,99.28,99.45,99.53,99.84,100.08,100.2,100.21,100.17,100.16,100.31,100.51,100.68,100.99,101.24,101.41,101.52,101.6,101.71,101.98,102.18,102.46,102.6,102.6,102.52,102.35,102.18,102.04,102.02,102.05,102.12,102.23,102.19,102.16,102.15,102.28,102.55,102.82,103.04,103.19,103.44,103.55,103.8,104.08,104.34,104.57,104.76,104.8,105.01,105.27,105.43,105.59,105.84,106.04,105.95,105.94,105.93,105.94,106.16,106.45,106.66,106.98,107.32,107.74,108.12,108.5,108.76,108.97,109.26,109.28,109.36,109.48,109.56,109.76,109.87,109.92,109.82,109.63,109.69,109.9,110.09,110.26,110.41,110.55,110.65,111.02,111.69,112.21,112.95,113.62,114.21,114.87,115.66,116.42,117.1,117.66,118.25,118.74,119.22,119.49,119.8,119.93,120.11,120.3,120.24,120.26,120.48,120.7,121.04,121.42,121.73,122.03,122.4,122.78,123.04,123.38,123.8,124.25,124.69,125.28,125.85,126.28,126.76,127.2,127.61,128.08,128.43,128.79,129.25,129.61,130.11,130.58,131,131.51,132.05,132.76,133.42,134.06,134.51,134.82,135.04,135.31,135.53,135.55,135.63,135.69,135.79,136.04,136.26,136.5,136.54,136.56,136.72,136.95,137.01,137.11,137.29,137.62,138.05,138.4,138.71,139.04,139.32,139.74,140.09,140.38,140.65,140.92,141.17,141.41,141.55,141.75,141.96,142.01,141.97,141.96,141.9,141.89,141.86,141.74,141.65,141.65,141.63,141.53,141.36,141.19,141.06,140.93,140.79,140.61,140.59,140.49,140.44,140.5,140.57,140.7,140.76,140.88,140.94,141,141.08,141.26,141.53,141.8,142.1,142.33,142.63,142.75,142.79,142.75,142.65,142.63,142.54,142.44,142.3,142.14,141.91,141.63,141.47,141.45,141.42,141.4,141.49,141.54,141.59,141.62,141.59,141.68,141.8,141.92,141.99,142.15,142.3,142.36,142.46,142.54,142.6,142.78,143.04,143.43,143.79,143.96,144.14,144.38,144.69,145.01,145.26,145.53,145.78,145.99,146.09,146.32,146.58,146.91,147.17,147.45,147.59,147.67,147.68,147.84,148.12,148.41,148.61,148.63,148.67,148.65,148.64,148.7,148.77,148.74,148.69,148.62,148.64,148.79,149.05,149.22,149.32,149.36,149.65,149.85,150.15,150.47,150.94,151.45,151.82,152.16,152.46,152.78,152.98,153.15,153.48,153.93,154.4,154.77,155.08,155.36,155.48,155.54,155.57,155.53,155.64,155.86,156.14,156.45,156.73,156.9,157.31,157.68,158.06,158.45,158.69,158.87,159.11,159.52,160.04,160.75,161.83,162.62,163.48,164.38,165.23,166,166.54,167.26,167.81,168.18,168.43,168.66,168.74,168.94,168.95,169.17,169.35,169.48,169.66,169.67,169.97,169.99,170,170.13,170.19,169.96,169.55,169.13,168.61,168.24,167.92,167.7,167.22,166.61,166,165.34,164.7,164.16,163.79,163.74,164.1,164.3,164.41,164.2,163.97,163.68,163.36,162.92,162.66,162.55,162.49,162.32,162.16,161.75,161.48,161.16,160.75,160.53,160.46,160.4,160.37,160.46,160.7,160.88,161.12,161.32,161.17,161.16,161.18,161.42,161.69,161.93,161.93,161.76,161.62,161.56,161.48,161.45,161.38,161.32,161.19,161.16,161.19,161.13,161.29,161.59,162.07,162.44,162.76],"yaxis":"y","type":"scatter"}],"layout":{"legend":{"tracegroupgap":0},"template":{"data":{"barpolar":[{"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"type":"carpet"}],"choropleth":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"choropleth"}],"contourcarpet":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"contourcarpet"}],"contour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"contour"}],"heatmap":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"heatmap"}],"histogram2dcontour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"histogram2dcontour"}],"histogram2d":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"histogram2d"}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"mesh3d":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"mesh3d"}],"parcoords":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"parcoords"}],"pie":[{"automargin":true,"type":"pie"}],"scatter3d":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatter3d"}],"scattercarpet":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattercarpet"}],"scattergeo":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergeo"}],"scattergl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergl"}],"scattermapbox":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermapbox"}],"scattermap":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermap"}],"scatterpolargl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolargl"}],"scatterpolar":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolar"}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"scatterternary":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterternary"}],"surface":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"surface"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}]},"layout":{"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"autotypenumbers":"strict","coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]],"sequential":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"sequentialminus":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]]},"colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"geo":{"bgcolor":"white","lakecolor":"white","landcolor":"#E5ECF6","showlakes":true,"showland":true,"subunitcolor":"white"},"hoverlabel":{"align":"left"},"hovermode":"closest","mapbox":{"style":"light"},"paper_bgcolor":"white","plot_bgcolor":"#E5ECF6","polar":{"angularaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"bgcolor":"#E5ECF6","radialaxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"scene":{"xaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"},"yaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"},"zaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"ternary":{"aaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"baxis":{"gridcolor":"white","linecolor":"white","ticks":""},"bgcolor":"#E5ECF6","caxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"title":{"x":0.05},"xaxis":{"automargin":true,"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","zerolinewidth":2},"yaxis":{"automargin":true,"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","zerolinewidth":2}}},"xaxis":{"anchor":"y","domain":[0,1],"side":"bottom","title":{"text":"Timestamp"}},"yaxis":{"anchor":"x","domain":[0,1],"side":"left","title":{"text":"Price"}},"annotations":[{"arrowhead":2,"captureevents":true,"showarrow":true,"text":"Spike","x":"2018-06-01 08:00:30","y":25}]},"isDefaultTemplate":true}}}} \ No newline at end of file diff --git a/plugins/plotly-express/docs/snapshots/e48c8e3fdd6aefcc20122efba2ca880a.json b/plugins/plotly-express/docs/snapshots/e48c8e3fdd6aefcc20122efba2ca880a.json new file mode 100644 index 000000000..e2f8a47b7 --- /dev/null +++ b/plugins/plotly-express/docs/snapshots/e48c8e3fdd6aefcc20122efba2ca880a.json @@ -0,0 +1 @@ +{"file":"events.md","objects":{"stocks":{"type":"Table","data":{"columns":[{"name":"Timestamp","type":"java.time.Instant"},{"name":"Sym","type":"java.lang.String"},{"name":"Exchange","type":"java.lang.String"},{"name":"Size","type":"long"},{"name":"Price","type":"double"},{"name":"Dollars","type":"double"},{"name":"Side","type":"java.lang.String"},{"name":"SPet500","type":"double"},{"name":"Index","type":"long"},{"name":"Random","type":"double"}],"rows":[[{"value":"2018-06-01 08:00:00.000"},{"value":"BIRD"},{"value":"TPET"},{"value":"245"},{"value":"164.6300"},{"value":"40,334.3500"},{"value":"buy"},{"value":"150.6253"},{"value":"0"},{"value":"0.6253"}],[{"value":"2018-06-01 08:00:00.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,150"},{"value":"102.4700"},{"value":"322,780.5000"},{"value":"buy"},{"value":"150.8910"},{"value":"1"},{"value":"1.4656"}],[{"value":"2018-06-01 08:00:00.200"},{"value":"LIZARD"},{"value":"TPET"},{"value":"100"},{"value":"224.8800"},{"value":"22,488.0000"},{"value":"sell"},{"value":"151.0861"},{"value":"2"},{"value":"-0.1232"}],[{"value":"2018-06-01 08:00:00.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"77"},{"value":"102.5100"},{"value":"7,893.2700"},{"value":"buy"},{"value":"151.3228"},{"value":"3"},{"value":"0.4242"}],[{"value":"2018-06-01 08:00:00.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"848"},{"value":"102.4500"},{"value":"86,877.6000"},{"value":"sell"},{"value":"151.3451"},{"value":"4"},{"value":"-0.9462"}],[{"value":"2018-06-01 08:00:00.500"},{"value":"FISH"},{"value":"PETX"},{"value":"15"},{"value":"127.2400"},{"value":"1,908.6000"},{"value":"buy"},{"value":"151.4074"},{"value":"5"},{"value":"0.2434"}],[{"value":"2018-06-01 08:00:00.600"},{"value":"BIRD"},{"value":"TPET"},{"value":"2,908"},{"value":"164.4900"},{"value":"478,336.9200"},{"value":"sell"},{"value":"151.1998"},{"value":"6"},{"value":"-1.4273"}],[{"value":"2018-06-01 08:00:00.700"},{"value":"DOG"},{"value":"PETX"},{"value":"111"},{"value":"108.4800"},{"value":"12,041.2800"},{"value":"buy"},{"value":"151.1169"},{"value":"7"},{"value":"0.4805"}],[{"value":"2018-06-01 08:00:00.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"102.5300"},{"value":"10,253.0000"},{"value":"buy"},{"value":"151.2862"},{"value":"8"},{"value":"1.3088"}],[{"value":"2018-06-01 08:00:00.900"},{"value":"DOG"},{"value":"PETX"},{"value":"88"},{"value":"108.4400"},{"value":"9,542.7200"},{"value":"sell"},{"value":"151.3445"},{"value":"9"},{"value":"-0.4436"}],[{"value":"2018-06-01 08:00:01.000"},{"value":"FISH"},{"value":"PETX"},{"value":"102"},{"value":"127.2900"},{"value":"12,983.5800"},{"value":"buy"},{"value":"151.4768"},{"value":"10"},{"value":"0.4669"}],[{"value":"2018-06-01 08:00:01.100"},{"value":"DOG"},{"value":"PETX"},{"value":"1,791"},{"value":"108.2800"},{"value":"193,929.4800"},{"value":"sell"},{"value":"151.3650"},{"value":"11"},{"value":"-1.2143"}],[{"value":"2018-06-01 08:00:01.200"},{"value":"DOG"},{"value":"PETX"},{"value":"28"},{"value":"108.1200"},{"value":"3,027.3600"},{"value":"sell"},{"value":"151.2188"},{"value":"12"},{"value":"-0.3019"}],[{"value":"2018-06-01 08:00:01.300"},{"value":"CAT"},{"value":"PETX"},{"value":"1,090"},{"value":"102.7000"},{"value":"111,943.0000"},{"value":"buy"},{"value":"151.2854"},{"value":"13"},{"value":"1.0280"}],[{"value":"2018-06-01 08:00:01.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,600"},{"value":"102.9900"},{"value":"370,764.0000"},{"value":"buy"},{"value":"151.6178"},{"value":"14"},{"value":"1.5331"}],[{"value":"2018-06-01 08:00:01.500"},{"value":"LIZARD"},{"value":"TPET"},{"value":"227"},{"value":"224.9300"},{"value":"51,059.1100"},{"value":"buy"},{"value":"152.0005"},{"value":"15"},{"value":"0.6095"}],[{"value":"2018-06-01 08:00:01.600"},{"value":"DOG"},{"value":"PETX"},{"value":"35"},{"value":"107.9300"},{"value":"3,777.5500"},{"value":"sell"},{"value":"152.2546"},{"value":"16"},{"value":"-0.3267"}],[{"value":"2018-06-01 08:00:01.700"},{"value":"DOG"},{"value":"PETX"},{"value":"2"},{"value":"107.8400"},{"value":"215.6800"},{"value":"buy"},{"value":"152.6027"},{"value":"17"},{"value":"0.7731"}],[{"value":"2018-06-01 08:00:01.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,350"},{"value":"103.4000"},{"value":"346,390.0000"},{"value":"buy"},{"value":"153.1590"},{"value":"18"},{"value":"1.4963"}],[{"value":"2018-06-01 08:00:01.900"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.2900"},{"value":"12,729.0000"},{"value":"sell"},{"value":"153.5402"},{"value":"19"},{"value":"-0.4094"}],[{"value":"2018-06-01 08:00:02.000"},{"value":"LIZARD"},{"value":"TPET"},{"value":"15"},{"value":"225.0100"},{"value":"3,375.1500"},{"value":"buy"},{"value":"153.8970"},{"value":"20"},{"value":"0.2463"}],[{"value":"2018-06-01 08:00:02.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,780"},{"value":"103.9200"},{"value":"392,817.6000"},{"value":"buy"},{"value":"154.4713"},{"value":"21"},{"value":"1.5570"}],[{"value":"2018-06-01 08:00:02.200"},{"value":"LIZARD"},{"value":"TPET"},{"value":"727"},{"value":"225.1600"},{"value":"163,691.3200"},{"value":"buy"},{"value":"155.1045"},{"value":"22"},{"value":"0.8989"}],[{"value":"2018-06-01 08:00:02.300"},{"value":"LIZARD"},{"value":"TPET"},{"value":"2,250"},{"value":"225.4300"},{"value":"507,217.5000"},{"value":"buy"},{"value":"155.8603"},{"value":"23"},{"value":"1.3097"}],[{"value":"2018-06-01 08:00:02.400"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.3400"},{"value":"12,734.0000"},{"value":"buy"},{"value":"156.5817"},{"value":"24"},{"value":"0.5662"}],[{"value":"2018-06-01 08:00:02.500"},{"value":"DOG"},{"value":"PETX"},{"value":"1,491"},{"value":"107.6500"},{"value":"160,506.1500"},{"value":"sell"},{"value":"156.9654"},{"value":"25"},{"value":"-1.1422"}],[{"value":"2018-06-01 08:00:02.600"},{"value":"FISH"},{"value":"PETX"},{"value":"367"},{"value":"127.3300"},{"value":"46,730.1100"},{"value":"sell"},{"value":"157.1497"},{"value":"26"},{"value":"-0.7155"}],[{"value":"2018-06-01 08:00:02.700"},{"value":"FISH"},{"value":"PETX"},{"value":"293"},{"value":"127.2500"},{"value":"37,284.2500"},{"value":"sell"},{"value":"157.1804"},{"value":"27"},{"value":"-0.6637"}],[{"value":"2018-06-01 08:00:02.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"104.2600"},{"value":"10,426.0000"},{"value":"sell"},{"value":"156.9481"},{"value":"28"},{"value":"-1.4200"}],[{"value":"2018-06-01 08:00:02.900"},{"value":"DOG"},{"value":"PETX"},{"value":"1,798"},{"value":"107.3600"},{"value":"193,033.2800"},{"value":"sell"},{"value":"156.5375"},{"value":"29"},{"value":"-1.2159"}],[{"value":"2018-06-01 08:00:03.000"},{"value":"DOG"},{"value":"PETX"},{"value":"410"},{"value":"107.1700"},{"value":"43,939.7000"},{"value":"buy"},{"value":"156.3359"},{"value":"30"},{"value":"0.7425"}],[{"value":"2018-06-01 08:00:03.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,510"},{"value":"104.6700"},{"value":"158,051.7000"},{"value":"buy"},{"value":"156.3789"},{"value":"31"},{"value":"1.1473"}],[{"value":"2018-06-01 08:00:03.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"21"},{"value":"105.0200"},{"value":"2,205.4200"},{"value":"sell"},{"value":"156.3644"},{"value":"32"},{"value":"-0.2738"}],[{"value":"2018-06-01 08:00:03.300"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.1800"},{"value":"12,718.0000"},{"value":"buy"},{"value":"156.3572"},{"value":"33"},{"value":"0.0258"}],[{"value":"2018-06-01 08:00:03.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"106.9800"},{"value":"10,698.0000"},{"value":"sell"},{"value":"156.3239"},{"value":"34"},{"value":"-0.1515"}],[{"value":"2018-06-01 08:00:03.500"},{"value":"DOG"},{"value":"PETX"},{"value":"650"},{"value":"106.8900"},{"value":"69,478.5000"},{"value":"buy"},{"value":"156.4535"},{"value":"35"},{"value":"0.8659"}],[{"value":"2018-06-01 08:00:03.600"},{"value":"DOG"},{"value":"PETX"},{"value":"155"},{"value":"106.7600"},{"value":"16,547.8000"},{"value":"sell"},{"value":"156.4623"},{"value":"36"},{"value":"-0.5371"}],[{"value":"2018-06-01 08:00:03.700"},{"value":"FISH"},{"value":"PETX"},{"value":"12"},{"value":"127.0900"},{"value":"1,525.0800"},{"value":"sell"},{"value":"156.4283"},{"value":"37"},{"value":"-0.2274"}],[{"value":"2018-06-01 08:00:03.800"},{"value":"FISH"},{"value":"PETX"},{"value":"7"},{"value":"127.0300"},{"value":"889.2100"},{"value":"buy"},{"value":"156.4335"},{"value":"38"},{"value":"0.1822"}],[{"value":"2018-06-01 08:00:03.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,310"},{"value":"105.4400"},{"value":"138,126.4000"},{"value":"buy"},{"value":"156.6358"},{"value":"39"},{"value":"1.0928"}],[{"value":"2018-06-01 08:00:04.000"},{"value":"DOG"},{"value":"PETX"},{"value":"1,629"},{"value":"106.5400"},{"value":"173,553.6600"},{"value":"sell"},{"value":"156.5882"},{"value":"40"},{"value":"-1.1765"}],[{"value":"2018-06-01 08:00:04.100"},{"value":"DOG"},{"value":"PETX"},{"value":"4"},{"value":"106.3100"},{"value":"425.2400"},{"value":"sell"},{"value":"156.5216"},{"value":"41"},{"value":"-0.1522"}],[{"value":"2018-06-01 08:00:04.200"},{"value":"FISH"},{"value":"PETX"},{"value":"1"},{"value":"126.9800"},{"value":"126.9800"},{"value":"buy"},{"value":"156.4686"},{"value":"42"},{"value":"0.0083"}],[{"value":"2018-06-01 08:00:04.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"1"},{"value":"105.8200"},{"value":"105.8200"},{"value":"buy"},{"value":"156.4396"},{"value":"43"},{"value":"0.0791"}],[{"value":"2018-06-01 08:00:04.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"106.0100"},{"value":"10,601.0000"},{"value":"sell"},{"value":"156.2255"},{"value":"44"},{"value":"-1.0499"}],[{"value":"2018-06-01 08:00:04.500"},{"value":"CAT"},{"value":"PETX"},{"value":"2"},{"value":"106.1800"},{"value":"212.3600"},{"value":"buy"},{"value":"156.0723"},{"value":"45"},{"value":"0.1217"}],[{"value":"2018-06-01 08:00:04.600"},{"value":"BIRD"},{"value":"TPET"},{"value":"6"},{"value":"164.3500"},{"value":"986.1000"},{"value":"sell"},{"value":"155.9141"},{"value":"46"},{"value":"-0.1806"}],[{"value":"2018-06-01 08:00:04.700"},{"value":"DOG"},{"value":"PETX"},{"value":"3,485"},{"value":"105.6000"},{"value":"368,016.0000"},{"value":"sell"},{"value":"155.5098"},{"value":"47"},{"value":"-1.5161"}],[{"value":"2018-06-01 08:00:04.800"},{"value":"DOG"},{"value":"PETX"},{"value":"727"},{"value":"105.1300"},{"value":"76,429.5100"},{"value":"sell"},{"value":"155.0158"},{"value":"48"},{"value":"-0.8990"}],[{"value":"2018-06-01 08:00:04.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"5,421"},{"value":"106.3400"},{"value":"576,469.1400"},{"value":"sell"},{"value":"154.2929"},{"value":"49"},{"value":"-1.7566"}],[{"value":"2018-06-01 08:00:05.000"},{"value":"DOG"},{"value":"PETX"},{"value":"2,113"},{"value":"104.5900"},{"value":"220,998.6700"},{"value":"sell"},{"value":"153.4685"},{"value":"50"},{"value":"-1.2830"}],[{"value":"2018-06-01 08:00:05.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,130"},{"value":"106.5900"},{"value":"120,446.7000"},{"value":"buy"},{"value":"152.9825"},{"value":"51"},{"value":"1.0424"}],[{"value":"2018-06-01 08:00:05.200"},{"value":"LIZARD"},{"value":"TPET"},{"value":"2"},{"value":"225.5600"},{"value":"451.1200"},{"value":"sell"},{"value":"152.3781"},{"value":"52"},{"value":"-1.1386"}],[{"value":"2018-06-01 08:00:05.300"},{"value":"FISH"},{"value":"PETX"},{"value":"529"},{"value":"127.0100"},{"value":"67,188.2900"},{"value":"buy"},{"value":"152.0299"},{"value":"53"},{"value":"0.8084"}],[{"value":"2018-06-01 08:00:05.400"},{"value":"LIZARD"},{"value":"TPET"},{"value":"293"},{"value":"225.7400"},{"value":"66,141.8200"},{"value":"buy"},{"value":"151.8651"},{"value":"54"},{"value":"0.6639"}],[{"value":"2018-06-01 08:00:05.500"},{"value":"CAT"},{"value":"NYPE"},{"value":"123"},{"value":"106.7600"},{"value":"13,131.4800"},{"value":"sell"},{"value":"151.6401"},{"value":"55"},{"value":"-0.4972"}],[{"value":"2018-06-01 08:00:05.600"},{"value":"LIZARD"},{"value":"TPET"},{"value":"100"},{"value":"225.7600"},{"value":"22,576.0000"},{"value":"sell"},{"value":"151.1844"},{"value":"56"},{"value":"-1.4976"}],[{"value":"2018-06-01 08:00:05.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,990"},{"value":"107.0300"},{"value":"212,989.7000"},{"value":"buy"},{"value":"151.0393"},{"value":"57"},{"value":"1.2576"}],[{"value":"2018-06-01 08:00:05.800"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.0700"},{"value":"12,707.0000"},{"value":"buy"},{"value":"150.9961"},{"value":"58"},{"value":"0.4170"}],[{"value":"2018-06-01 08:00:05.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"140"},{"value":"107.3300"},{"value":"15,026.2000"},{"value":"buy"},{"value":"151.0546"},{"value":"59"},{"value":"0.5181"}],[{"value":"2018-06-01 08:00:06.000"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"104.3000"},{"value":"10,430.0000"},{"value":"buy"},{"value":"151.4827"},{"value":"60"},{"value":"2.0973"}],[{"value":"2018-06-01 08:00:06.100"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"103.9800"},{"value":"10,398.0000"},{"value":"sell"},{"value":"151.7109"},{"value":"61"},{"value":"-0.6743"}],[{"value":"2018-06-01 08:00:06.200"},{"value":"LIZARD"},{"value":"TPET"},{"value":"8"},{"value":"225.7600"},{"value":"1,806.0800"},{"value":"sell"},{"value":"151.8624"},{"value":"62"},{"value":"-0.1954"}],[{"value":"2018-06-01 08:00:06.300"},{"value":"DOG"},{"value":"PETX"},{"value":"4,262"},{"value":"103.5300"},{"value":"441,244.8600"},{"value":"sell"},{"value":"151.6925"},{"value":"63"},{"value":"-1.6213"}],[{"value":"2018-06-01 08:00:06.400"},{"value":"DOG"},{"value":"PETX"},{"value":"35"},{"value":"103.1500"},{"value":"3,610.2500"},{"value":"buy"},{"value":"151.6126"},{"value":"64"},{"value":"0.3264"}],[{"value":"2018-06-01 08:00:06.500"},{"value":"DOG"},{"value":"PETX"},{"value":"20"},{"value":"102.8600"},{"value":"2,057.2000"},{"value":"buy"},{"value":"151.6337"},{"value":"65"},{"value":"0.4772"}],[{"value":"2018-06-01 08:00:06.600"},{"value":"CAT"},{"value":"NYPE"},{"value":"534"},{"value":"107.6800"},{"value":"57,501.1200"},{"value":"buy"},{"value":"151.7980"},{"value":"66"},{"value":"0.8109"}],[{"value":"2018-06-01 08:00:06.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"711"},{"value":"108.0800"},{"value":"76,844.8800"},{"value":"buy"},{"value":"152.0942"},{"value":"67"},{"value":"0.8923"}],[{"value":"2018-06-01 08:00:06.800"},{"value":"FISH"},{"value":"PETX"},{"value":"88"},{"value":"127.0900"},{"value":"11,183.9200"},{"value":"sell"},{"value":"152.2562"},{"value":"68"},{"value":"-0.4441"}],[{"value":"2018-06-01 08:00:06.900"},{"value":"FISH"},{"value":"PETX"},{"value":"3,070"},{"value":"127.2500"},{"value":"390,657.5000"},{"value":"buy"},{"value":"152.6523"},{"value":"69"},{"value":"1.4534"}],[{"value":"2018-06-01 08:00:07.000"},{"value":"LIZARD"},{"value":"TPET"},{"value":"300"},{"value":"225.8000"},{"value":"67,740.0000"},{"value":"buy"},{"value":"153.0397"},{"value":"70"},{"value":"0.3482"}],[{"value":"2018-06-01 08:00:07.100"},{"value":"DOG"},{"value":"PETX"},{"value":"371"},{"value":"102.6600"},{"value":"38,086.8600"},{"value":"buy"},{"value":"153.4871"},{"value":"71"},{"value":"0.7180"}],[{"value":"2018-06-01 08:00:07.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"7,480"},{"value":"108.6300"},{"value":"812,552.4000"},{"value":"buy"},{"value":"154.2078"},{"value":"72"},{"value":"1.9555"}],[{"value":"2018-06-01 08:00:07.300"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"102.3600"},{"value":"10,236.0000"},{"value":"sell"},{"value":"154.5609"},{"value":"73"},{"value":"-1.3072"}],[{"value":"2018-06-01 08:00:07.400"},{"value":"BIRD"},{"value":"TPET"},{"value":"428"},{"value":"164.2900"},{"value":"70,316.1200"},{"value":"buy"},{"value":"154.9867"},{"value":"74"},{"value":"0.7535"}],[{"value":"2018-06-01 08:00:07.500"},{"value":"DOG"},{"value":"PETX"},{"value":"99"},{"value":"102.1200"},{"value":"10,109.8800"},{"value":"buy"},{"value":"155.4189"},{"value":"75"},{"value":"0.4616"}],[{"value":"2018-06-01 08:00:07.600"},{"value":"DOG"},{"value":"PETX"},{"value":"347"},{"value":"101.9800"},{"value":"35,387.0600"},{"value":"buy"},{"value":"155.9001"},{"value":"76"},{"value":"0.7026"}],[{"value":"2018-06-01 08:00:07.700"},{"value":"BIRD"},{"value":"TPET"},{"value":"500"},{"value":"164.2600"},{"value":"82,130.0000"},{"value":"buy"},{"value":"156.3253"},{"value":"77"},{"value":"0.1723"}],[{"value":"2018-06-01 08:00:07.800"},{"value":"BIRD"},{"value":"TPET"},{"value":"2,128"},{"value":"164.1100"},{"value":"349,226.0800"},{"value":"sell"},{"value":"156.4403"},{"value":"78"},{"value":"-1.2862"}],[{"value":"2018-06-01 08:00:07.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"12,212"},{"value":"108.9100"},{"value":"1,330,008.9200"},{"value":"sell"},{"value":"156.1171"},{"value":"79"},{"value":"-2.3028"}],[{"value":"2018-06-01 08:00:08.000"},{"value":"CAT"},{"value":"PETX"},{"value":"9"},{"value":"109.1800"},{"value":"982.6200"},{"value":"buy"},{"value":"155.8891"},{"value":"80"},{"value":"0.2025"}],[{"value":"2018-06-01 08:00:08.100"},{"value":"DOG"},{"value":"PETX"},{"value":"98"},{"value":"101.9000"},{"value":"9,986.2000"},{"value":"buy"},{"value":"155.7859"},{"value":"81"},{"value":"0.4606"}],[{"value":"2018-06-01 08:00:08.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"489"},{"value":"109.3400"},{"value":"53,467.2600"},{"value":"sell"},{"value":"155.5587"},{"value":"82"},{"value":"-0.7874"}],[{"value":"2018-06-01 08:00:08.300"},{"value":"DOG"},{"value":"PETX"},{"value":"436"},{"value":"101.7500"},{"value":"44,363.0000"},{"value":"sell"},{"value":"155.2354"},{"value":"83"},{"value":"-0.7578"}],[{"value":"2018-06-01 08:00:08.400"},{"value":"FISH"},{"value":"PETX"},{"value":"2"},{"value":"127.2100"},{"value":"254.4200"},{"value":"sell"},{"value":"154.6404"},{"value":"84"},{"value":"-1.8217"}],[{"value":"2018-06-01 08:00:08.500"},{"value":"CAT"},{"value":"NYPE"},{"value":"309"},{"value":"109.4300"},{"value":"33,813.8700"},{"value":"sell"},{"value":"154.0307"},{"value":"85"},{"value":"-0.6757"}],[{"value":"2018-06-01 08:00:08.600"},{"value":"BIRD"},{"value":"TPET"},{"value":"3,273"},{"value":"163.8300"},{"value":"536,215.5900"},{"value":"sell"},{"value":"153.2625"},{"value":"86"},{"value":"-1.4847"}],[{"value":"2018-06-01 08:00:08.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"28"},{"value":"109.4800"},{"value":"3,065.4400"},{"value":"sell"},{"value":"152.5787"},{"value":"87"},{"value":"-0.3026"}],[{"value":"2018-06-01 08:00:08.800"},{"value":"DOG"},{"value":"PETX"},{"value":"4,020"},{"value":"101.7700"},{"value":"409,115.4000"},{"value":"buy"},{"value":"152.3070"},{"value":"88"},{"value":"1.5903"}],[{"value":"2018-06-01 08:00:08.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"50"},{"value":"109.4200"},{"value":"5,471.0000"},{"value":"sell"},{"value":"151.8779"},{"value":"89"},{"value":"-1.1409"}],[{"value":"2018-06-01 08:00:09.000"},{"value":"CAT"},{"value":"NYPE"},{"value":"12,540"},{"value":"109.5900"},{"value":"1,374,258.6000"},{"value":"buy"},{"value":"151.9476"},{"value":"90"},{"value":"2.3232"}],[{"value":"2018-06-01 08:00:09.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"109.7100"},{"value":"10,971.0000"},{"value":"sell"},{"value":"151.9575"},{"value":"91"},{"value":"-0.2603"}],[{"value":"2018-06-01 08:00:09.200"},{"value":"DOG"},{"value":"PETX"},{"value":"4,143"},{"value":"101.6300"},{"value":"421,053.0900"},{"value":"sell"},{"value":"151.6745"},{"value":"92"},{"value":"-1.6061"}],[{"value":"2018-06-01 08:00:09.300"},{"value":"LIZARD"},{"value":"TPET"},{"value":"947"},{"value":"225.7400"},{"value":"213,775.7800"},{"value":"sell"},{"value":"151.2648"},{"value":"93"},{"value":"-0.9818"}],[{"value":"2018-06-01 08:00:09.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"101.5900"},{"value":"10,159.0000"},{"value":"buy"},{"value":"151.0986"},{"value":"94"},{"value":"0.9333"}],[{"value":"2018-06-01 08:00:09.500"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.1200"},{"value":"12,712.0000"},{"value":"sell"},{"value":"150.8477"},{"value":"95"},{"value":"-0.6329"}],[{"value":"2018-06-01 08:00:09.600"},{"value":"DOG"},{"value":"PETX"},{"value":"2,887"},{"value":"101.4200"},{"value":"292,799.5400"},{"value":"sell"},{"value":"150.3843"},{"value":"96"},{"value":"-1.4239"}],[{"value":"2018-06-01 08:00:09.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"20"},{"value":"109.8000"},{"value":"2,196.0000"},{"value":"sell"},{"value":"149.9563"},{"value":"97"},{"value":"-0.2677"}],[{"value":"2018-06-01 08:00:09.800"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"101.3200"},{"value":"10,132.0000"},{"value":"buy"},{"value":"149.6898"},{"value":"98"},{"value":"0.4629"}],[{"value":"2018-06-01 08:00:09.900"},{"value":"DOG"},{"value":"PETX"},{"value":"1,130"},{"value":"101.1200"},{"value":"114,265.6000"},{"value":"sell"},{"value":"149.2828"},{"value":"99"},{"value":"-1.0415"}]]}},"fig":{"type":"deephaven.plot.express.DeephavenFigure","data":{"data":[{"hovertemplate":"Sym=BIRD
Timestamp=%{x}
Price=%{y}","legendgroup":"BIRD","marker":{"symbol":"circle"},"mode":"markers","name":"BIRD","showlegend":true,"x":["2018-06-01 12:00:00.000000","2018-06-01 12:00:00.600000","2018-06-01 12:00:04.600000","2018-06-01 12:00:07.400000","2018-06-01 12:00:07.700000","2018-06-01 12:00:07.800000","2018-06-01 12:00:08.600000","2018-06-01 12:00:10.500000","2018-06-01 12:00:11.100000","2018-06-01 12:00:11.500000","2018-06-01 12:00:11.600000","2018-06-01 12:00:14.000000","2018-06-01 12:00:14.500000","2018-06-01 12:00:15.000000","2018-06-01 12:00:17.000000","2018-06-01 12:00:17.100000","2018-06-01 12:00:17.400000","2018-06-01 12:00:18.800000","2018-06-01 12:00:19.400000","2018-06-01 12:00:21.600000","2018-06-01 12:00:22.200000","2018-06-01 12:00:23.100000","2018-06-01 12:00:23.800000","2018-06-01 12:00:24.000000","2018-06-01 12:00:24.800000","2018-06-01 12:00:25.200000","2018-06-01 12:00:26.500000","2018-06-01 12:00:27.000000","2018-06-01 12:00:28.900000","2018-06-01 12:00:29.500000","2018-06-01 12:00:31.100000","2018-06-01 12:00:32.200000","2018-06-01 12:00:32.700000","2018-06-01 12:00:32.900000","2018-06-01 12:00:33.100000","2018-06-01 12:00:34.500000","2018-06-01 12:00:34.800000","2018-06-01 12:00:35.000000","2018-06-01 12:00:35.100000","2018-06-01 12:00:35.200000","2018-06-01 12:00:36.300000","2018-06-01 12:00:36.400000","2018-06-01 12:00:36.800000","2018-06-01 12:00:36.900000","2018-06-01 12:00:38.800000","2018-06-01 12:00:40.200000","2018-06-01 12:00:40.800000","2018-06-01 12:00:40.900000","2018-06-01 12:00:41.300000","2018-06-01 12:00:41.500000","2018-06-01 12:00:44.600000","2018-06-01 12:00:47.200000","2018-06-01 12:00:48.700000","2018-06-01 12:00:49.200000","2018-06-01 12:00:49.300000","2018-06-01 12:00:50.000000","2018-06-01 12:00:51.600000","2018-06-01 12:00:51.700000","2018-06-01 12:00:52.500000","2018-06-01 12:00:52.800000","2018-06-01 12:00:53.000000","2018-06-01 12:00:54.300000","2018-06-01 12:00:55.000000","2018-06-01 12:00:56.600000","2018-06-01 12:00:58.700000","2018-06-01 12:00:59.800000","2018-06-01 12:01:01.200000","2018-06-01 12:01:02.800000","2018-06-01 12:01:03.100000","2018-06-01 12:01:05.500000","2018-06-01 12:01:06.300000","2018-06-01 12:01:06.400000","2018-06-01 12:01:07.100000","2018-06-01 12:01:08.800000","2018-06-01 12:01:09.200000","2018-06-01 12:01:09.800000","2018-06-01 12:01:10.400000","2018-06-01 12:01:10.500000","2018-06-01 12:01:11.400000","2018-06-01 12:01:12.400000","2018-06-01 12:01:12.700000","2018-06-01 12:01:13.800000","2018-06-01 12:01:15.500000","2018-06-01 12:01:16.700000","2018-06-01 12:01:18.600000","2018-06-01 12:01:19.300000","2018-06-01 12:01:19.900000","2018-06-01 12:01:21.300000","2018-06-01 12:01:21.500000","2018-06-01 12:01:24.200000","2018-06-01 12:01:24.800000","2018-06-01 12:01:25.000000","2018-06-01 12:01:25.200000","2018-06-01 12:01:26.100000","2018-06-01 12:01:26.700000","2018-06-01 12:01:27.800000","2018-06-01 12:01:28.400000","2018-06-01 12:01:29.900000","2018-06-01 12:01:31.700000","2018-06-01 12:01:31.800000","2018-06-01 12:01:32.300000","2018-06-01 12:01:33.100000","2018-06-01 12:01:33.500000","2018-06-01 12:01:36.400000","2018-06-01 12:01:36.800000","2018-06-01 12:01:37.000000","2018-06-01 12:01:37.600000","2018-06-01 12:01:38.400000","2018-06-01 12:01:38.900000","2018-06-01 12:01:39.000000","2018-06-01 12:01:39.900000","2018-06-01 12:01:40.000000","2018-06-01 12:01:40.100000","2018-06-01 12:01:40.700000","2018-06-01 12:01:42.400000","2018-06-01 12:01:43.400000","2018-06-01 12:01:44.400000","2018-06-01 12:01:45.700000","2018-06-01 12:01:46.500000","2018-06-01 12:01:46.600000","2018-06-01 12:01:47.200000","2018-06-01 12:01:47.400000","2018-06-01 12:01:48.000000","2018-06-01 12:01:51.600000","2018-06-01 12:01:52.900000","2018-06-01 12:01:53.900000","2018-06-01 12:01:54.700000","2018-06-01 12:01:56.500000","2018-06-01 12:01:56.700000","2018-06-01 12:01:56.900000","2018-06-01 12:01:57.600000","2018-06-01 12:02:00.300000","2018-06-01 12:02:00.900000","2018-06-01 12:02:01.200000","2018-06-01 12:02:01.900000","2018-06-01 12:02:04.700000","2018-06-01 12:02:05.200000","2018-06-01 12:02:07.300000","2018-06-01 12:02:08.000000","2018-06-01 12:02:08.800000","2018-06-01 12:02:09.000000","2018-06-01 12:02:09.400000","2018-06-01 12:02:10.100000","2018-06-01 12:02:10.200000","2018-06-01 12:02:10.600000","2018-06-01 12:02:11.300000","2018-06-01 12:02:11.800000","2018-06-01 12:02:13.800000","2018-06-01 12:02:14.200000","2018-06-01 12:02:16.000000","2018-06-01 12:02:16.200000","2018-06-01 12:02:18.600000","2018-06-01 12:02:18.700000","2018-06-01 12:02:20.400000","2018-06-01 12:02:21.200000","2018-06-01 12:02:21.400000","2018-06-01 12:02:21.500000","2018-06-01 12:02:21.800000","2018-06-01 12:02:22.300000","2018-06-01 12:02:23.000000","2018-06-01 12:02:23.600000","2018-06-01 12:02:24.100000","2018-06-01 12:02:26.800000","2018-06-01 12:02:28.600000","2018-06-01 12:02:28.700000","2018-06-01 12:02:29.300000","2018-06-01 12:02:29.600000","2018-06-01 12:02:30.900000","2018-06-01 12:02:31.500000","2018-06-01 12:02:32.500000","2018-06-01 12:02:33.200000","2018-06-01 12:02:33.300000","2018-06-01 12:02:34.700000","2018-06-01 12:02:35.100000","2018-06-01 12:02:35.800000","2018-06-01 12:02:35.900000","2018-06-01 12:02:37.700000","2018-06-01 12:02:38.000000","2018-06-01 12:02:38.400000","2018-06-01 12:02:39.400000","2018-06-01 12:02:39.700000","2018-06-01 12:02:40.200000","2018-06-01 12:02:41.700000","2018-06-01 12:02:42.300000","2018-06-01 12:02:43.500000","2018-06-01 12:02:43.600000","2018-06-01 12:02:44.000000","2018-06-01 12:02:44.100000","2018-06-01 12:02:45.300000","2018-06-01 12:02:45.800000","2018-06-01 12:02:46.100000","2018-06-01 12:02:46.700000","2018-06-01 12:02:46.900000","2018-06-01 12:02:47.000000","2018-06-01 12:02:47.400000","2018-06-01 12:02:49.200000","2018-06-01 12:02:49.900000","2018-06-01 12:02:50.900000","2018-06-01 12:02:51.100000","2018-06-01 12:02:51.400000","2018-06-01 12:02:51.700000","2018-06-01 12:02:52.100000","2018-06-01 12:02:52.200000","2018-06-01 12:02:53.500000","2018-06-01 12:02:54.900000","2018-06-01 12:02:56.400000","2018-06-01 12:02:56.800000","2018-06-01 12:02:57.800000","2018-06-01 12:02:58.500000","2018-06-01 12:02:58.800000","2018-06-01 12:02:59.100000","2018-06-01 12:02:59.500000","2018-06-01 12:03:00.500000","2018-06-01 12:03:01.900000","2018-06-01 12:03:02.200000","2018-06-01 12:03:02.500000","2018-06-01 12:03:03.300000","2018-06-01 12:03:03.500000","2018-06-01 12:03:04.000000","2018-06-01 12:03:04.600000","2018-06-01 12:03:04.800000","2018-06-01 12:03:06.000000","2018-06-01 12:03:06.100000","2018-06-01 12:03:06.900000","2018-06-01 12:03:07.300000","2018-06-01 12:03:07.600000","2018-06-01 12:03:08.000000","2018-06-01 12:03:08.400000","2018-06-01 12:03:09.500000","2018-06-01 12:03:13.000000","2018-06-01 12:03:13.100000","2018-06-01 12:03:14.200000","2018-06-01 12:03:14.600000","2018-06-01 12:03:16.600000","2018-06-01 12:03:17.600000","2018-06-01 12:03:18.200000","2018-06-01 12:03:18.600000","2018-06-01 12:03:18.800000","2018-06-01 12:03:20.800000","2018-06-01 12:03:21.900000","2018-06-01 12:03:22.100000","2018-06-01 12:03:23.200000","2018-06-01 12:03:23.500000","2018-06-01 12:03:23.600000","2018-06-01 12:03:24.200000","2018-06-01 12:03:25.600000","2018-06-01 12:03:26.200000","2018-06-01 12:03:26.300000","2018-06-01 12:03:26.800000","2018-06-01 12:03:27.300000","2018-06-01 12:03:29.200000","2018-06-01 12:03:29.900000","2018-06-01 12:03:30.300000","2018-06-01 12:03:30.700000","2018-06-01 12:03:30.800000","2018-06-01 12:03:32.100000","2018-06-01 12:03:34.400000","2018-06-01 12:03:34.600000","2018-06-01 12:03:34.800000","2018-06-01 12:03:34.900000","2018-06-01 12:03:35.700000","2018-06-01 12:03:36.100000","2018-06-01 12:03:36.800000","2018-06-01 12:03:37.000000","2018-06-01 12:03:38.800000","2018-06-01 12:03:39.200000","2018-06-01 12:03:42.700000","2018-06-01 12:03:43.100000","2018-06-01 12:03:43.400000","2018-06-01 12:03:49.100000","2018-06-01 12:03:49.400000","2018-06-01 12:03:50.200000","2018-06-01 12:03:51.300000","2018-06-01 12:03:51.600000","2018-06-01 12:03:54.100000","2018-06-01 12:03:55.200000","2018-06-01 12:03:55.600000","2018-06-01 12:03:55.700000","2018-06-01 12:03:56.600000","2018-06-01 12:03:57.800000","2018-06-01 12:03:58.900000","2018-06-01 12:03:59.200000","2018-06-01 12:04:01.000000","2018-06-01 12:04:01.400000","2018-06-01 12:04:01.500000","2018-06-01 12:04:01.600000","2018-06-01 12:04:01.800000","2018-06-01 12:04:03.600000","2018-06-01 12:04:04.800000","2018-06-01 12:04:06.100000","2018-06-01 12:04:07.400000","2018-06-01 12:04:07.600000","2018-06-01 12:04:08.100000","2018-06-01 12:04:09.000000","2018-06-01 12:04:09.200000","2018-06-01 12:04:10.000000","2018-06-01 12:04:10.500000","2018-06-01 12:04:11.100000","2018-06-01 12:04:11.900000","2018-06-01 12:04:14.000000","2018-06-01 12:04:14.100000","2018-06-01 12:04:14.500000","2018-06-01 12:04:14.800000","2018-06-01 12:04:15.000000","2018-06-01 12:04:15.100000","2018-06-01 12:04:16.700000","2018-06-01 12:04:17.300000","2018-06-01 12:04:18.200000","2018-06-01 12:04:18.300000","2018-06-01 12:04:19.600000","2018-06-01 12:04:20.100000","2018-06-01 12:04:20.300000","2018-06-01 12:04:20.600000","2018-06-01 12:04:20.800000","2018-06-01 12:04:21.000000","2018-06-01 12:04:21.700000","2018-06-01 12:04:22.300000","2018-06-01 12:04:22.600000","2018-06-01 12:04:23.400000","2018-06-01 12:04:24.100000","2018-06-01 12:04:24.400000","2018-06-01 12:04:24.800000","2018-06-01 12:04:26.100000","2018-06-01 12:04:26.600000","2018-06-01 12:04:27.900000","2018-06-01 12:04:31.200000","2018-06-01 12:04:31.900000","2018-06-01 12:04:32.300000","2018-06-01 12:04:34.100000","2018-06-01 12:04:34.400000","2018-06-01 12:04:34.800000","2018-06-01 12:04:35.100000","2018-06-01 12:04:36.200000","2018-06-01 12:04:38.600000","2018-06-01 12:04:38.900000","2018-06-01 12:04:39.900000","2018-06-01 12:04:40.900000","2018-06-01 12:04:41.500000","2018-06-01 12:04:41.700000","2018-06-01 12:04:43.200000","2018-06-01 12:04:48.100000","2018-06-01 12:04:49.200000","2018-06-01 12:04:49.300000","2018-06-01 12:04:50.300000","2018-06-01 12:04:51.200000","2018-06-01 12:04:51.500000","2018-06-01 12:04:51.700000","2018-06-01 12:04:52.300000","2018-06-01 12:04:53.000000","2018-06-01 12:04:53.200000","2018-06-01 12:04:54.900000","2018-06-01 12:04:56.700000","2018-06-01 12:04:57.000000","2018-06-01 12:04:57.200000","2018-06-01 12:04:57.300000","2018-06-01 12:04:58.900000","2018-06-01 12:04:59.300000"],"xaxis":"x","y":[164.63,164.49,164.35,164.29,164.26,164.11,163.83,163.5,163.19,162.92,162.76,162.66,162.59,162.38,162.17,161.93,161.8,161.59,161.53,161.38,161.14,160.84,160.71,160.39,160.19,160.06,159.71,159.46,159.18,158.89,158.63,158.39,158.25,158.21,158.2,158.36,158.55,158.76,158.82,159.02,159.18,159.17,159.23,159.29,159.42,159.64,159.75,159.77,159.67,159.53,159.3,158.99,158.68,158.44,158.24,158.05,157.89,157.83,157.76,157.65,157.43,157.13,156.81,156.64,156.42,156.24,156.03,155.78,155.61,155.42,155.35,155.46,155.54,155.72,155.81,155.93,155.96,155.92,156.06,155.97,155.93,155.82,155.74,155.66,155.57,155.42,155.07,154.81,154.46,154.07,153.59,153.12,152.66,152.22,151.68,151.14,150.54,150.09,149.66,149.49,149.34,149.21,149.05,148.83,148.71,148.52,148.34,147.99,147.66,147.35,147.17,146.93,146.74,146.62,146.58,146.77,146.99,147.12,147.19,147.13,147.07,147.04,146.94,146.73,146.67,146.75,146.87,147.04,147.17,147.36,147.66,148.1,148.43,148.77,148.98,149.16,149.33,149.58,149.73,149.82,149.85,149.72,149.64,149.65,149.58,149.6,149.71,149.85,149.98,150.02,149.98,149.92,149.76,149.8,150.03,150.16,150.37,150.6,150.86,151.07,151.18,151.38,151.49,151.56,151.72,151.9,151.94,152.04,152.23,152.6,152.96,153.24,153.57,153.81,154.16,154.53,154.88,155.22,155.48,155.89,156.24,156.39,156.45,156.42,156.34,156.43,156.64,156.88,157.09,157.34,157.57,157.78,157.96,158.04,157.95,157.78,157.62,157.43,157.25,156.96,156.61,156.3,156,155.89,155.78,155.68,155.5,155.16,154.83,154.53,154.34,154.2,154.01,153.7,153.31,152.95,152.54,151.99,151.36,150.66,149.87,149.25,148.8,148.37,147.97,147.7,147.64,147.71,147.91,148.1,148.39,148.61,148.94,149.03,149.07,149.14,149.16,149.19,149.32,149.39,149.54,149.68,149.56,149.3,149.05,148.79,148.62,148.4,148.24,147.96,147.63,147.29,146.95,146.75,146.54,146.38,146.2,146.3,146.3,146.2,146.14,146.1,146.17,146.26,146.41,146.74,146.96,147.29,147.56,147.83,147.96,148.03,148.07,148.27,148.46,148.58,148.71,148.87,149.15,149.31,149.46,149.4,149.25,149.14,149.01,148.84,148.81,148.75,148.71,148.71,148.73,148.93,148.98,149.05,149.03,149.07,149.14,149.25,149.33,149.31,149.32,149.14,148.89,148.52,148.25,148.22,148.17,148.03,147.93,147.81,147.79,147.81,147.75,147.63,147.56,147.25,146.95,146.67,146.28,145.9,145.7,145.6,145.42,145.1,144.73,144.42,144.26,144.28,144.36,144.43,144.56,144.63,144.66,144.67,144.59,144.66,144.65,144.66,144.79,144.95,145.07,145.02,144.99,145.02,145.11,145.42,145.77,145.96,146.06,146.22,146.45,146.77,147,147.2,147.45,147.57,147.75],"yaxis":"y","type":"scatter"},{"hovertemplate":"Sym=CAT
Timestamp=%{x}
Price=%{y}","legendgroup":"CAT","marker":{"symbol":"circle"},"mode":"markers","name":"CAT","showlegend":true,"x":["2018-06-01 12:00:00.100000","2018-06-01 12:00:00.300000","2018-06-01 12:00:00.400000","2018-06-01 12:00:00.800000","2018-06-01 12:00:01.300000","2018-06-01 12:00:01.400000","2018-06-01 12:00:01.800000","2018-06-01 12:00:02.100000","2018-06-01 12:00:02.800000","2018-06-01 12:00:03.100000","2018-06-01 12:00:03.200000","2018-06-01 12:00:03.900000","2018-06-01 12:00:04.300000","2018-06-01 12:00:04.500000","2018-06-01 12:00:04.900000","2018-06-01 12:00:05.100000","2018-06-01 12:00:05.500000","2018-06-01 12:00:05.700000","2018-06-01 12:00:05.900000","2018-06-01 12:00:06.600000","2018-06-01 12:00:06.700000","2018-06-01 12:00:07.200000","2018-06-01 12:00:07.900000","2018-06-01 12:00:08.000000","2018-06-01 12:00:08.200000","2018-06-01 12:00:08.500000","2018-06-01 12:00:08.700000","2018-06-01 12:00:08.900000","2018-06-01 12:00:09.000000","2018-06-01 12:00:09.100000","2018-06-01 12:00:09.700000","2018-06-01 12:00:10.000000","2018-06-01 12:00:10.200000","2018-06-01 12:00:10.700000","2018-06-01 12:00:10.800000","2018-06-01 12:00:11.300000","2018-06-01 12:00:11.400000","2018-06-01 12:00:11.700000","2018-06-01 12:00:12.100000","2018-06-01 12:00:12.300000","2018-06-01 12:00:12.700000","2018-06-01 12:00:13.700000","2018-06-01 12:00:13.800000","2018-06-01 12:00:13.900000","2018-06-01 12:00:14.600000","2018-06-01 12:00:14.900000","2018-06-01 12:00:15.400000","2018-06-01 12:00:16.000000","2018-06-01 12:00:16.200000","2018-06-01 12:00:16.400000","2018-06-01 12:00:16.500000","2018-06-01 12:00:16.600000","2018-06-01 12:00:16.700000","2018-06-01 12:00:16.900000","2018-06-01 12:00:17.600000","2018-06-01 12:00:18.000000","2018-06-01 12:00:18.300000","2018-06-01 12:00:19.000000","2018-06-01 12:00:19.800000","2018-06-01 12:00:20.000000","2018-06-01 12:00:20.100000","2018-06-01 12:00:20.300000","2018-06-01 12:00:20.600000","2018-06-01 12:00:21.300000","2018-06-01 12:00:21.500000","2018-06-01 12:00:22.100000","2018-06-01 12:00:22.400000","2018-06-01 12:00:23.900000","2018-06-01 12:00:24.500000","2018-06-01 12:00:24.900000","2018-06-01 12:00:25.500000","2018-06-01 12:00:25.900000","2018-06-01 12:00:26.000000","2018-06-01 12:00:26.700000","2018-06-01 12:00:26.900000","2018-06-01 12:00:27.300000","2018-06-01 12:00:27.400000","2018-06-01 12:00:28.100000","2018-06-01 12:00:28.400000","2018-06-01 12:00:29.400000","2018-06-01 12:00:29.600000","2018-06-01 12:00:29.800000","2018-06-01 12:00:30.300000","2018-06-01 12:00:30.400000","2018-06-01 12:00:30.500000","2018-06-01 12:00:30.800000","2018-06-01 12:00:30.900000","2018-06-01 12:00:31.400000","2018-06-01 12:00:31.600000","2018-06-01 12:00:31.900000","2018-06-01 12:00:32.600000","2018-06-01 12:00:33.200000","2018-06-01 12:00:33.500000","2018-06-01 12:00:33.600000","2018-06-01 12:00:33.700000","2018-06-01 12:00:33.800000","2018-06-01 12:00:33.900000","2018-06-01 12:00:34.200000","2018-06-01 12:00:34.300000","2018-06-01 12:00:35.300000","2018-06-01 12:00:35.400000","2018-06-01 12:00:35.500000","2018-06-01 12:00:35.700000","2018-06-01 12:00:35.900000","2018-06-01 12:00:36.600000","2018-06-01 12:00:36.700000","2018-06-01 12:00:37.000000","2018-06-01 12:00:37.200000","2018-06-01 12:00:37.300000","2018-06-01 12:00:37.500000","2018-06-01 12:00:37.700000","2018-06-01 12:00:37.800000","2018-06-01 12:00:37.900000","2018-06-01 12:00:38.200000","2018-06-01 12:00:39.600000","2018-06-01 12:00:39.700000","2018-06-01 12:00:39.900000","2018-06-01 12:00:40.300000","2018-06-01 12:00:40.400000","2018-06-01 12:00:40.500000","2018-06-01 12:00:41.000000","2018-06-01 12:00:41.100000","2018-06-01 12:00:41.600000","2018-06-01 12:00:42.000000","2018-06-01 12:00:42.600000","2018-06-01 12:00:42.700000","2018-06-01 12:00:42.800000","2018-06-01 12:00:43.000000","2018-06-01 12:00:43.300000","2018-06-01 12:00:43.800000","2018-06-01 12:00:44.000000","2018-06-01 12:00:44.100000","2018-06-01 12:00:44.900000","2018-06-01 12:00:45.000000","2018-06-01 12:00:45.100000","2018-06-01 12:00:45.300000","2018-06-01 12:00:45.800000","2018-06-01 12:00:46.300000","2018-06-01 12:00:46.400000","2018-06-01 12:00:46.500000","2018-06-01 12:00:46.700000","2018-06-01 12:00:46.900000","2018-06-01 12:00:47.000000","2018-06-01 12:00:47.400000","2018-06-01 12:00:48.500000","2018-06-01 12:00:48.600000","2018-06-01 12:00:48.800000","2018-06-01 12:00:49.700000","2018-06-01 12:00:49.900000","2018-06-01 12:00:50.300000","2018-06-01 12:00:50.500000","2018-06-01 12:00:51.100000","2018-06-01 12:00:51.200000","2018-06-01 12:00:51.300000","2018-06-01 12:00:51.500000","2018-06-01 12:00:52.100000","2018-06-01 12:00:52.200000","2018-06-01 12:00:52.400000","2018-06-01 12:00:53.200000","2018-06-01 12:00:53.500000","2018-06-01 12:00:53.800000","2018-06-01 12:00:54.500000","2018-06-01 12:00:54.600000","2018-06-01 12:00:54.700000","2018-06-01 12:00:55.200000","2018-06-01 12:00:55.500000","2018-06-01 12:00:55.700000","2018-06-01 12:00:55.900000","2018-06-01 12:00:56.700000","2018-06-01 12:00:56.800000","2018-06-01 12:00:57.000000","2018-06-01 12:00:57.100000","2018-06-01 12:00:58.200000","2018-06-01 12:00:58.500000","2018-06-01 12:00:58.900000","2018-06-01 12:00:59.000000","2018-06-01 12:00:59.200000","2018-06-01 12:00:59.400000","2018-06-01 12:00:59.700000","2018-06-01 12:01:00.100000","2018-06-01 12:01:00.300000","2018-06-01 12:01:00.400000","2018-06-01 12:01:00.500000","2018-06-01 12:01:00.800000","2018-06-01 12:01:01.400000","2018-06-01 12:01:01.500000","2018-06-01 12:01:01.600000","2018-06-01 12:01:02.000000","2018-06-01 12:01:02.300000","2018-06-01 12:01:02.400000","2018-06-01 12:01:02.900000","2018-06-01 12:01:03.300000","2018-06-01 12:01:03.400000","2018-06-01 12:01:03.600000","2018-06-01 12:01:04.000000","2018-06-01 12:01:04.500000","2018-06-01 12:01:05.100000","2018-06-01 12:01:05.200000","2018-06-01 12:01:05.800000","2018-06-01 12:01:06.000000","2018-06-01 12:01:06.700000","2018-06-01 12:01:07.200000","2018-06-01 12:01:07.500000","2018-06-01 12:01:07.600000","2018-06-01 12:01:07.800000","2018-06-01 12:01:09.600000","2018-06-01 12:01:09.700000","2018-06-01 12:01:10.000000","2018-06-01 12:01:10.300000","2018-06-01 12:01:10.700000","2018-06-01 12:01:10.800000","2018-06-01 12:01:11.600000","2018-06-01 12:01:11.700000","2018-06-01 12:01:11.800000","2018-06-01 12:01:12.100000","2018-06-01 12:01:12.500000","2018-06-01 12:01:12.600000","2018-06-01 12:01:13.600000","2018-06-01 12:01:13.700000","2018-06-01 12:01:13.900000","2018-06-01 12:01:14.100000","2018-06-01 12:01:14.500000","2018-06-01 12:01:14.800000","2018-06-01 12:01:15.400000","2018-06-01 12:01:15.900000","2018-06-01 12:01:16.000000","2018-06-01 12:01:16.100000","2018-06-01 12:01:16.500000","2018-06-01 12:01:16.800000","2018-06-01 12:01:16.900000","2018-06-01 12:01:17.200000","2018-06-01 12:01:17.300000","2018-06-01 12:01:17.700000","2018-06-01 12:01:17.800000","2018-06-01 12:01:18.000000","2018-06-01 12:01:18.100000","2018-06-01 12:01:20.100000","2018-06-01 12:01:20.300000","2018-06-01 12:01:20.900000","2018-06-01 12:01:21.100000","2018-06-01 12:01:21.200000","2018-06-01 12:01:21.600000","2018-06-01 12:01:21.700000","2018-06-01 12:01:22.000000","2018-06-01 12:01:22.500000","2018-06-01 12:01:22.800000","2018-06-01 12:01:22.900000","2018-06-01 12:01:23.000000","2018-06-01 12:01:23.100000","2018-06-01 12:01:24.000000","2018-06-01 12:01:24.500000","2018-06-01 12:01:24.600000","2018-06-01 12:01:24.900000","2018-06-01 12:01:25.500000","2018-06-01 12:01:25.600000","2018-06-01 12:01:26.000000","2018-06-01 12:01:27.000000","2018-06-01 12:01:27.300000","2018-06-01 12:01:27.700000","2018-06-01 12:01:27.900000","2018-06-01 12:01:28.600000","2018-06-01 12:01:28.800000","2018-06-01 12:01:29.000000","2018-06-01 12:01:29.200000","2018-06-01 12:01:29.600000","2018-06-01 12:01:29.700000","2018-06-01 12:01:30.300000","2018-06-01 12:01:30.600000","2018-06-01 12:01:30.900000","2018-06-01 12:01:31.300000","2018-06-01 12:01:31.400000","2018-06-01 12:01:31.500000","2018-06-01 12:01:32.200000","2018-06-01 12:01:32.900000","2018-06-01 12:01:33.600000","2018-06-01 12:01:34.400000","2018-06-01 12:01:34.600000","2018-06-01 12:01:34.700000","2018-06-01 12:01:35.000000","2018-06-01 12:01:35.200000","2018-06-01 12:01:35.300000","2018-06-01 12:01:35.400000","2018-06-01 12:01:36.200000","2018-06-01 12:01:36.500000","2018-06-01 12:01:36.600000","2018-06-01 12:01:37.100000","2018-06-01 12:01:37.300000","2018-06-01 12:01:38.600000","2018-06-01 12:01:39.100000","2018-06-01 12:01:39.300000","2018-06-01 12:01:39.500000","2018-06-01 12:01:39.800000","2018-06-01 12:01:40.900000","2018-06-01 12:01:41.500000","2018-06-01 12:01:41.900000","2018-06-01 12:01:42.000000","2018-06-01 12:01:42.200000","2018-06-01 12:01:42.500000","2018-06-01 12:01:42.600000","2018-06-01 12:01:42.700000","2018-06-01 12:01:43.700000","2018-06-01 12:01:43.800000","2018-06-01 12:01:44.200000","2018-06-01 12:01:44.700000","2018-06-01 12:01:44.800000","2018-06-01 12:01:45.100000","2018-06-01 12:01:45.400000","2018-06-01 12:01:45.500000","2018-06-01 12:01:45.600000","2018-06-01 12:01:45.900000","2018-06-01 12:01:46.000000","2018-06-01 12:01:46.200000","2018-06-01 12:01:46.300000","2018-06-01 12:01:46.400000","2018-06-01 12:01:46.700000","2018-06-01 12:01:47.100000","2018-06-01 12:01:47.800000","2018-06-01 12:01:48.200000","2018-06-01 12:01:48.300000","2018-06-01 12:01:48.700000","2018-06-01 12:01:49.500000","2018-06-01 12:01:49.800000","2018-06-01 12:01:50.400000","2018-06-01 12:01:50.800000","2018-06-01 12:01:51.100000","2018-06-01 12:01:51.300000","2018-06-01 12:01:51.500000","2018-06-01 12:01:51.800000","2018-06-01 12:01:51.900000","2018-06-01 12:01:52.500000","2018-06-01 12:01:52.600000","2018-06-01 12:01:52.800000","2018-06-01 12:01:53.600000","2018-06-01 12:01:54.200000","2018-06-01 12:01:54.500000","2018-06-01 12:01:55.000000","2018-06-01 12:01:55.100000","2018-06-01 12:01:55.300000","2018-06-01 12:01:55.500000","2018-06-01 12:01:55.900000","2018-06-01 12:01:56.300000","2018-06-01 12:01:56.400000","2018-06-01 12:01:57.000000","2018-06-01 12:01:57.400000","2018-06-01 12:01:58.500000","2018-06-01 12:01:58.600000","2018-06-01 12:01:59.600000","2018-06-01 12:02:00.100000","2018-06-01 12:02:00.800000","2018-06-01 12:02:01.000000","2018-06-01 12:02:02.000000","2018-06-01 12:02:02.100000","2018-06-01 12:02:02.400000","2018-06-01 12:02:02.800000","2018-06-01 12:02:02.900000","2018-06-01 12:02:03.700000","2018-06-01 12:02:03.800000","2018-06-01 12:02:03.900000","2018-06-01 12:02:04.200000","2018-06-01 12:02:04.400000","2018-06-01 12:02:04.600000","2018-06-01 12:02:05.000000","2018-06-01 12:02:05.800000","2018-06-01 12:02:06.000000","2018-06-01 12:02:06.100000","2018-06-01 12:02:06.200000","2018-06-01 12:02:06.400000","2018-06-01 12:02:06.500000","2018-06-01 12:02:06.700000","2018-06-01 12:02:06.800000","2018-06-01 12:02:07.200000","2018-06-01 12:02:07.400000","2018-06-01 12:02:07.600000","2018-06-01 12:02:07.700000","2018-06-01 12:02:07.800000","2018-06-01 12:02:08.100000","2018-06-01 12:02:08.200000","2018-06-01 12:02:08.500000","2018-06-01 12:02:09.500000","2018-06-01 12:02:10.500000","2018-06-01 12:02:11.100000","2018-06-01 12:02:11.600000","2018-06-01 12:02:12.000000","2018-06-01 12:02:12.700000","2018-06-01 12:02:12.800000","2018-06-01 12:02:13.200000","2018-06-01 12:02:14.500000","2018-06-01 12:02:14.900000","2018-06-01 12:02:15.100000","2018-06-01 12:02:15.300000","2018-06-01 12:02:15.600000","2018-06-01 12:02:15.800000","2018-06-01 12:02:16.100000","2018-06-01 12:02:16.300000","2018-06-01 12:02:16.800000","2018-06-01 12:02:17.300000","2018-06-01 12:02:17.400000","2018-06-01 12:02:17.500000","2018-06-01 12:02:17.700000","2018-06-01 12:02:17.800000","2018-06-01 12:02:18.300000","2018-06-01 12:02:18.500000","2018-06-01 12:02:18.900000","2018-06-01 12:02:19.000000","2018-06-01 12:02:19.100000","2018-06-01 12:02:19.200000","2018-06-01 12:02:19.600000","2018-06-01 12:02:19.700000","2018-06-01 12:02:20.000000","2018-06-01 12:02:20.700000","2018-06-01 12:02:20.900000","2018-06-01 12:02:21.600000","2018-06-01 12:02:22.100000","2018-06-01 12:02:22.200000","2018-06-01 12:02:22.400000","2018-06-01 12:02:22.900000","2018-06-01 12:02:23.400000","2018-06-01 12:02:23.700000","2018-06-01 12:02:24.000000","2018-06-01 12:02:24.300000","2018-06-01 12:02:24.500000","2018-06-01 12:02:24.700000","2018-06-01 12:02:24.900000","2018-06-01 12:02:25.200000","2018-06-01 12:02:25.800000","2018-06-01 12:02:26.100000","2018-06-01 12:02:26.200000","2018-06-01 12:02:26.500000","2018-06-01 12:02:26.900000","2018-06-01 12:02:27.100000","2018-06-01 12:02:27.200000","2018-06-01 12:02:27.300000","2018-06-01 12:02:27.400000","2018-06-01 12:02:27.500000","2018-06-01 12:02:27.900000","2018-06-01 12:02:28.100000","2018-06-01 12:02:28.200000","2018-06-01 12:02:28.400000","2018-06-01 12:02:28.800000","2018-06-01 12:02:29.100000","2018-06-01 12:02:29.400000","2018-06-01 12:02:29.700000","2018-06-01 12:02:29.800000","2018-06-01 12:02:30.200000","2018-06-01 12:02:30.500000","2018-06-01 12:02:30.600000","2018-06-01 12:02:30.700000","2018-06-01 12:02:31.100000","2018-06-01 12:02:31.400000","2018-06-01 12:02:31.600000","2018-06-01 12:02:31.800000","2018-06-01 12:02:31.900000","2018-06-01 12:02:32.100000","2018-06-01 12:02:32.300000","2018-06-01 12:02:32.400000","2018-06-01 12:02:33.000000","2018-06-01 12:02:33.900000","2018-06-01 12:02:34.000000","2018-06-01 12:02:34.300000","2018-06-01 12:02:34.400000","2018-06-01 12:02:34.500000","2018-06-01 12:02:34.600000","2018-06-01 12:02:34.800000","2018-06-01 12:02:35.200000","2018-06-01 12:02:35.700000","2018-06-01 12:02:36.400000","2018-06-01 12:02:36.600000","2018-06-01 12:02:37.000000","2018-06-01 12:02:37.100000","2018-06-01 12:02:38.200000","2018-06-01 12:02:38.700000","2018-06-01 12:02:38.900000","2018-06-01 12:02:39.000000","2018-06-01 12:02:39.600000","2018-06-01 12:02:40.000000","2018-06-01 12:02:40.400000","2018-06-01 12:02:40.500000","2018-06-01 12:02:40.800000","2018-06-01 12:02:41.200000","2018-06-01 12:02:41.400000","2018-06-01 12:02:41.900000","2018-06-01 12:02:42.100000","2018-06-01 12:02:42.400000","2018-06-01 12:02:42.800000","2018-06-01 12:02:43.000000","2018-06-01 12:02:43.200000","2018-06-01 12:02:43.900000","2018-06-01 12:02:44.800000","2018-06-01 12:02:45.100000","2018-06-01 12:02:45.400000","2018-06-01 12:02:47.500000","2018-06-01 12:02:47.600000","2018-06-01 12:02:47.800000","2018-06-01 12:02:47.900000","2018-06-01 12:02:48.100000","2018-06-01 12:02:48.600000","2018-06-01 12:02:49.000000","2018-06-01 12:02:49.100000","2018-06-01 12:02:49.500000","2018-06-01 12:02:49.600000","2018-06-01 12:02:50.700000","2018-06-01 12:02:51.600000","2018-06-01 12:02:52.400000","2018-06-01 12:02:52.600000","2018-06-01 12:02:53.000000","2018-06-01 12:02:53.200000","2018-06-01 12:02:53.300000","2018-06-01 12:02:53.400000","2018-06-01 12:02:53.600000","2018-06-01 12:02:53.700000","2018-06-01 12:02:53.900000","2018-06-01 12:02:54.200000","2018-06-01 12:02:54.600000","2018-06-01 12:02:55.100000","2018-06-01 12:02:55.200000","2018-06-01 12:02:55.400000","2018-06-01 12:02:55.800000","2018-06-01 12:02:56.100000","2018-06-01 12:02:56.200000","2018-06-01 12:02:56.500000","2018-06-01 12:02:56.600000","2018-06-01 12:02:56.900000","2018-06-01 12:02:57.100000","2018-06-01 12:02:57.200000","2018-06-01 12:02:58.100000","2018-06-01 12:02:58.400000","2018-06-01 12:02:58.700000","2018-06-01 12:02:59.000000","2018-06-01 12:02:59.300000","2018-06-01 12:02:59.900000","2018-06-01 12:03:00.100000","2018-06-01 12:03:00.600000","2018-06-01 12:03:00.800000","2018-06-01 12:03:01.000000","2018-06-01 12:03:01.500000","2018-06-01 12:03:01.800000","2018-06-01 12:03:02.000000","2018-06-01 12:03:02.400000","2018-06-01 12:03:03.600000","2018-06-01 12:03:03.800000","2018-06-01 12:03:03.900000","2018-06-01 12:03:04.200000","2018-06-01 12:03:04.500000","2018-06-01 12:03:04.700000","2018-06-01 12:03:05.200000","2018-06-01 12:03:05.300000","2018-06-01 12:03:06.400000","2018-06-01 12:03:07.200000","2018-06-01 12:03:07.500000","2018-06-01 12:03:07.700000","2018-06-01 12:03:08.600000","2018-06-01 12:03:09.900000","2018-06-01 12:03:10.000000","2018-06-01 12:03:10.200000","2018-06-01 12:03:10.500000","2018-06-01 12:03:10.600000","2018-06-01 12:03:10.700000","2018-06-01 12:03:10.800000","2018-06-01 12:03:10.900000","2018-06-01 12:03:11.000000","2018-06-01 12:03:11.200000","2018-06-01 12:03:11.400000","2018-06-01 12:03:11.600000","2018-06-01 12:03:11.700000","2018-06-01 12:03:11.800000","2018-06-01 12:03:12.200000","2018-06-01 12:03:12.500000","2018-06-01 12:03:12.800000","2018-06-01 12:03:13.400000","2018-06-01 12:03:13.500000","2018-06-01 12:03:14.400000","2018-06-01 12:03:15.000000","2018-06-01 12:03:15.100000","2018-06-01 12:03:16.000000","2018-06-01 12:03:17.000000","2018-06-01 12:03:17.100000","2018-06-01 12:03:17.300000","2018-06-01 12:03:17.800000","2018-06-01 12:03:17.900000","2018-06-01 12:03:18.000000","2018-06-01 12:03:18.100000","2018-06-01 12:03:19.000000","2018-06-01 12:03:19.900000","2018-06-01 12:03:20.300000","2018-06-01 12:03:20.700000","2018-06-01 12:03:20.900000","2018-06-01 12:03:21.000000","2018-06-01 12:03:21.200000","2018-06-01 12:03:21.700000","2018-06-01 12:03:22.600000","2018-06-01 12:03:22.700000","2018-06-01 12:03:23.400000","2018-06-01 12:03:23.700000","2018-06-01 12:03:23.800000","2018-06-01 12:03:24.100000","2018-06-01 12:03:25.100000","2018-06-01 12:03:25.400000","2018-06-01 12:03:25.500000","2018-06-01 12:03:25.800000","2018-06-01 12:03:26.700000","2018-06-01 12:03:27.100000","2018-06-01 12:03:27.600000","2018-06-01 12:03:28.000000","2018-06-01 12:03:28.500000","2018-06-01 12:03:28.700000","2018-06-01 12:03:29.000000","2018-06-01 12:03:29.400000","2018-06-01 12:03:29.600000","2018-06-01 12:03:29.700000","2018-06-01 12:03:29.800000","2018-06-01 12:03:30.400000","2018-06-01 12:03:30.500000","2018-06-01 12:03:31.000000","2018-06-01 12:03:31.200000","2018-06-01 12:03:31.300000","2018-06-01 12:03:31.700000","2018-06-01 12:03:31.900000","2018-06-01 12:03:32.400000","2018-06-01 12:03:32.600000","2018-06-01 12:03:32.700000","2018-06-01 12:03:32.800000","2018-06-01 12:03:32.900000","2018-06-01 12:03:33.000000","2018-06-01 12:03:33.300000","2018-06-01 12:03:33.600000","2018-06-01 12:03:34.700000","2018-06-01 12:03:35.500000","2018-06-01 12:03:36.600000","2018-06-01 12:03:37.100000","2018-06-01 12:03:37.400000","2018-06-01 12:03:37.600000","2018-06-01 12:03:38.000000","2018-06-01 12:03:38.100000","2018-06-01 12:03:38.400000","2018-06-01 12:03:38.600000","2018-06-01 12:03:38.700000","2018-06-01 12:03:38.900000","2018-06-01 12:03:39.100000","2018-06-01 12:03:39.600000","2018-06-01 12:03:40.200000","2018-06-01 12:03:40.800000","2018-06-01 12:03:40.900000","2018-06-01 12:03:41.500000","2018-06-01 12:03:41.700000","2018-06-01 12:03:41.800000","2018-06-01 12:03:42.200000","2018-06-01 12:03:42.500000","2018-06-01 12:03:42.600000","2018-06-01 12:03:43.000000","2018-06-01 12:03:43.500000","2018-06-01 12:03:43.700000","2018-06-01 12:03:43.900000","2018-06-01 12:03:44.500000","2018-06-01 12:03:45.100000","2018-06-01 12:03:45.200000","2018-06-01 12:03:45.400000","2018-06-01 12:03:45.700000","2018-06-01 12:03:45.800000","2018-06-01 12:03:45.900000","2018-06-01 12:03:46.000000","2018-06-01 12:03:46.300000","2018-06-01 12:03:46.500000","2018-06-01 12:03:46.800000","2018-06-01 12:03:47.200000","2018-06-01 12:03:47.800000","2018-06-01 12:03:48.200000","2018-06-01 12:03:48.300000","2018-06-01 12:03:49.900000","2018-06-01 12:03:50.300000","2018-06-01 12:03:50.500000","2018-06-01 12:03:51.100000","2018-06-01 12:03:51.400000","2018-06-01 12:03:51.800000","2018-06-01 12:03:51.900000","2018-06-01 12:03:52.700000","2018-06-01 12:03:52.800000","2018-06-01 12:03:53.200000","2018-06-01 12:03:53.300000","2018-06-01 12:03:54.000000","2018-06-01 12:03:54.700000","2018-06-01 12:03:57.500000","2018-06-01 12:03:57.900000","2018-06-01 12:03:58.100000","2018-06-01 12:03:58.800000","2018-06-01 12:03:59.100000","2018-06-01 12:03:59.300000","2018-06-01 12:03:59.700000","2018-06-01 12:04:00.000000","2018-06-01 12:04:00.100000","2018-06-01 12:04:00.300000","2018-06-01 12:04:00.500000","2018-06-01 12:04:01.100000","2018-06-01 12:04:02.100000","2018-06-01 12:04:03.000000","2018-06-01 12:04:03.900000","2018-06-01 12:04:04.900000","2018-06-01 12:04:05.100000","2018-06-01 12:04:05.200000","2018-06-01 12:04:05.400000","2018-06-01 12:04:06.200000","2018-06-01 12:04:06.300000","2018-06-01 12:04:06.700000","2018-06-01 12:04:06.900000","2018-06-01 12:04:07.000000","2018-06-01 12:04:07.500000","2018-06-01 12:04:07.700000","2018-06-01 12:04:08.200000","2018-06-01 12:04:08.500000","2018-06-01 12:04:08.900000","2018-06-01 12:04:09.500000","2018-06-01 12:04:09.800000","2018-06-01 12:04:10.100000","2018-06-01 12:04:10.200000","2018-06-01 12:04:10.400000","2018-06-01 12:04:10.800000","2018-06-01 12:04:11.400000","2018-06-01 12:04:11.700000","2018-06-01 12:04:12.100000","2018-06-01 12:04:12.300000","2018-06-01 12:04:12.800000","2018-06-01 12:04:12.900000","2018-06-01 12:04:13.200000","2018-06-01 12:04:13.700000","2018-06-01 12:04:14.300000","2018-06-01 12:04:15.200000","2018-06-01 12:04:15.600000","2018-06-01 12:04:15.700000","2018-06-01 12:04:16.500000","2018-06-01 12:04:16.600000","2018-06-01 12:04:17.100000","2018-06-01 12:04:17.200000","2018-06-01 12:04:17.400000","2018-06-01 12:04:18.000000","2018-06-01 12:04:18.100000","2018-06-01 12:04:18.500000","2018-06-01 12:04:18.700000","2018-06-01 12:04:18.900000","2018-06-01 12:04:20.200000","2018-06-01 12:04:20.400000","2018-06-01 12:04:20.700000","2018-06-01 12:04:20.900000","2018-06-01 12:04:21.200000","2018-06-01 12:04:21.400000","2018-06-01 12:04:22.200000","2018-06-01 12:04:22.500000","2018-06-01 12:04:23.200000","2018-06-01 12:04:23.700000","2018-06-01 12:04:24.600000","2018-06-01 12:04:24.900000","2018-06-01 12:04:25.200000","2018-06-01 12:04:25.500000","2018-06-01 12:04:25.600000","2018-06-01 12:04:25.700000","2018-06-01 12:04:25.800000","2018-06-01 12:04:26.000000","2018-06-01 12:04:26.700000","2018-06-01 12:04:27.100000","2018-06-01 12:04:27.300000","2018-06-01 12:04:27.600000","2018-06-01 12:04:27.700000","2018-06-01 12:04:27.800000","2018-06-01 12:04:28.100000","2018-06-01 12:04:28.200000","2018-06-01 12:04:28.600000","2018-06-01 12:04:28.900000","2018-06-01 12:04:29.200000","2018-06-01 12:04:29.800000","2018-06-01 12:04:30.200000","2018-06-01 12:04:30.500000","2018-06-01 12:04:31.100000","2018-06-01 12:04:31.800000","2018-06-01 12:04:32.000000","2018-06-01 12:04:32.600000","2018-06-01 12:04:32.800000","2018-06-01 12:04:32.900000","2018-06-01 12:04:33.000000","2018-06-01 12:04:33.400000","2018-06-01 12:04:33.500000","2018-06-01 12:04:33.600000","2018-06-01 12:04:34.300000","2018-06-01 12:04:34.600000","2018-06-01 12:04:34.700000","2018-06-01 12:04:34.900000","2018-06-01 12:04:35.000000","2018-06-01 12:04:35.300000","2018-06-01 12:04:35.900000","2018-06-01 12:04:36.100000","2018-06-01 12:04:36.500000","2018-06-01 12:04:36.900000","2018-06-01 12:04:37.000000","2018-06-01 12:04:37.100000","2018-06-01 12:04:38.400000","2018-06-01 12:04:39.000000","2018-06-01 12:04:39.200000","2018-06-01 12:04:39.300000","2018-06-01 12:04:39.400000","2018-06-01 12:04:39.600000","2018-06-01 12:04:40.500000","2018-06-01 12:04:40.800000","2018-06-01 12:04:41.100000","2018-06-01 12:04:41.800000","2018-06-01 12:04:41.900000","2018-06-01 12:04:42.400000","2018-06-01 12:04:42.500000","2018-06-01 12:04:42.600000","2018-06-01 12:04:42.700000","2018-06-01 12:04:42.900000","2018-06-01 12:04:43.500000","2018-06-01 12:04:44.200000","2018-06-01 12:04:44.500000","2018-06-01 12:04:45.000000","2018-06-01 12:04:45.200000","2018-06-01 12:04:45.300000","2018-06-01 12:04:45.400000","2018-06-01 12:04:46.700000","2018-06-01 12:04:47.400000","2018-06-01 12:04:47.500000","2018-06-01 12:04:47.800000","2018-06-01 12:04:47.900000","2018-06-01 12:04:48.200000","2018-06-01 12:04:48.400000","2018-06-01 12:04:48.500000","2018-06-01 12:04:49.000000","2018-06-01 12:04:49.700000","2018-06-01 12:04:49.800000","2018-06-01 12:04:50.100000","2018-06-01 12:04:50.600000","2018-06-01 12:04:51.000000","2018-06-01 12:04:51.900000","2018-06-01 12:04:52.100000","2018-06-01 12:04:52.200000","2018-06-01 12:04:52.900000","2018-06-01 12:04:53.500000","2018-06-01 12:04:53.800000","2018-06-01 12:04:54.700000","2018-06-01 12:04:55.200000","2018-06-01 12:04:55.700000","2018-06-01 12:04:56.000000","2018-06-01 12:04:56.200000","2018-06-01 12:04:56.500000","2018-06-01 12:04:56.800000","2018-06-01 12:04:57.400000","2018-06-01 12:04:57.900000","2018-06-01 12:04:58.400000","2018-06-01 12:04:58.600000","2018-06-01 12:04:58.700000","2018-06-01 12:04:59.000000","2018-06-01 12:04:59.700000"],"xaxis":"x","y":[102.47,102.51,102.45,102.53,102.7,102.99,103.4,103.92,104.26,104.67,105.02,105.44,105.82,106.18,106.34,106.59,106.76,107.03,107.33,107.68,108.08,108.63,108.91,109.18,109.34,109.43,109.48,109.42,109.59,109.71,109.8,109.94,110.06,110.02,110.09,110.02,109.95,110.12,110.09,110.04,109.88,109.83,109.7,109.72,109.85,109.87,109.84,109.7,109.59,109.59,109.64,109.68,109.77,109.86,109.88,110.09,110.3,110.57,110.72,110.9,111.01,111.07,111.05,110.9,110.7,110.43,110.28,110.12,109.82,109.47,109.12,108.8,108.48,108.07,107.52,107.02,106.7,106.45,106.22,106.08,106.04,105.99,105.77,105.64,105.6,105.52,105.5,105.51,105.4,105.34,105.4,105.44,105.5,105.63,105.91,106.19,106.42,106.61,106.83,106.91,107.08,107.33,107.48,107.61,107.79,108.05,108.25,108.59,109.15,109.51,109.9,110.35,110.71,111,111.16,111.27,111.43,111.66,111.92,112.01,112,111.99,111.97,112.07,112.18,112.2,112.24,112.22,112.33,112.35,112.51,112.59,112.73,112.65,112.56,112.57,112.56,112.63,112.75,112.82,113.08,113.11,113.06,113.06,113.16,113.2,113.26,113.37,113.57,113.8,114.14,114.31,114.54,114.78,115.01,115.13,115.37,115.57,115.85,116.04,116.12,115.97,115.82,115.88,115.93,115.95,116.02,116.09,116.06,115.92,115.74,115.55,115.53,115.4,115.28,115.21,115.13,115.16,115.11,115.08,115.27,115.44,115.63,115.78,116,116.27,116.5,116.54,116.76,117.01,117.02,116.98,117.05,117.13,117.31,117.5,117.68,117.94,118.12,118.37,118.67,118.85,119.12,119.19,119.23,119.28,119.4,119.5,119.78,119.9,120.21,120.61,121.06,121.65,122.36,123.15,123.85,124.59,125.41,126.26,126.96,127.51,128.09,128.6,129.1,129.56,129.95,130.22,130.37,130.36,130.27,130.12,129.99,129.97,130.02,129.95,129.78,129.64,129.47,129.2,128.87,128.66,128.41,128.01,127.62,127.33,127.01,126.77,126.5,126.36,126.3,126.24,126.09,126.07,126.08,126.05,125.91,125.83,125.74,125.51,125.25,125.16,125.09,125.03,124.95,124.87,124.84,124.69,124.53,124.4,124.31,124.21,124.29,124.17,124.14,124.03,123.9,123.7,123.56,123.37,123.22,123.07,122.83,122.55,122.12,121.7,121.44,121.32,121.36,121.52,121.6,121.67,121.67,121.58,121.49,121.46,121.35,121.34,121.25,121.11,120.9,120.73,120.59,120.47,120.46,120.43,120.57,120.67,120.71,120.63,120.45,120.23,120.14,120.27,120.43,120.58,120.51,120.35,120.17,120.08,119.85,119.48,119.19,119.09,119.18,119.18,119.23,119.17,119.16,119.1,118.87,118.75,118.72,118.83,119.01,119.33,119.66,119.98,120.37,120.68,120.94,121.05,121.06,120.97,120.79,120.62,120.37,120.17,119.98,119.79,119.7,119.68,119.56,119.58,119.58,119.6,119.59,119.65,119.81,119.81,119.77,119.8,119.74,119.64,119.51,119.29,119.06,118.71,118.27,117.71,117.25,116.63,115.96,115.2,114.46,113.86,113.48,112.8,112.08,111.51,110.92,110.3,109.69,109.21,108.8,108.48,108.15,107.84,107.53,107.16,106.86,106.55,106.2,105.8,105.44,105.15,104.94,104.76,104.65,104.5,104.46,104.41,104.33,104.21,104.01,103.97,103.98,104.05,104.24,104.38,104.53,104.72,104.95,105.17,105.36,105.42,105.62,105.72,105.86,106.08,106.3,106.55,106.69,106.97,107.38,107.82,108.37,108.84,109.16,109.41,109.61,109.84,110.09,110.22,110.44,110.81,111.17,111.5,111.81,112.19,112.53,112.93,113.32,113.66,113.94,114.03,114.01,114,113.8,113.78,113.58,113.19,112.96,112.78,112.65,112.44,112.28,112.12,111.98,111.9,111.75,111.63,111.39,111.06,110.72,110.28,109.92,109.57,109.43,109.27,109.05,108.91,108.76,108.63,108.52,108.39,108.29,108.2,108.19,108.05,107.91,107.74,107.7,107.84,107.96,108.1,108.46,108.77,108.98,109.15,109.27,109.3,109.45,109.61,109.8,109.87,109.91,109.89,109.85,110.1,110.37,110.65,110.93,111.39,111.69,112.1,112.62,113.06,113.55,114.11,114.7,115.36,115.93,116.33,116.62,116.82,117.07,117.31,117.39,117.44,117.53,117.61,117.74,117.85,117.95,118.1,118.02,117.95,117.93,117.92,117.81,117.7,117.73,117.72,117.76,117.69,117.51,117.47,117.51,117.61,117.67,117.76,117.66,117.63,117.59,117.41,117.25,117.16,117.19,117.29,117.32,117.36,117.45,117.63,117.77,118.01,118.19,118.39,118.38,118.45,118.43,118.35,118.33,118.21,118.15,117.95,117.84,117.61,117.45,117.34,117.29,117.34,117.38,117.36,117.3,117.09,116.8,116.46,116.01,115.54,115.12,114.7,114.35,113.9,113.55,113.18,112.94,112.64,112.26,111.88,111.45,111.07,110.8,110.74,110.53,110.26,110.15,109.89,109.86,109.86,109.96,109.95,109.88,109.87,109.92,109.85,110.01,110.12,110.27,110.4,110.66,110.8,110.86,110.71,110.42,110.2,110.09,110.02,110.03,110.02,109.85,109.59,109.3,109.02,108.74,108.42,108.07,107.85,107.77,107.7,107.62,107.58,107.49,107.39,107.26,107.14,107.1,107.26,107.42,107.31,106.97,106.84,106.64,106.62,106.6,106.61,106.75,106.98,107.14,107.21,107.44,107.6,107.71,107.96,108.35,108.65,108.97,109.34,109.65,109.82,109.93,109.86,109.9,110,110.08,110.1,110.05,110.05,110.19,110.23,110.21,110.28,110.41,110.57,110.56,110.61,110.71,110.8,111.04,111.23,111.4,111.61,111.86,112.17,112.42,112.61,112.66,112.74,112.73,112.72,112.77,112.94,113.23,113.62,114.07,114.41,114.72,115.15,115.57,115.97,116.25,116.56,116.97,117.21,117.56,117.79,117.97,118.02,118.18,118.37,118.47,118.41,118.25,118.13,117.92,117.86,117.67,117.41,117.19,116.96,116.77,116.62,116.6,116.4,116.29,116.21,116.12,116.03,115.96,115.77,115.86,115.84,115.89,115.85,115.94,116.05,116.11,116.18,116.29,116.41,116.49,116.54,116.54,116.56,116.68,116.87,117.04,117.21,117.22,117.46,117.68,118.05,118.26,118.29,118.32,118.41,118.66,118.95,119.21,119.6,119.98,120.25,120.64,121.1,121.57,122.03,122.63,123.23,123.62,123.97,124.29,124.67,124.95,125.21,125.52,125.92,126.05,126.28,126.58,126.92,127.18,127.36,127.54,127.78,127.88,127.97,128.16,128.41,128.63,128.85,129.06,129.08,129.09,129.02,128.96,128.76,128.56,128.35,128.09,127.76,127.28,126.66,126.17,125.68,125.12,124.39,123.75,122.9,122.28,121.67,121.13,120.55,119.98,119.54,119.14,118.69,118.37,117.95,117.56,117.14,116.44,115.6,115.14,114.71,114.43,114.32,114.31,114.27,114.1,113.9,113.62,113.25,112.98,112.82,112.78,112.86,112.93,112.65,112.69,112.72,112.84,112.81,112.83,112.64,112.47,112.37,112.4,112.45],"yaxis":"y","type":"scatter"},{"hovertemplate":"Sym=LIZARD
Timestamp=%{x}
Price=%{y}","legendgroup":"LIZARD","marker":{"symbol":"circle"},"mode":"markers","name":"LIZARD","showlegend":true,"x":["2018-06-01 12:00:00.200000","2018-06-01 12:00:01.500000","2018-06-01 12:00:02.000000","2018-06-01 12:00:02.200000","2018-06-01 12:00:02.300000","2018-06-01 12:00:05.200000","2018-06-01 12:00:05.400000","2018-06-01 12:00:05.600000","2018-06-01 12:00:06.200000","2018-06-01 12:00:07.000000","2018-06-01 12:00:09.300000","2018-06-01 12:00:10.300000","2018-06-01 12:00:10.400000","2018-06-01 12:00:11.000000","2018-06-01 12:00:11.900000","2018-06-01 12:00:12.400000","2018-06-01 12:00:12.500000","2018-06-01 12:00:12.800000","2018-06-01 12:00:14.300000","2018-06-01 12:00:15.200000","2018-06-01 12:00:15.300000","2018-06-01 12:00:17.700000","2018-06-01 12:00:17.800000","2018-06-01 12:00:17.900000","2018-06-01 12:00:18.500000","2018-06-01 12:00:21.700000","2018-06-01 12:00:22.800000","2018-06-01 12:00:24.300000","2018-06-01 12:00:24.400000","2018-06-01 12:00:24.600000","2018-06-01 12:00:26.600000","2018-06-01 12:00:27.200000","2018-06-01 12:00:27.700000","2018-06-01 12:00:27.800000","2018-06-01 12:00:28.800000","2018-06-01 12:00:30.200000","2018-06-01 12:00:33.000000","2018-06-01 12:00:33.400000","2018-06-01 12:00:36.000000","2018-06-01 12:00:36.100000","2018-06-01 12:00:38.000000","2018-06-01 12:00:38.500000","2018-06-01 12:00:39.400000","2018-06-01 12:00:39.800000","2018-06-01 12:00:41.700000","2018-06-01 12:00:43.100000","2018-06-01 12:00:43.500000","2018-06-01 12:00:45.500000","2018-06-01 12:00:45.900000","2018-06-01 12:00:46.600000","2018-06-01 12:00:46.800000","2018-06-01 12:00:47.100000","2018-06-01 12:00:47.500000","2018-06-01 12:00:47.800000","2018-06-01 12:00:47.900000","2018-06-01 12:00:48.900000","2018-06-01 12:00:49.000000","2018-06-01 12:00:51.800000","2018-06-01 12:00:52.000000","2018-06-01 12:00:52.300000","2018-06-01 12:00:52.600000","2018-06-01 12:00:52.700000","2018-06-01 12:00:53.100000","2018-06-01 12:00:54.800000","2018-06-01 12:00:54.900000","2018-06-01 12:00:55.800000","2018-06-01 12:00:56.400000","2018-06-01 12:00:56.500000","2018-06-01 12:00:57.200000","2018-06-01 12:00:59.300000","2018-06-01 12:00:59.500000","2018-06-01 12:01:00.000000","2018-06-01 12:01:02.500000","2018-06-01 12:01:02.700000","2018-06-01 12:01:03.000000","2018-06-01 12:01:04.700000","2018-06-01 12:01:06.100000","2018-06-01 12:01:07.900000","2018-06-01 12:01:08.600000","2018-06-01 12:01:12.800000","2018-06-01 12:01:16.200000","2018-06-01 12:01:16.400000","2018-06-01 12:01:17.100000","2018-06-01 12:01:19.700000","2018-06-01 12:01:20.600000","2018-06-01 12:01:22.200000","2018-06-01 12:01:25.400000","2018-06-01 12:01:25.700000","2018-06-01 12:01:26.600000","2018-06-01 12:01:28.000000","2018-06-01 12:01:28.200000","2018-06-01 12:01:29.100000","2018-06-01 12:01:30.000000","2018-06-01 12:01:30.200000","2018-06-01 12:01:32.100000","2018-06-01 12:01:32.500000","2018-06-01 12:01:33.000000","2018-06-01 12:01:33.900000","2018-06-01 12:01:34.200000","2018-06-01 12:01:36.300000","2018-06-01 12:01:36.700000","2018-06-01 12:01:37.400000","2018-06-01 12:01:37.800000","2018-06-01 12:01:38.100000","2018-06-01 12:01:38.800000","2018-06-01 12:01:39.200000","2018-06-01 12:01:39.400000","2018-06-01 12:01:39.600000","2018-06-01 12:01:41.300000","2018-06-01 12:01:43.000000","2018-06-01 12:01:43.300000","2018-06-01 12:01:44.300000","2018-06-01 12:01:44.500000","2018-06-01 12:01:44.900000","2018-06-01 12:01:45.200000","2018-06-01 12:01:46.900000","2018-06-01 12:01:48.600000","2018-06-01 12:01:50.000000","2018-06-01 12:01:52.400000","2018-06-01 12:01:53.100000","2018-06-01 12:01:53.400000","2018-06-01 12:01:54.000000","2018-06-01 12:01:55.400000","2018-06-01 12:01:56.100000","2018-06-01 12:01:59.700000","2018-06-01 12:01:59.900000","2018-06-01 12:02:00.000000","2018-06-01 12:02:01.400000","2018-06-01 12:02:01.700000","2018-06-01 12:02:02.300000","2018-06-01 12:02:03.400000","2018-06-01 12:02:03.500000","2018-06-01 12:02:06.300000","2018-06-01 12:02:06.600000","2018-06-01 12:02:09.800000","2018-06-01 12:02:11.000000","2018-06-01 12:02:12.300000","2018-06-01 12:02:12.500000","2018-06-01 12:02:14.700000","2018-06-01 12:02:14.800000","2018-06-01 12:02:15.700000","2018-06-01 12:02:15.900000","2018-06-01 12:02:16.500000","2018-06-01 12:02:18.100000","2018-06-01 12:02:18.400000","2018-06-01 12:02:20.600000","2018-06-01 12:02:22.000000","2018-06-01 12:02:22.600000","2018-06-01 12:02:23.500000","2018-06-01 12:02:23.800000","2018-06-01 12:02:27.000000","2018-06-01 12:02:28.000000","2018-06-01 12:02:29.200000","2018-06-01 12:02:30.400000","2018-06-01 12:02:33.600000","2018-06-01 12:02:36.000000","2018-06-01 12:02:36.300000","2018-06-01 12:02:36.500000","2018-06-01 12:02:36.800000","2018-06-01 12:02:37.500000","2018-06-01 12:02:37.900000","2018-06-01 12:02:39.500000","2018-06-01 12:02:39.800000","2018-06-01 12:02:40.700000","2018-06-01 12:02:40.900000","2018-06-01 12:02:41.100000","2018-06-01 12:02:42.000000","2018-06-01 12:02:43.100000","2018-06-01 12:02:43.700000","2018-06-01 12:02:44.200000","2018-06-01 12:02:44.300000","2018-06-01 12:02:44.900000","2018-06-01 12:02:45.600000","2018-06-01 12:02:48.300000","2018-06-01 12:02:49.300000","2018-06-01 12:02:51.000000","2018-06-01 12:02:52.900000","2018-06-01 12:02:54.500000","2018-06-01 12:02:54.800000","2018-06-01 12:02:55.300000","2018-06-01 12:02:55.700000","2018-06-01 12:02:59.600000","2018-06-01 12:03:01.400000","2018-06-01 12:03:05.600000","2018-06-01 12:03:05.700000","2018-06-01 12:03:06.200000","2018-06-01 12:03:06.500000","2018-06-01 12:03:07.900000","2018-06-01 12:03:09.200000","2018-06-01 12:03:09.400000","2018-06-01 12:03:09.700000","2018-06-01 12:03:12.400000","2018-06-01 12:03:16.100000","2018-06-01 12:03:17.400000","2018-06-01 12:03:18.300000","2018-06-01 12:03:18.700000","2018-06-01 12:03:23.900000","2018-06-01 12:03:24.400000","2018-06-01 12:03:24.500000","2018-06-01 12:03:25.200000","2018-06-01 12:03:25.700000","2018-06-01 12:03:27.500000","2018-06-01 12:03:27.800000","2018-06-01 12:03:28.300000","2018-06-01 12:03:28.900000","2018-06-01 12:03:31.400000","2018-06-01 12:03:32.000000","2018-06-01 12:03:34.100000","2018-06-01 12:03:34.200000","2018-06-01 12:03:35.200000","2018-06-01 12:03:35.300000","2018-06-01 12:03:35.400000","2018-06-01 12:03:36.500000","2018-06-01 12:03:37.200000","2018-06-01 12:03:38.500000","2018-06-01 12:03:39.300000","2018-06-01 12:03:39.900000","2018-06-01 12:03:40.400000","2018-06-01 12:03:40.600000","2018-06-01 12:03:41.400000","2018-06-01 12:03:45.500000","2018-06-01 12:03:45.600000","2018-06-01 12:03:46.200000","2018-06-01 12:03:46.400000","2018-06-01 12:03:46.600000","2018-06-01 12:03:47.300000","2018-06-01 12:03:47.500000","2018-06-01 12:03:50.100000","2018-06-01 12:03:50.800000","2018-06-01 12:03:51.500000","2018-06-01 12:03:52.400000","2018-06-01 12:03:54.600000","2018-06-01 12:03:54.800000","2018-06-01 12:03:55.300000","2018-06-01 12:03:57.100000","2018-06-01 12:03:57.600000","2018-06-01 12:03:58.700000","2018-06-01 12:03:59.800000","2018-06-01 12:04:01.300000","2018-06-01 12:04:01.900000","2018-06-01 12:04:02.500000","2018-06-01 12:04:03.100000","2018-06-01 12:04:04.700000","2018-06-01 12:04:05.700000","2018-06-01 12:04:06.000000","2018-06-01 12:04:08.700000","2018-06-01 12:04:08.800000","2018-06-01 12:04:09.300000","2018-06-01 12:04:09.600000","2018-06-01 12:04:11.600000","2018-06-01 12:04:12.600000","2018-06-01 12:04:13.500000","2018-06-01 12:04:13.900000","2018-06-01 12:04:14.200000","2018-06-01 12:04:15.900000","2018-06-01 12:04:16.000000","2018-06-01 12:04:16.100000","2018-06-01 12:04:16.400000","2018-06-01 12:04:16.800000","2018-06-01 12:04:17.600000","2018-06-01 12:04:19.200000","2018-06-01 12:04:19.300000","2018-06-01 12:04:20.500000","2018-06-01 12:04:21.900000","2018-06-01 12:04:22.900000","2018-06-01 12:04:24.000000","2018-06-01 12:04:24.300000","2018-06-01 12:04:24.500000","2018-06-01 12:04:25.300000","2018-06-01 12:04:26.400000","2018-06-01 12:04:27.200000","2018-06-01 12:04:28.500000","2018-06-01 12:04:29.600000","2018-06-01 12:04:30.000000","2018-06-01 12:04:30.100000","2018-06-01 12:04:30.800000","2018-06-01 12:04:31.600000","2018-06-01 12:04:33.900000","2018-06-01 12:04:35.200000","2018-06-01 12:04:35.500000","2018-06-01 12:04:35.600000","2018-06-01 12:04:36.000000","2018-06-01 12:04:36.300000","2018-06-01 12:04:37.200000","2018-06-01 12:04:37.300000","2018-06-01 12:04:37.800000","2018-06-01 12:04:42.100000","2018-06-01 12:04:46.300000","2018-06-01 12:04:47.200000","2018-06-01 12:04:48.300000","2018-06-01 12:04:48.600000","2018-06-01 12:04:49.100000","2018-06-01 12:04:50.000000","2018-06-01 12:04:50.200000","2018-06-01 12:04:51.100000","2018-06-01 12:04:51.800000","2018-06-01 12:04:52.800000","2018-06-01 12:04:53.900000","2018-06-01 12:04:54.300000","2018-06-01 12:04:54.400000","2018-06-01 12:04:55.000000","2018-06-01 12:04:55.400000","2018-06-01 12:04:55.800000","2018-06-01 12:04:56.900000","2018-06-01 12:04:58.500000","2018-06-01 12:04:59.600000"],"xaxis":"x","y":[224.88,224.93,225.01,225.16,225.43,225.56,225.74,225.76,225.76,225.8,225.74,225.68,225.62,225.51,225.32,225.21,225.01,224.61,224.4,224.15,223.97,223.92,223.86,223.81,223.86,223.82,223.85,223.84,223.75,223.61,223.56,223.45,223.38,223.56,223.51,223.48,223.34,223.32,223.32,223.32,223.28,223.36,223.45,223.49,223.46,223.43,223.34,223.35,223.36,223.28,223.17,223.11,223.17,223.28,223.39,223.49,223.6,223.66,223.61,223.65,223.73,223.94,224.34,224.64,224.88,225.13,225.41,225.71,226.2,226.58,226.91,227.17,227.71,228.17,228.59,228.85,229.14,229.45,229.73,230.02,230.29,230.38,230.45,230.52,230.5,230.42,230.41,230.25,230.12,229.78,229.51,229.35,229.17,229.02,228.8,228.7,228.6,228.47,228.31,228.22,228.27,228.35,228.34,228.34,228.16,228.1,228.15,228.21,228.29,228.5,228.63,228.75,228.86,228.91,228.99,228.97,229.06,229.31,229.44,229.79,229.97,229.96,229.83,229.67,229.5,229.32,229.38,229.31,229.39,229.39,229.5,229.55,229.66,229.77,229.68,229.57,229.71,229.74,229.65,229.61,229.67,229.72,229.77,229.8,229.85,229.92,230.13,230.39,230.53,230.56,230.64,230.73,230.75,230.77,230.73,230.57,230.33,230.18,229.93,229.63,229.33,229.11,228.85,228.36,227.94,227.7,227.46,227.39,227.29,227.4,227.57,227.78,228.06,228.25,228.34,228.32,228.42,228.5,228.53,228.4,228.32,228.04,227.73,227.5,227.33,227.2,226.98,226.78,226.51,226.19,226.01,225.86,225.51,225.12,224.69,224.43,224.25,224.04,223.88,223.7,223.41,223.03,222.68,222.48,222.33,222.13,221.85,221.63,221.35,221.04,220.79,220.57,220.32,220.14,220.03,219.97,219.86,219.75,219.77,219.77,219.94,220.07,220.1,220.17,220.39,220.68,220.9,221.1,221.35,221.51,221.76,221.99,222.33,222.54,222.62,222.66,222.67,222.65,222.63,222.74,222.8,222.96,222.95,222.91,222.73,222.67,222.5,222.41,222.31,222.25,222.37,222.64,222.92,223.36,223.66,223.88,223.98,224.17,224.29,224.32,224.37,224.41,224.29,224.2,224.06,223.92,223.81,223.56,223.42,223.37,223.31,223.36,223.54,223.64,223.6,223.53,223.52,223.63,223.7,223.81,224.04,224.27,224.6,224.93,225.16,225.42,225.8,226.34,226.8,227.17,227.7,228.15,228.65,229.05,229.41,229.77,230.08,230.4,230.66,230.76,230.79,230.89,231.03,231.25,231.49,231.7],"yaxis":"y","type":"scatter"},{"hovertemplate":"Sym=FISH
Timestamp=%{x}
Price=%{y}","legendgroup":"FISH","marker":{"symbol":"circle"},"mode":"markers","name":"FISH","showlegend":true,"x":["2018-06-01 12:00:00.500000","2018-06-01 12:00:01.000000","2018-06-01 12:00:01.900000","2018-06-01 12:00:02.400000","2018-06-01 12:00:02.600000","2018-06-01 12:00:02.700000","2018-06-01 12:00:03.300000","2018-06-01 12:00:03.700000","2018-06-01 12:00:03.800000","2018-06-01 12:00:04.200000","2018-06-01 12:00:05.300000","2018-06-01 12:00:05.800000","2018-06-01 12:00:06.800000","2018-06-01 12:00:06.900000","2018-06-01 12:00:08.400000","2018-06-01 12:00:09.500000","2018-06-01 12:00:10.100000","2018-06-01 12:00:10.600000","2018-06-01 12:00:11.800000","2018-06-01 12:00:12.600000","2018-06-01 12:00:12.900000","2018-06-01 12:00:13.500000","2018-06-01 12:00:13.600000","2018-06-01 12:00:14.200000","2018-06-01 12:00:14.700000","2018-06-01 12:00:15.100000","2018-06-01 12:00:15.500000","2018-06-01 12:00:15.700000","2018-06-01 12:00:15.800000","2018-06-01 12:00:16.800000","2018-06-01 12:00:18.100000","2018-06-01 12:00:19.100000","2018-06-01 12:00:19.500000","2018-06-01 12:00:19.600000","2018-06-01 12:00:20.200000","2018-06-01 12:00:21.900000","2018-06-01 12:00:22.000000","2018-06-01 12:00:22.500000","2018-06-01 12:00:23.000000","2018-06-01 12:00:23.300000","2018-06-01 12:00:23.600000","2018-06-01 12:00:23.700000","2018-06-01 12:00:24.100000","2018-06-01 12:00:25.800000","2018-06-01 12:00:26.300000","2018-06-01 12:00:26.400000","2018-06-01 12:00:26.800000","2018-06-01 12:00:27.500000","2018-06-01 12:00:28.200000","2018-06-01 12:00:28.300000","2018-06-01 12:00:28.500000","2018-06-01 12:00:29.100000","2018-06-01 12:00:29.200000","2018-06-01 12:00:30.000000","2018-06-01 12:00:30.700000","2018-06-01 12:00:31.200000","2018-06-01 12:00:31.800000","2018-06-01 12:00:32.300000","2018-06-01 12:00:32.400000","2018-06-01 12:00:32.800000","2018-06-01 12:00:34.100000","2018-06-01 12:00:35.600000","2018-06-01 12:00:35.800000","2018-06-01 12:00:36.200000","2018-06-01 12:00:36.500000","2018-06-01 12:00:37.600000","2018-06-01 12:00:38.400000","2018-06-01 12:00:38.600000","2018-06-01 12:00:38.900000","2018-06-01 12:00:39.000000","2018-06-01 12:00:39.200000","2018-06-01 12:00:40.700000","2018-06-01 12:00:41.900000","2018-06-01 12:00:42.100000","2018-06-01 12:00:42.900000","2018-06-01 12:00:43.200000","2018-06-01 12:00:44.300000","2018-06-01 12:00:45.600000","2018-06-01 12:00:45.700000","2018-06-01 12:00:46.100000","2018-06-01 12:00:46.200000","2018-06-01 12:00:47.700000","2018-06-01 12:00:48.100000","2018-06-01 12:00:48.400000","2018-06-01 12:00:49.400000","2018-06-01 12:00:49.500000","2018-06-01 12:00:49.600000","2018-06-01 12:00:50.100000","2018-06-01 12:00:50.600000","2018-06-01 12:00:50.900000","2018-06-01 12:00:51.000000","2018-06-01 12:00:51.900000","2018-06-01 12:00:52.900000","2018-06-01 12:00:53.600000","2018-06-01 12:00:53.700000","2018-06-01 12:00:54.000000","2018-06-01 12:00:54.400000","2018-06-01 12:00:55.600000","2018-06-01 12:00:56.000000","2018-06-01 12:00:56.100000","2018-06-01 12:00:56.200000","2018-06-01 12:00:56.900000","2018-06-01 12:00:57.300000","2018-06-01 12:00:57.600000","2018-06-01 12:00:57.800000","2018-06-01 12:00:58.100000","2018-06-01 12:00:58.400000","2018-06-01 12:00:58.600000","2018-06-01 12:00:58.800000","2018-06-01 12:00:59.900000","2018-06-01 12:01:00.600000","2018-06-01 12:01:00.700000","2018-06-01 12:01:00.900000","2018-06-01 12:01:01.700000","2018-06-01 12:01:03.800000","2018-06-01 12:01:03.900000","2018-06-01 12:01:04.200000","2018-06-01 12:01:04.600000","2018-06-01 12:01:04.800000","2018-06-01 12:01:05.300000","2018-06-01 12:01:05.400000","2018-06-01 12:01:05.600000","2018-06-01 12:01:05.700000","2018-06-01 12:01:05.900000","2018-06-01 12:01:06.200000","2018-06-01 12:01:07.700000","2018-06-01 12:01:08.000000","2018-06-01 12:01:08.900000","2018-06-01 12:01:09.100000","2018-06-01 12:01:09.400000","2018-06-01 12:01:10.100000","2018-06-01 12:01:10.200000","2018-06-01 12:01:10.600000","2018-06-01 12:01:11.100000","2018-06-01 12:01:12.000000","2018-06-01 12:01:12.200000","2018-06-01 12:01:12.900000","2018-06-01 12:01:13.100000","2018-06-01 12:01:13.200000","2018-06-01 12:01:13.400000","2018-06-01 12:01:14.000000","2018-06-01 12:01:14.300000","2018-06-01 12:01:14.900000","2018-06-01 12:01:15.100000","2018-06-01 12:01:15.300000","2018-06-01 12:01:16.300000","2018-06-01 12:01:18.200000","2018-06-01 12:01:18.800000","2018-06-01 12:01:19.000000","2018-06-01 12:01:19.100000","2018-06-01 12:01:19.200000","2018-06-01 12:01:20.000000","2018-06-01 12:01:21.000000","2018-06-01 12:01:21.400000","2018-06-01 12:01:22.100000","2018-06-01 12:01:22.400000","2018-06-01 12:01:23.200000","2018-06-01 12:01:23.300000","2018-06-01 12:01:23.500000","2018-06-01 12:01:23.900000","2018-06-01 12:01:24.100000","2018-06-01 12:01:24.300000","2018-06-01 12:01:24.400000","2018-06-01 12:01:25.100000","2018-06-01 12:01:25.900000","2018-06-01 12:01:26.300000","2018-06-01 12:01:27.600000","2018-06-01 12:01:28.100000","2018-06-01 12:01:28.900000","2018-06-01 12:01:29.500000","2018-06-01 12:01:30.400000","2018-06-01 12:01:30.500000","2018-06-01 12:01:30.700000","2018-06-01 12:01:30.800000","2018-06-01 12:01:31.000000","2018-06-01 12:01:31.600000","2018-06-01 12:01:31.900000","2018-06-01 12:01:32.000000","2018-06-01 12:01:32.600000","2018-06-01 12:01:32.700000","2018-06-01 12:01:35.100000","2018-06-01 12:01:35.500000","2018-06-01 12:01:35.600000","2018-06-01 12:01:36.100000","2018-06-01 12:01:37.200000","2018-06-01 12:01:37.700000","2018-06-01 12:01:38.300000","2018-06-01 12:01:41.000000","2018-06-01 12:01:42.900000","2018-06-01 12:01:43.100000","2018-06-01 12:01:43.500000","2018-06-01 12:01:43.900000","2018-06-01 12:01:45.300000","2018-06-01 12:01:47.700000","2018-06-01 12:01:48.400000","2018-06-01 12:01:48.500000","2018-06-01 12:01:49.200000","2018-06-01 12:01:49.600000","2018-06-01 12:01:50.200000","2018-06-01 12:01:50.500000","2018-06-01 12:01:50.700000","2018-06-01 12:01:52.000000","2018-06-01 12:01:52.100000","2018-06-01 12:01:54.300000","2018-06-01 12:01:54.600000","2018-06-01 12:01:54.900000","2018-06-01 12:01:55.600000","2018-06-01 12:01:55.700000","2018-06-01 12:01:55.800000","2018-06-01 12:01:56.600000","2018-06-01 12:01:56.800000","2018-06-01 12:01:57.100000","2018-06-01 12:01:57.800000","2018-06-01 12:01:57.900000","2018-06-01 12:01:58.200000","2018-06-01 12:01:58.700000","2018-06-01 12:01:58.800000","2018-06-01 12:01:58.900000","2018-06-01 12:01:59.200000","2018-06-01 12:01:59.400000","2018-06-01 12:02:00.500000","2018-06-01 12:02:00.700000","2018-06-01 12:02:02.200000","2018-06-01 12:02:02.700000","2018-06-01 12:02:03.200000","2018-06-01 12:02:04.000000","2018-06-01 12:02:04.100000","2018-06-01 12:02:04.300000","2018-06-01 12:02:04.800000","2018-06-01 12:02:05.100000","2018-06-01 12:02:05.300000","2018-06-01 12:02:06.900000","2018-06-01 12:02:07.000000","2018-06-01 12:02:07.500000","2018-06-01 12:02:07.900000","2018-06-01 12:02:08.900000","2018-06-01 12:02:09.100000","2018-06-01 12:02:10.700000","2018-06-01 12:02:11.700000","2018-06-01 12:02:13.100000","2018-06-01 12:02:13.400000","2018-06-01 12:02:13.500000","2018-06-01 12:02:13.700000","2018-06-01 12:02:13.900000","2018-06-01 12:02:15.500000","2018-06-01 12:02:16.400000","2018-06-01 12:02:16.900000","2018-06-01 12:02:17.000000","2018-06-01 12:02:17.100000","2018-06-01 12:02:17.200000","2018-06-01 12:02:17.900000","2018-06-01 12:02:18.000000","2018-06-01 12:02:18.200000","2018-06-01 12:02:18.800000","2018-06-01 12:02:19.500000","2018-06-01 12:02:20.100000","2018-06-01 12:02:20.200000","2018-06-01 12:02:21.100000","2018-06-01 12:02:21.900000","2018-06-01 12:02:22.700000","2018-06-01 12:02:23.300000","2018-06-01 12:02:24.200000","2018-06-01 12:02:24.400000","2018-06-01 12:02:25.400000","2018-06-01 12:02:26.000000","2018-06-01 12:02:26.300000","2018-06-01 12:02:26.600000","2018-06-01 12:02:26.700000","2018-06-01 12:02:27.700000","2018-06-01 12:02:27.800000","2018-06-01 12:02:28.300000","2018-06-01 12:02:30.100000","2018-06-01 12:02:32.200000","2018-06-01 12:02:32.600000","2018-06-01 12:02:32.700000","2018-06-01 12:02:33.100000","2018-06-01 12:02:35.000000","2018-06-01 12:02:35.300000","2018-06-01 12:02:36.100000","2018-06-01 12:02:36.700000","2018-06-01 12:02:36.900000","2018-06-01 12:02:37.200000","2018-06-01 12:02:37.300000","2018-06-01 12:02:37.600000","2018-06-01 12:02:38.100000","2018-06-01 12:02:38.500000","2018-06-01 12:02:38.800000","2018-06-01 12:02:41.800000","2018-06-01 12:02:42.900000","2018-06-01 12:02:43.400000","2018-06-01 12:02:43.800000","2018-06-01 12:02:44.500000","2018-06-01 12:02:45.700000","2018-06-01 12:02:46.000000","2018-06-01 12:02:46.200000","2018-06-01 12:02:46.300000","2018-06-01 12:02:46.400000","2018-06-01 12:02:46.800000","2018-06-01 12:02:47.700000","2018-06-01 12:02:48.700000","2018-06-01 12:02:48.800000","2018-06-01 12:02:48.900000","2018-06-01 12:02:49.400000","2018-06-01 12:02:49.700000","2018-06-01 12:02:50.500000","2018-06-01 12:02:51.200000","2018-06-01 12:02:51.300000","2018-06-01 12:02:52.700000","2018-06-01 12:02:54.000000","2018-06-01 12:02:54.100000","2018-06-01 12:02:54.300000","2018-06-01 12:02:55.500000","2018-06-01 12:02:55.600000","2018-06-01 12:02:55.900000","2018-06-01 12:02:56.300000","2018-06-01 12:02:56.700000","2018-06-01 12:02:57.600000","2018-06-01 12:02:57.700000","2018-06-01 12:02:58.900000","2018-06-01 12:02:59.200000","2018-06-01 12:03:00.200000","2018-06-01 12:03:00.400000","2018-06-01 12:03:00.900000","2018-06-01 12:03:02.600000","2018-06-01 12:03:02.800000","2018-06-01 12:03:03.000000","2018-06-01 12:03:04.100000","2018-06-01 12:03:05.000000","2018-06-01 12:03:05.800000","2018-06-01 12:03:05.900000","2018-06-01 12:03:06.600000","2018-06-01 12:03:06.700000","2018-06-01 12:03:06.800000","2018-06-01 12:03:07.400000","2018-06-01 12:03:08.300000","2018-06-01 12:03:08.500000","2018-06-01 12:03:08.800000","2018-06-01 12:03:09.100000","2018-06-01 12:03:09.300000","2018-06-01 12:03:09.600000","2018-06-01 12:03:10.300000","2018-06-01 12:03:12.100000","2018-06-01 12:03:12.600000","2018-06-01 12:03:12.700000","2018-06-01 12:03:12.900000","2018-06-01 12:03:13.700000","2018-06-01 12:03:13.900000","2018-06-01 12:03:14.000000","2018-06-01 12:03:14.300000","2018-06-01 12:03:14.700000","2018-06-01 12:03:15.200000","2018-06-01 12:03:15.300000","2018-06-01 12:03:15.400000","2018-06-01 12:03:15.500000","2018-06-01 12:03:15.600000","2018-06-01 12:03:15.800000","2018-06-01 12:03:15.900000","2018-06-01 12:03:16.200000","2018-06-01 12:03:16.400000","2018-06-01 12:03:16.500000","2018-06-01 12:03:16.700000","2018-06-01 12:03:16.800000","2018-06-01 12:03:17.200000","2018-06-01 12:03:17.500000","2018-06-01 12:03:18.900000","2018-06-01 12:03:19.100000","2018-06-01 12:03:19.200000","2018-06-01 12:03:19.500000","2018-06-01 12:03:19.600000","2018-06-01 12:03:19.700000","2018-06-01 12:03:19.800000","2018-06-01 12:03:20.100000","2018-06-01 12:03:20.200000","2018-06-01 12:03:21.500000","2018-06-01 12:03:21.600000","2018-06-01 12:03:22.000000","2018-06-01 12:03:22.900000","2018-06-01 12:03:23.100000","2018-06-01 12:03:24.700000","2018-06-01 12:03:25.000000","2018-06-01 12:03:26.000000","2018-06-01 12:03:26.400000","2018-06-01 12:03:26.500000","2018-06-01 12:03:26.600000","2018-06-01 12:03:27.400000","2018-06-01 12:03:28.200000","2018-06-01 12:03:28.600000","2018-06-01 12:03:30.000000","2018-06-01 12:03:30.100000","2018-06-01 12:03:31.600000","2018-06-01 12:03:32.300000","2018-06-01 12:03:33.100000","2018-06-01 12:03:33.500000","2018-06-01 12:03:33.700000","2018-06-01 12:03:33.900000","2018-06-01 12:03:34.000000","2018-06-01 12:03:35.100000","2018-06-01 12:03:35.600000","2018-06-01 12:03:36.700000","2018-06-01 12:03:37.300000","2018-06-01 12:03:37.700000","2018-06-01 12:03:37.800000","2018-06-01 12:03:39.000000","2018-06-01 12:03:39.500000","2018-06-01 12:03:39.700000","2018-06-01 12:03:39.800000","2018-06-01 12:03:40.100000","2018-06-01 12:03:40.500000","2018-06-01 12:03:40.700000","2018-06-01 12:03:41.000000","2018-06-01 12:03:41.600000","2018-06-01 12:03:41.900000","2018-06-01 12:03:42.000000","2018-06-01 12:03:42.100000","2018-06-01 12:03:42.300000","2018-06-01 12:03:42.400000","2018-06-01 12:03:43.200000","2018-06-01 12:03:43.800000","2018-06-01 12:03:44.000000","2018-06-01 12:03:44.100000","2018-06-01 12:03:44.600000","2018-06-01 12:03:44.700000","2018-06-01 12:03:46.900000","2018-06-01 12:03:47.400000","2018-06-01 12:03:48.000000","2018-06-01 12:03:48.500000","2018-06-01 12:03:48.700000","2018-06-01 12:03:48.800000","2018-06-01 12:03:48.900000","2018-06-01 12:03:49.000000","2018-06-01 12:03:49.300000","2018-06-01 12:03:49.800000","2018-06-01 12:03:50.900000","2018-06-01 12:03:51.200000","2018-06-01 12:03:52.200000","2018-06-01 12:03:52.300000","2018-06-01 12:03:52.900000","2018-06-01 12:03:53.400000","2018-06-01 12:03:53.500000","2018-06-01 12:03:53.700000","2018-06-01 12:03:53.900000","2018-06-01 12:03:54.500000","2018-06-01 12:03:54.900000","2018-06-01 12:03:55.000000","2018-06-01 12:03:55.800000","2018-06-01 12:03:56.100000","2018-06-01 12:03:56.200000","2018-06-01 12:03:58.500000","2018-06-01 12:03:58.600000","2018-06-01 12:03:59.500000","2018-06-01 12:03:59.900000","2018-06-01 12:04:00.200000","2018-06-01 12:04:02.300000","2018-06-01 12:04:02.700000","2018-06-01 12:04:03.200000","2018-06-01 12:04:03.300000","2018-06-01 12:04:03.500000","2018-06-01 12:04:05.600000","2018-06-01 12:04:05.800000","2018-06-01 12:04:07.800000","2018-06-01 12:04:08.000000","2018-06-01 12:04:08.400000","2018-06-01 12:04:08.600000","2018-06-01 12:04:09.100000","2018-06-01 12:04:09.400000","2018-06-01 12:04:09.900000","2018-06-01 12:04:10.600000","2018-06-01 12:04:10.700000","2018-06-01 12:04:11.200000","2018-06-01 12:04:11.500000","2018-06-01 12:04:12.400000","2018-06-01 12:04:12.700000","2018-06-01 12:04:13.100000","2018-06-01 12:04:13.300000","2018-06-01 12:04:13.800000","2018-06-01 12:04:14.900000","2018-06-01 12:04:15.300000","2018-06-01 12:04:17.000000","2018-06-01 12:04:17.700000","2018-06-01 12:04:17.900000","2018-06-01 12:04:18.800000","2018-06-01 12:04:19.000000","2018-06-01 12:04:19.500000","2018-06-01 12:04:19.800000","2018-06-01 12:04:21.800000","2018-06-01 12:04:22.000000","2018-06-01 12:04:22.400000","2018-06-01 12:04:22.700000","2018-06-01 12:04:23.000000","2018-06-01 12:04:23.100000","2018-06-01 12:04:23.500000","2018-06-01 12:04:23.600000","2018-06-01 12:04:24.200000","2018-06-01 12:04:25.000000","2018-06-01 12:04:25.100000","2018-06-01 12:04:26.200000","2018-06-01 12:04:26.300000","2018-06-01 12:04:26.500000","2018-06-01 12:04:27.000000","2018-06-01 12:04:27.400000","2018-06-01 12:04:27.500000","2018-06-01 12:04:28.300000","2018-06-01 12:04:28.800000","2018-06-01 12:04:29.300000","2018-06-01 12:04:29.500000","2018-06-01 12:04:29.700000","2018-06-01 12:04:30.400000","2018-06-01 12:04:30.600000","2018-06-01 12:04:30.900000","2018-06-01 12:04:31.500000","2018-06-01 12:04:31.700000","2018-06-01 12:04:32.400000","2018-06-01 12:04:33.100000","2018-06-01 12:04:33.200000","2018-06-01 12:04:33.300000","2018-06-01 12:04:34.000000","2018-06-01 12:04:35.400000","2018-06-01 12:04:36.800000","2018-06-01 12:04:37.400000","2018-06-01 12:04:37.500000","2018-06-01 12:04:37.700000","2018-06-01 12:04:37.900000","2018-06-01 12:04:38.000000","2018-06-01 12:04:38.300000","2018-06-01 12:04:38.700000","2018-06-01 12:04:39.100000","2018-06-01 12:04:39.500000","2018-06-01 12:04:39.700000","2018-06-01 12:04:39.800000","2018-06-01 12:04:40.000000","2018-06-01 12:04:40.300000","2018-06-01 12:04:40.600000","2018-06-01 12:04:41.200000","2018-06-01 12:04:41.300000","2018-06-01 12:04:42.000000","2018-06-01 12:04:43.000000","2018-06-01 12:04:43.300000","2018-06-01 12:04:43.600000","2018-06-01 12:04:43.800000","2018-06-01 12:04:44.000000","2018-06-01 12:04:44.300000","2018-06-01 12:04:44.700000","2018-06-01 12:04:45.600000","2018-06-01 12:04:45.700000","2018-06-01 12:04:45.800000","2018-06-01 12:04:46.000000","2018-06-01 12:04:46.200000","2018-06-01 12:04:46.500000","2018-06-01 12:04:47.100000","2018-06-01 12:04:47.300000","2018-06-01 12:04:48.700000","2018-06-01 12:04:49.500000","2018-06-01 12:04:50.400000","2018-06-01 12:04:50.500000","2018-06-01 12:04:50.800000","2018-06-01 12:04:50.900000","2018-06-01 12:04:51.400000","2018-06-01 12:04:52.000000","2018-06-01 12:04:52.500000","2018-06-01 12:04:52.600000","2018-06-01 12:04:52.700000","2018-06-01 12:04:53.600000","2018-06-01 12:04:53.700000","2018-06-01 12:04:54.000000","2018-06-01 12:04:54.200000","2018-06-01 12:04:54.500000","2018-06-01 12:04:55.100000","2018-06-01 12:04:55.500000","2018-06-01 12:04:55.600000","2018-06-01 12:04:55.900000","2018-06-01 12:04:56.300000","2018-06-01 12:04:56.400000","2018-06-01 12:04:56.600000","2018-06-01 12:04:57.100000","2018-06-01 12:04:57.500000","2018-06-01 12:04:57.800000","2018-06-01 12:04:58.100000","2018-06-01 12:04:58.200000","2018-06-01 12:04:58.800000","2018-06-01 12:04:59.100000","2018-06-01 12:04:59.200000","2018-06-01 12:04:59.400000","2018-06-01 12:04:59.900000"],"xaxis":"x","y":[127.24,127.29,127.29,127.34,127.33,127.25,127.18,127.09,127.03,126.98,127.01,127.07,127.09,127.25,127.21,127.12,127.06,126.89,126.95,127,126.98,127.11,127.23,127.34,127.43,127.46,127.5,127.42,127.56,127.69,128,128.31,128.57,128.87,129.1,129.27,129.43,129.74,130,130.23,130.46,130.54,130.54,130.62,130.54,130.33,130.1,129.93,129.77,129.7,129.82,129.93,130.22,130.56,130.87,131.2,131.7,132.27,132.96,133.48,134,134.43,134.85,135.16,135.44,135.88,136.34,136.67,136.98,137.33,137.75,138,138.14,138.31,138.61,139,139.31,139.63,139.96,140.28,140.67,141.02,141.32,141.68,142.12,142.59,142.91,143.01,143.09,143.26,143.34,143.54,143.7,143.6,143.5,143.38,143.29,143.12,142.82,142.48,142.05,141.64,141.09,140.63,140.28,140.09,139.86,139.48,139.07,138.86,138.75,138.79,138.76,138.65,138.55,138.33,138,137.57,137.22,136.86,136.59,136.01,135.43,134.72,134.23,133.8,133.31,133,132.63,132.2,131.76,131.33,131.04,130.64,130.18,129.85,129.6,129.28,128.95,128.53,128.04,127.82,127.49,127.14,126.78,126.52,126.36,126.16,125.96,125.88,125.92,126.03,126.03,126.07,126.17,126,125.87,125.8,125.75,125.78,125.82,125.89,126.05,126.27,126.52,126.85,127.2,127.34,127.45,127.64,127.8,128.04,128.17,128.12,128.16,128.29,128.4,128.49,128.53,128.58,128.63,128.72,128.89,129.03,129.1,129.26,129.16,128.89,128.6,128.25,128.03,127.75,127.54,127.38,127.33,127.35,127.38,127.43,127.43,127.39,127.44,127.48,127.4,127.39,127.4,127.35,127.39,127.41,127.22,127.14,126.94,126.69,126.35,126.12,125.99,125.98,125.92,125.84,125.88,126.04,126.24,126.31,126.26,126.18,126.22,126.16,126.12,126.11,126.03,125.92,125.85,125.76,125.56,125.59,125.66,125.56,125.38,125.39,125.46,125.62,125.89,126.22,126.5,126.78,127.02,127.17,127.36,127.51,127.67,127.86,127.98,128.03,128.2,128.27,128.44,128.31,128.13,128.08,128.02,127.99,128.12,128.1,128.1,128.16,128.22,128.22,128.05,127.92,127.97,128.13,128.26,128.35,128.25,128.1,127.96,127.92,127.86,127.84,127.79,127.75,127.7,127.69,127.63,127.63,127.55,127.33,127.05,126.68,126.28,125.91,125.61,125.24,124.77,124.33,123.92,123.62,123.24,122.81,122.41,122,121.41,120.92,120.3,119.88,119.64,119.54,119.31,119.1,118.89,118.81,118.8,118.85,118.73,118.61,118.37,118.17,118,117.83,117.72,117.67,117.45,117.32,117.07,116.74,116.49,116.23,115.89,115.49,115.28,115.1,114.97,114.93,114.92,114.69,114.41,114.02,113.64,113.4,113.21,112.84,112.66,112.5,112.46,112.32,112.23,112.19,112.19,112.18,112.21,112.16,112.09,111.89,111.65,111.42,111.3,111.23,111.2,111.3,111.36,111.54,111.66,111.72,111.85,111.96,112.08,112.05,112.04,112.03,112.07,112.06,111.96,111.99,112.09,112.25,112.46,112.64,112.87,113.15,113.45,113.74,113.82,113.92,114.04,114.21,114.32,114.38,114.53,114.68,115,115.39,116.04,116.68,117.37,118.01,118.52,118.88,119.15,119.4,119.63,119.88,120.02,120.04,119.93,119.77,119.47,119.33,119.2,119.15,119.16,119.12,119.15,119.16,119.16,119.14,119.11,119.15,119.42,119.69,119.73,119.76,119.7,119.78,119.66,119.42,119.09,118.73,118.38,118.04,117.74,117.34,117.06,116.89,116.86,116.92,117.06,117.21,117.24,117.34,117.45,117.46,117.34,117.38,117.44,117.56,117.84,118.25,118.71,119.07,119.41,119.67,119.83,119.97,120.02,120.09,120.19,120.21,120.32,120.36,120.49,120.73,120.97,121.11,121.36,121.74,122.03,122.2,122.3,122.47,122.71,123.02,123.43,123.63,123.86,124.19,124.4,124.47,124.45,124.55,124.58,124.48,124.53,124.65,124.61,124.67,124.84,125.1,125.22,125.31,125.49,125.7,125.87,126.04,126.15,126.25,126.08,125.85,125.54,125.38,125.24,125.24,125.24,125.17,124.93,124.73,124.64,124.6,124.43,124.23,124.04,123.94,123.84,123.5,123.38,123.19,122.86,122.65,122.37,122.08,121.85,121.89,122.03,122.24,122.44,122.6,122.87,123.17,123.26,123.2,123.07,122.9,122.93,122.98,123.17,123.42,123.67,123.83,123.95,124,124.03,124.05,124.1,124.17,124.27,124.44,124.57,124.78,124.92,124.93,124.92,124.97,125.02,125.19,125.45,125.66,125.85,126.05,126.37,126.63,126.77,126.75,126.62,126.49,126.32,126.24,126.16,126.04,125.98,125.96,126.01,126.16,126.38,126.7,127.04,127.4,127.7,127.98,128.29,128.44,128.72,128.98,129.14,129.29,129.37],"yaxis":"y","type":"scatter"},{"hovertemplate":"Sym=DOG
Timestamp=%{x}
Price=%{y}","legendgroup":"DOG","marker":{"symbol":"circle"},"mode":"markers","name":"DOG","showlegend":true,"x":["2018-06-01 12:00:00.700000","2018-06-01 12:00:00.900000","2018-06-01 12:00:01.100000","2018-06-01 12:00:01.200000","2018-06-01 12:00:01.600000","2018-06-01 12:00:01.700000","2018-06-01 12:00:02.500000","2018-06-01 12:00:02.900000","2018-06-01 12:00:03.000000","2018-06-01 12:00:03.400000","2018-06-01 12:00:03.500000","2018-06-01 12:00:03.600000","2018-06-01 12:00:04.000000","2018-06-01 12:00:04.100000","2018-06-01 12:00:04.400000","2018-06-01 12:00:04.700000","2018-06-01 12:00:04.800000","2018-06-01 12:00:05.000000","2018-06-01 12:00:06.000000","2018-06-01 12:00:06.100000","2018-06-01 12:00:06.300000","2018-06-01 12:00:06.400000","2018-06-01 12:00:06.500000","2018-06-01 12:00:07.100000","2018-06-01 12:00:07.300000","2018-06-01 12:00:07.500000","2018-06-01 12:00:07.600000","2018-06-01 12:00:08.100000","2018-06-01 12:00:08.300000","2018-06-01 12:00:08.800000","2018-06-01 12:00:09.200000","2018-06-01 12:00:09.400000","2018-06-01 12:00:09.600000","2018-06-01 12:00:09.800000","2018-06-01 12:00:09.900000","2018-06-01 12:00:10.900000","2018-06-01 12:00:11.200000","2018-06-01 12:00:12.000000","2018-06-01 12:00:12.200000","2018-06-01 12:00:13.000000","2018-06-01 12:00:13.100000","2018-06-01 12:00:13.200000","2018-06-01 12:00:13.300000","2018-06-01 12:00:13.400000","2018-06-01 12:00:14.100000","2018-06-01 12:00:14.400000","2018-06-01 12:00:14.800000","2018-06-01 12:00:15.600000","2018-06-01 12:00:15.900000","2018-06-01 12:00:16.100000","2018-06-01 12:00:16.300000","2018-06-01 12:00:17.200000","2018-06-01 12:00:17.300000","2018-06-01 12:00:17.500000","2018-06-01 12:00:18.200000","2018-06-01 12:00:18.400000","2018-06-01 12:00:18.600000","2018-06-01 12:00:18.700000","2018-06-01 12:00:18.900000","2018-06-01 12:00:19.200000","2018-06-01 12:00:19.300000","2018-06-01 12:00:19.700000","2018-06-01 12:00:19.900000","2018-06-01 12:00:20.400000","2018-06-01 12:00:20.500000","2018-06-01 12:00:20.700000","2018-06-01 12:00:20.800000","2018-06-01 12:00:20.900000","2018-06-01 12:00:21.000000","2018-06-01 12:00:21.100000","2018-06-01 12:00:21.200000","2018-06-01 12:00:21.400000","2018-06-01 12:00:21.800000","2018-06-01 12:00:22.300000","2018-06-01 12:00:22.600000","2018-06-01 12:00:22.700000","2018-06-01 12:00:22.900000","2018-06-01 12:00:23.200000","2018-06-01 12:00:23.400000","2018-06-01 12:00:23.500000","2018-06-01 12:00:24.200000","2018-06-01 12:00:24.700000","2018-06-01 12:00:25.000000","2018-06-01 12:00:25.100000","2018-06-01 12:00:25.300000","2018-06-01 12:00:25.400000","2018-06-01 12:00:25.600000","2018-06-01 12:00:25.700000","2018-06-01 12:00:26.100000","2018-06-01 12:00:26.200000","2018-06-01 12:00:27.100000","2018-06-01 12:00:27.600000","2018-06-01 12:00:27.900000","2018-06-01 12:00:28.000000","2018-06-01 12:00:28.600000","2018-06-01 12:00:28.700000","2018-06-01 12:00:29.000000","2018-06-01 12:00:29.300000","2018-06-01 12:00:29.700000","2018-06-01 12:00:29.900000","2018-06-01 12:00:30.100000","2018-06-01 12:00:30.600000","2018-06-01 12:00:31.000000","2018-06-01 12:00:31.300000","2018-06-01 12:00:31.500000","2018-06-01 12:00:31.700000","2018-06-01 12:00:32.000000","2018-06-01 12:00:32.100000","2018-06-01 12:00:32.500000","2018-06-01 12:00:33.300000","2018-06-01 12:00:34.000000","2018-06-01 12:00:34.400000","2018-06-01 12:00:34.600000","2018-06-01 12:00:34.700000","2018-06-01 12:00:34.900000","2018-06-01 12:00:37.100000","2018-06-01 12:00:37.400000","2018-06-01 12:00:38.100000","2018-06-01 12:00:38.300000","2018-06-01 12:00:38.700000","2018-06-01 12:00:39.100000","2018-06-01 12:00:39.300000","2018-06-01 12:00:39.500000","2018-06-01 12:00:40.000000","2018-06-01 12:00:40.100000","2018-06-01 12:00:40.600000","2018-06-01 12:00:41.200000","2018-06-01 12:00:41.400000","2018-06-01 12:00:41.800000","2018-06-01 12:00:42.200000","2018-06-01 12:00:42.300000","2018-06-01 12:00:42.400000","2018-06-01 12:00:42.500000","2018-06-01 12:00:43.400000","2018-06-01 12:00:43.600000","2018-06-01 12:00:43.700000","2018-06-01 12:00:43.900000","2018-06-01 12:00:44.200000","2018-06-01 12:00:44.400000","2018-06-01 12:00:44.500000","2018-06-01 12:00:44.700000","2018-06-01 12:00:44.800000","2018-06-01 12:00:45.200000","2018-06-01 12:00:45.400000","2018-06-01 12:00:46.000000","2018-06-01 12:00:47.300000","2018-06-01 12:00:47.600000","2018-06-01 12:00:48.000000","2018-06-01 12:00:48.200000","2018-06-01 12:00:48.300000","2018-06-01 12:00:49.100000","2018-06-01 12:00:49.800000","2018-06-01 12:00:50.200000","2018-06-01 12:00:50.400000","2018-06-01 12:00:50.700000","2018-06-01 12:00:50.800000","2018-06-01 12:00:51.400000","2018-06-01 12:00:53.300000","2018-06-01 12:00:53.400000","2018-06-01 12:00:53.900000","2018-06-01 12:00:54.100000","2018-06-01 12:00:54.200000","2018-06-01 12:00:55.100000","2018-06-01 12:00:55.300000","2018-06-01 12:00:55.400000","2018-06-01 12:00:56.300000","2018-06-01 12:00:57.400000","2018-06-01 12:00:57.500000","2018-06-01 12:00:57.700000","2018-06-01 12:00:57.900000","2018-06-01 12:00:58.000000","2018-06-01 12:00:58.300000","2018-06-01 12:00:59.100000","2018-06-01 12:00:59.600000","2018-06-01 12:01:00.200000","2018-06-01 12:01:01.000000","2018-06-01 12:01:01.100000","2018-06-01 12:01:01.300000","2018-06-01 12:01:01.800000","2018-06-01 12:01:01.900000","2018-06-01 12:01:02.100000","2018-06-01 12:01:02.200000","2018-06-01 12:01:02.600000","2018-06-01 12:01:03.200000","2018-06-01 12:01:03.500000","2018-06-01 12:01:03.700000","2018-06-01 12:01:04.100000","2018-06-01 12:01:04.300000","2018-06-01 12:01:04.400000","2018-06-01 12:01:04.900000","2018-06-01 12:01:05.000000","2018-06-01 12:01:06.500000","2018-06-01 12:01:06.600000","2018-06-01 12:01:06.800000","2018-06-01 12:01:06.900000","2018-06-01 12:01:07.000000","2018-06-01 12:01:07.300000","2018-06-01 12:01:07.400000","2018-06-01 12:01:08.100000","2018-06-01 12:01:08.200000","2018-06-01 12:01:08.300000","2018-06-01 12:01:08.400000","2018-06-01 12:01:08.500000","2018-06-01 12:01:08.700000","2018-06-01 12:01:09.000000","2018-06-01 12:01:09.300000","2018-06-01 12:01:09.500000","2018-06-01 12:01:09.900000","2018-06-01 12:01:10.900000","2018-06-01 12:01:11.000000","2018-06-01 12:01:11.200000","2018-06-01 12:01:11.300000","2018-06-01 12:01:11.500000","2018-06-01 12:01:11.900000","2018-06-01 12:01:12.300000","2018-06-01 12:01:13.000000","2018-06-01 12:01:13.300000","2018-06-01 12:01:13.500000","2018-06-01 12:01:14.200000","2018-06-01 12:01:14.400000","2018-06-01 12:01:14.600000","2018-06-01 12:01:14.700000","2018-06-01 12:01:15.000000","2018-06-01 12:01:15.200000","2018-06-01 12:01:15.600000","2018-06-01 12:01:15.700000","2018-06-01 12:01:15.800000","2018-06-01 12:01:16.600000","2018-06-01 12:01:17.000000","2018-06-01 12:01:17.400000","2018-06-01 12:01:17.500000","2018-06-01 12:01:17.600000","2018-06-01 12:01:17.900000","2018-06-01 12:01:18.300000","2018-06-01 12:01:18.400000","2018-06-01 12:01:18.500000","2018-06-01 12:01:18.700000","2018-06-01 12:01:18.900000","2018-06-01 12:01:19.400000","2018-06-01 12:01:19.500000","2018-06-01 12:01:19.600000","2018-06-01 12:01:19.800000","2018-06-01 12:01:20.200000","2018-06-01 12:01:20.400000","2018-06-01 12:01:20.500000","2018-06-01 12:01:20.700000","2018-06-01 12:01:20.800000","2018-06-01 12:01:21.800000","2018-06-01 12:01:21.900000","2018-06-01 12:01:22.300000","2018-06-01 12:01:22.600000","2018-06-01 12:01:22.700000","2018-06-01 12:01:23.400000","2018-06-01 12:01:23.600000","2018-06-01 12:01:23.700000","2018-06-01 12:01:23.800000","2018-06-01 12:01:24.700000","2018-06-01 12:01:25.300000","2018-06-01 12:01:25.800000","2018-06-01 12:01:26.200000","2018-06-01 12:01:26.400000","2018-06-01 12:01:26.500000","2018-06-01 12:01:26.800000","2018-06-01 12:01:26.900000","2018-06-01 12:01:27.100000","2018-06-01 12:01:27.200000","2018-06-01 12:01:27.400000","2018-06-01 12:01:27.500000","2018-06-01 12:01:28.300000","2018-06-01 12:01:28.500000","2018-06-01 12:01:28.700000","2018-06-01 12:01:29.300000","2018-06-01 12:01:29.400000","2018-06-01 12:01:29.800000","2018-06-01 12:01:30.100000","2018-06-01 12:01:31.100000","2018-06-01 12:01:31.200000","2018-06-01 12:01:32.400000","2018-06-01 12:01:32.800000","2018-06-01 12:01:33.200000","2018-06-01 12:01:33.300000","2018-06-01 12:01:33.400000","2018-06-01 12:01:33.700000","2018-06-01 12:01:33.800000","2018-06-01 12:01:34.000000","2018-06-01 12:01:34.100000","2018-06-01 12:01:34.300000","2018-06-01 12:01:34.500000","2018-06-01 12:01:34.800000","2018-06-01 12:01:34.900000","2018-06-01 12:01:35.700000","2018-06-01 12:01:35.800000","2018-06-01 12:01:35.900000","2018-06-01 12:01:36.000000","2018-06-01 12:01:36.900000","2018-06-01 12:01:37.500000","2018-06-01 12:01:37.900000","2018-06-01 12:01:38.000000","2018-06-01 12:01:38.200000","2018-06-01 12:01:38.500000","2018-06-01 12:01:38.700000","2018-06-01 12:01:39.700000","2018-06-01 12:01:40.200000","2018-06-01 12:01:40.300000","2018-06-01 12:01:40.400000","2018-06-01 12:01:40.500000","2018-06-01 12:01:40.600000","2018-06-01 12:01:40.800000","2018-06-01 12:01:41.100000","2018-06-01 12:01:41.200000","2018-06-01 12:01:41.400000","2018-06-01 12:01:41.600000","2018-06-01 12:01:41.700000","2018-06-01 12:01:41.800000","2018-06-01 12:01:42.100000","2018-06-01 12:01:42.300000","2018-06-01 12:01:42.800000","2018-06-01 12:01:43.200000","2018-06-01 12:01:43.600000","2018-06-01 12:01:44.000000","2018-06-01 12:01:44.100000","2018-06-01 12:01:44.600000","2018-06-01 12:01:45.000000","2018-06-01 12:01:45.800000","2018-06-01 12:01:46.100000","2018-06-01 12:01:46.800000","2018-06-01 12:01:47.000000","2018-06-01 12:01:47.300000","2018-06-01 12:01:47.500000","2018-06-01 12:01:47.600000","2018-06-01 12:01:47.900000","2018-06-01 12:01:48.100000","2018-06-01 12:01:48.800000","2018-06-01 12:01:48.900000","2018-06-01 12:01:49.000000","2018-06-01 12:01:49.100000","2018-06-01 12:01:49.300000","2018-06-01 12:01:49.400000","2018-06-01 12:01:49.700000","2018-06-01 12:01:49.900000","2018-06-01 12:01:50.100000","2018-06-01 12:01:50.300000","2018-06-01 12:01:50.600000","2018-06-01 12:01:50.900000","2018-06-01 12:01:51.000000","2018-06-01 12:01:51.200000","2018-06-01 12:01:51.400000","2018-06-01 12:01:51.700000","2018-06-01 12:01:52.200000","2018-06-01 12:01:52.300000","2018-06-01 12:01:52.700000","2018-06-01 12:01:53.000000","2018-06-01 12:01:53.200000","2018-06-01 12:01:53.300000","2018-06-01 12:01:53.500000","2018-06-01 12:01:53.700000","2018-06-01 12:01:53.800000","2018-06-01 12:01:54.100000","2018-06-01 12:01:54.400000","2018-06-01 12:01:54.800000","2018-06-01 12:01:55.200000","2018-06-01 12:01:56.000000","2018-06-01 12:01:56.200000","2018-06-01 12:01:57.200000","2018-06-01 12:01:57.300000","2018-06-01 12:01:57.500000","2018-06-01 12:01:57.700000","2018-06-01 12:01:58.000000","2018-06-01 12:01:58.100000","2018-06-01 12:01:58.300000","2018-06-01 12:01:58.400000","2018-06-01 12:01:59.000000","2018-06-01 12:01:59.100000","2018-06-01 12:01:59.300000","2018-06-01 12:01:59.500000","2018-06-01 12:01:59.800000","2018-06-01 12:02:00.200000","2018-06-01 12:02:00.400000","2018-06-01 12:02:00.600000","2018-06-01 12:02:01.100000","2018-06-01 12:02:01.300000","2018-06-01 12:02:01.500000","2018-06-01 12:02:01.600000","2018-06-01 12:02:01.800000","2018-06-01 12:02:02.500000","2018-06-01 12:02:02.600000","2018-06-01 12:02:03.000000","2018-06-01 12:02:03.100000","2018-06-01 12:02:03.300000","2018-06-01 12:02:03.600000","2018-06-01 12:02:04.500000","2018-06-01 12:02:04.900000","2018-06-01 12:02:05.400000","2018-06-01 12:02:05.500000","2018-06-01 12:02:05.600000","2018-06-01 12:02:05.700000","2018-06-01 12:02:05.900000","2018-06-01 12:02:07.100000","2018-06-01 12:02:08.300000","2018-06-01 12:02:08.400000","2018-06-01 12:02:08.600000","2018-06-01 12:02:08.700000","2018-06-01 12:02:09.200000","2018-06-01 12:02:09.300000","2018-06-01 12:02:09.600000","2018-06-01 12:02:09.700000","2018-06-01 12:02:09.900000","2018-06-01 12:02:10.000000","2018-06-01 12:02:10.300000","2018-06-01 12:02:10.400000","2018-06-01 12:02:10.800000","2018-06-01 12:02:10.900000","2018-06-01 12:02:11.200000","2018-06-01 12:02:11.400000","2018-06-01 12:02:11.500000","2018-06-01 12:02:11.900000","2018-06-01 12:02:12.100000","2018-06-01 12:02:12.200000","2018-06-01 12:02:12.400000","2018-06-01 12:02:12.600000","2018-06-01 12:02:12.900000","2018-06-01 12:02:13.000000","2018-06-01 12:02:13.300000","2018-06-01 12:02:13.600000","2018-06-01 12:02:14.000000","2018-06-01 12:02:14.100000","2018-06-01 12:02:14.300000","2018-06-01 12:02:14.400000","2018-06-01 12:02:14.600000","2018-06-01 12:02:15.000000","2018-06-01 12:02:15.200000","2018-06-01 12:02:15.400000","2018-06-01 12:02:16.600000","2018-06-01 12:02:16.700000","2018-06-01 12:02:17.600000","2018-06-01 12:02:19.300000","2018-06-01 12:02:19.400000","2018-06-01 12:02:19.800000","2018-06-01 12:02:19.900000","2018-06-01 12:02:20.300000","2018-06-01 12:02:20.500000","2018-06-01 12:02:20.800000","2018-06-01 12:02:21.000000","2018-06-01 12:02:21.300000","2018-06-01 12:02:21.700000","2018-06-01 12:02:22.500000","2018-06-01 12:02:22.800000","2018-06-01 12:02:23.100000","2018-06-01 12:02:23.200000","2018-06-01 12:02:23.900000","2018-06-01 12:02:24.600000","2018-06-01 12:02:24.800000","2018-06-01 12:02:25.000000","2018-06-01 12:02:25.100000","2018-06-01 12:02:25.300000","2018-06-01 12:02:25.500000","2018-06-01 12:02:25.600000","2018-06-01 12:02:25.700000","2018-06-01 12:02:25.900000","2018-06-01 12:02:26.400000","2018-06-01 12:02:27.600000","2018-06-01 12:02:28.500000","2018-06-01 12:02:28.900000","2018-06-01 12:02:29.000000","2018-06-01 12:02:29.500000","2018-06-01 12:02:29.900000","2018-06-01 12:02:30.000000","2018-06-01 12:02:30.300000","2018-06-01 12:02:30.800000","2018-06-01 12:02:31.000000","2018-06-01 12:02:31.200000","2018-06-01 12:02:31.300000","2018-06-01 12:02:31.700000","2018-06-01 12:02:32.000000","2018-06-01 12:02:32.800000","2018-06-01 12:02:32.900000","2018-06-01 12:02:33.400000","2018-06-01 12:02:33.500000","2018-06-01 12:02:33.700000","2018-06-01 12:02:33.800000","2018-06-01 12:02:34.100000","2018-06-01 12:02:34.200000","2018-06-01 12:02:34.900000","2018-06-01 12:02:35.400000","2018-06-01 12:02:35.500000","2018-06-01 12:02:35.600000","2018-06-01 12:02:36.200000","2018-06-01 12:02:37.400000","2018-06-01 12:02:37.800000","2018-06-01 12:02:38.300000","2018-06-01 12:02:38.600000","2018-06-01 12:02:39.100000","2018-06-01 12:02:39.200000","2018-06-01 12:02:39.300000","2018-06-01 12:02:39.900000","2018-06-01 12:02:40.100000","2018-06-01 12:02:40.300000","2018-06-01 12:02:40.600000","2018-06-01 12:02:41.000000","2018-06-01 12:02:41.300000","2018-06-01 12:02:41.500000","2018-06-01 12:02:41.600000","2018-06-01 12:02:42.200000","2018-06-01 12:02:42.500000","2018-06-01 12:02:42.600000","2018-06-01 12:02:42.700000","2018-06-01 12:02:43.300000","2018-06-01 12:02:44.400000","2018-06-01 12:02:44.600000","2018-06-01 12:02:44.700000","2018-06-01 12:02:45.000000","2018-06-01 12:02:45.200000","2018-06-01 12:02:45.500000","2018-06-01 12:02:45.900000","2018-06-01 12:02:46.500000","2018-06-01 12:02:46.600000","2018-06-01 12:02:47.100000","2018-06-01 12:02:47.200000","2018-06-01 12:02:47.300000","2018-06-01 12:02:48.000000","2018-06-01 12:02:48.200000","2018-06-01 12:02:48.400000","2018-06-01 12:02:48.500000","2018-06-01 12:02:49.800000","2018-06-01 12:02:50.000000","2018-06-01 12:02:50.100000","2018-06-01 12:02:50.200000","2018-06-01 12:02:50.300000","2018-06-01 12:02:50.400000","2018-06-01 12:02:50.600000","2018-06-01 12:02:50.800000","2018-06-01 12:02:51.500000","2018-06-01 12:02:51.800000","2018-06-01 12:02:51.900000","2018-06-01 12:02:52.000000","2018-06-01 12:02:52.300000","2018-06-01 12:02:52.500000","2018-06-01 12:02:52.800000","2018-06-01 12:02:53.100000","2018-06-01 12:02:53.800000","2018-06-01 12:02:54.400000","2018-06-01 12:02:54.700000","2018-06-01 12:02:55.000000","2018-06-01 12:02:56.000000","2018-06-01 12:02:57.000000","2018-06-01 12:02:57.300000","2018-06-01 12:02:57.400000","2018-06-01 12:02:57.500000","2018-06-01 12:02:57.900000","2018-06-01 12:02:58.000000","2018-06-01 12:02:58.200000","2018-06-01 12:02:58.300000","2018-06-01 12:02:58.600000","2018-06-01 12:02:59.400000","2018-06-01 12:02:59.700000","2018-06-01 12:02:59.800000","2018-06-01 12:03:00.000000","2018-06-01 12:03:00.300000","2018-06-01 12:03:00.700000","2018-06-01 12:03:01.100000","2018-06-01 12:03:01.200000","2018-06-01 12:03:01.300000","2018-06-01 12:03:01.600000","2018-06-01 12:03:01.700000","2018-06-01 12:03:02.100000","2018-06-01 12:03:02.300000","2018-06-01 12:03:02.700000","2018-06-01 12:03:02.900000","2018-06-01 12:03:03.100000","2018-06-01 12:03:03.200000","2018-06-01 12:03:03.400000","2018-06-01 12:03:03.700000","2018-06-01 12:03:04.300000","2018-06-01 12:03:04.400000","2018-06-01 12:03:04.900000","2018-06-01 12:03:05.100000","2018-06-01 12:03:05.400000","2018-06-01 12:03:05.500000","2018-06-01 12:03:06.300000","2018-06-01 12:03:07.000000","2018-06-01 12:03:07.100000","2018-06-01 12:03:07.800000","2018-06-01 12:03:08.100000","2018-06-01 12:03:08.200000","2018-06-01 12:03:08.700000","2018-06-01 12:03:08.900000","2018-06-01 12:03:09.000000","2018-06-01 12:03:09.800000","2018-06-01 12:03:10.100000","2018-06-01 12:03:10.400000","2018-06-01 12:03:11.100000","2018-06-01 12:03:11.300000","2018-06-01 12:03:11.500000","2018-06-01 12:03:11.900000","2018-06-01 12:03:12.000000","2018-06-01 12:03:12.300000","2018-06-01 12:03:13.200000","2018-06-01 12:03:13.300000","2018-06-01 12:03:13.600000","2018-06-01 12:03:13.800000","2018-06-01 12:03:14.100000","2018-06-01 12:03:14.500000","2018-06-01 12:03:14.800000","2018-06-01 12:03:14.900000","2018-06-01 12:03:15.700000","2018-06-01 12:03:16.300000","2018-06-01 12:03:16.900000","2018-06-01 12:03:17.700000","2018-06-01 12:03:18.400000","2018-06-01 12:03:18.500000","2018-06-01 12:03:19.300000","2018-06-01 12:03:19.400000","2018-06-01 12:03:20.000000","2018-06-01 12:03:20.400000","2018-06-01 12:03:20.500000","2018-06-01 12:03:20.600000","2018-06-01 12:03:21.100000","2018-06-01 12:03:21.300000","2018-06-01 12:03:21.400000","2018-06-01 12:03:21.800000","2018-06-01 12:03:22.200000","2018-06-01 12:03:22.300000","2018-06-01 12:03:22.400000","2018-06-01 12:03:22.500000","2018-06-01 12:03:22.800000","2018-06-01 12:03:23.000000","2018-06-01 12:03:23.300000","2018-06-01 12:03:24.000000","2018-06-01 12:03:24.300000","2018-06-01 12:03:24.600000","2018-06-01 12:03:24.800000","2018-06-01 12:03:24.900000","2018-06-01 12:03:25.300000","2018-06-01 12:03:25.900000","2018-06-01 12:03:26.100000","2018-06-01 12:03:26.900000","2018-06-01 12:03:27.000000","2018-06-01 12:03:27.200000","2018-06-01 12:03:27.700000","2018-06-01 12:03:27.900000","2018-06-01 12:03:28.100000","2018-06-01 12:03:28.400000","2018-06-01 12:03:28.800000","2018-06-01 12:03:29.100000","2018-06-01 12:03:29.300000","2018-06-01 12:03:29.500000","2018-06-01 12:03:30.200000","2018-06-01 12:03:30.600000","2018-06-01 12:03:30.900000","2018-06-01 12:03:31.100000","2018-06-01 12:03:31.500000","2018-06-01 12:03:31.800000","2018-06-01 12:03:32.200000","2018-06-01 12:03:32.500000","2018-06-01 12:03:33.200000","2018-06-01 12:03:33.400000","2018-06-01 12:03:33.800000","2018-06-01 12:03:34.300000","2018-06-01 12:03:34.500000","2018-06-01 12:03:35.000000","2018-06-01 12:03:35.800000","2018-06-01 12:03:35.900000","2018-06-01 12:03:36.000000","2018-06-01 12:03:36.200000","2018-06-01 12:03:36.300000","2018-06-01 12:03:36.400000","2018-06-01 12:03:36.900000","2018-06-01 12:03:37.500000","2018-06-01 12:03:37.900000","2018-06-01 12:03:38.200000","2018-06-01 12:03:38.300000","2018-06-01 12:03:39.400000","2018-06-01 12:03:40.000000","2018-06-01 12:03:40.300000","2018-06-01 12:03:41.100000","2018-06-01 12:03:41.200000","2018-06-01 12:03:41.300000","2018-06-01 12:03:42.800000","2018-06-01 12:03:42.900000","2018-06-01 12:03:43.300000","2018-06-01 12:03:43.600000","2018-06-01 12:03:44.200000","2018-06-01 12:03:44.300000","2018-06-01 12:03:44.400000","2018-06-01 12:03:44.800000","2018-06-01 12:03:44.900000","2018-06-01 12:03:45.000000","2018-06-01 12:03:45.300000","2018-06-01 12:03:46.100000","2018-06-01 12:03:46.700000","2018-06-01 12:03:47.000000","2018-06-01 12:03:47.100000","2018-06-01 12:03:47.600000","2018-06-01 12:03:47.700000","2018-06-01 12:03:47.900000","2018-06-01 12:03:48.100000","2018-06-01 12:03:48.400000","2018-06-01 12:03:48.600000","2018-06-01 12:03:49.200000","2018-06-01 12:03:49.500000","2018-06-01 12:03:49.600000","2018-06-01 12:03:49.700000","2018-06-01 12:03:50.000000","2018-06-01 12:03:50.400000","2018-06-01 12:03:50.600000","2018-06-01 12:03:50.700000","2018-06-01 12:03:51.000000","2018-06-01 12:03:51.700000","2018-06-01 12:03:52.000000","2018-06-01 12:03:52.100000","2018-06-01 12:03:52.500000","2018-06-01 12:03:52.600000","2018-06-01 12:03:53.000000","2018-06-01 12:03:53.100000","2018-06-01 12:03:53.600000","2018-06-01 12:03:53.800000","2018-06-01 12:03:54.200000","2018-06-01 12:03:54.300000","2018-06-01 12:03:54.400000","2018-06-01 12:03:55.100000","2018-06-01 12:03:55.400000","2018-06-01 12:03:55.500000","2018-06-01 12:03:55.900000","2018-06-01 12:03:56.000000","2018-06-01 12:03:56.300000","2018-06-01 12:03:56.400000","2018-06-01 12:03:56.500000","2018-06-01 12:03:56.700000","2018-06-01 12:03:56.800000","2018-06-01 12:03:56.900000","2018-06-01 12:03:57.000000","2018-06-01 12:03:57.200000","2018-06-01 12:03:57.300000","2018-06-01 12:03:57.400000","2018-06-01 12:03:57.700000","2018-06-01 12:03:58.000000","2018-06-01 12:03:58.200000","2018-06-01 12:03:58.300000","2018-06-01 12:03:58.400000","2018-06-01 12:03:59.000000","2018-06-01 12:03:59.400000","2018-06-01 12:03:59.600000","2018-06-01 12:04:00.400000","2018-06-01 12:04:00.600000","2018-06-01 12:04:00.700000","2018-06-01 12:04:00.800000","2018-06-01 12:04:00.900000","2018-06-01 12:04:01.200000","2018-06-01 12:04:01.700000","2018-06-01 12:04:02.000000","2018-06-01 12:04:02.200000","2018-06-01 12:04:02.400000","2018-06-01 12:04:02.600000","2018-06-01 12:04:02.800000","2018-06-01 12:04:02.900000","2018-06-01 12:04:03.400000","2018-06-01 12:04:03.700000","2018-06-01 12:04:03.800000","2018-06-01 12:04:04.000000","2018-06-01 12:04:04.100000","2018-06-01 12:04:04.200000","2018-06-01 12:04:04.300000","2018-06-01 12:04:04.400000","2018-06-01 12:04:04.500000","2018-06-01 12:04:04.600000","2018-06-01 12:04:05.000000","2018-06-01 12:04:05.300000","2018-06-01 12:04:05.500000","2018-06-01 12:04:05.900000","2018-06-01 12:04:06.400000","2018-06-01 12:04:06.500000","2018-06-01 12:04:06.600000","2018-06-01 12:04:06.800000","2018-06-01 12:04:07.100000","2018-06-01 12:04:07.200000","2018-06-01 12:04:07.300000","2018-06-01 12:04:07.900000","2018-06-01 12:04:08.300000","2018-06-01 12:04:09.700000","2018-06-01 12:04:10.300000","2018-06-01 12:04:10.900000","2018-06-01 12:04:11.000000","2018-06-01 12:04:11.300000","2018-06-01 12:04:11.800000","2018-06-01 12:04:12.000000","2018-06-01 12:04:12.200000","2018-06-01 12:04:12.500000","2018-06-01 12:04:13.000000","2018-06-01 12:04:13.400000","2018-06-01 12:04:13.600000","2018-06-01 12:04:14.400000","2018-06-01 12:04:14.600000","2018-06-01 12:04:14.700000","2018-06-01 12:04:15.400000","2018-06-01 12:04:15.500000","2018-06-01 12:04:15.800000","2018-06-01 12:04:16.200000","2018-06-01 12:04:16.300000","2018-06-01 12:04:16.900000","2018-06-01 12:04:17.500000","2018-06-01 12:04:17.800000","2018-06-01 12:04:18.400000","2018-06-01 12:04:18.600000","2018-06-01 12:04:19.100000","2018-06-01 12:04:19.400000","2018-06-01 12:04:19.700000","2018-06-01 12:04:19.900000","2018-06-01 12:04:20.000000","2018-06-01 12:04:21.100000","2018-06-01 12:04:21.300000","2018-06-01 12:04:21.500000","2018-06-01 12:04:21.600000","2018-06-01 12:04:22.100000","2018-06-01 12:04:22.800000","2018-06-01 12:04:23.300000","2018-06-01 12:04:23.800000","2018-06-01 12:04:23.900000","2018-06-01 12:04:24.700000","2018-06-01 12:04:25.400000","2018-06-01 12:04:25.900000","2018-06-01 12:04:26.800000","2018-06-01 12:04:26.900000","2018-06-01 12:04:28.000000","2018-06-01 12:04:28.400000","2018-06-01 12:04:28.700000","2018-06-01 12:04:29.000000","2018-06-01 12:04:29.100000","2018-06-01 12:04:29.400000","2018-06-01 12:04:29.900000","2018-06-01 12:04:30.300000","2018-06-01 12:04:30.700000","2018-06-01 12:04:31.000000","2018-06-01 12:04:31.300000","2018-06-01 12:04:31.400000","2018-06-01 12:04:32.100000","2018-06-01 12:04:32.200000","2018-06-01 12:04:32.500000","2018-06-01 12:04:32.700000","2018-06-01 12:04:33.700000","2018-06-01 12:04:33.800000","2018-06-01 12:04:34.200000","2018-06-01 12:04:34.500000","2018-06-01 12:04:35.700000","2018-06-01 12:04:35.800000","2018-06-01 12:04:36.400000","2018-06-01 12:04:36.600000","2018-06-01 12:04:36.700000","2018-06-01 12:04:37.600000","2018-06-01 12:04:38.100000","2018-06-01 12:04:38.200000","2018-06-01 12:04:38.500000","2018-06-01 12:04:38.800000","2018-06-01 12:04:40.100000","2018-06-01 12:04:40.200000","2018-06-01 12:04:40.400000","2018-06-01 12:04:40.700000","2018-06-01 12:04:41.000000","2018-06-01 12:04:41.400000","2018-06-01 12:04:41.600000","2018-06-01 12:04:42.200000","2018-06-01 12:04:42.300000","2018-06-01 12:04:42.800000","2018-06-01 12:04:43.100000","2018-06-01 12:04:43.400000","2018-06-01 12:04:43.700000","2018-06-01 12:04:43.900000","2018-06-01 12:04:44.100000","2018-06-01 12:04:44.400000","2018-06-01 12:04:44.600000","2018-06-01 12:04:44.800000","2018-06-01 12:04:44.900000","2018-06-01 12:04:45.100000","2018-06-01 12:04:45.500000","2018-06-01 12:04:45.900000","2018-06-01 12:04:46.100000","2018-06-01 12:04:46.400000","2018-06-01 12:04:46.600000","2018-06-01 12:04:46.800000","2018-06-01 12:04:46.900000","2018-06-01 12:04:47.000000","2018-06-01 12:04:47.600000","2018-06-01 12:04:47.700000","2018-06-01 12:04:48.000000","2018-06-01 12:04:48.800000","2018-06-01 12:04:48.900000","2018-06-01 12:04:49.400000","2018-06-01 12:04:49.600000","2018-06-01 12:04:49.900000","2018-06-01 12:04:50.700000","2018-06-01 12:04:51.300000","2018-06-01 12:04:51.600000","2018-06-01 12:04:52.400000","2018-06-01 12:04:53.100000","2018-06-01 12:04:53.300000","2018-06-01 12:04:53.400000","2018-06-01 12:04:54.100000","2018-06-01 12:04:54.600000","2018-06-01 12:04:54.800000","2018-06-01 12:04:55.300000","2018-06-01 12:04:56.100000","2018-06-01 12:04:57.600000","2018-06-01 12:04:57.700000","2018-06-01 12:04:58.000000","2018-06-01 12:04:58.300000","2018-06-01 12:04:59.500000","2018-06-01 12:04:59.800000"],"xaxis":"x","y":[108.48,108.44,108.28,108.12,107.93,107.84,107.65,107.36,107.17,106.98,106.89,106.76,106.54,106.31,106.01,105.6,105.13,104.59,104.3,103.98,103.53,103.15,102.86,102.66,102.36,102.12,101.98,101.9,101.75,101.77,101.63,101.59,101.42,101.32,101.12,100.97,100.78,100.42,100.24,100.2,100.09,100.07,100.21,100.44,100.71,101.08,101.28,101.48,101.64,101.95,102.41,102.84,103.23,103.52,103.75,103.78,103.72,103.5,103.37,103.23,103.33,103.51,103.69,103.81,103.91,103.87,103.76,103.68,103.78,103.82,103.93,103.99,104.06,104.21,104.31,104.38,104.48,104.73,104.88,105.03,105.19,105.26,105.23,105.49,105.62,105.62,105.61,105.49,105.31,105.23,105.3,105.35,105.32,105.27,105.13,105,104.87,104.75,104.44,104.11,103.89,103.67,103.45,103.08,102.75,102.35,101.86,101.3,100.59,100.03,99.57,99.2,99.05,98.88,98.73,98.73,98.78,98.69,98.58,98.49,98.47,98.19,97.89,97.63,97.39,97.19,97.07,96.95,96.81,96.75,96.69,96.59,96.34,96.24,96.26,96.23,96.14,96.13,96.14,96.09,95.93,95.73,95.62,95.5,95.51,95.51,95.27,95.25,95.39,95.46,95.45,95.36,95.3,95.41,95.64,95.7,95.9,96.22,96.35,96.59,96.89,97.06,97.14,97,97,96.92,97.02,97.09,97.21,97.3,97.37,97.41,97.44,97.31,97.06,96.72,96.53,96.26,96,95.86,95.7,95.52,95.42,95.34,95.25,95.22,95.09,94.94,94.95,95.03,95.07,95.23,95.35,95.5,95.69,95.97,96.26,96.57,97.02,97.5,97.79,98.02,98.23,98.38,98.51,98.52,98.64,98.91,99.1,99.27,99.37,99.5,99.59,99.66,99.63,99.71,99.79,99.8,99.61,99.5,99.51,99.54,99.4,99.21,99.06,98.9,98.7,98.51,98.44,98.5,98.46,98.59,98.67,98.75,98.79,98.82,98.68,98.36,98.08,97.76,97.42,97.13,96.89,96.64,96.63,96.61,96.66,96.75,96.85,96.97,96.95,96.89,96.83,96.83,96.82,96.78,96.75,96.54,96.35,96.17,95.98,95.75,95.57,95.39,95.08,94.81,94.55,94.39,94.18,93.81,93.62,93.33,93.11,92.86,92.75,92.74,92.72,92.66,92.44,92.25,92.19,92.18,92.1,91.99,92,92.09,92.23,92.41,92.6,92.74,93.03,93.15,93.26,93.42,93.66,93.92,94.06,94.19,94.32,94.33,94.33,94.36,94.37,94.53,94.78,94.87,95.15,95.58,95.85,96.08,96.34,96.72,96.9,97.17,97.4,97.66,97.91,98.2,98.44,98.64,98.89,99.19,99.5,99.76,100.09,100.31,100.62,100.81,100.93,101.18,101.43,101.76,102.14,102.53,102.75,102.97,103.11,103.28,103.4,103.28,103.06,102.89,102.76,102.78,102.67,102.7,102.8,102.86,102.87,102.86,102.95,102.9,102.75,102.7,102.54,102.31,102.19,102.05,101.75,101.47,101.07,100.66,100.32,99.99,99.7,99.58,99.56,99.5,99.49,99.43,99.29,99.19,99.15,99.06,99,99.01,98.94,98.82,98.77,98.77,98.7,98.6,98.7,98.92,99.2,99.46,99.76,100.02,100.39,100.64,100.82,101.14,101.44,101.7,102.08,102.31,102.52,102.59,102.93,103.1,103.19,103.42,103.76,104.1,104.32,104.56,104.81,105.14,105.5,105.8,106.06,106.22,106.23,106.27,106.4,106.5,106.6,106.7,106.6,106.43,106.2,105.8,105.38,104.98,104.66,104.22,103.94,103.67,103.34,103.13,102.91,102.52,102.09,101.78,101.38,101.02,100.62,100.26,99.98,99.78,99.69,99.59,99.5,99.41,99.4,99.3,99.28,99.35,99.53,99.71,99.92,100.13,100.1,99.97,99.88,100.03,100.22,100.28,100.22,100.08,99.89,99.73,99.48,99.23,98.94,98.61,98.45,98.34,98.25,98.39,98.6,98.88,99.06,99.24,99.39,99.55,99.68,99.82,99.78,99.69,99.63,99.36,99.03,98.64,98.19,97.93,97.77,97.65,97.45,97.35,97.29,97.32,97.5,97.84,98.03,98.35,98.62,98.8,98.75,98.84,99.05,99.19,99.28,99.45,99.53,99.84,100.08,100.2,100.21,100.17,100.16,100.31,100.51,100.68,100.99,101.24,101.41,101.52,101.6,101.71,101.98,102.18,102.46,102.6,102.6,102.52,102.35,102.18,102.04,102.02,102.05,102.12,102.23,102.19,102.16,102.15,102.28,102.55,102.82,103.04,103.19,103.44,103.55,103.8,104.08,104.34,104.57,104.76,104.8,105.01,105.27,105.43,105.59,105.84,106.04,105.95,105.94,105.93,105.94,106.16,106.45,106.66,106.98,107.32,107.74,108.12,108.5,108.76,108.97,109.26,109.28,109.36,109.48,109.56,109.76,109.87,109.92,109.82,109.63,109.69,109.9,110.09,110.26,110.41,110.55,110.65,111.02,111.69,112.21,112.95,113.62,114.21,114.87,115.66,116.42,117.1,117.66,118.25,118.74,119.22,119.49,119.8,119.93,120.11,120.3,120.24,120.26,120.48,120.7,121.04,121.42,121.73,122.03,122.4,122.78,123.04,123.38,123.8,124.25,124.69,125.28,125.85,126.28,126.76,127.2,127.61,128.08,128.43,128.79,129.25,129.61,130.11,130.58,131,131.51,132.05,132.76,133.42,134.06,134.51,134.82,135.04,135.31,135.53,135.55,135.63,135.69,135.79,136.04,136.26,136.5,136.54,136.56,136.72,136.95,137.01,137.11,137.29,137.62,138.05,138.4,138.71,139.04,139.32,139.74,140.09,140.38,140.65,140.92,141.17,141.41,141.55,141.75,141.96,142.01,141.97,141.96,141.9,141.89,141.86,141.74,141.65,141.65,141.63,141.53,141.36,141.19,141.06,140.93,140.79,140.61,140.59,140.49,140.44,140.5,140.57,140.7,140.76,140.88,140.94,141,141.08,141.26,141.53,141.8,142.1,142.33,142.63,142.75,142.79,142.75,142.65,142.63,142.54,142.44,142.3,142.14,141.91,141.63,141.47,141.45,141.42,141.4,141.49,141.54,141.59,141.62,141.59,141.68,141.8,141.92,141.99,142.15,142.3,142.36,142.46,142.54,142.6,142.78,143.04,143.43,143.79,143.96,144.14,144.38,144.69,145.01,145.26,145.53,145.78,145.99,146.09,146.32,146.58,146.91,147.17,147.45,147.59,147.67,147.68,147.84,148.12,148.41,148.61,148.63,148.67,148.65,148.64,148.7,148.77,148.74,148.69,148.62,148.64,148.79,149.05,149.22,149.32,149.36,149.65,149.85,150.15,150.47,150.94,151.45,151.82,152.16,152.46,152.78,152.98,153.15,153.48,153.93,154.4,154.77,155.08,155.36,155.48,155.54,155.57,155.53,155.64,155.86,156.14,156.45,156.73,156.9,157.31,157.68,158.06,158.45,158.69,158.87,159.11,159.52,160.04,160.75,161.83,162.62,163.48,164.38,165.23,166,166.54,167.26,167.81,168.18,168.43,168.66,168.74,168.94,168.95,169.17,169.35,169.48,169.66,169.67,169.97,169.99,170,170.13,170.19,169.96,169.55,169.13,168.61,168.24,167.92,167.7,167.22,166.61,166,165.34,164.7,164.16,163.79,163.74,164.1,164.3,164.41,164.2,163.97,163.68,163.36,162.92,162.66,162.55,162.49,162.32,162.16,161.75,161.48,161.16,160.75,160.53,160.46,160.4,160.37,160.46,160.7,160.88,161.12,161.32,161.17,161.16,161.18,161.42,161.69,161.93,161.93,161.76,161.62,161.56,161.48,161.45,161.38,161.32,161.19,161.16,161.19,161.13,161.29,161.59,162.07,162.44,162.76],"yaxis":"y","type":"scatter"}],"layout":{"legend":{"title":{"side":"top","text":"Sym"},"tracegroupgap":0},"template":{"data":{"barpolar":[{"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"type":"carpet"}],"choropleth":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"choropleth"}],"contourcarpet":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"contourcarpet"}],"contour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"contour"}],"heatmap":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"heatmap"}],"histogram2dcontour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"histogram2dcontour"}],"histogram2d":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"histogram2d"}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"mesh3d":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"mesh3d"}],"parcoords":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"parcoords"}],"pie":[{"automargin":true,"type":"pie"}],"scatter3d":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatter3d"}],"scattercarpet":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattercarpet"}],"scattergeo":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergeo"}],"scattergl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergl"}],"scattermapbox":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermapbox"}],"scattermap":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermap"}],"scatterpolargl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolargl"}],"scatterpolar":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolar"}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"scatterternary":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterternary"}],"surface":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"type":"surface"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}]},"layout":{"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"autotypenumbers":"strict","coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]],"sequential":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]],"sequentialminus":[[0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1,"#f0f921"]]},"colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"geo":{"bgcolor":"white","lakecolor":"white","landcolor":"#E5ECF6","showlakes":true,"showland":true,"subunitcolor":"white"},"hoverlabel":{"align":"left"},"hovermode":"closest","mapbox":{"style":"light"},"paper_bgcolor":"white","plot_bgcolor":"#E5ECF6","polar":{"angularaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"bgcolor":"#E5ECF6","radialaxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"scene":{"xaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"},"yaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"},"zaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","gridwidth":2,"linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white"}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"ternary":{"aaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"baxis":{"gridcolor":"white","linecolor":"white","ticks":""},"bgcolor":"#E5ECF6","caxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"title":{"x":0.05},"xaxis":{"automargin":true,"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","zerolinewidth":2},"yaxis":{"automargin":true,"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","zerolinewidth":2}}},"xaxis":{"anchor":"y","domain":[0,1],"side":"bottom","title":{"text":"Timestamp"}},"yaxis":{"anchor":"x","domain":[0,1],"side":"left","title":{"text":"Price"}}},"isDefaultTemplate":true}}}} \ No newline at end of file diff --git a/plugins/plotly-express/docs/snapshots/e644e8e30cd98d4dfbe7e85c04bcb823.json b/plugins/plotly-express/docs/snapshots/e644e8e30cd98d4dfbe7e85c04bcb823.json new file mode 100644 index 000000000..141095172 --- /dev/null +++ b/plugins/plotly-express/docs/snapshots/e644e8e30cd98d4dfbe7e85c04bcb823.json @@ -0,0 +1 @@ +{"file":"events.md","objects":{}} \ No newline at end of file diff --git a/plugins/plotly-express/docs/snapshots/f5a83381ffb81407499f753c24d83925.json b/plugins/plotly-express/docs/snapshots/f5a83381ffb81407499f753c24d83925.json new file mode 100644 index 000000000..5bb4b8e13 --- /dev/null +++ b/plugins/plotly-express/docs/snapshots/f5a83381ffb81407499f753c24d83925.json @@ -0,0 +1 @@ +{"file":"events.md","objects":{"stocks":{"type":"Table","data":{"columns":[{"name":"Timestamp","type":"java.time.Instant"},{"name":"Sym","type":"java.lang.String"},{"name":"Exchange","type":"java.lang.String"},{"name":"Size","type":"long"},{"name":"Price","type":"double"},{"name":"Dollars","type":"double"},{"name":"Side","type":"java.lang.String"},{"name":"SPet500","type":"double"},{"name":"Index","type":"long"},{"name":"Random","type":"double"}],"rows":[[{"value":"2018-06-01 08:00:00.000"},{"value":"BIRD"},{"value":"TPET"},{"value":"245"},{"value":"164.6300"},{"value":"40,334.3500"},{"value":"buy"},{"value":"150.6253"},{"value":"0"},{"value":"0.6253"}],[{"value":"2018-06-01 08:00:00.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,150"},{"value":"102.4700"},{"value":"322,780.5000"},{"value":"buy"},{"value":"150.8910"},{"value":"1"},{"value":"1.4656"}],[{"value":"2018-06-01 08:00:00.200"},{"value":"LIZARD"},{"value":"TPET"},{"value":"100"},{"value":"224.8800"},{"value":"22,488.0000"},{"value":"sell"},{"value":"151.0861"},{"value":"2"},{"value":"-0.1232"}],[{"value":"2018-06-01 08:00:00.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"77"},{"value":"102.5100"},{"value":"7,893.2700"},{"value":"buy"},{"value":"151.3228"},{"value":"3"},{"value":"0.4242"}],[{"value":"2018-06-01 08:00:00.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"848"},{"value":"102.4500"},{"value":"86,877.6000"},{"value":"sell"},{"value":"151.3451"},{"value":"4"},{"value":"-0.9462"}],[{"value":"2018-06-01 08:00:00.500"},{"value":"FISH"},{"value":"PETX"},{"value":"15"},{"value":"127.2400"},{"value":"1,908.6000"},{"value":"buy"},{"value":"151.4074"},{"value":"5"},{"value":"0.2434"}],[{"value":"2018-06-01 08:00:00.600"},{"value":"BIRD"},{"value":"TPET"},{"value":"2,908"},{"value":"164.4900"},{"value":"478,336.9200"},{"value":"sell"},{"value":"151.1998"},{"value":"6"},{"value":"-1.4273"}],[{"value":"2018-06-01 08:00:00.700"},{"value":"DOG"},{"value":"PETX"},{"value":"111"},{"value":"108.4800"},{"value":"12,041.2800"},{"value":"buy"},{"value":"151.1169"},{"value":"7"},{"value":"0.4805"}],[{"value":"2018-06-01 08:00:00.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"102.5300"},{"value":"10,253.0000"},{"value":"buy"},{"value":"151.2862"},{"value":"8"},{"value":"1.3088"}],[{"value":"2018-06-01 08:00:00.900"},{"value":"DOG"},{"value":"PETX"},{"value":"88"},{"value":"108.4400"},{"value":"9,542.7200"},{"value":"sell"},{"value":"151.3445"},{"value":"9"},{"value":"-0.4436"}],[{"value":"2018-06-01 08:00:01.000"},{"value":"FISH"},{"value":"PETX"},{"value":"102"},{"value":"127.2900"},{"value":"12,983.5800"},{"value":"buy"},{"value":"151.4768"},{"value":"10"},{"value":"0.4669"}],[{"value":"2018-06-01 08:00:01.100"},{"value":"DOG"},{"value":"PETX"},{"value":"1,791"},{"value":"108.2800"},{"value":"193,929.4800"},{"value":"sell"},{"value":"151.3650"},{"value":"11"},{"value":"-1.2143"}],[{"value":"2018-06-01 08:00:01.200"},{"value":"DOG"},{"value":"PETX"},{"value":"28"},{"value":"108.1200"},{"value":"3,027.3600"},{"value":"sell"},{"value":"151.2188"},{"value":"12"},{"value":"-0.3019"}],[{"value":"2018-06-01 08:00:01.300"},{"value":"CAT"},{"value":"PETX"},{"value":"1,090"},{"value":"102.7000"},{"value":"111,943.0000"},{"value":"buy"},{"value":"151.2854"},{"value":"13"},{"value":"1.0280"}],[{"value":"2018-06-01 08:00:01.400"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,600"},{"value":"102.9900"},{"value":"370,764.0000"},{"value":"buy"},{"value":"151.6178"},{"value":"14"},{"value":"1.5331"}],[{"value":"2018-06-01 08:00:01.500"},{"value":"LIZARD"},{"value":"TPET"},{"value":"227"},{"value":"224.9300"},{"value":"51,059.1100"},{"value":"buy"},{"value":"152.0005"},{"value":"15"},{"value":"0.6095"}],[{"value":"2018-06-01 08:00:01.600"},{"value":"DOG"},{"value":"PETX"},{"value":"35"},{"value":"107.9300"},{"value":"3,777.5500"},{"value":"sell"},{"value":"152.2546"},{"value":"16"},{"value":"-0.3267"}],[{"value":"2018-06-01 08:00:01.700"},{"value":"DOG"},{"value":"PETX"},{"value":"2"},{"value":"107.8400"},{"value":"215.6800"},{"value":"buy"},{"value":"152.6027"},{"value":"17"},{"value":"0.7731"}],[{"value":"2018-06-01 08:00:01.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,350"},{"value":"103.4000"},{"value":"346,390.0000"},{"value":"buy"},{"value":"153.1590"},{"value":"18"},{"value":"1.4963"}],[{"value":"2018-06-01 08:00:01.900"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.2900"},{"value":"12,729.0000"},{"value":"sell"},{"value":"153.5402"},{"value":"19"},{"value":"-0.4094"}],[{"value":"2018-06-01 08:00:02.000"},{"value":"LIZARD"},{"value":"TPET"},{"value":"15"},{"value":"225.0100"},{"value":"3,375.1500"},{"value":"buy"},{"value":"153.8970"},{"value":"20"},{"value":"0.2463"}],[{"value":"2018-06-01 08:00:02.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"3,780"},{"value":"103.9200"},{"value":"392,817.6000"},{"value":"buy"},{"value":"154.4713"},{"value":"21"},{"value":"1.5570"}],[{"value":"2018-06-01 08:00:02.200"},{"value":"LIZARD"},{"value":"TPET"},{"value":"727"},{"value":"225.1600"},{"value":"163,691.3200"},{"value":"buy"},{"value":"155.1045"},{"value":"22"},{"value":"0.8989"}],[{"value":"2018-06-01 08:00:02.300"},{"value":"LIZARD"},{"value":"TPET"},{"value":"2,250"},{"value":"225.4300"},{"value":"507,217.5000"},{"value":"buy"},{"value":"155.8603"},{"value":"23"},{"value":"1.3097"}],[{"value":"2018-06-01 08:00:02.400"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.3400"},{"value":"12,734.0000"},{"value":"buy"},{"value":"156.5817"},{"value":"24"},{"value":"0.5662"}],[{"value":"2018-06-01 08:00:02.500"},{"value":"DOG"},{"value":"PETX"},{"value":"1,491"},{"value":"107.6500"},{"value":"160,506.1500"},{"value":"sell"},{"value":"156.9654"},{"value":"25"},{"value":"-1.1422"}],[{"value":"2018-06-01 08:00:02.600"},{"value":"FISH"},{"value":"PETX"},{"value":"367"},{"value":"127.3300"},{"value":"46,730.1100"},{"value":"sell"},{"value":"157.1497"},{"value":"26"},{"value":"-0.7155"}],[{"value":"2018-06-01 08:00:02.700"},{"value":"FISH"},{"value":"PETX"},{"value":"293"},{"value":"127.2500"},{"value":"37,284.2500"},{"value":"sell"},{"value":"157.1804"},{"value":"27"},{"value":"-0.6637"}],[{"value":"2018-06-01 08:00:02.800"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"104.2600"},{"value":"10,426.0000"},{"value":"sell"},{"value":"156.9481"},{"value":"28"},{"value":"-1.4200"}],[{"value":"2018-06-01 08:00:02.900"},{"value":"DOG"},{"value":"PETX"},{"value":"1,798"},{"value":"107.3600"},{"value":"193,033.2800"},{"value":"sell"},{"value":"156.5375"},{"value":"29"},{"value":"-1.2159"}],[{"value":"2018-06-01 08:00:03.000"},{"value":"DOG"},{"value":"PETX"},{"value":"410"},{"value":"107.1700"},{"value":"43,939.7000"},{"value":"buy"},{"value":"156.3359"},{"value":"30"},{"value":"0.7425"}],[{"value":"2018-06-01 08:00:03.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,510"},{"value":"104.6700"},{"value":"158,051.7000"},{"value":"buy"},{"value":"156.3789"},{"value":"31"},{"value":"1.1473"}],[{"value":"2018-06-01 08:00:03.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"21"},{"value":"105.0200"},{"value":"2,205.4200"},{"value":"sell"},{"value":"156.3644"},{"value":"32"},{"value":"-0.2738"}],[{"value":"2018-06-01 08:00:03.300"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.1800"},{"value":"12,718.0000"},{"value":"buy"},{"value":"156.3572"},{"value":"33"},{"value":"0.0258"}],[{"value":"2018-06-01 08:00:03.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"106.9800"},{"value":"10,698.0000"},{"value":"sell"},{"value":"156.3239"},{"value":"34"},{"value":"-0.1515"}],[{"value":"2018-06-01 08:00:03.500"},{"value":"DOG"},{"value":"PETX"},{"value":"650"},{"value":"106.8900"},{"value":"69,478.5000"},{"value":"buy"},{"value":"156.4535"},{"value":"35"},{"value":"0.8659"}],[{"value":"2018-06-01 08:00:03.600"},{"value":"DOG"},{"value":"PETX"},{"value":"155"},{"value":"106.7600"},{"value":"16,547.8000"},{"value":"sell"},{"value":"156.4623"},{"value":"36"},{"value":"-0.5371"}],[{"value":"2018-06-01 08:00:03.700"},{"value":"FISH"},{"value":"PETX"},{"value":"12"},{"value":"127.0900"},{"value":"1,525.0800"},{"value":"sell"},{"value":"156.4283"},{"value":"37"},{"value":"-0.2274"}],[{"value":"2018-06-01 08:00:03.800"},{"value":"FISH"},{"value":"PETX"},{"value":"7"},{"value":"127.0300"},{"value":"889.2100"},{"value":"buy"},{"value":"156.4335"},{"value":"38"},{"value":"0.1822"}],[{"value":"2018-06-01 08:00:03.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,310"},{"value":"105.4400"},{"value":"138,126.4000"},{"value":"buy"},{"value":"156.6358"},{"value":"39"},{"value":"1.0928"}],[{"value":"2018-06-01 08:00:04.000"},{"value":"DOG"},{"value":"PETX"},{"value":"1,629"},{"value":"106.5400"},{"value":"173,553.6600"},{"value":"sell"},{"value":"156.5882"},{"value":"40"},{"value":"-1.1765"}],[{"value":"2018-06-01 08:00:04.100"},{"value":"DOG"},{"value":"PETX"},{"value":"4"},{"value":"106.3100"},{"value":"425.2400"},{"value":"sell"},{"value":"156.5216"},{"value":"41"},{"value":"-0.1522"}],[{"value":"2018-06-01 08:00:04.200"},{"value":"FISH"},{"value":"PETX"},{"value":"1"},{"value":"126.9800"},{"value":"126.9800"},{"value":"buy"},{"value":"156.4686"},{"value":"42"},{"value":"0.0083"}],[{"value":"2018-06-01 08:00:04.300"},{"value":"CAT"},{"value":"NYPE"},{"value":"1"},{"value":"105.8200"},{"value":"105.8200"},{"value":"buy"},{"value":"156.4396"},{"value":"43"},{"value":"0.0791"}],[{"value":"2018-06-01 08:00:04.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"106.0100"},{"value":"10,601.0000"},{"value":"sell"},{"value":"156.2255"},{"value":"44"},{"value":"-1.0499"}],[{"value":"2018-06-01 08:00:04.500"},{"value":"CAT"},{"value":"PETX"},{"value":"2"},{"value":"106.1800"},{"value":"212.3600"},{"value":"buy"},{"value":"156.0723"},{"value":"45"},{"value":"0.1217"}],[{"value":"2018-06-01 08:00:04.600"},{"value":"BIRD"},{"value":"TPET"},{"value":"6"},{"value":"164.3500"},{"value":"986.1000"},{"value":"sell"},{"value":"155.9141"},{"value":"46"},{"value":"-0.1806"}],[{"value":"2018-06-01 08:00:04.700"},{"value":"DOG"},{"value":"PETX"},{"value":"3,485"},{"value":"105.6000"},{"value":"368,016.0000"},{"value":"sell"},{"value":"155.5098"},{"value":"47"},{"value":"-1.5161"}],[{"value":"2018-06-01 08:00:04.800"},{"value":"DOG"},{"value":"PETX"},{"value":"727"},{"value":"105.1300"},{"value":"76,429.5100"},{"value":"sell"},{"value":"155.0158"},{"value":"48"},{"value":"-0.8990"}],[{"value":"2018-06-01 08:00:04.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"5,421"},{"value":"106.3400"},{"value":"576,469.1400"},{"value":"sell"},{"value":"154.2929"},{"value":"49"},{"value":"-1.7566"}],[{"value":"2018-06-01 08:00:05.000"},{"value":"DOG"},{"value":"PETX"},{"value":"2,113"},{"value":"104.5900"},{"value":"220,998.6700"},{"value":"sell"},{"value":"153.4685"},{"value":"50"},{"value":"-1.2830"}],[{"value":"2018-06-01 08:00:05.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,130"},{"value":"106.5900"},{"value":"120,446.7000"},{"value":"buy"},{"value":"152.9825"},{"value":"51"},{"value":"1.0424"}],[{"value":"2018-06-01 08:00:05.200"},{"value":"LIZARD"},{"value":"TPET"},{"value":"2"},{"value":"225.5600"},{"value":"451.1200"},{"value":"sell"},{"value":"152.3781"},{"value":"52"},{"value":"-1.1386"}],[{"value":"2018-06-01 08:00:05.300"},{"value":"FISH"},{"value":"PETX"},{"value":"529"},{"value":"127.0100"},{"value":"67,188.2900"},{"value":"buy"},{"value":"152.0299"},{"value":"53"},{"value":"0.8084"}],[{"value":"2018-06-01 08:00:05.400"},{"value":"LIZARD"},{"value":"TPET"},{"value":"293"},{"value":"225.7400"},{"value":"66,141.8200"},{"value":"buy"},{"value":"151.8651"},{"value":"54"},{"value":"0.6639"}],[{"value":"2018-06-01 08:00:05.500"},{"value":"CAT"},{"value":"NYPE"},{"value":"123"},{"value":"106.7600"},{"value":"13,131.4800"},{"value":"sell"},{"value":"151.6401"},{"value":"55"},{"value":"-0.4972"}],[{"value":"2018-06-01 08:00:05.600"},{"value":"LIZARD"},{"value":"TPET"},{"value":"100"},{"value":"225.7600"},{"value":"22,576.0000"},{"value":"sell"},{"value":"151.1844"},{"value":"56"},{"value":"-1.4976"}],[{"value":"2018-06-01 08:00:05.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"1,990"},{"value":"107.0300"},{"value":"212,989.7000"},{"value":"buy"},{"value":"151.0393"},{"value":"57"},{"value":"1.2576"}],[{"value":"2018-06-01 08:00:05.800"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.0700"},{"value":"12,707.0000"},{"value":"buy"},{"value":"150.9961"},{"value":"58"},{"value":"0.4170"}],[{"value":"2018-06-01 08:00:05.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"140"},{"value":"107.3300"},{"value":"15,026.2000"},{"value":"buy"},{"value":"151.0546"},{"value":"59"},{"value":"0.5181"}],[{"value":"2018-06-01 08:00:06.000"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"104.3000"},{"value":"10,430.0000"},{"value":"buy"},{"value":"151.4827"},{"value":"60"},{"value":"2.0973"}],[{"value":"2018-06-01 08:00:06.100"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"103.9800"},{"value":"10,398.0000"},{"value":"sell"},{"value":"151.7109"},{"value":"61"},{"value":"-0.6743"}],[{"value":"2018-06-01 08:00:06.200"},{"value":"LIZARD"},{"value":"TPET"},{"value":"8"},{"value":"225.7600"},{"value":"1,806.0800"},{"value":"sell"},{"value":"151.8624"},{"value":"62"},{"value":"-0.1954"}],[{"value":"2018-06-01 08:00:06.300"},{"value":"DOG"},{"value":"PETX"},{"value":"4,262"},{"value":"103.5300"},{"value":"441,244.8600"},{"value":"sell"},{"value":"151.6925"},{"value":"63"},{"value":"-1.6213"}],[{"value":"2018-06-01 08:00:06.400"},{"value":"DOG"},{"value":"PETX"},{"value":"35"},{"value":"103.1500"},{"value":"3,610.2500"},{"value":"buy"},{"value":"151.6126"},{"value":"64"},{"value":"0.3264"}],[{"value":"2018-06-01 08:00:06.500"},{"value":"DOG"},{"value":"PETX"},{"value":"20"},{"value":"102.8600"},{"value":"2,057.2000"},{"value":"buy"},{"value":"151.6337"},{"value":"65"},{"value":"0.4772"}],[{"value":"2018-06-01 08:00:06.600"},{"value":"CAT"},{"value":"NYPE"},{"value":"534"},{"value":"107.6800"},{"value":"57,501.1200"},{"value":"buy"},{"value":"151.7980"},{"value":"66"},{"value":"0.8109"}],[{"value":"2018-06-01 08:00:06.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"711"},{"value":"108.0800"},{"value":"76,844.8800"},{"value":"buy"},{"value":"152.0942"},{"value":"67"},{"value":"0.8923"}],[{"value":"2018-06-01 08:00:06.800"},{"value":"FISH"},{"value":"PETX"},{"value":"88"},{"value":"127.0900"},{"value":"11,183.9200"},{"value":"sell"},{"value":"152.2562"},{"value":"68"},{"value":"-0.4441"}],[{"value":"2018-06-01 08:00:06.900"},{"value":"FISH"},{"value":"PETX"},{"value":"3,070"},{"value":"127.2500"},{"value":"390,657.5000"},{"value":"buy"},{"value":"152.6523"},{"value":"69"},{"value":"1.4534"}],[{"value":"2018-06-01 08:00:07.000"},{"value":"LIZARD"},{"value":"TPET"},{"value":"300"},{"value":"225.8000"},{"value":"67,740.0000"},{"value":"buy"},{"value":"153.0397"},{"value":"70"},{"value":"0.3482"}],[{"value":"2018-06-01 08:00:07.100"},{"value":"DOG"},{"value":"PETX"},{"value":"371"},{"value":"102.6600"},{"value":"38,086.8600"},{"value":"buy"},{"value":"153.4871"},{"value":"71"},{"value":"0.7180"}],[{"value":"2018-06-01 08:00:07.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"7,480"},{"value":"108.6300"},{"value":"812,552.4000"},{"value":"buy"},{"value":"154.2078"},{"value":"72"},{"value":"1.9555"}],[{"value":"2018-06-01 08:00:07.300"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"102.3600"},{"value":"10,236.0000"},{"value":"sell"},{"value":"154.5609"},{"value":"73"},{"value":"-1.3072"}],[{"value":"2018-06-01 08:00:07.400"},{"value":"BIRD"},{"value":"TPET"},{"value":"428"},{"value":"164.2900"},{"value":"70,316.1200"},{"value":"buy"},{"value":"154.9867"},{"value":"74"},{"value":"0.7535"}],[{"value":"2018-06-01 08:00:07.500"},{"value":"DOG"},{"value":"PETX"},{"value":"99"},{"value":"102.1200"},{"value":"10,109.8800"},{"value":"buy"},{"value":"155.4189"},{"value":"75"},{"value":"0.4616"}],[{"value":"2018-06-01 08:00:07.600"},{"value":"DOG"},{"value":"PETX"},{"value":"347"},{"value":"101.9800"},{"value":"35,387.0600"},{"value":"buy"},{"value":"155.9001"},{"value":"76"},{"value":"0.7026"}],[{"value":"2018-06-01 08:00:07.700"},{"value":"BIRD"},{"value":"TPET"},{"value":"500"},{"value":"164.2600"},{"value":"82,130.0000"},{"value":"buy"},{"value":"156.3253"},{"value":"77"},{"value":"0.1723"}],[{"value":"2018-06-01 08:00:07.800"},{"value":"BIRD"},{"value":"TPET"},{"value":"2,128"},{"value":"164.1100"},{"value":"349,226.0800"},{"value":"sell"},{"value":"156.4403"},{"value":"78"},{"value":"-1.2862"}],[{"value":"2018-06-01 08:00:07.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"12,212"},{"value":"108.9100"},{"value":"1,330,008.9200"},{"value":"sell"},{"value":"156.1171"},{"value":"79"},{"value":"-2.3028"}],[{"value":"2018-06-01 08:00:08.000"},{"value":"CAT"},{"value":"PETX"},{"value":"9"},{"value":"109.1800"},{"value":"982.6200"},{"value":"buy"},{"value":"155.8891"},{"value":"80"},{"value":"0.2025"}],[{"value":"2018-06-01 08:00:08.100"},{"value":"DOG"},{"value":"PETX"},{"value":"98"},{"value":"101.9000"},{"value":"9,986.2000"},{"value":"buy"},{"value":"155.7859"},{"value":"81"},{"value":"0.4606"}],[{"value":"2018-06-01 08:00:08.200"},{"value":"CAT"},{"value":"NYPE"},{"value":"489"},{"value":"109.3400"},{"value":"53,467.2600"},{"value":"sell"},{"value":"155.5587"},{"value":"82"},{"value":"-0.7874"}],[{"value":"2018-06-01 08:00:08.300"},{"value":"DOG"},{"value":"PETX"},{"value":"436"},{"value":"101.7500"},{"value":"44,363.0000"},{"value":"sell"},{"value":"155.2354"},{"value":"83"},{"value":"-0.7578"}],[{"value":"2018-06-01 08:00:08.400"},{"value":"FISH"},{"value":"PETX"},{"value":"2"},{"value":"127.2100"},{"value":"254.4200"},{"value":"sell"},{"value":"154.6404"},{"value":"84"},{"value":"-1.8217"}],[{"value":"2018-06-01 08:00:08.500"},{"value":"CAT"},{"value":"NYPE"},{"value":"309"},{"value":"109.4300"},{"value":"33,813.8700"},{"value":"sell"},{"value":"154.0307"},{"value":"85"},{"value":"-0.6757"}],[{"value":"2018-06-01 08:00:08.600"},{"value":"BIRD"},{"value":"TPET"},{"value":"3,273"},{"value":"163.8300"},{"value":"536,215.5900"},{"value":"sell"},{"value":"153.2625"},{"value":"86"},{"value":"-1.4847"}],[{"value":"2018-06-01 08:00:08.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"28"},{"value":"109.4800"},{"value":"3,065.4400"},{"value":"sell"},{"value":"152.5787"},{"value":"87"},{"value":"-0.3026"}],[{"value":"2018-06-01 08:00:08.800"},{"value":"DOG"},{"value":"PETX"},{"value":"4,020"},{"value":"101.7700"},{"value":"409,115.4000"},{"value":"buy"},{"value":"152.3070"},{"value":"88"},{"value":"1.5903"}],[{"value":"2018-06-01 08:00:08.900"},{"value":"CAT"},{"value":"NYPE"},{"value":"50"},{"value":"109.4200"},{"value":"5,471.0000"},{"value":"sell"},{"value":"151.8779"},{"value":"89"},{"value":"-1.1409"}],[{"value":"2018-06-01 08:00:09.000"},{"value":"CAT"},{"value":"NYPE"},{"value":"12,540"},{"value":"109.5900"},{"value":"1,374,258.6000"},{"value":"buy"},{"value":"151.9476"},{"value":"90"},{"value":"2.3232"}],[{"value":"2018-06-01 08:00:09.100"},{"value":"CAT"},{"value":"NYPE"},{"value":"100"},{"value":"109.7100"},{"value":"10,971.0000"},{"value":"sell"},{"value":"151.9575"},{"value":"91"},{"value":"-0.2603"}],[{"value":"2018-06-01 08:00:09.200"},{"value":"DOG"},{"value":"PETX"},{"value":"4,143"},{"value":"101.6300"},{"value":"421,053.0900"},{"value":"sell"},{"value":"151.6745"},{"value":"92"},{"value":"-1.6061"}],[{"value":"2018-06-01 08:00:09.300"},{"value":"LIZARD"},{"value":"TPET"},{"value":"947"},{"value":"225.7400"},{"value":"213,775.7800"},{"value":"sell"},{"value":"151.2648"},{"value":"93"},{"value":"-0.9818"}],[{"value":"2018-06-01 08:00:09.400"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"101.5900"},{"value":"10,159.0000"},{"value":"buy"},{"value":"151.0986"},{"value":"94"},{"value":"0.9333"}],[{"value":"2018-06-01 08:00:09.500"},{"value":"FISH"},{"value":"PETX"},{"value":"100"},{"value":"127.1200"},{"value":"12,712.0000"},{"value":"sell"},{"value":"150.8477"},{"value":"95"},{"value":"-0.6329"}],[{"value":"2018-06-01 08:00:09.600"},{"value":"DOG"},{"value":"PETX"},{"value":"2,887"},{"value":"101.4200"},{"value":"292,799.5400"},{"value":"sell"},{"value":"150.3843"},{"value":"96"},{"value":"-1.4239"}],[{"value":"2018-06-01 08:00:09.700"},{"value":"CAT"},{"value":"NYPE"},{"value":"20"},{"value":"109.8000"},{"value":"2,196.0000"},{"value":"sell"},{"value":"149.9563"},{"value":"97"},{"value":"-0.2677"}],[{"value":"2018-06-01 08:00:09.800"},{"value":"DOG"},{"value":"PETX"},{"value":"100"},{"value":"101.3200"},{"value":"10,132.0000"},{"value":"buy"},{"value":"149.6898"},{"value":"98"},{"value":"0.4629"}],[{"value":"2018-06-01 08:00:09.900"},{"value":"DOG"},{"value":"PETX"},{"value":"1,130"},{"value":"101.1200"},{"value":"114,265.6000"},{"value":"sell"},{"value":"149.2828"},{"value":"99"},{"value":"-1.0415"}]]}},"stock_detail_panel":{"type":"deephaven.ui.Element","data":{"document":{"__dhElemName":"__main__.stock_detail","props":{"children":{"__dhElemName":"deephaven.ui.components.Flex","props":{"direction":"column","gap":"size-100","flex":"auto","children":[{"__dhObid":0},{"__dhElemName":"deephaven.ui.elements.UITable","props":{"table":{"__dhObid":1},"showQuickFilters":false,"showGroupingColumn":true,"showSearch":false,"reverse":false}}]}}}},"state":"{}"}}}} \ No newline at end of file diff --git a/plugins/plotly-express/docs/snapshots/fe40e15eaa0076a463a1cf31523ee246.json b/plugins/plotly-express/docs/snapshots/fe40e15eaa0076a463a1cf31523ee246.json new file mode 100644 index 000000000..141095172 --- /dev/null +++ b/plugins/plotly-express/docs/snapshots/fe40e15eaa0076a463a1cf31523ee246.json @@ -0,0 +1 @@ +{"file":"events.md","objects":{}} \ No newline at end of file diff --git a/plugins/plotly-express/setup.cfg b/plugins/plotly-express/setup.cfg index a050b4954..2ceefd746 100644 --- a/plugins/plotly-express/setup.cfg +++ b/plugins/plotly-express/setup.cfg @@ -25,7 +25,7 @@ package_dir= =src packages=find_namespace: install_requires = - deephaven-core>=41.1 + deephaven-core>=42.2 deephaven-plugin>=0.6.0 plotly>=6.0.0,<7.0.0 deephaven-plugin-utilities>=0.0.2 diff --git a/plugins/plotly-express/src/deephaven/plot/express/communication/DeephavenFigureListener.py b/plugins/plotly-express/src/deephaven/plot/express/communication/DeephavenFigureListener.py index 99b110405..54476032b 100644 --- a/plugins/plotly-express/src/deephaven/plot/express/communication/DeephavenFigureListener.py +++ b/plugins/plotly-express/src/deephaven/plot/express/communication/DeephavenFigureListener.py @@ -203,6 +203,61 @@ def process_message( except RuntimeError: # trying to send data when the connection is closed, ignore pass + elif message["type"] == "CALLABLE_EVENT": + return self._handle_callable_event(message) + return b"", [] + + def _handle_callable_event( + self, message: dict[str, Any] + ) -> tuple[bytes, list[Any]]: + """ + Handle a CALLABLE_EVENT message. Invokes the Python callback and + optionally returns a response for preventable events. + + Args: + message: The message dict containing callback_id, args, and optionally request_id + + Returns: + The result as a tuple of (payload, references) + """ + from ..types import wrap_callable + + callback_id = message.get("callback_id") + args = message.get("args", {}) + request_id = message.get("request_id") + + figure = self._get_figure() + fn = ( + figure.get_callback_by_id(callback_id) + if figure and callback_id is not None + else None + ) + result = None + + if fn is not None: + try: + result = wrap_callable(fn)(args) + except Exception: + import logging + + logging.getLogger(__name__).exception( + "Error in plotly event callback %s", callback_id + ) + + # For preventable events, send back the result via the client connection + if request_id is not None: + response = json.dumps( + { + "type": "CALLABLE_RESPONSE", + "request_id": request_id, + "result": result, + } + ) + try: + self._connection.on_data(response.encode(), []) + except RuntimeError: + pass + return b"", [] def __del__(self): diff --git a/plugins/plotly-express/src/deephaven/plot/express/deephaven_figure/DeephavenFigure.py b/plugins/plotly-express/src/deephaven/plot/express/deephaven_figure/DeephavenFigure.py index 63f0cc5b4..d5afb4bac 100644 --- a/plugins/plotly-express/src/deephaven/plot/express/deephaven_figure/DeephavenFigure.py +++ b/plugins/plotly-express/src/deephaven/plot/express/deephaven_figure/DeephavenFigure.py @@ -700,6 +700,71 @@ def __init__( self._sent_filter_columns = False + # Event callback storage + self._callbacks: dict[str, Callable] = {} + self._callback_ids: dict[str, str] = {} + self._next_callback_id: int = 0 + + def _register_callback(self, event_name: str, fn: Callable) -> None: + """Register an event callback. + + Args: + event_name: The event name (e.g. 'on_click') + fn: The callback function + """ + callback_id = f"cb_{self._next_callback_id}" + self._next_callback_id += 1 + self._callbacks[event_name] = fn + self._callback_ids[event_name] = callback_id + + def _register_callbacks(self, callbacks: dict[str, Callable]) -> None: + """Register multiple event callbacks. + + Args: + callbacks: A dict of event_name -> callback function + """ + for event_name, fn in callbacks.items(): + self._register_callback(event_name, fn) + + def get_callback_by_id(self, callback_id: str) -> Callable | None: + """Get a callback function by its ID. + + Args: + callback_id: The callback ID + + Returns: + The callback function, or None if not found + """ + for event_name, cid in self._callback_ids.items(): + if cid == callback_id: + return self._callbacks.get(event_name) + return None + + def _is_preventable(self, event_name: str) -> bool: + """Check if an event is preventable. + + Args: + event_name: The event name + + Returns: + True if the event is preventable + """ + from ..types import ALWAYS_PREVENTABLE_EVENTS, HIERARCHICAL_TRACE_TYPES + + if event_name in ALWAYS_PREVENTABLE_EVENTS: + return True + if event_name == "on_click": + # on_click is preventable only on hierarchical charts + if self._plotly_fig: + for trace in self._plotly_fig.data: + if ( + hasattr(trace, "type") + and trace.type in HIERARCHICAL_TRACE_TYPES # type: ignore[union-attr] + ): + return True + return False + return False + def copy_mappings(self: DeephavenFigure, offset: int = 0) -> list[DataMapping]: """Copy all DataMappings within this figure, adding a specific offset @@ -783,6 +848,17 @@ def to_json(self: DeephavenFigure, exporter: Exporter) -> str: } self._sent_filter_columns = True + # Event callbacks + if self._callback_ids: + deephaven["callbacks"] = self._callback_ids + preventable = [ + cid + for name, cid in self._callback_ids.items() + if self._is_preventable(name) + ] + if preventable: + deephaven["preventable_callbacks"] = preventable + payload = {"plotly": plotly, "deephaven": deephaven} return json.dumps(payload) @@ -905,6 +981,13 @@ def get_figure(self) -> DeephavenFigure | None: # filters are managed through the nodes, so attach them when creating the figure figure.filter_columns = self._head_node.filter_columns + if figure is not None and self._callback_ids: + # callbacks are registered on the top-level figure and need to be + # transferred to the inner figure so to_json includes them + figure._callbacks = self._callbacks + figure._callback_ids = self._callback_ids + figure._next_callback_id = self._next_callback_id + return figure def get_plotly_fig(self) -> Figure | None: @@ -1004,6 +1087,10 @@ def copy(self) -> DeephavenFigure: self._filter_columns, ) new_figure._head_node = self._head_node.copy_graph() + # Shallow-copy callback state so per-session copies share callable references + new_figure._callbacks = self._callbacks.copy() + new_figure._callback_ids = self._callback_ids.copy() + new_figure._next_callback_id = self._next_callback_id return new_figure def recreate_figure(self) -> None: diff --git a/plugins/plotly-express/src/deephaven/plot/express/plots/_event_callbacks.py b/plugins/plotly-express/src/deephaven/plot/express/plots/_event_callbacks.py new file mode 100644 index 000000000..42ccd0eb2 --- /dev/null +++ b/plugins/plotly-express/src/deephaven/plot/express/plots/_event_callbacks.py @@ -0,0 +1,79 @@ +from __future__ import annotations + +from typing import Any, Callable, Iterable + +from plotly.graph_objs import Figure + +from ..deephaven_figure import DeephavenFigure + + +# Event callback param names that should be extracted from chart function args +_EVENT_CALLBACK_PARAMS = frozenset( + { + "on_click", + "on_press", + "on_double_click", + "on_double_press", + "on_selected", + "on_deselect", + "on_relayout", + "on_legend_click", + "on_legend_double_click", + "on_click_annotation", + "on_web_gl_context_lost", + } +) + + +def _extract_event_callbacks(args: dict[str, Any]) -> dict[str, Callable]: + """Extract event callback params from args dict + + Resolves aliases (on_press -> on_click, on_double_press -> on_double_click). + + Args: + args: The chart function arguments (modified in place) + + Returns: + A dict of event_name -> callback function for valid callbacks + """ + callbacks: dict[str, Callable] = {} + for param in _EVENT_CALLBACK_PARAMS: + fn = args.pop(param, None) + if fn is not None: + # Resolve aliases + if param == "on_press": + callbacks.setdefault("on_click", fn) + elif param == "on_double_press": + callbacks.setdefault("on_double_click", fn) + else: + callbacks[param] = fn + return callbacks + + +def _merge_event_callbacks( + new_fig: DeephavenFigure, + child_figs: Iterable[DeephavenFigure | Figure | None], + direct_callbacks: dict[str, Callable], +) -> None: + """Register event callbacks on a composed (layered/subplotted) figure. + + Callbacks inherited from the child figures are registered first, so that + when multiple children define the same event the last child wins. The + direct callbacks (passed as keyword arguments to the composing function, + with aliases already resolved) are registered afterwards so they take + precedence over the inherited ones. + + Args: + new_fig: The composed figure to register callbacks on. + child_figs: The figures being composed. Non-DeephavenFigure entries + (plotly Figures or None) are skipped since they carry no callbacks. + direct_callbacks: Event name to callback passed directly to the + composing function, with aliases already resolved. + """ + for fig in child_figs: + if isinstance(fig, DeephavenFigure): + for event_name, fn in fig._callbacks.items(): + new_fig._register_callback(event_name, fn) + + for event_name, fn in direct_callbacks.items(): + new_fig._register_callback(event_name, fn) diff --git a/plugins/plotly-express/src/deephaven/plot/express/plots/_layer.py b/plugins/plotly-express/src/deephaven/plot/express/plots/_layer.py index d750bf8a6..73dfa9645 100644 --- a/plugins/plotly-express/src/deephaven/plot/express/plots/_layer.py +++ b/plugins/plotly-express/src/deephaven/plot/express/plots/_layer.py @@ -8,6 +8,9 @@ from ..deephaven_figure import DeephavenFigure from ..shared import default_callback, unsafe_figure_update_wrapper +from ..types import ChartPreventableEventCallback, ChartEventCallback + +from ._event_callbacks import _extract_event_callbacks, _merge_event_callbacks class LayerSpecDict(TypedDict, total=False): @@ -567,6 +570,17 @@ def layer( specs: list[LayerSpecDict] | None = None, unsafe_update_figure: Callable = default_callback, title: str | None = None, + on_click: ChartPreventableEventCallback | None = None, + on_press: ChartPreventableEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + on_double_press: ChartEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_legend_click: ChartPreventableEventCallback | None = None, + on_legend_double_click: ChartPreventableEventCallback | None = None, + on_click_annotation: ChartEventCallback | None = None, + on_web_gl_context_lost: ChartEventCallback | None = None, ) -> DeephavenFigure: """Layers the provided figures. Be default, the layouts are sequentially applied, so the layouts of later figures will override the layouts of early @@ -595,6 +609,35 @@ def layer( title: Overall title to set for the figure. If an empty string, no overall title is shown. + on_click: A callback function that is called when a point is clicked. + The function receives a dict with 'points' (list of clicked point data) + and 'modifiers' (keyboard state). On hierarchical charts (sunburst, + treemap, icicle), return False to prevent drill-down. The return value + is ignored on other chart types. + on_press: Alias for on_click. + on_double_click: A callback function that is called on double-click. + The function receives a dict with 'modifiers' (keyboard state). + Fires in zoom/pan mode only; in select mode, on_deselect fires instead. + on_double_press: Alias for on_double_click. + on_selected: A callback function that is called when a box or lasso + selection completes. The function receives a dict with 'points' (list + of selected point data), 'range' (for box select), and 'modifiers'. + on_deselect: A callback function that is called when the selection is + cleared (e.g., by double-clicking on an empty area). + on_relayout: A callback function that is called when the chart layout + changes due to user interaction (pan, zoom, axis reset, etc.). The + function receives a dict of the layout keys that changed. + on_legend_click: A callback function that is called when a legend item + is clicked. Return False to prevent the default trace visibility toggle. + Return True or None to allow it. + on_legend_double_click: A callback function that is called when a legend + item is double-clicked. Return False to prevent the default + isolate/show-all toggle. Return True or None to allow it. + on_click_annotation: A callback function that is called when an + annotation is clicked. The function receives a dict with 'index', + 'annotation', and 'modifiers'. + on_web_gl_context_lost: A callback function that is called when the + WebGL rendering context is lost (e.g., GPU reclaims resources). Returns: The layered chart @@ -603,6 +646,11 @@ def layer( args = locals() + # Pull the event callbacks out of args (resolving aliases) so they aren't + # reapplied when the layer is recreated from the graph. They are registered + # on the composed figure below. + direct_callbacks = _extract_event_callbacks(args) + func = atomic_layer new_fig = atomic_layer( @@ -619,4 +667,6 @@ def layer( new_fig.add_layer_to_graph(func, args, exec_ctx) + _merge_event_callbacks(new_fig, figs, direct_callbacks) + return new_fig diff --git a/plugins/plotly-express/src/deephaven/plot/express/plots/_private_utils.py b/plugins/plotly-express/src/deephaven/plot/express/plots/_private_utils.py index a7eec4b2b..c1395574c 100644 --- a/plugins/plotly-express/src/deephaven/plot/express/plots/_private_utils.py +++ b/plugins/plotly-express/src/deephaven/plot/express/plots/_private_utils.py @@ -14,6 +14,7 @@ import deephaven.pandas as dhpd from ._layer import atomic_layer +from ._event_callbacks import _extract_event_callbacks from .PartitionManager import PartitionManager from ..deephaven_figure import generate_figure, DeephavenFigure from ..shared import args_copy, unsafe_figure_update_wrapper @@ -419,6 +420,9 @@ def process_args( render_args = locals() render_args["args"]["table"] = convert_to_table(render_args["args"]["table"]) + # Extract event callbacks before they flow into plotly figure creation + event_callbacks = _extract_event_callbacks(render_args["args"]) + # Calendar is directly sent to the client for processing calendar = retrieve_calendar(render_args) @@ -462,6 +466,9 @@ def process_args( new_fig.calendar = calendar + # Register event callbacks on the figure + new_fig._register_callbacks(event_callbacks) + return new_fig diff --git a/plugins/plotly-express/src/deephaven/plot/express/plots/area.py b/plugins/plotly-express/src/deephaven/plot/express/plots/area.py index cc11e771d..03972569c 100644 --- a/plugins/plotly-express/src/deephaven/plot/express/plots/area.py +++ b/plugins/plotly-express/src/deephaven/plot/express/plots/area.py @@ -7,7 +7,11 @@ from ._private_utils import process_args from ..shared import default_callback from ..deephaven_figure import DeephavenFigure, Calendar -from ..types import PartitionableTableLike +from ..types import ( + PartitionableTableLike, + ChartPreventableEventCallback, + ChartEventCallback, +) def area( @@ -54,6 +58,17 @@ def area( template: str | None = None, calendar: Calendar = False, unsafe_update_figure: Callable = default_callback, + on_click: ChartPreventableEventCallback | None = None, + on_press: ChartPreventableEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + on_double_press: ChartEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_legend_click: ChartPreventableEventCallback | None = None, + on_legend_double_click: ChartPreventableEventCallback | None = None, + on_click_annotation: ChartEventCallback | None = None, + on_web_gl_context_lost: ChartEventCallback | None = None, ) -> DeephavenFigure: """Returns an area chart @@ -166,6 +181,35 @@ def area( Note that the existing data traces should not be removed. This may lead to unexpected behavior if traces are modified in a way that break data mappings. + on_click: A callback function that is called when a point is clicked. + The function receives a dict with 'points' (list of clicked point data) + and 'modifiers' (keyboard state). On hierarchical charts (sunburst, + treemap, icicle), return False to prevent drill-down. The return value + is ignored on other chart types. + on_press: Alias for on_click. + on_double_click: A callback function that is called on double-click. + The function receives a dict with 'modifiers' (keyboard state). + Fires in zoom/pan mode only; in select mode, on_deselect fires instead. + on_double_press: Alias for on_double_click. + on_selected: A callback function that is called when a box or lasso + selection completes. The function receives a dict with 'points' (list + of selected point data), 'range' (for box select), and 'modifiers'. + on_deselect: A callback function that is called when the selection is + cleared (e.g., by double-clicking on an empty area). + on_relayout: A callback function that is called when the chart layout + changes due to user interaction (pan, zoom, axis reset, etc.). The + function receives a dict of the layout keys that changed. + on_legend_click: A callback function that is called when a legend item + is clicked. Return False to prevent the default trace visibility toggle. + Return True or None to allow it. + on_legend_double_click: A callback function that is called when a legend + item is double-clicked. Return False to prevent the default + isolate/show-all toggle. Return True or None to allow it. + on_click_annotation: A callback function that is called when an + annotation is clicked. The function receives a dict with 'index', + 'annotation', and 'modifiers'. + on_web_gl_context_lost: A callback function that is called when the + WebGL rendering context is lost (e.g., GPU reclaims resources). Returns: A DeephavenFigure that contains the area chart diff --git a/plugins/plotly-express/src/deephaven/plot/express/plots/bar.py b/plugins/plotly-express/src/deephaven/plot/express/plots/bar.py index 6d08c13ab..92e105718 100644 --- a/plugins/plotly-express/src/deephaven/plot/express/plots/bar.py +++ b/plugins/plotly-express/src/deephaven/plot/express/plots/bar.py @@ -10,7 +10,12 @@ from ._private_utils import validate_common_args, process_args from ..shared import default_callback from ..deephaven_figure import generate_figure, DeephavenFigure -from ..types import PartitionableTableLike, Orientation +from ..types import ( + PartitionableTableLike, + ChartPreventableEventCallback, + ChartEventCallback, + Orientation, +) def bar( @@ -54,6 +59,17 @@ def bar( title: str | None = None, template: str | None = None, unsafe_update_figure: Callable = default_callback, + on_click: ChartPreventableEventCallback | None = None, + on_press: ChartPreventableEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + on_double_press: ChartEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_legend_click: ChartPreventableEventCallback | None = None, + on_legend_double_click: ChartPreventableEventCallback | None = None, + on_click_annotation: ChartEventCallback | None = None, + on_web_gl_context_lost: ChartEventCallback | None = None, ) -> DeephavenFigure: """Returns a bar chart @@ -159,6 +175,35 @@ def bar( Note that the existing data traces should not be removed. This may lead to unexpected behavior if traces are modified in a way that break data mappings. + on_click: A callback function that is called when a point is clicked. + The function receives a dict with 'points' (list of clicked point data) + and 'modifiers' (keyboard state). On hierarchical charts (sunburst, + treemap, icicle), return False to prevent drill-down. The return value + is ignored on other chart types. + on_press: Alias for on_click. + on_double_click: A callback function that is called on double-click. + The function receives a dict with 'modifiers' (keyboard state). + Fires in zoom/pan mode only; in select mode, on_deselect fires instead. + on_double_press: Alias for on_double_click. + on_selected: A callback function that is called when a box or lasso + selection completes. The function receives a dict with 'points' (list + of selected point data), 'range' (for box select), and 'modifiers'. + on_deselect: A callback function that is called when the selection is + cleared (e.g., by double-clicking on an empty area). + on_relayout: A callback function that is called when the chart layout + changes due to user interaction (pan, zoom, axis reset, etc.). The + function receives a dict of the layout keys that changed. + on_legend_click: A callback function that is called when a legend item + is clicked. Return False to prevent the default trace visibility toggle. + Return True or None to allow it. + on_legend_double_click: A callback function that is called when a legend + item is double-clicked. Return False to prevent the default + isolate/show-all toggle. Return True or None to allow it. + on_click_annotation: A callback function that is called when an + annotation is clicked. The function receives a dict with 'index', + 'annotation', and 'modifiers'. + on_web_gl_context_lost: A callback function that is called when the + WebGL rendering context is lost (e.g., GPU reclaims resources). Returns: A DeephavenFigure that contains the bar chart @@ -257,6 +302,17 @@ def timeline( title: str | None = None, template: str | None = None, unsafe_update_figure: Callable = default_callback, + on_click: ChartPreventableEventCallback | None = None, + on_press: ChartPreventableEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + on_double_press: ChartEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_legend_click: ChartPreventableEventCallback | None = None, + on_legend_double_click: ChartPreventableEventCallback | None = None, + on_click_annotation: ChartEventCallback | None = None, + on_web_gl_context_lost: ChartEventCallback | None = None, ) -> DeephavenFigure: """Returns a timeline (otherwise known as a gantt chart) @@ -329,6 +385,35 @@ def timeline( Note that the existing data traces should not be removed. This may lead to unexpected behavior if traces are modified in a way that break data mappings. + on_click: A callback function that is called when a point is clicked. + The function receives a dict with 'points' (list of clicked point data) + and 'modifiers' (keyboard state). On hierarchical charts (sunburst, + treemap, icicle), return False to prevent drill-down. The return value + is ignored on other chart types. + on_press: Alias for on_click. + on_double_click: A callback function that is called on double-click. + The function receives a dict with 'modifiers' (keyboard state). + Fires in zoom/pan mode only; in select mode, on_deselect fires instead. + on_double_press: Alias for on_double_click. + on_selected: A callback function that is called when a box or lasso + selection completes. The function receives a dict with 'points' (list + of selected point data), 'range' (for box select), and 'modifiers'. + on_deselect: A callback function that is called when the selection is + cleared (e.g., by double-clicking on an empty area). + on_relayout: A callback function that is called when the chart layout + changes due to user interaction (pan, zoom, axis reset, etc.). The + function receives a dict of the layout keys that changed. + on_legend_click: A callback function that is called when a legend item + is clicked. Return False to prevent the default trace visibility toggle. + Return True or None to allow it. + on_legend_double_click: A callback function that is called when a legend + item is double-clicked. Return False to prevent the default + isolate/show-all toggle. Return True or None to allow it. + on_click_annotation: A callback function that is called when an + annotation is clicked. The function receives a dict with 'index', + 'annotation', and 'modifiers'. + on_web_gl_context_lost: A callback function that is called when the + WebGL rendering context is lost (e.g., GPU reclaims resources). Returns: A DeephavenFigure that contains the timeline chart diff --git a/plugins/plotly-express/src/deephaven/plot/express/plots/distribution.py b/plugins/plotly-express/src/deephaven/plot/express/plots/distribution.py index 0fd67ccb2..1571e5fbe 100644 --- a/plugins/plotly-express/src/deephaven/plot/express/plots/distribution.py +++ b/plugins/plotly-express/src/deephaven/plot/express/plots/distribution.py @@ -18,7 +18,12 @@ HISTOGRAM_DEFAULTS, default_callback, ) -from ..types import PartitionableTableLike, Orientation +from ..types import ( + PartitionableTableLike, + ChartPreventableEventCallback, + ChartEventCallback, + Orientation, +) def violin( @@ -44,6 +49,17 @@ def violin( title: str | None = None, template: str | None = None, unsafe_update_figure: Callable = VIOLIN_DEFAULTS["unsafe_update_figure"], + on_click: ChartPreventableEventCallback | None = None, + on_press: ChartPreventableEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + on_double_press: ChartEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_legend_click: ChartPreventableEventCallback | None = None, + on_legend_double_click: ChartPreventableEventCallback | None = None, + on_click_annotation: ChartEventCallback | None = None, + on_web_gl_context_lost: ChartEventCallback | None = None, ) -> DeephavenFigure: """Returns a violin chart @@ -103,6 +119,35 @@ def violin( Note that the existing data traces should not be removed. This may lead to unexpected behavior if traces are modified in a way that break data mappings. + on_click: A callback function that is called when a point is clicked. + The function receives a dict with 'points' (list of clicked point data) + and 'modifiers' (keyboard state). On hierarchical charts (sunburst, + treemap, icicle), return False to prevent drill-down. The return value + is ignored on other chart types. + on_press: Alias for on_click. + on_double_click: A callback function that is called on double-click. + The function receives a dict with 'modifiers' (keyboard state). + Fires in zoom/pan mode only; in select mode, on_deselect fires instead. + on_double_press: Alias for on_double_click. + on_selected: A callback function that is called when a box or lasso + selection completes. The function receives a dict with 'points' (list + of selected point data), 'range' (for box select), and 'modifiers'. + on_deselect: A callback function that is called when the selection is + cleared (e.g., by double-clicking on an empty area). + on_relayout: A callback function that is called when the chart layout + changes due to user interaction (pan, zoom, axis reset, etc.). The + function receives a dict of the layout keys that changed. + on_legend_click: A callback function that is called when a legend item + is clicked. Return False to prevent the default trace visibility toggle. + Return True or None to allow it. + on_legend_double_click: A callback function that is called when a legend + item is double-clicked. Return False to prevent the default + isolate/show-all toggle. Return True or None to allow it. + on_click_annotation: A callback function that is called when an + annotation is clicked. The function receives a dict with 'index', + 'annotation', and 'modifiers'. + on_web_gl_context_lost: A callback function that is called when the + WebGL rendering context is lost (e.g., GPU reclaims resources). Returns: DeephavenFigure: A DeephavenFigure that contains the violin chart @@ -136,6 +181,17 @@ def box( title: str | None = None, template: str | None = None, unsafe_update_figure: Callable = BOX_DEFAULTS["unsafe_update_figure"], + on_click: ChartPreventableEventCallback | None = None, + on_press: ChartPreventableEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + on_double_press: ChartEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_legend_click: ChartPreventableEventCallback | None = None, + on_legend_double_click: ChartPreventableEventCallback | None = None, + on_click_annotation: ChartEventCallback | None = None, + on_web_gl_context_lost: ChartEventCallback | None = None, ) -> DeephavenFigure: """Returns a box chart @@ -195,6 +251,35 @@ def box( Note that the existing data traces should not be removed. This may lead to unexpected behavior if traces are modified in a way that break data mappings. + on_click: A callback function that is called when a point is clicked. + The function receives a dict with 'points' (list of clicked point data) + and 'modifiers' (keyboard state). On hierarchical charts (sunburst, + treemap, icicle), return False to prevent drill-down. The return value + is ignored on other chart types. + on_press: Alias for on_click. + on_double_click: A callback function that is called on double-click. + The function receives a dict with 'modifiers' (keyboard state). + Fires in zoom/pan mode only; in select mode, on_deselect fires instead. + on_double_press: Alias for on_double_click. + on_selected: A callback function that is called when a box or lasso + selection completes. The function receives a dict with 'points' (list + of selected point data), 'range' (for box select), and 'modifiers'. + on_deselect: A callback function that is called when the selection is + cleared (e.g., by double-clicking on an empty area). + on_relayout: A callback function that is called when the chart layout + changes due to user interaction (pan, zoom, axis reset, etc.). The + function receives a dict of the layout keys that changed. + on_legend_click: A callback function that is called when a legend item + is clicked. Return False to prevent the default trace visibility toggle. + Return True or None to allow it. + on_legend_double_click: A callback function that is called when a legend + item is double-clicked. Return False to prevent the default + isolate/show-all toggle. Return True or None to allow it. + on_click_annotation: A callback function that is called when an + annotation is clicked. The function receives a dict with 'index', + 'annotation', and 'modifiers'. + on_web_gl_context_lost: A callback function that is called when the + WebGL rendering context is lost (e.g., GPU reclaims resources). Returns: A DeephavenFigure that contains the box chart @@ -226,6 +311,17 @@ def strip( title: str | None = None, template: str | None = None, unsafe_update_figure: Callable = STRIP_DEFAULTS["unsafe_update_figure"], + on_click: ChartPreventableEventCallback | None = None, + on_press: ChartPreventableEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + on_double_press: ChartEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_legend_click: ChartPreventableEventCallback | None = None, + on_legend_double_click: ChartPreventableEventCallback | None = None, + on_click_annotation: ChartEventCallback | None = None, + on_web_gl_context_lost: ChartEventCallback | None = None, ) -> DeephavenFigure: """Returns a strip chart @@ -281,6 +377,35 @@ def strip( Note that the existing data traces should not be removed. This may lead to unexpected behavior if traces are modified in a way that break data mappings. + on_click: A callback function that is called when a point is clicked. + The function receives a dict with 'points' (list of clicked point data) + and 'modifiers' (keyboard state). On hierarchical charts (sunburst, + treemap, icicle), return False to prevent drill-down. The return value + is ignored on other chart types. + on_press: Alias for on_click. + on_double_click: A callback function that is called on double-click. + The function receives a dict with 'modifiers' (keyboard state). + Fires in zoom/pan mode only; in select mode, on_deselect fires instead. + on_double_press: Alias for on_double_click. + on_selected: A callback function that is called when a box or lasso + selection completes. The function receives a dict with 'points' (list + of selected point data), 'range' (for box select), and 'modifiers'. + on_deselect: A callback function that is called when the selection is + cleared (e.g., by double-clicking on an empty area). + on_relayout: A callback function that is called when the chart layout + changes due to user interaction (pan, zoom, axis reset, etc.). The + function receives a dict of the layout keys that changed. + on_legend_click: A callback function that is called when a legend item + is clicked. Return False to prevent the default trace visibility toggle. + Return True or None to allow it. + on_legend_double_click: A callback function that is called when a legend + item is double-clicked. Return False to prevent the default + isolate/show-all toggle. Return True or None to allow it. + on_click_annotation: A callback function that is called when an + annotation is clicked. The function receives a dict with 'index', + 'annotation', and 'modifiers'. + on_web_gl_context_lost: A callback function that is called when the + WebGL rendering context is lost (e.g., GPU reclaims resources). Returns: A DeephavenFigure that contains the strip chart @@ -372,6 +497,17 @@ def histogram( title: str | None = None, template: str | None = None, unsafe_update_figure: Callable = default_callback, + on_click: ChartPreventableEventCallback | None = None, + on_press: ChartPreventableEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + on_double_press: ChartEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_legend_click: ChartPreventableEventCallback | None = None, + on_legend_double_click: ChartPreventableEventCallback | None = None, + on_click_annotation: ChartEventCallback | None = None, + on_web_gl_context_lost: ChartEventCallback | None = None, ) -> DeephavenFigure: """Returns a histogram @@ -460,6 +596,35 @@ def histogram( Note that the existing data traces should not be removed. This may lead to unexpected behavior if traces are modified in a way that break data mappings. + on_click: A callback function that is called when a point is clicked. + The function receives a dict with 'points' (list of clicked point data) + and 'modifiers' (keyboard state). On hierarchical charts (sunburst, + treemap, icicle), return False to prevent drill-down. The return value + is ignored on other chart types. + on_press: Alias for on_click. + on_double_click: A callback function that is called on double-click. + The function receives a dict with 'modifiers' (keyboard state). + Fires in zoom/pan mode only; in select mode, on_deselect fires instead. + on_double_press: Alias for on_double_click. + on_selected: A callback function that is called when a box or lasso + selection completes. The function receives a dict with 'points' (list + of selected point data), 'range' (for box select), and 'modifiers'. + on_deselect: A callback function that is called when the selection is + cleared (e.g., by double-clicking on an empty area). + on_relayout: A callback function that is called when the chart layout + changes due to user interaction (pan, zoom, axis reset, etc.). The + function receives a dict of the layout keys that changed. + on_legend_click: A callback function that is called when a legend item + is clicked. Return False to prevent the default trace visibility toggle. + Return True or None to allow it. + on_legend_double_click: A callback function that is called when a legend + item is double-clicked. Return False to prevent the default + isolate/show-all toggle. Return True or None to allow it. + on_click_annotation: A callback function that is called when an + annotation is clicked. The function receives a dict with 'index', + 'annotation', and 'modifiers'. + on_web_gl_context_lost: A callback function that is called when the + WebGL rendering context is lost (e.g., GPU reclaims resources). Returns: DeephavenFigure: A DeephavenFigure that contains the histogram diff --git a/plugins/plotly-express/src/deephaven/plot/express/plots/financial.py b/plugins/plotly-express/src/deephaven/plot/express/plots/financial.py index 82c1fb23a..1dc8fb6e5 100644 --- a/plugins/plotly-express/src/deephaven/plot/express/plots/financial.py +++ b/plugins/plotly-express/src/deephaven/plot/express/plots/financial.py @@ -5,7 +5,7 @@ from ._private_utils import process_args from ..shared import default_callback from ..deephaven_figure import draw_ohlc, draw_candlestick, DeephavenFigure, Calendar -from ..types import TableLike +from ..types import TableLike, ChartPreventableEventCallback, ChartEventCallback def ohlc( @@ -23,6 +23,17 @@ def ohlc( xaxis_titles: list[str] | None = None, calendar: Calendar = False, unsafe_update_figure: Callable = default_callback, + on_click: ChartPreventableEventCallback | None = None, + on_press: ChartPreventableEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + on_double_press: ChartEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_legend_click: ChartPreventableEventCallback | None = None, + on_legend_double_click: ChartPreventableEventCallback | None = None, + on_click_annotation: ChartEventCallback | None = None, + on_web_gl_context_lost: ChartEventCallback | None = None, ) -> DeephavenFigure: """Returns an ohlc chart @@ -64,7 +75,35 @@ def ohlc( Note that the existing data traces should not be removed. This may lead to unexpected behavior if traces are modified in a way that break data mappings. - + on_click: A callback function that is called when a point is clicked. + The function receives a dict with 'points' (list of clicked point data) + and 'modifiers' (keyboard state). On hierarchical charts (sunburst, + treemap, icicle), return False to prevent drill-down. The return value + is ignored on other chart types. + on_press: Alias for on_click. + on_double_click: A callback function that is called on double-click. + The function receives a dict with 'modifiers' (keyboard state). + Fires in zoom/pan mode only; in select mode, on_deselect fires instead. + on_double_press: Alias for on_double_click. + on_selected: A callback function that is called when a box or lasso + selection completes. The function receives a dict with 'points' (list + of selected point data), 'range' (for box select), and 'modifiers'. + on_deselect: A callback function that is called when the selection is + cleared (e.g., by double-clicking on an empty area). + on_relayout: A callback function that is called when the chart layout + changes due to user interaction (pan, zoom, axis reset, etc.). The + function receives a dict of the layout keys that changed. + on_legend_click: A callback function that is called when a legend item + is clicked. Return False to prevent the default trace visibility toggle. + Return True or None to allow it. + on_legend_double_click: A callback function that is called when a legend + item is double-clicked. Return False to prevent the default + isolate/show-all toggle. Return True or None to allow it. + on_click_annotation: A callback function that is called when an + annotation is clicked. The function receives a dict with 'index', + 'annotation', and 'modifiers'. + on_web_gl_context_lost: A callback function that is called when the + WebGL rendering context is lost (e.g., GPU reclaims resources). Returns: DeephavenFigure: A DeephavenFigure that contains the ohlc chart @@ -93,6 +132,17 @@ def candlestick( xaxis_titles: list[str] | None = None, calendar: Calendar = False, unsafe_update_figure: Callable = default_callback, + on_click: ChartPreventableEventCallback | None = None, + on_press: ChartPreventableEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + on_double_press: ChartEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_legend_click: ChartPreventableEventCallback | None = None, + on_legend_double_click: ChartPreventableEventCallback | None = None, + on_click_annotation: ChartEventCallback | None = None, + on_web_gl_context_lost: ChartEventCallback | None = None, ) -> DeephavenFigure: """Returns a candlestick chart @@ -134,6 +184,35 @@ def candlestick( Note that the existing data traces should not be removed. This may lead to unexpected behavior if traces are modified in a way that break data mappings. + on_click: A callback function that is called when a point is clicked. + The function receives a dict with 'points' (list of clicked point data) + and 'modifiers' (keyboard state). On hierarchical charts (sunburst, + treemap, icicle), return False to prevent drill-down. The return value + is ignored on other chart types. + on_press: Alias for on_click. + on_double_click: A callback function that is called on double-click. + The function receives a dict with 'modifiers' (keyboard state). + Fires in zoom/pan mode only; in select mode, on_deselect fires instead. + on_double_press: Alias for on_double_click. + on_selected: A callback function that is called when a box or lasso + selection completes. The function receives a dict with 'points' (list + of selected point data), 'range' (for box select), and 'modifiers'. + on_deselect: A callback function that is called when the selection is + cleared (e.g., by double-clicking on an empty area). + on_relayout: A callback function that is called when the chart layout + changes due to user interaction (pan, zoom, axis reset, etc.). The + function receives a dict of the layout keys that changed. + on_legend_click: A callback function that is called when a legend item + is clicked. Return False to prevent the default trace visibility toggle. + Return True or None to allow it. + on_legend_double_click: A callback function that is called when a legend + item is double-clicked. Return False to prevent the default + isolate/show-all toggle. Return True or None to allow it. + on_click_annotation: A callback function that is called when an + annotation is clicked. The function receives a dict with 'index', + 'annotation', and 'modifiers'. + on_web_gl_context_lost: A callback function that is called when the + WebGL rendering context is lost (e.g., GPU reclaims resources). Returns: DeephavenFigure: A DeephavenFigure that contains the candlestick chart diff --git a/plugins/plotly-express/src/deephaven/plot/express/plots/heatmap.py b/plugins/plotly-express/src/deephaven/plot/express/plots/heatmap.py index dba2db79a..c78c26e61 100644 --- a/plugins/plotly-express/src/deephaven/plot/express/plots/heatmap.py +++ b/plugins/plotly-express/src/deephaven/plot/express/plots/heatmap.py @@ -6,7 +6,7 @@ from ._private_utils import process_args from ..deephaven_figure import DeephavenFigure, draw_density_heatmap -from ..types import TableLike +from ..types import TableLike, ChartPreventableEventCallback, ChartEventCallback def density_heatmap( @@ -32,6 +32,17 @@ def density_heatmap( title: str | None = None, template: str | None = None, unsafe_update_figure: Callable = default_callback, + on_click: ChartPreventableEventCallback | None = None, + on_press: ChartPreventableEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + on_double_press: ChartEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_legend_click: ChartPreventableEventCallback | None = None, + on_legend_double_click: ChartPreventableEventCallback | None = None, + on_click_annotation: ChartEventCallback | None = None, + on_web_gl_context_lost: ChartEventCallback | None = None, ) -> DeephavenFigure: """ A density heatmap creates a grid of colored bins. Each bin represents an aggregation of data points in that region. @@ -79,8 +90,21 @@ def density_heatmap( Note that the existing data traces should not be removed. This may lead to unexpected behavior if traces are modified in a way that break data mappings. - - + on_click: A callback function that is called when a point is clicked. + The function receives a dict with 'points' and 'modifiers'. On + hierarchical charts, return False to prevent drill-down. + on_press: Alias for on_click. + on_double_click: A callback that fires on double-click (zoom/pan mode only). + on_double_press: Alias for on_double_click. + on_selected: A callback that fires when a box or lasso selection completes. + on_deselect: A callback that fires when the selection is cleared. + on_relayout: A callback that fires when the layout changes (pan, zoom, axis reset). + on_legend_click: A callback that fires when a legend item is clicked. + Return False to prevent the trace visibility toggle. + on_legend_double_click: A callback that fires when a legend item is + double-clicked. Return False to prevent isolate/show-all. + on_click_annotation: A callback that fires when an annotation is clicked. + on_web_gl_context_lost: A callback that fires when the WebGL context is lost. Returns: DeephavenFigure: A DeephavenFigure that contains the density heatmap diff --git a/plugins/plotly-express/src/deephaven/plot/express/plots/hierarchical.py b/plugins/plotly-express/src/deephaven/plot/express/plots/hierarchical.py index 0929236e2..38d3bbbcd 100644 --- a/plugins/plotly-express/src/deephaven/plot/express/plots/hierarchical.py +++ b/plugins/plotly-express/src/deephaven/plot/express/plots/hierarchical.py @@ -7,7 +7,7 @@ from ._private_utils import process_args from ..shared import default_callback from ..deephaven_figure import DeephavenFigure -from ..types import TableLike +from ..types import TableLike, ChartPreventableEventCallback, ChartEventCallback def treemap( @@ -30,6 +30,17 @@ def treemap( branchvalues: str | None = None, maxdepth: int | None = None, unsafe_update_figure: Callable = default_callback, + on_click: ChartPreventableEventCallback | None = None, + on_press: ChartPreventableEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + on_double_press: ChartEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_legend_click: ChartPreventableEventCallback | None = None, + on_legend_double_click: ChartPreventableEventCallback | None = None, + on_click_annotation: ChartEventCallback | None = None, + on_web_gl_context_lost: ChartEventCallback | None = None, ) -> DeephavenFigure: """Returns a treemap chart @@ -73,6 +84,35 @@ def treemap( Note that the existing data traces should not be removed. This may lead to unexpected behavior if traces are modified in a way that break data mappings. + on_click: A callback function that is called when a point is clicked. + The function receives a dict with 'points' (list of clicked point data) + and 'modifiers' (keyboard state). On hierarchical charts (sunburst, + treemap, icicle), return False to prevent drill-down. The return value + is ignored on other chart types. + on_press: Alias for on_click. + on_double_click: A callback function that is called on double-click. + The function receives a dict with 'modifiers' (keyboard state). + Fires in zoom/pan mode only; in select mode, on_deselect fires instead. + on_double_press: Alias for on_double_click. + on_selected: A callback function that is called when a box or lasso + selection completes. The function receives a dict with 'points' (list + of selected point data), 'range' (for box select), and 'modifiers'. + on_deselect: A callback function that is called when the selection is + cleared (e.g., by double-clicking on an empty area). + on_relayout: A callback function that is called when the chart layout + changes due to user interaction (pan, zoom, axis reset, etc.). The + function receives a dict of the layout keys that changed. + on_legend_click: A callback function that is called when a legend item + is clicked. Return False to prevent the default trace visibility toggle. + Return True or None to allow it. + on_legend_double_click: A callback function that is called when a legend + item is double-clicked. Return False to prevent the default + isolate/show-all toggle. Return True or None to allow it. + on_click_annotation: A callback function that is called when an + annotation is clicked. The function receives a dict with 'index', + 'annotation', and 'modifiers'. + on_web_gl_context_lost: A callback function that is called when the + WebGL rendering context is lost (e.g., GPU reclaims resources). Returns: DeephavenFigure: A DeephavenFigure that contains the treemap chart @@ -103,6 +143,17 @@ def sunburst( branchvalues: str | None = None, maxdepth: int | None = None, unsafe_update_figure: Callable = default_callback, + on_click: ChartPreventableEventCallback | None = None, + on_press: ChartPreventableEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + on_double_press: ChartEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_legend_click: ChartPreventableEventCallback | None = None, + on_legend_double_click: ChartPreventableEventCallback | None = None, + on_click_annotation: ChartEventCallback | None = None, + on_web_gl_context_lost: ChartEventCallback | None = None, ) -> DeephavenFigure: """Returns a sunburst chart @@ -146,6 +197,35 @@ def sunburst( Note that the existing data traces should not be removed. This may lead to unexpected behavior if traces are modified in a way that break data mappings. + on_click: A callback function that is called when a point is clicked. + The function receives a dict with 'points' (list of clicked point data) + and 'modifiers' (keyboard state). On hierarchical charts (sunburst, + treemap, icicle), return False to prevent drill-down. The return value + is ignored on other chart types. + on_press: Alias for on_click. + on_double_click: A callback function that is called on double-click. + The function receives a dict with 'modifiers' (keyboard state). + Fires in zoom/pan mode only; in select mode, on_deselect fires instead. + on_double_press: Alias for on_double_click. + on_selected: A callback function that is called when a box or lasso + selection completes. The function receives a dict with 'points' (list + of selected point data), 'range' (for box select), and 'modifiers'. + on_deselect: A callback function that is called when the selection is + cleared (e.g., by double-clicking on an empty area). + on_relayout: A callback function that is called when the chart layout + changes due to user interaction (pan, zoom, axis reset, etc.). The + function receives a dict of the layout keys that changed. + on_legend_click: A callback function that is called when a legend item + is clicked. Return False to prevent the default trace visibility toggle. + Return True or None to allow it. + on_legend_double_click: A callback function that is called when a legend + item is double-clicked. Return False to prevent the default + isolate/show-all toggle. Return True or None to allow it. + on_click_annotation: A callback function that is called when an + annotation is clicked. The function receives a dict with 'index', + 'annotation', and 'modifiers'. + on_web_gl_context_lost: A callback function that is called when the + WebGL rendering context is lost (e.g., GPU reclaims resources). Returns: A DeephavenFigure that contains the sunburst chart @@ -176,6 +256,17 @@ def icicle( branchvalues: str | None = None, maxdepth: int | None = None, unsafe_update_figure: Callable = default_callback, + on_click: ChartPreventableEventCallback | None = None, + on_press: ChartPreventableEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + on_double_press: ChartEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_legend_click: ChartPreventableEventCallback | None = None, + on_legend_double_click: ChartPreventableEventCallback | None = None, + on_click_annotation: ChartEventCallback | None = None, + on_web_gl_context_lost: ChartEventCallback | None = None, ) -> DeephavenFigure: """Returns a icicle chart @@ -219,6 +310,35 @@ def icicle( Note that the existing data traces should not be removed. This may lead to unexpected behavior if traces are modified in a way that break data mappings. + on_click: A callback function that is called when a point is clicked. + The function receives a dict with 'points' (list of clicked point data) + and 'modifiers' (keyboard state). On hierarchical charts (sunburst, + treemap, icicle), return False to prevent drill-down. The return value + is ignored on other chart types. + on_press: Alias for on_click. + on_double_click: A callback function that is called on double-click. + The function receives a dict with 'modifiers' (keyboard state). + Fires in zoom/pan mode only; in select mode, on_deselect fires instead. + on_double_press: Alias for on_double_click. + on_selected: A callback function that is called when a box or lasso + selection completes. The function receives a dict with 'points' (list + of selected point data), 'range' (for box select), and 'modifiers'. + on_deselect: A callback function that is called when the selection is + cleared (e.g., by double-clicking on an empty area). + on_relayout: A callback function that is called when the chart layout + changes due to user interaction (pan, zoom, axis reset, etc.). The + function receives a dict of the layout keys that changed. + on_legend_click: A callback function that is called when a legend item + is clicked. Return False to prevent the default trace visibility toggle. + Return True or None to allow it. + on_legend_double_click: A callback function that is called when a legend + item is double-clicked. Return False to prevent the default + isolate/show-all toggle. Return True or None to allow it. + on_click_annotation: A callback function that is called when an + annotation is clicked. The function receives a dict with 'index', + 'annotation', and 'modifiers'. + on_web_gl_context_lost: A callback function that is called when the + WebGL rendering context is lost (e.g., GPU reclaims resources). Returns: A DeephavenFigure that contains the icicle chart @@ -252,6 +372,17 @@ def funnel( title: str | None = None, template: str | None = None, unsafe_update_figure: Callable = default_callback, + on_click: ChartPreventableEventCallback | None = None, + on_press: ChartPreventableEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + on_double_press: ChartEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_legend_click: ChartPreventableEventCallback | None = None, + on_legend_double_click: ChartPreventableEventCallback | None = None, + on_click_annotation: ChartEventCallback | None = None, + on_web_gl_context_lost: ChartEventCallback | None = None, ) -> DeephavenFigure: """Returns a funnel chart @@ -307,6 +438,35 @@ def funnel( Note that the existing data traces should not be removed. This may lead to unexpected behavior if traces are modified in a way that break data mappings. + on_click: A callback function that is called when a point is clicked. + The function receives a dict with 'points' (list of clicked point data) + and 'modifiers' (keyboard state). On hierarchical charts (sunburst, + treemap, icicle), return False to prevent drill-down. The return value + is ignored on other chart types. + on_press: Alias for on_click. + on_double_click: A callback function that is called on double-click. + The function receives a dict with 'modifiers' (keyboard state). + Fires in zoom/pan mode only; in select mode, on_deselect fires instead. + on_double_press: Alias for on_double_click. + on_selected: A callback function that is called when a box or lasso + selection completes. The function receives a dict with 'points' (list + of selected point data), 'range' (for box select), and 'modifiers'. + on_deselect: A callback function that is called when the selection is + cleared (e.g., by double-clicking on an empty area). + on_relayout: A callback function that is called when the chart layout + changes due to user interaction (pan, zoom, axis reset, etc.). The + function receives a dict of the layout keys that changed. + on_legend_click: A callback function that is called when a legend item + is clicked. Return False to prevent the default trace visibility toggle. + Return True or None to allow it. + on_legend_double_click: A callback function that is called when a legend + item is double-clicked. Return False to prevent the default + isolate/show-all toggle. Return True or None to allow it. + on_click_annotation: A callback function that is called when an + annotation is clicked. The function receives a dict with 'index', + 'annotation', and 'modifiers'. + on_web_gl_context_lost: A callback function that is called when the + WebGL rendering context is lost (e.g., GPU reclaims resources). Returns: DeephavenFigure: A DeephavenFigure that contains the funnel chart @@ -330,6 +490,17 @@ def funnel_area( template: str | None = None, opacity: float | None = None, unsafe_update_figure: Callable = default_callback, + on_click: ChartPreventableEventCallback | None = None, + on_press: ChartPreventableEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + on_double_press: ChartEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_legend_click: ChartPreventableEventCallback | None = None, + on_legend_double_click: ChartPreventableEventCallback | None = None, + on_click_annotation: ChartEventCallback | None = None, + on_web_gl_context_lost: ChartEventCallback | None = None, ) -> DeephavenFigure: """Returns a funnel area chart @@ -360,6 +531,35 @@ def funnel_area( Note that the existing data traces should not be removed. This may lead to unexpected behavior if traces are modified in a way that break data mappings. + on_click: A callback function that is called when a point is clicked. + The function receives a dict with 'points' (list of clicked point data) + and 'modifiers' (keyboard state). On hierarchical charts (sunburst, + treemap, icicle), return False to prevent drill-down. The return value + is ignored on other chart types. + on_press: Alias for on_click. + on_double_click: A callback function that is called on double-click. + The function receives a dict with 'modifiers' (keyboard state). + Fires in zoom/pan mode only; in select mode, on_deselect fires instead. + on_double_press: Alias for on_double_click. + on_selected: A callback function that is called when a box or lasso + selection completes. The function receives a dict with 'points' (list + of selected point data), 'range' (for box select), and 'modifiers'. + on_deselect: A callback function that is called when the selection is + cleared (e.g., by double-clicking on an empty area). + on_relayout: A callback function that is called when the chart layout + changes due to user interaction (pan, zoom, axis reset, etc.). The + function receives a dict of the layout keys that changed. + on_legend_click: A callback function that is called when a legend item + is clicked. Return False to prevent the default trace visibility toggle. + Return True or None to allow it. + on_legend_double_click: A callback function that is called when a legend + item is double-clicked. Return False to prevent the default + isolate/show-all toggle. Return True or None to allow it. + on_click_annotation: A callback function that is called when an + annotation is clicked. The function receives a dict with 'index', + 'annotation', and 'modifiers'. + on_web_gl_context_lost: A callback function that is called when the + WebGL rendering context is lost (e.g., GPU reclaims resources). Returns: A DeephavenFigure that contains the funnel area chart diff --git a/plugins/plotly-express/src/deephaven/plot/express/plots/indicator.py b/plugins/plotly-express/src/deephaven/plot/express/plots/indicator.py index 5afb32c69..8bb000283 100644 --- a/plugins/plotly-express/src/deephaven/plot/express/plots/indicator.py +++ b/plugins/plotly-express/src/deephaven/plot/express/plots/indicator.py @@ -4,7 +4,13 @@ from ..shared import default_callback from ..deephaven_figure import DeephavenFigure, draw_indicator -from ..types import PartitionableTableLike, Gauge, StyleDict +from ..types import ( + PartitionableTableLike, + ChartPreventableEventCallback, + ChartEventCallback, + Gauge, + StyleDict, +) from ._private_utils import process_args @@ -38,6 +44,17 @@ def indicator( cols: int | None = None, title: str | None = None, unsafe_update_figure: Callable = default_callback, + on_click: ChartPreventableEventCallback | None = None, + on_press: ChartPreventableEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + on_double_press: ChartEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_legend_click: ChartPreventableEventCallback | None = None, + on_legend_double_click: ChartPreventableEventCallback | None = None, + on_click_annotation: ChartEventCallback | None = None, + on_web_gl_context_lost: ChartEventCallback | None = None, ) -> DeephavenFigure: """ Create an indicator chart. @@ -116,6 +133,35 @@ def indicator( Note that the existing data traces should not be removed. This may lead to unexpected behavior if traces are modified in a way that break data mappings. + on_click: A callback function that is called when a point is clicked. + The function receives a dict with 'points' (list of clicked point data) + and 'modifiers' (keyboard state). On hierarchical charts (sunburst, + treemap, icicle), return False to prevent drill-down. The return value + is ignored on other chart types. + on_press: Alias for on_click. + on_double_click: A callback function that is called on double-click. + The function receives a dict with 'modifiers' (keyboard state). + Fires in zoom/pan mode only; in select mode, on_deselect fires instead. + on_double_press: Alias for on_double_click. + on_selected: A callback function that is called when a box or lasso + selection completes. The function receives a dict with 'points' (list + of selected point data), 'range' (for box select), and 'modifiers'. + on_deselect: A callback function that is called when the selection is + cleared (e.g., by double-clicking on an empty area). + on_relayout: A callback function that is called when the chart layout + changes due to user interaction (pan, zoom, axis reset, etc.). The + function receives a dict of the layout keys that changed. + on_legend_click: A callback function that is called when a legend item + is clicked. Return False to prevent the default trace visibility toggle. + Return True or None to allow it. + on_legend_double_click: A callback function that is called when a legend + item is double-clicked. Return False to prevent the default + isolate/show-all toggle. Return True or None to allow it. + on_click_annotation: A callback function that is called when an + annotation is clicked. The function receives a dict with 'index', + 'annotation', and 'modifiers'. + on_web_gl_context_lost: A callback function that is called when the + WebGL rendering context is lost (e.g., GPU reclaims resources). Returns: A DeephavenFigure that contains the indicator chart diff --git a/plugins/plotly-express/src/deephaven/plot/express/plots/line.py b/plugins/plotly-express/src/deephaven/plot/express/plots/line.py index 3514fa6af..bb6e2f568 100644 --- a/plugins/plotly-express/src/deephaven/plot/express/plots/line.py +++ b/plugins/plotly-express/src/deephaven/plot/express/plots/line.py @@ -7,7 +7,11 @@ from ._private_utils import process_args from ..shared import default_callback from ..deephaven_figure import DeephavenFigure, Calendar -from ..types import PartitionableTableLike +from ..types import ( + PartitionableTableLike, + ChartPreventableEventCallback, + ChartEventCallback, +) def line( @@ -61,6 +65,17 @@ def line( render_mode: str = "webgl", calendar: Calendar = False, unsafe_update_figure: Callable = default_callback, + on_click: ChartPreventableEventCallback | None = None, + on_press: ChartPreventableEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + on_double_press: ChartEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_legend_click: ChartPreventableEventCallback | None = None, + on_legend_double_click: ChartPreventableEventCallback | None = None, + on_click_annotation: ChartEventCallback | None = None, + on_web_gl_context_lost: ChartEventCallback | None = None, ) -> DeephavenFigure: """Returns a line chart @@ -197,7 +212,35 @@ def line( Note that the existing data traces should not be removed. This may lead to unexpected behavior if traces are modified in a way that break data mappings. - + on_click: A callback function that is called when a point is clicked. + The function receives a dict with 'points' (list of clicked point data) + and 'modifiers' (keyboard state). On hierarchical charts (sunburst, + treemap, icicle), return False to prevent drill-down. The return value + is ignored on other chart types. + on_press: Alias for on_click. + on_double_click: A callback function that is called on double-click. + The function receives a dict with 'modifiers' (keyboard state). + Fires in zoom/pan mode only; in select mode, on_deselect fires instead. + on_double_press: Alias for on_double_click. + on_selected: A callback function that is called when a box or lasso + selection completes. The function receives a dict with 'points' (list + of selected point data), 'range' (for box select), and 'modifiers'. + on_deselect: A callback function that is called when the selection is + cleared (e.g., by double-clicking on an empty area). + on_relayout: A callback function that is called when the chart layout + changes due to user interaction (pan, zoom, axis reset, etc.). The + function receives a dict of the layout keys that changed. + on_legend_click: A callback function that is called when a legend item + is clicked. Return False to prevent the default trace visibility toggle. + Return True or None to allow it. + on_legend_double_click: A callback function that is called when a legend + item is double-clicked. Return False to prevent the default + isolate/show-all toggle. Return True or None to allow it. + on_click_annotation: A callback function that is called when an + annotation is clicked. The function receives a dict with 'index', + 'annotation', and 'modifiers'. + on_web_gl_context_lost: A callback function that is called when the + WebGL rendering context is lost (e.g., GPU reclaims resources). Returns: DeephavenFigure: A DeephavenFigure that contains the line chart @@ -257,6 +300,17 @@ def line_3d( title: str | None = None, template: str | None = None, unsafe_update_figure: Callable = default_callback, + on_click: ChartPreventableEventCallback | None = None, + on_press: ChartPreventableEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + on_double_press: ChartEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_legend_click: ChartPreventableEventCallback | None = None, + on_legend_double_click: ChartPreventableEventCallback | None = None, + on_click_annotation: ChartEventCallback | None = None, + on_web_gl_context_lost: ChartEventCallback | None = None, ) -> DeephavenFigure: """Returns a 3D line chart @@ -369,6 +423,35 @@ def line_3d( Note that the existing data traces should not be removed. This may lead to unexpected behavior if traces are modified in a way that break data mappings. + on_click: A callback function that is called when a point is clicked. + The function receives a dict with 'points' (list of clicked point data) + and 'modifiers' (keyboard state). On hierarchical charts (sunburst, + treemap, icicle), return False to prevent drill-down. The return value + is ignored on other chart types. + on_press: Alias for on_click. + on_double_click: A callback function that is called on double-click. + The function receives a dict with 'modifiers' (keyboard state). + Fires in zoom/pan mode only; in select mode, on_deselect fires instead. + on_double_press: Alias for on_double_click. + on_selected: A callback function that is called when a box or lasso + selection completes. The function receives a dict with 'points' (list + of selected point data), 'range' (for box select), and 'modifiers'. + on_deselect: A callback function that is called when the selection is + cleared (e.g., by double-clicking on an empty area). + on_relayout: A callback function that is called when the chart layout + changes due to user interaction (pan, zoom, axis reset, etc.). The + function receives a dict of the layout keys that changed. + on_legend_click: A callback function that is called when a legend item + is clicked. Return False to prevent the default trace visibility toggle. + Return True or None to allow it. + on_legend_double_click: A callback function that is called when a legend + item is double-clicked. Return False to prevent the default + isolate/show-all toggle. Return True or None to allow it. + on_click_annotation: A callback function that is called when an + annotation is clicked. The function receives a dict with 'index', + 'annotation', and 'modifiers'. + on_web_gl_context_lost: A callback function that is called when the + WebGL rendering context is lost (e.g., GPU reclaims resources). Returns: DeephavenFigure: A DeephavenFigure that contains the 3D line chart @@ -423,6 +506,17 @@ def line_polar( template: str | None = None, render_mode: str = "svg", unsafe_update_figure: Callable = default_callback, + on_click: ChartPreventableEventCallback | None = None, + on_press: ChartPreventableEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + on_double_press: ChartEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_legend_click: ChartPreventableEventCallback | None = None, + on_legend_double_click: ChartPreventableEventCallback | None = None, + on_click_annotation: ChartEventCallback | None = None, + on_web_gl_context_lost: ChartEventCallback | None = None, ) -> DeephavenFigure: """Returns a polar scatter chart @@ -516,7 +610,35 @@ def line_polar( Note that the existing data traces should not be removed. This may lead to unexpected behavior if traces are modified in a way that break data mappings. - + on_click: A callback function that is called when a point is clicked. + The function receives a dict with 'points' (list of clicked point data) + and 'modifiers' (keyboard state). On hierarchical charts (sunburst, + treemap, icicle), return False to prevent drill-down. The return value + is ignored on other chart types. + on_press: Alias for on_click. + on_double_click: A callback function that is called on double-click. + The function receives a dict with 'modifiers' (keyboard state). + Fires in zoom/pan mode only; in select mode, on_deselect fires instead. + on_double_press: Alias for on_double_click. + on_selected: A callback function that is called when a box or lasso + selection completes. The function receives a dict with 'points' (list + of selected point data), 'range' (for box select), and 'modifiers'. + on_deselect: A callback function that is called when the selection is + cleared (e.g., by double-clicking on an empty area). + on_relayout: A callback function that is called when the chart layout + changes due to user interaction (pan, zoom, axis reset, etc.). The + function receives a dict of the layout keys that changed. + on_legend_click: A callback function that is called when a legend item + is clicked. Return False to prevent the default trace visibility toggle. + Return True or None to allow it. + on_legend_double_click: A callback function that is called when a legend + item is double-clicked. Return False to prevent the default + isolate/show-all toggle. Return True or None to allow it. + on_click_annotation: A callback function that is called when an + annotation is clicked. The function receives a dict with 'index', + 'annotation', and 'modifiers'. + on_web_gl_context_lost: A callback function that is called when the + WebGL rendering context is lost (e.g., GPU reclaims resources). Returns: DeephavenFigure: A DeephavenFigure that contains the polar scatter chart @@ -566,6 +688,17 @@ def line_ternary( title: str | None = None, template: str | None = None, unsafe_update_figure: Callable = default_callback, + on_click: ChartPreventableEventCallback | None = None, + on_press: ChartPreventableEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + on_double_press: ChartEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_legend_click: ChartPreventableEventCallback | None = None, + on_legend_double_click: ChartPreventableEventCallback | None = None, + on_click_annotation: ChartEventCallback | None = None, + on_web_gl_context_lost: ChartEventCallback | None = None, ) -> DeephavenFigure: """Returns a ternary line chart @@ -650,6 +783,35 @@ def line_ternary( Note that the existing data traces should not be removed. This may lead to unexpected behavior if traces are modified in a way that break data mappings. + on_click: A callback function that is called when a point is clicked. + The function receives a dict with 'points' (list of clicked point data) + and 'modifiers' (keyboard state). On hierarchical charts (sunburst, + treemap, icicle), return False to prevent drill-down. The return value + is ignored on other chart types. + on_press: Alias for on_click. + on_double_click: A callback function that is called on double-click. + The function receives a dict with 'modifiers' (keyboard state). + Fires in zoom/pan mode only; in select mode, on_deselect fires instead. + on_double_press: Alias for on_double_click. + on_selected: A callback function that is called when a box or lasso + selection completes. The function receives a dict with 'points' (list + of selected point data), 'range' (for box select), and 'modifiers'. + on_deselect: A callback function that is called when the selection is + cleared (e.g., by double-clicking on an empty area). + on_relayout: A callback function that is called when the chart layout + changes due to user interaction (pan, zoom, axis reset, etc.). The + function receives a dict of the layout keys that changed. + on_legend_click: A callback function that is called when a legend item + is clicked. Return False to prevent the default trace visibility toggle. + Return True or None to allow it. + on_legend_double_click: A callback function that is called when a legend + item is double-clicked. Return False to prevent the default + isolate/show-all toggle. Return True or None to allow it. + on_click_annotation: A callback function that is called when an + annotation is clicked. The function receives a dict with 'index', + 'annotation', and 'modifiers'. + on_web_gl_context_lost: A callback function that is called when the + WebGL rendering context is lost (e.g., GPU reclaims resources). Returns: DeephavenFigure: A DeephavenFigure that contains the ternary line chart diff --git a/plugins/plotly-express/src/deephaven/plot/express/plots/maps.py b/plugins/plotly-express/src/deephaven/plot/express/plots/maps.py index ece19a736..7740e91ec 100644 --- a/plugins/plotly-express/src/deephaven/plot/express/plots/maps.py +++ b/plugins/plotly-express/src/deephaven/plot/express/plots/maps.py @@ -8,7 +8,12 @@ from ._private_utils import process_args from ..shared import default_callback from ..deephaven_figure import DeephavenFigure -from ..types import PartitionableTableLike, TableLike +from ..types import ( + PartitionableTableLike, + ChartPreventableEventCallback, + ChartEventCallback, + TableLike, +) class MapCenter(TypedDict): @@ -65,6 +70,17 @@ def scatter_geo( title: str | None = None, template: str | None = None, unsafe_update_figure: Callable = default_callback, + on_click: ChartPreventableEventCallback | None = None, + on_press: ChartPreventableEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + on_double_press: ChartEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_legend_click: ChartPreventableEventCallback | None = None, + on_legend_double_click: ChartPreventableEventCallback | None = None, + on_click_annotation: ChartEventCallback | None = None, + on_web_gl_context_lost: ChartEventCallback | None = None, ) -> DeephavenFigure: """ Create a scatter_geo plot @@ -163,6 +179,21 @@ def scatter_geo( Note that the existing data traces should not be removed. This may lead to unexpected behavior if traces are modified in a way that break data mappings. + on_click: A callback function that is called when a point is clicked. + The function receives a dict with 'points' and 'modifiers'. On + hierarchical charts, return False to prevent drill-down. + on_press: Alias for on_click. + on_double_click: A callback that fires on double-click (zoom/pan mode only). + on_double_press: Alias for on_double_click. + on_selected: A callback that fires when a box or lasso selection completes. + on_deselect: A callback that fires when the selection is cleared. + on_relayout: A callback that fires when the layout changes (pan, zoom, axis reset). + on_legend_click: A callback that fires when a legend item is clicked. + Return False to prevent the trace visibility toggle. + on_legend_double_click: A callback that fires when a legend item is + double-clicked. Return False to prevent isolate/show-all. + on_click_annotation: A callback that fires when an annotation is clicked. + on_web_gl_context_lost: A callback that fires when the WebGL context is lost. Returns: DeephavenFigure: A DeephavenFigure that contains the scatter_geo figure @@ -256,6 +287,17 @@ def scatter_map( title: str | None = None, template: str | None = None, unsafe_update_figure: Callable = default_callback, + on_click: ChartPreventableEventCallback | None = None, + on_press: ChartPreventableEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + on_double_press: ChartEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_legend_click: ChartPreventableEventCallback | None = None, + on_legend_double_click: ChartPreventableEventCallback | None = None, + on_click_annotation: ChartEventCallback | None = None, + on_web_gl_context_lost: ChartEventCallback | None = None, ) -> DeephavenFigure: """ Create a scatter_map plot @@ -337,6 +379,21 @@ def scatter_map( Note that the existing data traces should not be removed. This may lead to unexpected behavior if traces are modified in a way that break data mappings. + on_click: A callback function that is called when a point is clicked. + The function receives a dict with 'points' and 'modifiers'. On + hierarchical charts, return False to prevent drill-down. + on_press: Alias for on_click. + on_double_click: A callback that fires on double-click (zoom/pan mode only). + on_double_press: Alias for on_double_click. + on_selected: A callback that fires when a box or lasso selection completes. + on_deselect: A callback that fires when the selection is cleared. + on_relayout: A callback that fires when the layout changes (pan, zoom, axis reset). + on_legend_click: A callback that fires when a legend item is clicked. + Return False to prevent the trace visibility toggle. + on_legend_double_click: A callback that fires when a legend item is + double-clicked. Return False to prevent isolate/show-all. + on_click_annotation: A callback that fires when an annotation is clicked. + on_web_gl_context_lost: A callback that fires when the WebGL context is lost. Returns: DeephavenFigure: A DeephavenFigure that contains the scatter_map figure @@ -385,6 +442,17 @@ def line_geo( title: str | None = None, template: str | None = None, unsafe_update_figure: Callable = default_callback, + on_click: ChartPreventableEventCallback | None = None, + on_press: ChartPreventableEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + on_double_press: ChartEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_legend_click: ChartPreventableEventCallback | None = None, + on_legend_double_click: ChartPreventableEventCallback | None = None, + on_click_annotation: ChartEventCallback | None = None, + on_web_gl_context_lost: ChartEventCallback | None = None, ) -> DeephavenFigure: """ Create a line_geo plot @@ -493,6 +561,21 @@ def line_geo( Note that the existing data traces should not be removed. This may lead to unexpected behavior if traces are modified in a way that break data mappings. + on_click: A callback function that is called when a point is clicked. + The function receives a dict with 'points' and 'modifiers'. On + hierarchical charts, return False to prevent drill-down. + on_press: Alias for on_click. + on_double_click: A callback that fires on double-click (zoom/pan mode only). + on_double_press: Alias for on_double_click. + on_selected: A callback that fires when a box or lasso selection completes. + on_deselect: A callback that fires when the selection is cleared. + on_relayout: A callback that fires when the layout changes (pan, zoom, axis reset). + on_legend_click: A callback that fires when a legend item is clicked. + Return False to prevent the trace visibility toggle. + on_legend_double_click: A callback that fires when a legend item is + double-clicked. Return False to prevent isolate/show-all. + on_click_annotation: A callback that fires when an annotation is clicked. + on_web_gl_context_lost: A callback that fires when the WebGL context is lost. Returns: DeephavenFigure: A DeephavenFigure that contains the line_geo figure @@ -535,6 +618,17 @@ def line_map( title: str | None = None, template: str | None = None, unsafe_update_figure: Callable = default_callback, + on_click: ChartPreventableEventCallback | None = None, + on_press: ChartPreventableEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + on_double_press: ChartEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_legend_click: ChartPreventableEventCallback | None = None, + on_legend_double_click: ChartPreventableEventCallback | None = None, + on_click_annotation: ChartEventCallback | None = None, + on_web_gl_context_lost: ChartEventCallback | None = None, ) -> DeephavenFigure: """ Create a line_map plot @@ -625,6 +719,21 @@ def line_map( Note that the existing data traces should not be removed. This may lead to unexpected behavior if traces are modified in a way that break data mappings. + on_click: A callback function that is called when a point is clicked. + The function receives a dict with 'points' and 'modifiers'. On + hierarchical charts, return False to prevent drill-down. + on_press: Alias for on_click. + on_double_click: A callback that fires on double-click (zoom/pan mode only). + on_double_press: Alias for on_double_click. + on_selected: A callback that fires when a box or lasso selection completes. + on_deselect: A callback that fires when the selection is cleared. + on_relayout: A callback that fires when the layout changes (pan, zoom, axis reset). + on_legend_click: A callback that fires when a legend item is clicked. + Return False to prevent the trace visibility toggle. + on_legend_double_click: A callback that fires when a legend item is + double-clicked. Return False to prevent isolate/show-all. + on_click_annotation: A callback that fires when an annotation is clicked. + on_web_gl_context_lost: A callback that fires when the WebGL context is lost. Returns: DeephavenFigure: A DeephavenFigure that contains the line_map figure @@ -653,6 +762,17 @@ def density_map( title: str | None = None, template: str | None = None, unsafe_update_figure: Callable = default_callback, + on_click: ChartPreventableEventCallback | None = None, + on_press: ChartPreventableEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + on_double_press: ChartEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_legend_click: ChartPreventableEventCallback | None = None, + on_legend_double_click: ChartPreventableEventCallback | None = None, + on_click_annotation: ChartEventCallback | None = None, + on_web_gl_context_lost: ChartEventCallback | None = None, ) -> DeephavenFigure: """ Create a density_map plot @@ -687,6 +807,21 @@ def density_map( Note that the existing data traces should not be removed. This may lead to unexpected behavior if traces are modified in a way that break data mappings. + on_click: A callback function that is called when a point is clicked. + The function receives a dict with 'points' and 'modifiers'. On + hierarchical charts, return False to prevent drill-down. + on_press: Alias for on_click. + on_double_click: A callback that fires on double-click (zoom/pan mode only). + on_double_press: Alias for on_double_click. + on_selected: A callback that fires when a box or lasso selection completes. + on_deselect: A callback that fires when the selection is cleared. + on_relayout: A callback that fires when the layout changes (pan, zoom, axis reset). + on_legend_click: A callback that fires when a legend item is clicked. + Return False to prevent the trace visibility toggle. + on_legend_double_click: A callback that fires when a legend item is + double-clicked. Return False to prevent isolate/show-all. + on_click_annotation: A callback that fires when an annotation is clicked. + on_web_gl_context_lost: A callback that fires when the WebGL context is lost. Returns: DeephavenFigure: A DeephavenFigure that contains the density_map figure diff --git a/plugins/plotly-express/src/deephaven/plot/express/plots/pie.py b/plugins/plotly-express/src/deephaven/plot/express/plots/pie.py index 526b233e8..11becc494 100644 --- a/plugins/plotly-express/src/deephaven/plot/express/plots/pie.py +++ b/plugins/plotly-express/src/deephaven/plot/express/plots/pie.py @@ -7,7 +7,7 @@ from ._private_utils import process_args from ..shared import default_callback from ..deephaven_figure import DeephavenFigure -from ..types import TableLike +from ..types import TableLike, ChartPreventableEventCallback, ChartEventCallback def pie( @@ -24,6 +24,17 @@ def pie( opacity: float | None = None, hole: float | None = None, unsafe_update_figure: Callable = default_callback, + on_click: ChartPreventableEventCallback | None = None, + on_press: ChartPreventableEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + on_double_press: ChartEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_legend_click: ChartPreventableEventCallback | None = None, + on_legend_double_click: ChartPreventableEventCallback | None = None, + on_click_annotation: ChartEventCallback | None = None, + on_web_gl_context_lost: ChartEventCallback | None = None, ) -> DeephavenFigure: """Returns a pie chart @@ -54,6 +65,35 @@ def pie( Note that the existing data traces should not be removed. This may lead to unexpected behavior if traces are modified in a way that break data mappings. + on_click: A callback function that is called when a point is clicked. + The function receives a dict with 'points' (list of clicked point data) + and 'modifiers' (keyboard state). On hierarchical charts (sunburst, + treemap, icicle), return False to prevent drill-down. The return value + is ignored on other chart types. + on_press: Alias for on_click. + on_double_click: A callback function that is called on double-click. + The function receives a dict with 'modifiers' (keyboard state). + Fires in zoom/pan mode only; in select mode, on_deselect fires instead. + on_double_press: Alias for on_double_click. + on_selected: A callback function that is called when a box or lasso + selection completes. The function receives a dict with 'points' (list + of selected point data), 'range' (for box select), and 'modifiers'. + on_deselect: A callback function that is called when the selection is + cleared (e.g., by double-clicking on an empty area). + on_relayout: A callback function that is called when the chart layout + changes due to user interaction (pan, zoom, axis reset, etc.). The + function receives a dict of the layout keys that changed. + on_legend_click: A callback function that is called when a legend item + is clicked. Return False to prevent the default trace visibility toggle. + Return True or None to allow it. + on_legend_double_click: A callback function that is called when a legend + item is double-clicked. Return False to prevent the default + isolate/show-all toggle. Return True or None to allow it. + on_click_annotation: A callback function that is called when an + annotation is clicked. The function receives a dict with 'index', + 'annotation', and 'modifiers'. + on_web_gl_context_lost: A callback function that is called when the + WebGL rendering context is lost (e.g., GPU reclaims resources). Returns: A DeephavenFigure that contains the pie chart diff --git a/plugins/plotly-express/src/deephaven/plot/express/plots/scatter.py b/plugins/plotly-express/src/deephaven/plot/express/plots/scatter.py index f7805edbd..619984c87 100644 --- a/plugins/plotly-express/src/deephaven/plot/express/plots/scatter.py +++ b/plugins/plotly-express/src/deephaven/plot/express/plots/scatter.py @@ -7,7 +7,11 @@ from ._private_utils import process_args from ..shared import default_callback from ..deephaven_figure import DeephavenFigure, Calendar -from ..types import PartitionableTableLike +from ..types import ( + PartitionableTableLike, + ChartPreventableEventCallback, + ChartEventCallback, +) def scatter( @@ -62,6 +66,17 @@ def scatter( render_mode: str = "webgl", calendar: Calendar = False, unsafe_update_figure: Callable = default_callback, + on_click: ChartPreventableEventCallback | None = None, + on_press: ChartPreventableEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + on_double_press: ChartEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_legend_click: ChartPreventableEventCallback | None = None, + on_legend_double_click: ChartPreventableEventCallback | None = None, + on_click_annotation: ChartEventCallback | None = None, + on_web_gl_context_lost: ChartEventCallback | None = None, ) -> DeephavenFigure: """Returns a scatter chart @@ -190,6 +205,35 @@ def scatter( Note that the existing data traces should not be removed. This may lead to unexpected behavior if traces are modified in a way that break data mappings. + on_click: A callback function that is called when a point is clicked. + The function receives a dict with 'points' (list of clicked point data) + and 'modifiers' (keyboard state). On hierarchical charts (sunburst, + treemap, icicle), return False to prevent drill-down. The return value + is ignored on other chart types. + on_press: Alias for on_click. + on_double_click: A callback function that is called on double-click. + The function receives a dict with 'modifiers' (keyboard state). + Fires in zoom/pan mode only; in select mode, on_deselect fires instead. + on_double_press: Alias for on_double_click. + on_selected: A callback function that is called when a box or lasso + selection completes. The function receives a dict with 'points' (list + of selected point data), 'range' (for box select), and 'modifiers'. + on_deselect: A callback function that is called when the selection is + cleared (e.g., by double-clicking on an empty area). + on_relayout: A callback function that is called when the chart layout + changes due to user interaction (pan, zoom, axis reset, etc.). The + function receives a dict of the layout keys that changed. + on_legend_click: A callback function that is called when a legend item + is clicked. Return False to prevent the default trace visibility toggle. + Return True or None to allow it. + on_legend_double_click: A callback function that is called when a legend + item is double-clicked. Return False to prevent the default + isolate/show-all toggle. Return True or None to allow it. + on_click_annotation: A callback function that is called when an + annotation is clicked. The function receives a dict with 'index', + 'annotation', and 'modifiers'. + on_web_gl_context_lost: A callback function that is called when the + WebGL rendering context is lost (e.g., GPU reclaims resources). Returns: A DeephavenFigure that contains the scatter chart @@ -250,6 +294,17 @@ def scatter_3d( title: str | None = None, template: str | None = None, unsafe_update_figure: Callable = default_callback, + on_click: ChartPreventableEventCallback | None = None, + on_press: ChartPreventableEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + on_double_press: ChartEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_legend_click: ChartPreventableEventCallback | None = None, + on_legend_double_click: ChartPreventableEventCallback | None = None, + on_click_annotation: ChartEventCallback | None = None, + on_web_gl_context_lost: ChartEventCallback | None = None, ) -> DeephavenFigure: """Returns a 3D scatter chart @@ -355,6 +410,35 @@ def scatter_3d( Note that the existing data traces should not be removed. This may lead to unexpected behavior if traces are modified in a way that break data mappings. + on_click: A callback function that is called when a point is clicked. + The function receives a dict with 'points' (list of clicked point data) + and 'modifiers' (keyboard state). On hierarchical charts (sunburst, + treemap, icicle), return False to prevent drill-down. The return value + is ignored on other chart types. + on_press: Alias for on_click. + on_double_click: A callback function that is called on double-click. + The function receives a dict with 'modifiers' (keyboard state). + Fires in zoom/pan mode only; in select mode, on_deselect fires instead. + on_double_press: Alias for on_double_click. + on_selected: A callback function that is called when a box or lasso + selection completes. The function receives a dict with 'points' (list + of selected point data), 'range' (for box select), and 'modifiers'. + on_deselect: A callback function that is called when the selection is + cleared (e.g., by double-clicking on an empty area). + on_relayout: A callback function that is called when the chart layout + changes due to user interaction (pan, zoom, axis reset, etc.). The + function receives a dict of the layout keys that changed. + on_legend_click: A callback function that is called when a legend item + is clicked. Return False to prevent the default trace visibility toggle. + Return True or None to allow it. + on_legend_double_click: A callback function that is called when a legend + item is double-clicked. Return False to prevent the default + isolate/show-all toggle. Return True or None to allow it. + on_click_annotation: A callback function that is called when an + annotation is clicked. The function receives a dict with 'index', + 'annotation', and 'modifiers'. + on_web_gl_context_lost: A callback function that is called when the + WebGL rendering context is lost (e.g., GPU reclaims resources). Returns: A DeephavenFigure that contains the 3D scatter chart @@ -407,6 +491,17 @@ def scatter_polar( template: str | None = None, render_mode: str = "webgl", unsafe_update_figure: Callable = default_callback, + on_click: ChartPreventableEventCallback | None = None, + on_press: ChartPreventableEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + on_double_press: ChartEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_legend_click: ChartPreventableEventCallback | None = None, + on_legend_double_click: ChartPreventableEventCallback | None = None, + on_click_annotation: ChartEventCallback | None = None, + on_web_gl_context_lost: ChartEventCallback | None = None, ) -> DeephavenFigure: """Returns a polar scatter chart @@ -491,6 +586,35 @@ def scatter_polar( Note that the existing data traces should not be removed. This may lead to unexpected behavior if traces are modified in a way that break data mappings. + on_click: A callback function that is called when a point is clicked. + The function receives a dict with 'points' (list of clicked point data) + and 'modifiers' (keyboard state). On hierarchical charts (sunburst, + treemap, icicle), return False to prevent drill-down. The return value + is ignored on other chart types. + on_press: Alias for on_click. + on_double_click: A callback function that is called on double-click. + The function receives a dict with 'modifiers' (keyboard state). + Fires in zoom/pan mode only; in select mode, on_deselect fires instead. + on_double_press: Alias for on_double_click. + on_selected: A callback function that is called when a box or lasso + selection completes. The function receives a dict with 'points' (list + of selected point data), 'range' (for box select), and 'modifiers'. + on_deselect: A callback function that is called when the selection is + cleared (e.g., by double-clicking on an empty area). + on_relayout: A callback function that is called when the chart layout + changes due to user interaction (pan, zoom, axis reset, etc.). The + function receives a dict of the layout keys that changed. + on_legend_click: A callback function that is called when a legend item + is clicked. Return False to prevent the default trace visibility toggle. + Return True or None to allow it. + on_legend_double_click: A callback function that is called when a legend + item is double-clicked. Return False to prevent the default + isolate/show-all toggle. Return True or None to allow it. + on_click_annotation: A callback function that is called when an + annotation is clicked. The function receives a dict with 'index', + 'annotation', and 'modifiers'. + on_web_gl_context_lost: A callback function that is called when the + WebGL rendering context is lost (e.g., GPU reclaims resources). Returns: A DeephavenFigure that contains the polar scatter chart @@ -538,6 +662,17 @@ def scatter_ternary( title: str | None = None, template: str | None = None, unsafe_update_figure: Callable = default_callback, + on_click: ChartPreventableEventCallback | None = None, + on_press: ChartPreventableEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + on_double_press: ChartEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_legend_click: ChartPreventableEventCallback | None = None, + on_legend_double_click: ChartPreventableEventCallback | None = None, + on_click_annotation: ChartEventCallback | None = None, + on_web_gl_context_lost: ChartEventCallback | None = None, ) -> DeephavenFigure: """Returns a ternary scatter chart @@ -613,6 +748,35 @@ def scatter_ternary( Note that the existing data traces should not be removed. This may lead to unexpected behavior if traces are modified in a way that break data mappings. + on_click: A callback function that is called when a point is clicked. + The function receives a dict with 'points' (list of clicked point data) + and 'modifiers' (keyboard state). On hierarchical charts (sunburst, + treemap, icicle), return False to prevent drill-down. The return value + is ignored on other chart types. + on_press: Alias for on_click. + on_double_click: A callback function that is called on double-click. + The function receives a dict with 'modifiers' (keyboard state). + Fires in zoom/pan mode only; in select mode, on_deselect fires instead. + on_double_press: Alias for on_double_click. + on_selected: A callback function that is called when a box or lasso + selection completes. The function receives a dict with 'points' (list + of selected point data), 'range' (for box select), and 'modifiers'. + on_deselect: A callback function that is called when the selection is + cleared (e.g., by double-clicking on an empty area). + on_relayout: A callback function that is called when the chart layout + changes due to user interaction (pan, zoom, axis reset, etc.). The + function receives a dict of the layout keys that changed. + on_legend_click: A callback function that is called when a legend item + is clicked. Return False to prevent the default trace visibility toggle. + Return True or None to allow it. + on_legend_double_click: A callback function that is called when a legend + item is double-clicked. Return False to prevent the default + isolate/show-all toggle. Return True or None to allow it. + on_click_annotation: A callback function that is called when an + annotation is clicked. The function receives a dict with 'index', + 'annotation', and 'modifiers'. + on_web_gl_context_lost: A callback function that is called when the + WebGL rendering context is lost (e.g., GPU reclaims resources). Returns: A DeephavenFigure that contains the ternary scatter chart diff --git a/plugins/plotly-express/src/deephaven/plot/express/plots/subplots.py b/plugins/plotly-express/src/deephaven/plot/express/plots/subplots.py index 940756f8e..275491e53 100644 --- a/plugins/plotly-express/src/deephaven/plot/express/plots/subplots.py +++ b/plugins/plotly-express/src/deephaven/plot/express/plots/subplots.py @@ -6,8 +6,10 @@ from plotly.graph_objs import Figure from ._layer import layer, LayerSpecDict, atomic_layer +from ._event_callbacks import _extract_event_callbacks, _merge_event_callbacks from .. import DeephavenFigure from ..shared import default_callback +from ..types import ChartPreventableEventCallback, ChartEventCallback # generic grid that is a list of lists of anything T = TypeVar("T") @@ -404,6 +406,19 @@ def atomic_make_subplots( Users should not be accessing this function directly. title: See make_subplots unsafe_update_figure: See make_subplots + on_click: See make_subplots + on_press: See make_subplots + on_double_click: See make_subplots + on_selected: See make_subplots + on_deselect: See make_subplots + cleared (e.g., by double-clicking on an empty area). + on_relayout: A callback function that is called when the chart layout + changes due to user interaction (pan, zoom, axis reset, etc.). The + function receives a dict of the layout keys that changed. + on_legend_click: See make_subplots + on_legend_double_click: See make_subplots + on_click_annotation: See make_subplots + on_web_gl_context_lost: See make_subplots Returns: DeephavenFigure: The DeephavenFigure with subplots @@ -545,6 +560,17 @@ def make_subplots( subplot_titles: list[str] | tuple[str, ...] | bool = True, title: str | None = None, unsafe_update_figure: Callable = default_callback, + on_click: ChartPreventableEventCallback | None = None, + on_press: ChartPreventableEventCallback | None = None, + on_double_click: ChartEventCallback | None = None, + on_double_press: ChartEventCallback | None = None, + on_selected: ChartEventCallback | None = None, + on_deselect: ChartEventCallback | None = None, + on_relayout: ChartEventCallback | None = None, + on_legend_click: ChartPreventableEventCallback | None = None, + on_legend_double_click: ChartPreventableEventCallback | None = None, + on_click_annotation: ChartEventCallback | None = None, + on_web_gl_context_lost: ChartEventCallback | None = None, ) -> DeephavenFigure: """Create subplots. Either figs and at least one of rows and cols or grid should be passed. @@ -598,6 +624,35 @@ def make_subplots( Used to add any custom changes to the underlying plotly figure. Note that the existing data traces should not be removed. This may lead to unexpected behavior if traces are modified in a way that break data mappings. + on_click: A callback function that is called when a point is clicked. + The function receives a dict with 'points' (list of clicked point data) + and 'modifiers' (keyboard state). On hierarchical charts (sunburst, + treemap, icicle), return False to prevent drill-down. The return value + is ignored on other chart types. + on_press: Alias for on_click. + on_double_click: A callback function that is called on double-click. + The function receives a dict with 'modifiers' (keyboard state). + Fires in zoom/pan mode only; in select mode, on_deselect fires instead. + on_double_press: Alias for on_double_click. + on_selected: A callback function that is called when a box or lasso + selection completes. The function receives a dict with 'points' (list + of selected point data), 'range' (for box select), and 'modifiers'. + on_deselect: A callback function that is called when the selection is + cleared (e.g., by double-clicking on an empty area). + on_relayout: A callback function that is called when the chart layout + changes due to user interaction (pan, zoom, axis reset, etc.). The + function receives a dict of the layout keys that changed. + on_legend_click: A callback function that is called when a legend item + is clicked. Return False to prevent the default trace visibility toggle. + Return True or None to allow it. + on_legend_double_click: A callback function that is called when a legend + item is double-clicked. Return False to prevent the default + isolate/show-all toggle. Return True or None to allow it. + on_click_annotation: A callback function that is called when an + annotation is clicked. The function receives a dict with 'index', + 'annotation', and 'modifiers'. + on_web_gl_context_lost: A callback function that is called when the + WebGL rendering context is lost (e.g., GPU reclaims resources). Returns: DeephavenFigure: The DeephavenFigure with subplots @@ -605,6 +660,10 @@ def make_subplots( """ args = locals() + # Pull the event callbacks out of args (resolving aliases) so they aren't + # reapplied when the subplots are recreated from the graph. + direct_callbacks = _extract_event_callbacks(args) + func = atomic_make_subplots new_fig = atomic_make_subplots( @@ -628,4 +687,12 @@ def make_subplots( new_fig.add_layer_to_graph(func, args, exec_ctx) + # Gather all child figures (direct figs plus any provided via grid) + all_figs = list(figs) + if grid: + for row in grid: + all_figs.extend(f for f in row if f is not None) + + _merge_event_callbacks(new_fig, all_figs, direct_callbacks) + return new_fig diff --git a/plugins/plotly-express/src/deephaven/plot/express/types/__init__.py b/plugins/plotly-express/src/deephaven/plot/express/types/__init__.py index c04f9f2da..52474ad22 100644 --- a/plugins/plotly-express/src/deephaven/plot/express/types/__init__.py +++ b/plugins/plotly-express/src/deephaven/plot/express/types/__init__.py @@ -13,3 +13,10 @@ HierarchicalTransforms, ) from .utility import FilterColumn +from .callbacks import ( + ChartEventCallback, + ChartPreventableEventCallback, + wrap_callable, + ALWAYS_PREVENTABLE_EVENTS, + HIERARCHICAL_TRACE_TYPES, +) diff --git a/plugins/plotly-express/src/deephaven/plot/express/types/callbacks.py b/plugins/plotly-express/src/deephaven/plot/express/types/callbacks.py new file mode 100644 index 000000000..bbff4c2ab --- /dev/null +++ b/plugins/plotly-express/src/deephaven/plot/express/types/callbacks.py @@ -0,0 +1,103 @@ +""" +Callback types and utilities for chart event handling. +""" + +from __future__ import annotations + +from functools import partial +from inspect import signature +import sys +from typing import ( + Any, + Callable, + Set, + cast, +) + +ChartEventCallback = Callable[..., None] +"""Callback for chart events that do not control default behavior.""" + +ChartPreventableEventCallback = Callable[..., "bool | None"] +"""Callback for chart events that can return False to prevent default behavior.""" + +# Events where returning False prevents the default client-side behavior. +# on_click is conditionally preventable (only on hierarchical charts). +ALWAYS_PREVENTABLE_EVENTS = frozenset({"on_legend_click", "on_legend_double_click"}) + +# Hierarchical trace types where on_click controls drill-down +HIERARCHICAL_TRACE_TYPES = frozenset({"sunburst", "treemap", "icicle"}) + + +def _wrapped_callable( + max_args: int | None, + kwargs_set: set[str] | None, + func: Callable, + *args: Any, + **kwargs: Any, +) -> Any: + """ + Filter the args and kwargs and call the specified function with the filtered args and kwargs. + + Args: + max_args: The maximum number of positional arguments to pass to the function. + If None, all args are passed. + kwargs_set: The set of keyword arguments to pass to the function. + If None, all kwargs are passed. + func: The function to call + *args: args, used by the dispatcher + **kwargs: kwargs, used by the dispatcher + + Returns: + The result of the function call. + """ + args = args if max_args is None else args[:max_args] + kwargs = ( + kwargs + if kwargs_set is None + else {k: v for k, v in kwargs.items() if k in kwargs_set} + ) + return func(*args, **kwargs) + + +def wrap_callable(func: Callable) -> Callable: + """ + Wrap the function so args are dropped if they are not in the signature. + + Args: + func: The callable to wrap + + Returns: + The wrapped callable + """ + try: + if sys.version_info.major == 3 and sys.version_info.minor >= 10: + sig = signature(func, eval_str=True) # type: ignore + else: + sig = signature(func) + + max_args: int | None = 0 + kwargs_set: Set | None = set() + + for param in sig.parameters.values(): + if param.kind == param.POSITIONAL_ONLY: + max_args = cast(int, max_args) + max_args += 1 + elif param.kind == param.POSITIONAL_OR_KEYWORD: + # Don't know until runtime whether this will be passed as a positional or keyword arg + max_args = cast(int, max_args) + kwargs_set = cast(Set, kwargs_set) + max_args += 1 + kwargs_set.add(param.name) + elif param.kind == param.VAR_POSITIONAL: + max_args = None + elif param.kind == param.KEYWORD_ONLY: + kwargs_set = cast(Set, kwargs_set) + kwargs_set.add(param.name) + elif param.kind == param.VAR_KEYWORD: + kwargs_set = None + + return partial(_wrapped_callable, max_args, kwargs_set, func) + except ValueError or TypeError: + # This function has no signature, so we can't wrap it + # Return the original function should be okay + return func diff --git a/plugins/plotly-express/src/js/package.json b/plugins/plotly-express/src/js/package.json index 3e08eff1f..dc29f8351 100644 --- a/plugins/plotly-express/src/js/package.json +++ b/plugins/plotly-express/src/js/package.json @@ -54,16 +54,16 @@ "react-dom": "^18.0.0 || ^19.0.0" }, "dependencies": { - "@deephaven/chart": "^1.17.0", - "@deephaven/components": "^1.17.0", - "@deephaven/dashboard": "^1.17.1", - "@deephaven/dashboard-core-plugins": "^1.18.0", + "@deephaven/chart": "^1.26.0", + "@deephaven/components": "^1.22.1", + "@deephaven/dashboard": "^1.24.0", + "@deephaven/dashboard-core-plugins": "^1.26.0", "@deephaven/icons": "^1.2.0", - "@deephaven/jsapi-bootstrap": "^1.17.0", - "@deephaven/jsapi-utils": "^1.16.0", + "@deephaven/jsapi-bootstrap": "^1.23.0", + "@deephaven/jsapi-utils": "^1.23.0", "@deephaven/log": "^1.8.0", - "@deephaven/plugin": "^1.18.0", - "@deephaven/redux": "^1.17.0", + "@deephaven/plugin": "^1.26.0", + "@deephaven/redux": "^1.23.0", "@deephaven/utils": "^1.10.0", "deep-equal": "^2.2.1", "memoizee": "^0.4.17", diff --git a/plugins/plotly-express/src/js/src/PlotlyExpressChart.tsx b/plugins/plotly-express/src/js/src/PlotlyExpressChart.tsx index e1a29cb4b..c517acded 100644 --- a/plugins/plotly-express/src/js/src/PlotlyExpressChart.tsx +++ b/plugins/plotly-express/src/js/src/PlotlyExpressChart.tsx @@ -7,7 +7,7 @@ import { type WidgetComponentProps } from '@deephaven/plugin'; import { useApi } from '@deephaven/jsapi-bootstrap'; import { getSettings, type RootState } from '@deephaven/redux'; import PlotlyExpressChartModel from './PlotlyExpressChartModel.js'; -import { useHandleSceneTicks } from './useHandleSceneTicks.js'; +import { usePlotlyExpressModel } from './usePlotlyExpressModel.js'; export function PlotlyExpressChart( props: WidgetComponentProps @@ -36,7 +36,7 @@ export function PlotlyExpressChart( }; }, [dh, fetch]); - useHandleSceneTicks(model, containerRef.current); + const eventCallbacks = usePlotlyExpressModel(model, containerRef.current); return model ? ( ) : null; } diff --git a/plugins/plotly-express/src/js/src/PlotlyExpressChartModel.test.ts b/plugins/plotly-express/src/js/src/PlotlyExpressChartModel.test.ts index 778caf546..147f72785 100644 --- a/plugins/plotly-express/src/js/src/PlotlyExpressChartModel.test.ts +++ b/plugins/plotly-express/src/js/src/PlotlyExpressChartModel.test.ts @@ -38,6 +38,13 @@ jest.mock('./PlotlyExpressChartUtils', () => ({ setDefaultValueFormat: jest.fn(), })); +// plotly.js-dist-min pulls in browser/WebGL APIs that jsdom can't load, so mock +// it. The model only uses Plotly.animate/restyle for programmatic re-triggers. +jest.mock('plotly.js-dist-min', () => ({ + __esModule: true, + default: { animate: jest.fn(), restyle: jest.fn() }, +})); + function createMockWidget( tables: DhType.Table[], plotType = 'scatter', diff --git a/plugins/plotly-express/src/js/src/PlotlyExpressChartModel.ts b/plugins/plotly-express/src/js/src/PlotlyExpressChartModel.ts index 5b0bbdb7b..3ed874295 100644 --- a/plugins/plotly-express/src/js/src/PlotlyExpressChartModel.ts +++ b/plugins/plotly-express/src/js/src/PlotlyExpressChartModel.ts @@ -87,6 +87,9 @@ export class PlotlyExpressChartModel extends ChartModel { // The input filter columns are set once at init. this.updateFilterColumns(widgetData); + // Parse event callbacks from initial widget data + this.updateCallbacks(widgetData); + this.setTitle(this.getDefaultTitle()); } @@ -195,6 +198,21 @@ export class PlotlyExpressChartModel extends ChartModel { */ requiredColumns: Set = new Set(); + /** + * Map of event name to callback ID for registered event callbacks. + */ + callbackMap: Map = new Map(); + + /** + * Set of callback IDs that use request-response (preventable events). + */ + preventableCallbacks: Set = new Set(); + + /** + * Map of request ID to resolver function for pending request-response callbacks. + */ + pendingResponses: Map void> = new Map(); + cleanupSubscriptions(id: number): void { this.subscriptionCleanupMap.get(id)?.forEach(cleanup => { cleanup(); @@ -273,13 +291,17 @@ export class PlotlyExpressChartModel extends ChartModel { this.handleWidgetUpdated(widgetData, this.widget.exportedObjects); this.isSubscribed = true; + this.widgetUnsubscribe = this.widget.addEventListener( this.dh.Widget.EVENT_MESSAGE, ({ detail }) => { - this.handleWidgetUpdated( - JSON.parse(detail.getDataAsString()), - detail.exportedObjects - ); + const raw = detail.getDataAsString(); + const parsed = JSON.parse(raw); + if (parsed.type === 'CALLABLE_RESPONSE') { + this.handleCallableResponse(parsed); + return; + } + this.handleWidgetUpdated(parsed, detail.exportedObjects); } ); @@ -468,6 +490,16 @@ export class PlotlyExpressChartModel extends ChartModel { } } + updateCallbacks(data: PlotlyChartWidgetData): void { + const { deephaven } = data.figure; + if (deephaven.callbacks != null) { + this.callbackMap = new Map(Object.entries(deephaven.callbacks)); + } else { + this.callbackMap = new Map(); + } + this.preventableCallbacks = new Set(deephaven.preventable_callbacks ?? []); + } + /** * Unsubscribe from a table. * @param id The table ID to unsubscribe from @@ -541,6 +573,9 @@ export class PlotlyExpressChartModel extends ChartModel { this.fireRangebreaksUpdated(); + // Parse event callbacks + this.updateCallbacks(data); + newReferences.forEach(async (id, i) => { this.tableDataMap.set(id, {}); // Plot may render while tables are being fetched. Set this to avoid a render error const table = (await references[i].fetch()) as DhType.Table; @@ -1001,6 +1036,64 @@ export class PlotlyExpressChartModel extends ChartModel { return (value: unknown) => this.chartUtils.unwrapValue(value, timeZone); } ); + + getCallbackMap(): Map { + return this.callbackMap; + } + + hasSelectionCallbacks(): boolean { + return ( + this.callbackMap.has('on_selected') || this.callbackMap.has('on_deselect') + ); + } + + isPreventable(callbackId: string): boolean { + return this.preventableCallbacks.has(callbackId); + } + + sendEventCallback(callbackId: string, args: unknown): void { + this.widget?.sendMessage( + JSON.stringify({ type: 'CALLABLE_EVENT', callback_id: callbackId, args }), + [] + ); + } + + async sendEventCallbackWithResponse( + callbackId: string, + args: unknown + ): Promise { + const requestId = crypto.randomUUID(); + const responsePromise = new Promise(resolve => { + this.pendingResponses.set(requestId, resolve); + // Timeout after 5sand allow default if Python doesn't respond + setTimeout(() => { + if (this.pendingResponses.delete(requestId)) { + resolve(true); + } + }, 5000); + }); + this.widget?.sendMessage( + JSON.stringify({ + type: 'CALLABLE_EVENT', + callback_id: callbackId, + args, + request_id: requestId, + }), + [] + ); + return responsePromise; + } + + handleCallableResponse(parsed: { + request_id: string; + result: unknown; + }): void { + const resolver = this.pendingResponses.get(parsed.request_id); + if (resolver) { + this.pendingResponses.delete(parsed.request_id); + resolver(parsed.result !== false); + } + } } export default PlotlyExpressChartModel; diff --git a/plugins/plotly-express/src/js/src/PlotlyExpressChartModelCallbacks.test.ts b/plugins/plotly-express/src/js/src/PlotlyExpressChartModelCallbacks.test.ts new file mode 100644 index 000000000..b5aaa4a3f --- /dev/null +++ b/plugins/plotly-express/src/js/src/PlotlyExpressChartModelCallbacks.test.ts @@ -0,0 +1,233 @@ +import { type dh as DhType } from '@deephaven/jsapi-types'; +import { PlotlyExpressChartModel } from './PlotlyExpressChartModel'; +import { type PlotlyChartWidgetData } from './PlotlyExpressChartUtils'; + +// plotly.js-dist-min pulls in browser/WebGL APIs that jsdom can't load, so mock +// it. The model doesn't use Plotly directly, but importing it transitively can. +jest.mock('plotly.js-dist-min', () => ({ + __esModule: true, + default: { animate: jest.fn(), restyle: jest.fn() }, +})); + +function createMockWidgetWithCallbacks( + callbacks?: Record, + preventableCallbacks?: string[] +) { + const widgetData: PlotlyChartWidgetData = { + type: 'test', + figure: { + deephaven: { + mappings: [], + is_user_set_color: false, + is_user_set_template: false, + callbacks, + preventable_callbacks: preventableCallbacks, + }, + plotly: { + data: [{ type: 'scatter' as const, mode: 'markers' }], + layout: { title: { text: 'Test' } }, + }, + }, + revision: 0, + new_references: [], + removed_references: [], + }; + + return { + getDataAsString: () => JSON.stringify(widgetData), + exportedObjects: [], + addEventListener: jest.fn(() => jest.fn()), + close: jest.fn(), + sendMessage: jest.fn(), + } satisfies Partial as unknown as DhType.Widget; +} + +const mockDh = { + calendar: { DayOfWeek: { values: () => [] } }, + plot: { + Downsample: { runChartDownsample: jest.fn() }, + ChartData: jest.fn(), + }, + Table: { EVENT_UPDATED: 'updated' }, + Widget: { EVENT_MESSAGE: 'message' }, + i18n: { TimeZone: { getTimeZone: () => ({ id: 'UTC', standardOffset: 0 }) } }, +} as unknown as typeof DhType; + +describe('PlotlyExpressChartModel - Event Callbacks', () => { + let model: PlotlyExpressChartModel; + + describe('callback map parsing', () => { + it('parses callbacks from widget data', () => { + const widget = createMockWidgetWithCallbacks( + { on_click: 'cb_0', on_selected: 'cb_1' }, + [] + ); + model = new PlotlyExpressChartModel(mockDh, widget, jest.fn()); + + const callbackMap = model.getCallbackMap(); + expect(callbackMap.get('on_click')).toBe('cb_0'); + expect(callbackMap.get('on_selected')).toBe('cb_1'); + }); + + it('sets empty callback map when no callbacks', () => { + const widget = createMockWidgetWithCallbacks(undefined, undefined); + model = new PlotlyExpressChartModel(mockDh, widget, jest.fn()); + + expect(model.getCallbackMap().size).toBe(0); + }); + + it('parses preventable_callbacks', () => { + const widget = createMockWidgetWithCallbacks( + { on_legend_click: 'cb_0' }, + ['cb_0'] + ); + model = new PlotlyExpressChartModel(mockDh, widget, jest.fn()); + + expect(model.isPreventable('cb_0')).toBe(true); + expect(model.isPreventable('cb_1')).toBe(false); + }); + }); + + describe('sendEventCallback', () => { + it('sends fire-and-forget message', () => { + const widget = createMockWidgetWithCallbacks({ on_click: 'cb_0' }); + model = new PlotlyExpressChartModel(mockDh, widget, jest.fn()); + + model.sendEventCallback('cb_0', { points: [{ x: 1 }] }); + + expect(widget.sendMessage).toHaveBeenCalledWith( + expect.stringContaining('"type":"CALLABLE_EVENT"'), + [] + ); + const sent = JSON.parse( + (widget.sendMessage as jest.Mock).mock.calls[0][0] + ); + expect(sent.callback_id).toBe('cb_0'); + expect(sent.args).toEqual({ points: [{ x: 1 }] }); + expect(sent.request_id).toBeUndefined(); + }); + }); + + describe('sendEventCallbackWithResponse', () => { + it('sends message with request_id and returns promise', async () => { + const widget = createMockWidgetWithCallbacks( + { on_legend_click: 'cb_0' }, + ['cb_0'] + ); + model = new PlotlyExpressChartModel(mockDh, widget, jest.fn()); + + const promise = model.sendEventCallbackWithResponse('cb_0', { + trace_name: 'DOG', + }); + + const sent = JSON.parse( + (widget.sendMessage as jest.Mock).mock.calls[0][0] + ); + expect(sent.request_id).toBeDefined(); + expect(sent.type).toBe('CALLABLE_EVENT'); + + // Simulate response + model.handleCallableResponse({ + request_id: sent.request_id, + result: false, + }); + + const result = await promise; + expect(result).toBe(false); + }); + + it('resolves to true when result is not false', async () => { + const widget = createMockWidgetWithCallbacks( + { on_legend_click: 'cb_0' }, + ['cb_0'] + ); + model = new PlotlyExpressChartModel(mockDh, widget, jest.fn()); + + const promise = model.sendEventCallbackWithResponse('cb_0', {}); + + const sent = JSON.parse( + (widget.sendMessage as jest.Mock).mock.calls[0][0] + ); + model.handleCallableResponse({ + request_id: sent.request_id, + result: true, + }); + + const result = await promise; + expect(result).toBe(true); + }); + + it('resolves to true when result is null/None', async () => { + const widget = createMockWidgetWithCallbacks( + { on_legend_click: 'cb_0' }, + ['cb_0'] + ); + model = new PlotlyExpressChartModel(mockDh, widget, jest.fn()); + + const promise = model.sendEventCallbackWithResponse('cb_0', {}); + + const sent = JSON.parse( + (widget.sendMessage as jest.Mock).mock.calls[0][0] + ); + model.handleCallableResponse({ + request_id: sent.request_id, + result: null as unknown, + }); + + const result = await promise; + expect(result).toBe(true); + }); + }); + + describe('handleCallableResponse', () => { + it('ignores unknown request_ids', () => { + const widget = createMockWidgetWithCallbacks({ on_click: 'cb_0' }); + model = new PlotlyExpressChartModel(mockDh, widget, jest.fn()); + + // Should not throw + model.handleCallableResponse({ + request_id: 'unknown-id', + result: false, + }); + }); + }); + + describe('widget message handling', () => { + it('routes CALLABLE_RESPONSE to handleCallableResponse', async () => { + const widget = createMockWidgetWithCallbacks( + { on_legend_click: 'cb_0' }, + ['cb_0'] + ); + model = new PlotlyExpressChartModel(mockDh, widget, jest.fn()); + + // Subscribe to set up the event listener + await model.subscribe(jest.fn()); + + // Send a request + const promise = model.sendEventCallbackWithResponse('cb_0', {}); + const sent = JSON.parse( + (widget.sendMessage as jest.Mock).mock.calls[0][0] + ); + + // Simulate the widget firing the response as EVENT_MESSAGE + const eventListenerCall = (widget.addEventListener as jest.Mock).mock + .calls[0]; + const messageHandler = eventListenerCall[1]; + + messageHandler({ + detail: { + getDataAsString: () => + JSON.stringify({ + type: 'CALLABLE_RESPONSE', + request_id: sent.request_id, + result: false, + }), + exportedObjects: [], + }, + }); + + const result = await promise; + expect(result).toBe(false); + }); + }); +}); diff --git a/plugins/plotly-express/src/js/src/PlotlyExpressChartPanel.tsx b/plugins/plotly-express/src/js/src/PlotlyExpressChartPanel.tsx index e9f8eeee7..c9a895d50 100644 --- a/plugins/plotly-express/src/js/src/PlotlyExpressChartPanel.tsx +++ b/plugins/plotly-express/src/js/src/PlotlyExpressChartPanel.tsx @@ -8,7 +8,7 @@ import type { dh } from '@deephaven/jsapi-types'; import { type WidgetPanelProps } from '@deephaven/plugin'; import { useApi } from '@deephaven/jsapi-bootstrap'; import PlotlyExpressChartModel from './PlotlyExpressChartModel.js'; -import { useHandleSceneTicks } from './useHandleSceneTicks.js'; +import { usePlotlyExpressModel } from './usePlotlyExpressModel.js'; export function PlotlyExpressChartPanel( props: WidgetPanelProps @@ -25,7 +25,7 @@ export function PlotlyExpressChartPanel( return m; }, [dh, fetch]); - useHandleSceneTicks(model, container); + const eventCallbacks = usePlotlyExpressModel(model, container); return ( ); } diff --git a/plugins/plotly-express/src/js/src/PlotlyExpressChartUtils.ts b/plugins/plotly-express/src/js/src/PlotlyExpressChartUtils.ts index fb70c807c..65e9a3acb 100644 --- a/plugins/plotly-express/src/js/src/PlotlyExpressChartUtils.ts +++ b/plugins/plotly-express/src/js/src/PlotlyExpressChartUtils.ts @@ -83,6 +83,8 @@ export interface PlotlyChartDeephavenData { }>; is_user_set_template: boolean; is_user_set_color: boolean; + callbacks?: Record; + preventable_callbacks?: string[]; } export interface PlotlyChartWidgetData { diff --git a/plugins/plotly-express/src/js/src/usePlotlyEventCallbacks.test.ts b/plugins/plotly-express/src/js/src/usePlotlyEventCallbacks.test.ts new file mode 100644 index 000000000..31d457171 --- /dev/null +++ b/plugins/plotly-express/src/js/src/usePlotlyEventCallbacks.test.ts @@ -0,0 +1,617 @@ +import { renderHook } from '@testing-library/react'; +import { type dh as DhType } from '@deephaven/jsapi-types'; +import type { + PlotMouseEvent, + PlotSelectionEvent, + LegendClickEvent, + ClickAnnotationEvent, +} from 'plotly.js'; +import Plotly from 'plotly.js-dist-min'; +import { PlotlyExpressChartModel } from './PlotlyExpressChartModel'; +import { usePlotlyEventCallbacks } from './usePlotlyEventCallbacks'; +import { type PlotlyChartWidgetData } from './PlotlyExpressChartUtils'; + +// plotly.js-dist-min pulls in browser/WebGL APIs that jsdom can't load, so mock +// it. The hook only uses Plotly.animate/restyle for programmatic re-triggers. +jest.mock('plotly.js-dist-min', () => ({ + __esModule: true, + default: { animate: jest.fn(), restyle: jest.fn() }, +})); + +function createMockWidgetWithCallbacks( + callbacks?: Record, + preventableCallbacks?: string[] +) { + const widgetData: PlotlyChartWidgetData = { + type: 'test', + figure: { + deephaven: { + mappings: [], + is_user_set_color: false, + is_user_set_template: false, + callbacks, + preventable_callbacks: preventableCallbacks, + }, + plotly: { + data: [{ type: 'scatter' as const, mode: 'markers' }], + layout: { title: { text: 'Test' } }, + }, + }, + revision: 0, + new_references: [], + removed_references: [], + }; + + return { + getDataAsString: () => JSON.stringify(widgetData), + exportedObjects: [], + addEventListener: jest.fn(() => jest.fn()), + close: jest.fn(), + sendMessage: jest.fn(), + } satisfies Partial as unknown as DhType.Widget; +} + +const mockDh = { + calendar: { DayOfWeek: { values: () => [] } }, + plot: { + Downsample: { runChartDownsample: jest.fn() }, + ChartData: jest.fn(), + }, + Table: { EVENT_UPDATED: 'updated' }, + Widget: { EVENT_MESSAGE: 'message' }, + i18n: { TimeZone: { getTimeZone: () => ({ id: 'UTC', standardOffset: 0 }) } }, +} as unknown as typeof DhType; + +const NO_MODIFIERS = { shift: false, ctrl: false, alt: false, meta: false }; + +/** Parse the most recent message sent through the widget. */ +function lastSent(widget: DhType.Widget): { + type: string; + callback_id: string; + args: Record; + request_id?: string; +} { + const { calls } = (widget.sendMessage as jest.Mock).mock; + return JSON.parse(calls[calls.length - 1][0]); +} + +function makeModel( + callbacks?: Record, + preventableCallbacks?: string[] +): { model: PlotlyExpressChartModel; widget: DhType.Widget } { + const widget = createMockWidgetWithCallbacks(callbacks, preventableCallbacks); + const model = new PlotlyExpressChartModel(mockDh, widget, jest.fn()); + return { model, widget }; +} + +describe('usePlotlyEventCallbacks', () => { + beforeEach(() => { + (Plotly.restyle as jest.Mock).mockClear(); + (Plotly.animate as jest.Mock).mockClear(); + }); + + it('returns an empty object when the model is null', () => { + const { result } = renderHook(() => usePlotlyEventCallbacks(null)); + expect(result.current).toEqual({}); + }); + + it('defines all handlers; unregistered ones are no-ops', () => { + const { model, widget } = makeModel({ on_click: 'cb_0' }); + const { result } = renderHook(() => usePlotlyEventCallbacks(model)); + + // All handlers are always defined; gating happens live inside each so they + // stay in sync with the model's callbackMap, which is replaced when widget + // data updates after this hook first runs. + expect(result.current.onPlotlyClick).toBeDefined(); + expect(result.current.onPlotlySelected).toBeDefined(); + expect(result.current.onPlotlyDeselect).toBeDefined(); + expect(result.current.onPlotElementChange).toBeDefined(); + + // Unregistered handlers do nothing when invoked. + result.current.onPlotlyDeselect?.(); + result.current.onPlotlySelected?.({ + points: [], + } as unknown as PlotSelectionEvent); + expect(widget.sendMessage).not.toHaveBeenCalled(); + }); + + describe('onPlotlyClick', () => { + it('sends serialized points and modifiers for a non-preventable click', () => { + const { model, widget } = makeModel({ on_click: 'cb_0' }); + const { result } = renderHook(() => usePlotlyEventCallbacks(model)); + + result.current.onPlotlyClick?.({ + points: [ + { + x: 5, + y: 0.5, + curveNumber: 2, + data: { name: 'DOG', type: 'scatter' }, + }, + ], + } as unknown as PlotMouseEvent); + + const sent = lastSent(widget); + expect(sent.type).toBe('CALLABLE_EVENT'); + expect(sent.callback_id).toBe('cb_0'); + expect(sent.request_id).toBeUndefined(); + expect(sent.args).toEqual({ + points: [ + { + x: 5, + y: 0.5, + trace_name: 'DOG', + trace_type: 'scatter', + curve_number: 2, + }, + ], + modifiers: NO_MODIFIERS, + }); + }); + + it('serializes extra data-space fields present on the point', () => { + const { model, widget } = makeModel({ on_click: 'cb_0' }); + const { result } = renderHook(() => usePlotlyEventCallbacks(model)); + + result.current.onPlotlyClick?.({ + points: [ + { + lat: 10, + lon: 20, + location: 'US', + curveNumber: 0, + data: { name: 'X', type: 'scattergeo' }, + }, + ], + } as unknown as PlotMouseEvent); + + const sent = lastSent(widget); + expect(sent.args.points).toEqual([ + { + lat: 10, + lon: 20, + location: 'US', + trace_name: 'X', + trace_type: 'scattergeo', + curve_number: 0, + }, + ]); + }); + + it('does nothing for a preventable click on hierarchical traces', () => { + const { model, widget } = makeModel({ on_click: 'cb_0' }, ['cb_0']); + const { result } = renderHook(() => usePlotlyEventCallbacks(model)); + + result.current.onPlotlyClick?.({ + points: [{ curveNumber: 0, data: { name: 'All', type: 'sunburst' } }], + } as unknown as PlotMouseEvent); + + expect(widget.sendMessage).not.toHaveBeenCalled(); + }); + + it('still fires for non-hierarchical traces in a preventable figure', () => { + const { model, widget } = makeModel({ on_click: 'cb_0' }, ['cb_0']); + const { result } = renderHook(() => usePlotlyEventCallbacks(model)); + + result.current.onPlotlyClick?.({ + points: [ + { + x: 1, + y: 2, + curveNumber: 0, + data: { name: 'DOG', type: 'scatter' }, + }, + ], + } as unknown as PlotMouseEvent); + + const sent = lastSent(widget); + expect(sent.callback_id).toBe('cb_0'); + const points = sent.args.points as Array<{ trace_type: string }>; + expect(points[0].trace_type).toBe('scatter'); + }); + + it('includes xvals/yvals for a clickanywhere empty-area click', () => { + const { model, widget } = makeModel({ on_click: 'cb_0' }); + const { result } = renderHook(() => usePlotlyEventCallbacks(model)); + + result.current.onPlotlyClick?.({ + points: [], + xvals: [5], + yvals: [0.5], + } as unknown as PlotMouseEvent); + + const sent = lastSent(widget); + expect(sent.callback_id).toBe('cb_0'); + expect(sent.args).toEqual({ + points: [], + xvals: [5], + yvals: [0.5], + modifiers: NO_MODIFIERS, + }); + }); + + it('does not fire an empty-area click when preventable and hierarchical', () => { + const { model, widget } = makeModel({ on_click: 'cb_0' }, ['cb_0']); + const { result } = renderHook(() => usePlotlyEventCallbacks(model)); + + // Empty points on a preventable figure should still send (guards against + // [].every() returning true and swallowing clickanywhere events). + result.current.onPlotlyClick?.({ + points: [], + xvals: [1], + yvals: [2], + } as unknown as PlotMouseEvent); + + const sent = lastSent(widget); + expect(sent.callback_id).toBe('cb_0'); + expect(sent.args.xvals).toEqual([1]); + }); + }); + + describe('onPlotlySelected', () => { + it('sends points, range, and modifiers', () => { + const { model, widget } = makeModel({ on_selected: 'cb_0' }); + const { result } = renderHook(() => usePlotlyEventCallbacks(model)); + + result.current.onPlotlySelected?.({ + points: [ + { + x: 1, + y: 2, + curveNumber: 0, + data: { name: 'DOG', type: 'scatter' }, + }, + ], + range: { x: [0, 10], y: [0, 5] }, + } as unknown as PlotSelectionEvent); + + const sent = lastSent(widget); + expect(sent.callback_id).toBe('cb_0'); + expect(sent.args.range).toEqual({ x: [0, 10], y: [0, 5] }); + expect(sent.args.modifiers).toEqual(NO_MODIFIERS); + }); + + it('does nothing when the event is undefined', () => { + const { model, widget } = makeModel({ on_selected: 'cb_0' }); + const { result } = renderHook(() => usePlotlyEventCallbacks(model)); + + result.current.onPlotlySelected?.(undefined); + + expect(widget.sendMessage).not.toHaveBeenCalled(); + }); + }); + + describe('onPlotlyDeselect', () => { + it('sends modifiers only', () => { + const { model, widget } = makeModel({ on_deselect: 'cb_0' }); + const { result } = renderHook(() => usePlotlyEventCallbacks(model)); + + result.current.onPlotlyDeselect?.(); + + expect(lastSent(widget).args).toEqual({ modifiers: NO_MODIFIERS }); + }); + }); + + describe('onPlotlyClickAnnotation', () => { + it('sends index, annotation, and modifiers', () => { + const { model, widget } = makeModel({ on_click_annotation: 'cb_0' }); + const { result } = renderHook(() => usePlotlyEventCallbacks(model)); + + result.current.onPlotlyClickAnnotation?.({ + index: 1, + annotation: { text: 'Spike', x: 3, y: 4 }, + } as unknown as ClickAnnotationEvent); + + expect(lastSent(widget).args).toEqual({ + index: 1, + annotation: { text: 'Spike', x: 3, y: 4 }, + modifiers: NO_MODIFIERS, + }); + }); + }); + + describe('onPlotlyDoubleClick', () => { + it('sends modifiers when on_double_click is registered', () => { + const { model, widget } = makeModel({ on_double_click: 'cb_0' }); + const { result } = renderHook(() => usePlotlyEventCallbacks(model)); + + result.current.onPlotlyDoubleClick?.(); + + const sent = lastSent(widget); + expect(sent.callback_id).toBe('cb_0'); + expect(sent.args).toEqual({ modifiers: NO_MODIFIERS }); + }); + + it('does nothing when not registered', () => { + const { model, widget } = makeModel({ on_click: 'cb_0' }); + const { result } = renderHook(() => usePlotlyEventCallbacks(model)); + + result.current.onPlotlyDoubleClick?.(); + + expect(widget.sendMessage).not.toHaveBeenCalled(); + }); + }); + + describe('onPlotlyWebGlContextLost', () => { + it('sends modifiers when registered', () => { + const { model, widget } = makeModel({ on_web_gl_context_lost: 'cb_0' }); + const { result } = renderHook(() => usePlotlyEventCallbacks(model)); + + result.current.onPlotlyWebGlContextLost?.(); + + const sent = lastSent(widget); + expect(sent.callback_id).toBe('cb_0'); + expect(sent.args).toEqual({ modifiers: NO_MODIFIERS }); + }); + }); + + describe('onPlotlyRelayout', () => { + it('debounces changes and includes modifiers', () => { + jest.useFakeTimers(); + const { model, widget } = makeModel({ on_relayout: 'cb_0' }); + const { result } = renderHook(() => usePlotlyEventCallbacks(model)); + + result.current.onPlotlyRelayout?.({ 'xaxis.range[0]': 0 }); + result.current.onPlotlyRelayout?.({ 'xaxis.range[1]': 10 }); + expect(widget.sendMessage).not.toHaveBeenCalled(); + + jest.advanceTimersByTime(150); + + expect(lastSent(widget).args).toEqual({ + 'xaxis.range[0]': 0, + 'xaxis.range[1]': 10, + modifiers: NO_MODIFIERS, + }); + jest.useRealTimers(); + }); + }); + + describe('onPlotlyLegendClick', () => { + it('returns true (allows default) when not registered', () => { + const { model, widget } = makeModel({ on_click: 'cb_0' }); + const { result } = renderHook(() => usePlotlyEventCallbacks(model)); + + const returned = result.current.onPlotlyLegendClick?.({ + curveNumber: 0, + data: [], + } as unknown as LegendClickEvent); + + expect(returned).toBe(true); + expect(widget.sendMessage).not.toHaveBeenCalled(); + }); + + it('prevents the default, debounces, sends a request, and restyles when allowed', async () => { + jest.useFakeTimers(); + const { model, widget } = makeModel({ on_legend_click: 'cb_0' }, [ + 'cb_0', + ]); + const { result } = renderHook(() => usePlotlyEventCallbacks(model)); + const gd = { on: jest.fn(), data: [{ visible: true }] }; + result.current.onPlotElementChange?.(gd as unknown as HTMLElement); + + const returned = result.current.onPlotlyLegendClick?.({ + curveNumber: 0, + data: [{ name: 'DOG' }], + } as unknown as LegendClickEvent); + expect(returned).toBe(false); + + // Not sent yet (debounced) + expect(widget.sendMessage).not.toHaveBeenCalled(); + + jest.advanceTimersByTime(300); + + const sent = lastSent(widget); + expect(sent.callback_id).toBe('cb_0'); + expect(sent.request_id).toBeDefined(); + expect(sent.args).toEqual({ + trace_name: 'DOG', + curve_number: 0, + modifiers: NO_MODIFIERS, + }); + + model.handleCallableResponse({ + request_id: sent.request_id as string, + result: true, + }); + await jest.advanceTimersByTimeAsync(0); + + expect(Plotly.restyle).toHaveBeenCalledWith( + gd, + { visible: 'legendonly' }, + [0] + ); + jest.useRealTimers(); + }); + + it('does not restyle when the callback prevents it', async () => { + jest.useFakeTimers(); + const { model, widget } = makeModel({ on_legend_click: 'cb_0' }, [ + 'cb_0', + ]); + const { result } = renderHook(() => usePlotlyEventCallbacks(model)); + const gd = { on: jest.fn(), data: [{ visible: true }] }; + result.current.onPlotElementChange?.(gd as unknown as HTMLElement); + + result.current.onPlotlyLegendClick?.({ + curveNumber: 0, + data: [{ name: 'DOG' }], + } as unknown as LegendClickEvent); + + jest.advanceTimersByTime(300); + + const sent = lastSent(widget); + model.handleCallableResponse({ + request_id: sent.request_id as string, + result: false, + }); + await jest.advanceTimersByTimeAsync(0); + + expect(Plotly.restyle).not.toHaveBeenCalled(); + jest.useRealTimers(); + }); + }); + + describe('onPlotlyLegendDoubleClick', () => { + it('returns true (allows default) when nothing is registered', () => { + const { model } = makeModel({ on_click: 'cb_0' }); + const { result } = renderHook(() => usePlotlyEventCallbacks(model)); + + const returned = result.current.onPlotlyLegendDoubleClick?.({ + curveNumber: 0, + data: [], + } as unknown as LegendClickEvent); + + expect(returned).toBe(true); + }); + + it('cancels pending legend click debounce on double-click', () => { + jest.useFakeTimers(); + const { model, widget } = makeModel( + { on_legend_click: 'cb_0', on_legend_double_click: 'cb_1' }, + ['cb_0', 'cb_1'] + ); + const { result } = renderHook(() => usePlotlyEventCallbacks(model)); + const gd = { on: jest.fn(), data: [{ visible: true }] }; + result.current.onPlotElementChange?.(gd as unknown as HTMLElement); + + // First click of double-click + result.current.onPlotlyLegendClick?.({ + curveNumber: 0, + data: [{ name: 'DOG' }], + } as unknown as LegendClickEvent); + + // Double-click arrives before debounce expires + result.current.onPlotlyLegendDoubleClick?.({ + curveNumber: 0, + data: [{ name: 'DOG' }], + } as unknown as LegendClickEvent); + + jest.advanceTimersByTime(300); + + // Only the double-click callback should have been sent + const sent = lastSent(widget); + expect(sent.callback_id).toBe('cb_1'); + expect(widget.sendMessage).toHaveBeenCalledTimes(1); + jest.useRealTimers(); + }); + }); + + describe('modifiers', () => { + it('defaults modifiers to all false', () => { + const { model, widget } = makeModel({ on_click: 'cb_0' }); + const { result } = renderHook(() => usePlotlyEventCallbacks(model)); + + result.current.onPlotlyClick?.({ + points: [{ x: 1, y: 2, curveNumber: 0, data: {} }], + } as unknown as PlotMouseEvent); + + expect(lastSent(widget).args.modifiers).toEqual(NO_MODIFIERS); + }); + + it('captures modifier keys held during a document pointerdown', () => { + const { model, widget } = makeModel({ on_click: 'cb_0' }); + const { result } = renderHook(() => usePlotlyEventCallbacks(model)); + + document.dispatchEvent( + new MouseEvent('pointerdown', { shiftKey: true, metaKey: true }) + ); + + result.current.onPlotlyClick?.({ + points: [{ x: 1, y: 2, curveNumber: 0, data: {} }], + } as unknown as PlotMouseEvent); + + expect(lastSent(widget).args.modifiers).toEqual({ + shift: true, + ctrl: false, + alt: false, + meta: true, + }); + }); + + it('removes the document pointerdown listener on unmount', () => { + const removeSpy = jest.spyOn(document, 'removeEventListener'); + const { model } = makeModel({ on_click: 'cb_0' }); + const { unmount } = renderHook(() => usePlotlyEventCallbacks(model)); + + unmount(); + + expect(removeSpy).toHaveBeenCalledWith( + 'pointerdown', + expect.any(Function), + true + ); + removeSpy.mockRestore(); + }); + }); + + describe('hierarchical drill-down wiring (onPlotElementChange)', () => { + it('wires sunburst/treemap/icicle handlers that prevent default and send modifiers', async () => { + const { model, widget } = makeModel({ on_click: 'cb_0' }, ['cb_0']); + const { result } = renderHook(() => usePlotlyEventCallbacks(model)); + + const handlers: Record unknown> = {}; + const gd = { + on: (name: string, cb: (data: unknown) => unknown) => { + handlers[name] = cb; + }, + data: [], + }; + result.current.onPlotElementChange?.(gd as unknown as HTMLElement); + + // Wiring is deferred to a microtask so it registers after react-plotly.js. + await Promise.resolve(); + + expect(typeof handlers.plotly_sunburstclick).toBe('function'); + expect(typeof handlers.plotly_treemapclick).toBe('function'); + expect(typeof handlers.plotly_icicleclick).toBe('function'); + + const returned = handlers.plotly_sunburstclick({ + points: [ + { + label: 'A', + parent: '', + value: 10, + id: 'A', + curveNumber: 0, + data: { name: 'X', type: 'sunburst' }, + }, + ], + nextLevel: 'A', + }); + expect(returned).toBe(false); + + const sent = lastSent(widget); + expect(sent.callback_id).toBe('cb_0'); + expect(sent.request_id).toBeDefined(); + expect(sent.args).toEqual({ + points: [ + { + label: 'A', + parent: '', + value: 10, + id: 'A', + trace_name: 'X', + trace_type: 'sunburst', + curve_number: 0, + }, + ], + next_level: 'A', + modifiers: NO_MODIFIERS, + }); + }); + + it('does not wire hierarchical handlers when on_click is not preventable', async () => { + const { model } = makeModel({ on_click: 'cb_0' }); + const { result } = renderHook(() => usePlotlyEventCallbacks(model)); + + const onSpy = jest.fn(); + result.current.onPlotElementChange?.({ + on: onSpy, + data: [], + } as unknown as HTMLElement); + await Promise.resolve(); + + expect(onSpy).not.toHaveBeenCalled(); + }); + }); +}); diff --git a/plugins/plotly-express/src/js/src/usePlotlyEventCallbacks.ts b/plugins/plotly-express/src/js/src/usePlotlyEventCallbacks.ts new file mode 100644 index 000000000..b6c53f172 --- /dev/null +++ b/plugins/plotly-express/src/js/src/usePlotlyEventCallbacks.ts @@ -0,0 +1,502 @@ +import { useEffect, useMemo, useRef } from 'react'; +import type { + PlotData, + PlotMouseEvent, + PlotSelectionEvent, + ClickAnnotationEvent, + LegendClickEvent, + SunburstClickEvent, + PlotlyHTMLElement, + Data, +} from 'plotly.js'; +import Plotly from 'plotly.js-dist-min'; +import type PlotlyExpressChartModel from './PlotlyExpressChartModel'; + +/** + * The Plotly graph div element. Plotly's `PlotlyHTMLElement` type already models + * `.on` (with per-event payload types) and `.data`; we add an overload for the + * treemap/icicle click events, which share the sunburst click event shape but + * aren't in the type despite existing at runtime. + */ +type PlotlyGraphDiv = PlotlyHTMLElement & { + on: ( + event: + | 'plotly_sunburstclick' + | 'plotly_treemapclick' + | 'plotly_icicleclick', + callback: (event: SunburstClickEvent) => void + ) => void; +}; + +/** Keyboard modifier keys held during a user interaction. */ +type EventModifiers = { + shift: boolean; + ctrl: boolean; + alt: boolean; + meta: boolean; +}; + +/** + * Data-space field names that Plotly may include on point data at runtime, + * depending on the chart type. + */ +const POINT_DATA_FIELDS = [ + 'x', + 'y', + 'z', + 'lat', + 'lon', + 'location', + 'r', + 'theta', + 'open', + 'high', + 'low', + 'close', + 'label', + 'parent', + 'value', + 'id', + 'text', +] as const; + +/** Hierarchical trace types that route clicks through the imperative handler. */ +const HIERARCHICAL_TYPES = new Set(['sunburst', 'treemap', 'icicle']); + +/** Plotly's default doubleClickDelay for legend click discrimination. */ +const LEGEND_DBL_CLICK_DELAY = 300; + +/** Debounce window for coalescing rapid relayout (pan/zoom) events. */ +const RELAYOUT_DEBOUNCE = 150; + +/** + * Serialize a Plotly point datum into the payload sent to Python. + * Includes all data-space fields that are present on the point, + * plus `trace_name`, `trace_type`, and `curve_number`. + */ +function serializePoint( + p: Record & { data: Partial; curveNumber: number } +): Record { + const result: Record = {}; + POINT_DATA_FIELDS.forEach(field => { + if (field in p && p[field] !== undefined) { + result[field] = p[field]; + } + }); + result.trace_name = p.data.name; + result.trace_type = p.data.type; + result.curve_number = p.curveNumber; + return result; +} + +/** + * Perform the default legend double-click behavior: toggle between + * isolating the clicked trace and showing all. + */ +function performLegendDoubleClick( + gd: PlotlyGraphDiv, + curveNumber: number +): void { + const traces = gd.data ?? []; + const isAlreadyIsolated = traces.every( + (trace, i) => + i === curveNumber || + (trace as Partial).visible === false || + (trace as Partial).visible === 'legendonly' + ); + + if (isAlreadyIsolated) { + // Show all + Plotly.restyle(gd, { visible: true }); + } else { + // Isolate — hide all others + const visibilities = traces.map((trace, i) => { + if ((trace as Partial).visible === false) return false; // false is sticky + return i === curveNumber ? true : 'legendonly'; + }); + Plotly.restyle(gd, { visible: visibilities } as unknown as Data); + } +} + +/** + * Plotly event handler props forwarded to the `Chart` component. These mirror + * the optional `onPlotly*` props on `Chart`. Each is only defined when the + * corresponding Python callback is registered so Plotly's native behavior runs + * with zero overhead otherwise. + */ +export interface PlotlyEventHandlers { + onPlotlyRelayout?: (changes: Record) => void; + onPlotlyClick?: (data: Readonly) => void; + onPlotlyDoubleClick?: () => void; + onPlotlySelected?: (data: Readonly | undefined) => void; + onPlotlyDeselect?: () => void; + onPlotlyClickAnnotation?: (data: Readonly) => void; + onPlotlyLegendClick?: (data: Readonly) => boolean; + onPlotlyLegendDoubleClick?: (data: Readonly) => boolean; + onPlotlyWebGlContextLost?: () => void; + onPlotElementChange?: (element: HTMLElement | null) => void; +} + +/** + * Build the Plotly event handler props for a chart model. + * + * All event serialization and default-behavior logic lives here; the model is + * only used as the transport layer (callback map, preventable set, and the + * `sendEventCallback` / `sendEventCallbackWithResponse` messaging methods). + * The returned object is spread onto the `Chart` component so events are passed + * in directly rather than by overriding methods on the model. + * + * @param model The chart model, or null before it has loaded + * @returns The event handler props to pass to `Chart` + */ +export function usePlotlyEventCallbacks( + model: PlotlyExpressChartModel | null +): PlotlyEventHandlers { + // Keyboard modifier keys captured from the raw DOM pointer event. We read + // these from the DOM directly rather than from Plotly's event objects, which + // don't expose modifier state for every event type (selection, relayout...). + const modifiersRef = useRef({ + shift: false, + ctrl: false, + alt: false, + meta: false, + }); + + // The Plotly graph div, provided via onPlotElementChange once Plotly inits. + const plotElementRef = useRef(null); + + // Timer for debouncing legend single-click vs double-click. + const legendClickTimerRef = useRef | null>( + null + ); + + // Debounce state for relayout (pan/zoom) events. + const relayoutTimerRef = useRef | null>(null); + const relayoutMergedRef = useRef>({}); + + // Track modifier keys from the raw DOM pointer event. Capture phase so it + // runs before Plotly dispatches its own handlers. + useEffect(() => { + const handlePointerModifiers = (event: PointerEvent): void => { + modifiersRef.current = { + shift: event.shiftKey, + ctrl: event.ctrlKey, + alt: event.altKey, + meta: event.metaKey, + }; + }; + document.addEventListener('pointerdown', handlePointerModifiers, true); + return () => { + document.removeEventListener('pointerdown', handlePointerModifiers, true); + }; + }, []); + + return useMemo(() => { + if (model == null) { + return {}; + } + + const getModifiers = (): EventModifiers => ({ ...modifiersRef.current }); + + // Handlers read the callback IDs live from the model at invocation time + // rather than capturing them here. The model replaces its callbackMap when + // widget data updates (during subscribe, after this memo has run), so a + // captured snapshot would be stale. Reading live keeps them in sync. + return { + // Called by the Chart component with the Plotly graph div on init/purge. + // On init we imperatively wire the hierarchical drill-down clicks, which + // can't be passed as props to react-plotly.js because: + // - Plotly only honors a handler's `return false` (to prevent the + // default drill-down) when that handler is the last one registered, + // - react-plotly.js registers a `plotly_sunburstclick` "update" + // listener of its own after onInitialized, shadowing ours, and + // - react-plotly.js exposes no treemap/icicle click props at all. + onPlotElementChange: (element: HTMLElement | null): void => { + const gd = element as PlotlyGraphDiv | null; + plotElementRef.current = gd; + if (gd == null || typeof gd.on !== 'function') { + return; + } + const hierClickId = model.getCallbackMap().get('on_click'); + if (hierClickId == null || !model.isPreventable(hierClickId)) { + return; + } + // Defer wiring to a microtask so our listener registers after + // react-plotly.js attaches its own, which clobbers our sunburst handler. + queueMicrotask(() => { + if (plotElementRef.current !== gd) { + // The element was swapped out or removed before the microtask ran. + return; + } + const hierEvents = [ + 'plotly_sunburstclick', + 'plotly_treemapclick', + 'plotly_icicleclick', + ] as const; + hierEvents.forEach(eventName => { + gd.on(eventName, (data: SunburstClickEvent) => { + const args = { + points: data.points.map(p => ({ + label: p.label, + parent: p.parent, + value: p.value, + id: p.id, + trace_name: (p.data as Partial).name, + trace_type: (p.data as Partial).type, + curve_number: p.curveNumber, + })), + next_level: data.nextLevel ?? null, + modifiers: getModifiers(), + }; + model + .sendEventCallbackWithResponse(hierClickId, args) + .then(allowed => { + if (allowed && data.nextLevel != null) { + const traceIdx = data.points?.[0]?.curveNumber ?? 0; + Plotly.animate( + gd, + { data: [{ level: data.nextLevel }], traces: [traceIdx] }, + { + frame: { redraw: false, duration: 300 }, + transition: { duration: 300, easing: 'cubic-in-out' }, + mode: 'immediate', + fromcurrent: true, + } + ); + } + }); + return false; // Always prevent default drill-down + }); + }); + }); + }, + + // on_click — non-hierarchical point clicks. Hierarchical clicks are + // preventable and handled imperatively above. Non-hierarchical traces in + // a layered/subplot figure that also contains hierarchical traces still + // arrive here, so we only skip when every clicked point is hierarchical. + // When the figure enables `clickanywhere`, clicking empty plot area fires + // with an empty `points` array plus `xvals`/`yvals` holding the cursor + // position in data space (one entry per axis). + onPlotlyClick: (event: Readonly): void => { + const clickId = model.getCallbackMap().get('on_click'); + if (clickId == null) { + return; + } + if (model.isPreventable(clickId)) { + const allHierarchical = + event.points.length > 0 && + event.points.every(p => HIERARCHICAL_TYPES.has(p.data.type ?? '')); + if (allHierarchical) { + return; // Handled by the imperative hierarchical handler + } + } + const args: Record = { + points: event.points.map(p => + serializePoint( + p as unknown as Record & { + data: Partial; + curveNumber: number; + } + ) + ), + modifiers: getModifiers(), + }; + // clickanywhere data-space cursor coordinates (plotly.js >= 3.5.0). + const clickEvent = event as unknown as { + xvals?: unknown[]; + yvals?: unknown[]; + }; + if (clickEvent.xvals != null) { + args.xvals = clickEvent.xvals; + } + if (clickEvent.yvals != null) { + args.yvals = clickEvent.yvals; + } + model.sendEventCallback(clickId, args); + }, + + // on_double_click + onPlotlyDoubleClick: (): void => { + const doubleClickId = model.getCallbackMap().get('on_double_click'); + if (doubleClickId == null) { + return; + } + model.sendEventCallback(doubleClickId, { modifiers: getModifiers() }); + }, + + // on_selected — box/lasso selection + onPlotlySelected: ( + event: Readonly | undefined + ): void => { + const selectedId = model.getCallbackMap().get('on_selected'); + if (selectedId == null || event == null) { + return; + } + const args: Record = { + points: event.points.map(p => + serializePoint( + p as unknown as Record & { + data: Partial; + curveNumber: number; + } + ) + ), + modifiers: getModifiers(), + }; + if (event.range != null) { + args.range = event.range; + } + if (event.lassoPoints != null) { + args.lasso_points = event.lassoPoints; + } + model.sendEventCallback(selectedId, args); + }, + + // on_deselect — selection cleared + onPlotlyDeselect: (): void => { + const deselectId = model.getCallbackMap().get('on_deselect'); + if (deselectId == null) { + return; + } + model.sendEventCallback(deselectId, { modifiers: getModifiers() }); + }, + + // on_click_annotation + onPlotlyClickAnnotation: ( + event: Readonly + ): void => { + const annotationId = model.getCallbackMap().get('on_click_annotation'); + if (annotationId == null) { + return; + } + model.sendEventCallback(annotationId, { + index: event.index, + annotation: { + text: event.annotation.text, + x: event.annotation.x, + y: event.annotation.y, + }, + modifiers: getModifiers(), + }); + }, + + // on_legend_click — debounced to discriminate from double-clicks. Plotly + // fires plotly_legendclick for BOTH clicks of a double-click, so we hold + // the single click for LEGEND_DBL_CLICK_DELAY ms; a double-click cancels + // it. Returns true when unregistered to let Plotly perform its default. + onPlotlyLegendClick: (event: Readonly): boolean => { + const legendClickId = model.getCallbackMap().get('on_legend_click'); + if (legendClickId == null) { + return true; + } + const gd = plotElementRef.current; + const args = { + trace_name: + (event.data?.[event.curveNumber] as Partial)?.name ?? '', + curve_number: event.curveNumber, + modifiers: getModifiers(), + }; + + if (legendClickTimerRef.current != null) { + clearTimeout(legendClickTimerRef.current); + legendClickTimerRef.current = null; + } + + legendClickTimerRef.current = setTimeout(() => { + legendClickTimerRef.current = null; + model + .sendEventCallbackWithResponse(legendClickId, args) + .then(allowed => { + if (allowed && gd != null) { + const currentVis = ( + gd.data?.[event.curveNumber] as Partial + )?.visible; + const nextVis = + currentVis === 'legendonly' ? true : 'legendonly'; + Plotly.restyle(gd, { visible: nextVis }, [event.curveNumber]); + } + }); + }, LEGEND_DBL_CLICK_DELAY); + + return false; // Always prevent; re-applied above if allowed. + }, + + // on_legend_double_click — cancels any pending single-click so only the + // double-click fires. When only on_legend_click is registered, its false + // return blocks Plotly's native double-click, so we reimplement default. + // Returns true when nothing is registered to let Plotly do its default. + onPlotlyLegendDoubleClick: ( + event: Readonly + ): boolean => { + const callbackMap = model.getCallbackMap(); + const legendClickId = callbackMap.get('on_legend_click'); + const legendDblClickId = callbackMap.get('on_legend_double_click'); + if (legendClickId == null && legendDblClickId == null) { + return true; + } + + if (legendClickTimerRef.current != null) { + clearTimeout(legendClickTimerRef.current); + legendClickTimerRef.current = null; + } + + const gd = plotElementRef.current; + const { curveNumber } = event; + if (legendDblClickId != null) { + const args = { + trace_name: + (event.data?.[curveNumber] as Partial)?.name ?? '', + curve_number: curveNumber, + modifiers: getModifiers(), + }; + model + .sendEventCallbackWithResponse(legendDblClickId, args) + .then(allowed => { + if (allowed && gd != null) { + performLegendDoubleClick(gd, curveNumber); + } + }); + } else if (gd != null) { + // Only on_legend_click is registered; perform the default directly. + performLegendDoubleClick(gd, curveNumber); + } + return false; // Always prevent; re-applied above if allowed. + }, + + // on_relayout — debounced. During a pan/zoom drag Plotly fires + // plotly_relayout on every frame; merge keys and send once after a pause. + onPlotlyRelayout: (changes: Record): void => { + const relayoutId = model.getCallbackMap().get('on_relayout'); + if (relayoutId == null) { + return; + } + Object.assign(relayoutMergedRef.current, changes); + if (relayoutTimerRef.current != null) { + clearTimeout(relayoutTimerRef.current); + } + relayoutTimerRef.current = setTimeout(() => { + model.sendEventCallback(relayoutId, { + ...relayoutMergedRef.current, + modifiers: getModifiers(), + }); + relayoutMergedRef.current = {}; + relayoutTimerRef.current = null; + }, RELAYOUT_DEBOUNCE); + }, + + // on_web_gl_context_lost + onPlotlyWebGlContextLost: (): void => { + const webGlLostId = model + .getCallbackMap() + .get('on_web_gl_context_lost'); + if (webGlLostId == null) { + return; + } + model.sendEventCallback(webGlLostId, { modifiers: getModifiers() }); + }, + }; + }, [model]); +} + +export default usePlotlyEventCallbacks; diff --git a/plugins/plotly-express/src/js/src/usePlotlyExpressModel.ts b/plugins/plotly-express/src/js/src/usePlotlyExpressModel.ts new file mode 100644 index 000000000..ceaad49fe --- /dev/null +++ b/plugins/plotly-express/src/js/src/usePlotlyExpressModel.ts @@ -0,0 +1,24 @@ +import type PlotlyExpressChartModel from './PlotlyExpressChartModel'; +import { useHandleSceneTicks } from './useHandleSceneTicks.js'; +import { + usePlotlyEventCallbacks, + type PlotlyEventHandlers, +} from './usePlotlyEventCallbacks.js'; + +/** + * Compose the model-specific hooks needed by both PlotlyExpressChart and + * PlotlyExpressChartPanel + * + * @param model The chart model, or undefined before it has loaded + * @param container The chart container element, or null before mount + * @returns The event handler props to spread onto Chart / ChartPanel + */ +export function usePlotlyExpressModel( + model: PlotlyExpressChartModel | undefined, + container: HTMLDivElement | null +): PlotlyEventHandlers { + useHandleSceneTicks(model, container); + return usePlotlyEventCallbacks(model ?? null); +} + +export default usePlotlyExpressModel; diff --git a/plugins/plotly-express/test/deephaven/plot/express/communication/__init__.py b/plugins/plotly-express/test/deephaven/plot/express/communication/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/plugins/plotly-express/test/deephaven/plot/express/communication/test_callable_event.py b/plugins/plotly-express/test/deephaven/plot/express/communication/test_callable_event.py new file mode 100644 index 000000000..696ef0433 --- /dev/null +++ b/plugins/plotly-express/test/deephaven/plot/express/communication/test_callable_event.py @@ -0,0 +1,206 @@ +from __future__ import annotations +import json +import unittest + +from ..BaseTest import BaseTestCase + + +class DeephavenFigureListenerCallbackTestCase(BaseTestCase): + """Tests for CALLABLE_EVENT message processing in DeephavenFigureListener""" + + def setUp(self) -> None: + from deephaven import new_table + from deephaven.column import int_col + + self.source = new_table([int_col("X", [1, 2, 3]), int_col("Y", [4, 5, 6])]) + + def _create_listener(self, fig): + """Create a DeephavenFigureListener for the given figure""" + from unittest.mock import MagicMock + from src.deephaven.plot.express.communication.DeephavenFigureListener import ( + DeephavenFigureListener, + ) + + connection = MagicMock() + listener = DeephavenFigureListener(fig, connection) + return listener + + def test_callable_event_fire_and_forget(self): + """CALLABLE_EVENT without request_id calls callback and returns empty""" + import src.deephaven.plot.express as dx + from unittest.mock import MagicMock + + handler = MagicMock() + fig = dx.scatter(self.source, x="X", y="Y", on_click=handler) + + listener = self._create_listener(fig) + + # Get the callback_id + inner_fig = listener._get_figure() + callback_id = inner_fig._callback_ids["on_click"] + + args = { + "points": [{"x": 1, "y": 4}], + "modifiers": { + "shift": True, + "ctrl": False, + "alt": False, + "meta": False, + }, + } + message = json.dumps( + { + "type": "CALLABLE_EVENT", + "callback_id": callback_id, + "args": args, + } + ).encode() + + result_payload, result_refs = listener.process_message(message, []) + + handler.assert_called_once() + # The event args (including modifiers) are forwarded to the callback verbatim + self.assertEqual(handler.call_args[0][0], args) + self.assertEqual(result_payload, b"") + self.assertEqual(result_refs, []) + + def test_callable_event_with_request_id_returns_response(self): + """CALLABLE_EVENT with request_id returns CALLABLE_RESPONSE""" + import src.deephaven.plot.express as dx + + def handler(event): + return False + + fig = dx.scatter(self.source, x="X", y="Y", on_legend_click=handler) + + listener = self._create_listener(fig) + + inner_fig = listener._get_figure() + callback_id = inner_fig._callback_ids["on_legend_click"] + + message = json.dumps( + { + "type": "CALLABLE_EVENT", + "callback_id": callback_id, + "args": {"trace_name": "DOG", "curve_number": 0}, + "request_id": "req-123", + } + ).encode() + + result_payload, result_refs = listener.process_message(message, []) + + # process_message returns empty; the preventable response is pushed to + # the client via the connection, not the return value. + self.assertEqual(result_payload, b"") + listener._connection.on_data.assert_called_once() + sent_payload = listener._connection.on_data.call_args[0][0] + response = json.loads(sent_payload) + self.assertEqual(response["type"], "CALLABLE_RESPONSE") + self.assertEqual(response["request_id"], "req-123") + self.assertEqual(response["result"], False) + + def test_callable_event_returning_true(self): + """Preventable callback returning True returns True in response""" + import src.deephaven.plot.express as dx + + def handler(event): + return True + + fig = dx.scatter(self.source, x="X", y="Y", on_legend_click=handler) + + listener = self._create_listener(fig) + + inner_fig = listener._get_figure() + callback_id = inner_fig._callback_ids["on_legend_click"] + + message = json.dumps( + { + "type": "CALLABLE_EVENT", + "callback_id": callback_id, + "args": {"trace_name": "DOG", "curve_number": 0}, + "request_id": "req-456", + } + ).encode() + + listener.process_message(message, []) + + sent_payload = listener._connection.on_data.call_args[0][0] + response = json.loads(sent_payload) + self.assertEqual(response["result"], True) + + def test_callable_event_returning_none(self): + """Preventable callback returning None returns None in response""" + import src.deephaven.plot.express as dx + + def handler(event): + pass # returns None implicitly + + fig = dx.scatter(self.source, x="X", y="Y", on_legend_click=handler) + + listener = self._create_listener(fig) + + inner_fig = listener._get_figure() + callback_id = inner_fig._callback_ids["on_legend_click"] + + message = json.dumps( + { + "type": "CALLABLE_EVENT", + "callback_id": callback_id, + "args": {}, + "request_id": "req-789", + } + ).encode() + + listener.process_message(message, []) + + sent_payload = listener._connection.on_data.call_args[0][0] + response = json.loads(sent_payload) + self.assertIsNone(response["result"]) + + def test_unknown_callback_id_does_not_raise(self): + """Unknown callback_id does not raise""" + import src.deephaven.plot.express as dx + + fig = dx.scatter(self.source, x="X", y="Y", on_click=lambda e: None) + listener = self._create_listener(fig) + + message = json.dumps( + { + "type": "CALLABLE_EVENT", + "callback_id": "cb_unknown", + "args": {}, + } + ).encode() + + # Should not raise + result_payload, result_refs = listener.process_message(message, []) + self.assertEqual(result_payload, b"") + + def test_exception_in_callback_does_not_crash(self): + """Exception inside a callback does not crash the connection""" + import src.deephaven.plot.express as dx + + def bad_handler(event): + raise RuntimeError("callback error") + + fig = dx.scatter(self.source, x="X", y="Y", on_click=bad_handler) + listener = self._create_listener(fig) + + inner_fig = listener._get_figure() + callback_id = inner_fig._callback_ids["on_click"] + + message = json.dumps( + { + "type": "CALLABLE_EVENT", + "callback_id": callback_id, + "args": {}, + } + ).encode() + + # Should not raise + result_payload, result_refs = listener.process_message(message, []) + self.assertEqual(result_payload, b"") + + +if __name__ == "__main__": + unittest.main() diff --git a/plugins/plotly-express/test/deephaven/plot/express/deephaven_figure/test_callbacks.py b/plugins/plotly-express/test/deephaven/plot/express/deephaven_figure/test_callbacks.py new file mode 100644 index 000000000..4493f38dc --- /dev/null +++ b/plugins/plotly-express/test/deephaven/plot/express/deephaven_figure/test_callbacks.py @@ -0,0 +1,166 @@ +from __future__ import annotations +import unittest + +from ..BaseTest import BaseTestCase + + +class DeephavenFigureCallbackTestCase(BaseTestCase): + """Tests for event callback registration and serialization on DeephavenFigure""" + + def setUp(self) -> None: + from deephaven import new_table + from deephaven.column import int_col + + self.source = new_table([int_col("X", [1, 2, 3]), int_col("Y", [4, 5, 6])]) + + def test_register_callback_assigns_incrementing_ids(self): + """_register_callback assigns stable, incrementing IDs""" + import src.deephaven.plot.express as dx + + fig = dx.scatter(self.source, x="X", y="Y") + fig._register_callback("on_click", lambda e: None) + fig._register_callback("on_selected", lambda e: None) + + self.assertEqual(fig._callback_ids["on_click"], "cb_0") + self.assertEqual(fig._callback_ids["on_selected"], "cb_1") + + def test_to_json_includes_callbacks(self): + """to_json includes deephaven.callbacks when callbacks are registered""" + import src.deephaven.plot.express as dx + import json + + fig = dx.scatter(self.source, x="X", y="Y") + fig._register_callback("on_click", lambda e: None) + + result = json.loads(fig.to_json(self.exporter)) + self.assertIn("callbacks", result["deephaven"]) + self.assertEqual(result["deephaven"]["callbacks"]["on_click"], "cb_0") + + def test_to_json_omits_callbacks_when_none(self): + """to_json omits deephaven.callbacks when no callbacks are registered""" + import src.deephaven.plot.express as dx + import json + + fig = dx.scatter(self.source, x="X", y="Y") + + result = json.loads(fig.to_json(self.exporter)) + self.assertNotIn("callbacks", result["deephaven"]) + + def test_to_json_includes_preventable_callbacks_for_legend(self): + """to_json includes preventable_callbacks for on_legend_click""" + import src.deephaven.plot.express as dx + import json + + fig = dx.scatter(self.source, x="X", y="Y") + fig._register_callback("on_legend_click", lambda e: False) + + result = json.loads(fig.to_json(self.exporter)) + self.assertIn("preventable_callbacks", result["deephaven"]) + self.assertIn("cb_0", result["deephaven"]["preventable_callbacks"]) + + def test_to_json_on_click_not_preventable_for_scatter(self): + """on_click is NOT marked preventable on non-hierarchical charts""" + import src.deephaven.plot.express as dx + import json + + fig = dx.scatter(self.source, x="X", y="Y") + fig._register_callback("on_click", lambda e: None) + + result = json.loads(fig.to_json(self.exporter)) + # on_click should NOT be in preventable_callbacks for scatter + preventable = result["deephaven"].get("preventable_callbacks", []) + self.assertNotIn("cb_0", preventable) + + def test_get_callback_by_id(self): + """get_callback_by_id returns the correct function""" + import src.deephaven.plot.express as dx + + handler = lambda e: "handled" + fig = dx.scatter(self.source, x="X", y="Y") + fig._register_callback("on_click", handler) + + retrieved = fig.get_callback_by_id("cb_0") + self.assertIs(retrieved, handler) + + def test_get_callback_by_id_unknown(self): + """get_callback_by_id returns None for unknown IDs""" + import src.deephaven.plot.express as dx + + fig = dx.scatter(self.source, x="X", y="Y") + self.assertIsNone(fig.get_callback_by_id("cb_999")) + + def test_copy_preserves_callbacks(self): + """copy() preserves callback state""" + import src.deephaven.plot.express as dx + + handler = lambda e: None + fig = dx.scatter(self.source, x="X", y="Y") + fig._register_callback("on_click", handler) + + copied = fig.copy() + self.assertEqual(copied._callback_ids, fig._callback_ids) + self.assertIs(copied._callbacks["on_click"], handler) + + def test_scatter_with_on_click_kwarg(self): + """scatter() with on_click registers the callback""" + import src.deephaven.plot.express as dx + import json + + handler = lambda e: None + fig = dx.scatter(self.source, x="X", y="Y", on_click=handler) + + self.assertIn("on_click", fig._callbacks) + self.assertIs(fig._callbacks["on_click"], handler) + + result = json.loads(fig.to_json(self.exporter)) + self.assertIn("callbacks", result["deephaven"]) + self.assertIn("on_click", result["deephaven"]["callbacks"]) + + def test_on_press_alias(self): + """on_press resolves to on_click""" + import src.deephaven.plot.express as dx + + handler = lambda e: None + fig = dx.scatter(self.source, x="X", y="Y", on_press=handler) + + self.assertIn("on_click", fig._callbacks) + self.assertIs(fig._callbacks["on_click"], handler) + + +class LayerCallbackMergingTestCase(BaseTestCase): + """Tests for callback merging in layer()""" + + def setUp(self) -> None: + from deephaven import new_table + from deephaven.column import int_col + + self.source = new_table([int_col("X", [1, 2, 3]), int_col("Y", [4, 5, 6])]) + + def test_layer_direct_kwarg_wins(self): + """layer() with direct on_click kwarg uses that callback""" + import src.deephaven.plot.express as dx + + handler_a = lambda e: "a" + handler_direct = lambda e: "direct" + + fig_a = dx.scatter(self.source, x="X", y="Y", on_click=handler_a) + layered = dx.layer(fig_a, on_click=handler_direct) + + self.assertIs(layered._callbacks["on_click"], handler_direct) + + def test_layer_last_child_wins(self): + """layer() with two figures uses last figure's callback""" + import src.deephaven.plot.express as dx + + handler_a = lambda e: "a" + handler_b = lambda e: "b" + + fig_a = dx.scatter(self.source, x="X", y="Y", on_click=handler_a) + fig_b = dx.scatter(self.source, x="X", y="Y", on_click=handler_b) + layered = dx.layer(fig_a, fig_b) + + self.assertIs(layered._callbacks["on_click"], handler_b) + + +if __name__ == "__main__": + unittest.main() diff --git a/plugins/plotly-express/test/deephaven/plot/express/types/__init__.py b/plugins/plotly-express/test/deephaven/plot/express/types/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/plugins/plotly-express/test/deephaven/plot/express/types/test_callbacks.py b/plugins/plotly-express/test/deephaven/plot/express/types/test_callbacks.py new file mode 100644 index 000000000..2d0a8e61b --- /dev/null +++ b/plugins/plotly-express/test/deephaven/plot/express/types/test_callbacks.py @@ -0,0 +1,111 @@ +import unittest +import importlib.util +import json +from unittest.mock import MagicMock, patch +import sys +import os + +# Load callbacks module directly to avoid deephaven server requirement +# Navigate from test/deephaven/plot/express/types/ to src/deephaven/plot/express/types/ +_test_dir = os.path.dirname(os.path.abspath(__file__)) +_plugin_root = os.path.abspath(os.path.join(_test_dir, "..", "..", "..", "..", "..")) +_callbacks_path = os.path.join( + _plugin_root, "src", "deephaven", "plot", "express", "types", "callbacks.py" +) +spec = importlib.util.spec_from_file_location("callbacks", _callbacks_path) +callbacks_mod = importlib.util.module_from_spec(spec) +spec.loader.exec_module(callbacks_mod) + +wrap_callable = callbacks_mod.wrap_callable +ALWAYS_PREVENTABLE_EVENTS = callbacks_mod.ALWAYS_PREVENTABLE_EVENTS +HIERARCHICAL_TRACE_TYPES = callbacks_mod.HIERARCHICAL_TRACE_TYPES + + +class TestWrapCallable(unittest.TestCase): + """Tests for wrap_callable""" + + def test_zero_args_function(self): + """wrap_callable trims args for 0-arg functions""" + + def no_args(): + return "called" + + wrapped = wrap_callable(no_args) + result = wrapped({"some": "data"}) + self.assertEqual(result, "called") + + def test_one_arg_function(self): + """wrap_callable passes one arg to 1-arg functions""" + + def one_arg(event): + return event + + wrapped = wrap_callable(one_arg) + event_data = {"points": [{"x": 1}]} + result = wrapped(event_data) + self.assertEqual(result, event_data) + + def test_variadic_function(self): + """wrap_callable passes all args to variadic functions""" + + def var_args(*args): + return args + + wrapped = wrap_callable(var_args) + result = wrapped("a", "b", "c") + self.assertEqual(result, ("a", "b", "c")) + + def test_propagates_return_value(self): + """wrap_callable propagates return values""" + + def returns_false(event): + return False + + def returns_true(event): + return True + + def returns_none(event): + return None + + self.assertEqual(wrap_callable(returns_false)({}), False) + self.assertEqual(wrap_callable(returns_true)({}), True) + self.assertIsNone(wrap_callable(returns_none)({})) + + def test_two_arg_function(self): + """wrap_callable handles 2-arg functions (extra args trimmed)""" + + def two_args(a, b): + return (a, b) + + wrapped = wrap_callable(two_args) + result = wrapped("x", "y", "z") + self.assertEqual(result, ("x", "y")) + + def test_exception_propagates(self): + """wrap_callable does not suppress exceptions""" + + def raises(event): + raise ValueError("test error") + + wrapped = wrap_callable(raises) + with self.assertRaises(ValueError): + wrapped({}) + + +class TestConstants(unittest.TestCase): + """Tests for module constants""" + + def test_always_preventable_events(self): + self.assertIn("on_legend_click", ALWAYS_PREVENTABLE_EVENTS) + self.assertIn("on_legend_double_click", ALWAYS_PREVENTABLE_EVENTS) + self.assertNotIn("on_click", ALWAYS_PREVENTABLE_EVENTS) + + def test_hierarchical_trace_types(self): + self.assertIn("sunburst", HIERARCHICAL_TRACE_TYPES) + self.assertIn("treemap", HIERARCHICAL_TRACE_TYPES) + self.assertIn("icicle", HIERARCHICAL_TRACE_TYPES) + self.assertNotIn("scatter", HIERARCHICAL_TRACE_TYPES) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/app.d/express_events.py b/tests/app.d/express_events.py new file mode 100644 index 000000000..f161b814a --- /dev/null +++ b/tests/app.d/express_events.py @@ -0,0 +1,133 @@ +""" +Python scripts for chart event e2e tests. + +Each panel renders a chart with an on_click handler alongside a read-only +`ui.text_area` "Event Log" that the handler sets. The Playwright tests click the +chart and assert on the log's value. This mirrors the pattern used by +``ui_events.py`` / ``ui_events.spec.ts`` and avoids reading iris-grid cells, +which are rendered to a canvas and are not present in the DOM. + +Scatter charts use ``render_mode="svg"`` so that markers are real SVG DOM +elements the tests can click. +""" + +from deephaven.column import int_col, string_col +from deephaven import new_table +from deephaven import ui +import deephaven.plot.express as dx + +click_source = new_table( + [ + int_col("X", [1, 2, 3, 4, 5]), + int_col("Y", [2, 4, 1, 5, 3]), + string_col("Sym", ["A", "B", "A", "B", "A"]), + ] +) + + +# ============================================================ +# Test: scatter on_click fires with point data +# ============================================================ +@ui.component +def scatter_click_app(): + log, set_log = ui.use_state("") + + def on_click(event: dict) -> None: + points = event.get("points") or [] + shift = event.get("modifiers", {}).get("shift", False) + if points: + point = points[0] + set_log(f"click:{point.get('x')},{point.get('y')}:shift={shift}") + else: + set_log(f"click:empty:shift={shift}") + + handle_click = ui.use_callback(on_click, []) + + fig = ui.use_memo( + lambda: dx.scatter( + click_source, + x="X", + y="Y", + by="Sym", + render_mode="svg", + on_click=handle_click, + ), + [handle_click], + ) + + return ui.flex( + fig, + ui.text_area(label="Event Log", value=log, is_read_only=True), + direction="column", + ) + + +events_scatter_click = scatter_click_app() + + +# ============================================================ +# Test: scatter on_double_click fires +# ============================================================ +@ui.component +def scatter_double_click_app(): + log, set_log = ui.use_state("") + + def on_double_click(event: dict) -> None: + set_log("doubleclick") + + handle_double_click = ui.use_callback(on_double_click, []) + + fig = ui.use_memo( + lambda: dx.scatter( + click_source, + x="X", + y="Y", + by="Sym", + render_mode="svg", + on_double_click=handle_double_click, + ), + [handle_double_click], + ) + + return ui.flex( + fig, + ui.text_area(label="Event Log", value=log, is_read_only=True), + direction="column", + ) + + +events_scatter_double_click = scatter_double_click_app() + + +# ============================================================ +# Test: scatter on_relayout fires (pan/zoom via modebar) +# ============================================================ +@ui.component +def scatter_relayout_app(): + log, set_log = ui.use_state("") + + def on_relayout(event: dict) -> None: + set_log("relayout") + + handle_relayout = ui.use_callback(on_relayout, []) + + fig = ui.use_memo( + lambda: dx.scatter( + click_source, + x="X", + y="Y", + by="Sym", + render_mode="svg", + on_relayout=handle_relayout, + ), + [handle_relayout], + ) + + return ui.flex( + fig, + ui.text_area(label="Event Log", value=log, is_read_only=True), + direction="column", + ) + + +events_scatter_relayout = scatter_relayout_app() diff --git a/tests/app.d/tests.app b/tests/app.d/tests.app index 27d54ece5..b01e08e86 100644 --- a/tests/app.d/tests.app +++ b/tests/app.d/tests.app @@ -25,3 +25,4 @@ file_18=ui_memo.py file_19=ui_combo_box.py file_20=ui_multi_select.py file_21=ui_dashboard_persistence.py +file_22=express_events.py diff --git a/tests/express_events.spec.ts b/tests/express_events.spec.ts new file mode 100644 index 000000000..d3c430db1 --- /dev/null +++ b/tests/express_events.spec.ts @@ -0,0 +1,123 @@ +import { expect, test } from '@playwright/test'; +import { gotoPage, openPanel, SELECTORS } from './utils'; + +/** + * E2E tests for chart event callbacks. + * + * These tests require corresponding Python scripts in tests/app.d/ + * (express_events.py, registered in tests.app). Each panel renders a chart + * next to a read-only `ui.text_area` "Event Log" that the on_click handler + * sets, so we can assert on the textarea value instead of reading + * canvas-rendered iris-grid cells. Scatter charts use render_mode="svg" so + * markers are real SVG DOM elements we can click. + */ + +test.describe('Chart Events', () => { + test('scatter on_click fires with point data', async ({ page }) => { + await gotoPage(page, ''); + await openPanel( + page, + 'events_scatter_click', + SELECTORS.WIDGET_LOADER_ELEMENT_VISIBLE + ); + + const panel = page.locator(SELECTORS.WIDGET_LOADER_ELEMENT_VISIBLE); + const chart = panel.locator('.js-plotly-plot'); + await expect(chart).toBeVisible(); + + const log = panel.getByRole('textbox', { name: 'Event Log' }); + await expect(log).toHaveValue(''); + + // Plotly's click detection lives on the draglayer overlay, so click at the + // marker's screen position with page.mouse rather than the marker element. + const marker = chart.locator('.scatterlayer .points path.point').first(); + await expect(marker).toBeVisible(); + const box = await marker.boundingBox(); + expect(box).not.toBeNull(); + if (box) { + await page.mouse.click(box.x + box.width / 2, box.y + box.height / 2); + } + + // on_click should fire and log the clicked point's x,y coordinates. + await expect(log).toHaveValue(/click:\d+,\d+:shift=False/); + }); + + test('scatter on_click reports shift modifier', async ({ page }) => { + await gotoPage(page, ''); + await openPanel( + page, + 'events_scatter_click', + SELECTORS.WIDGET_LOADER_ELEMENT_VISIBLE + ); + + const panel = page.locator(SELECTORS.WIDGET_LOADER_ELEMENT_VISIBLE); + const chart = panel.locator('.js-plotly-plot'); + await expect(chart).toBeVisible(); + + const log = panel.getByRole('textbox', { name: 'Event Log' }); + await expect(log).toHaveValue(''); + + const marker = chart.locator('.scatterlayer .points path.point').first(); + await expect(marker).toBeVisible(); + const box = await marker.boundingBox(); + expect(box).not.toBeNull(); + if (box) { + // Hold Shift so the raw pointer event carries shiftKey. + await page.keyboard.down('Shift'); + await page.mouse.click(box.x + box.width / 2, box.y + box.height / 2); + await page.keyboard.up('Shift'); + } + + // The handler should observe the shift modifier. + await expect(log).toHaveValue(/click:\d+,\d+:shift=True/); + }); + + test('scatter on_double_click fires', async ({ page }) => { + await gotoPage(page, ''); + await openPanel( + page, + 'events_scatter_double_click', + SELECTORS.WIDGET_LOADER_ELEMENT_VISIBLE + ); + + const panel = page.locator(SELECTORS.WIDGET_LOADER_ELEMENT_VISIBLE); + const chart = panel.locator('.js-plotly-plot'); + await expect(chart).toBeVisible(); + + const log = panel.getByRole('textbox', { name: 'Event Log' }); + await expect(log).toHaveValue(''); + + // Plotly's double-click detection is timing-based (two clicks within + // ~300ms) and is unreliable under Playwright's WebKit driver, which spaces + // the synthetic clicks too far apart. The browser-gesture -> plotly_doubleclick + // step is Plotly's responsibility; what we own is forwarding the event to the + // Python callback. Emit the Plotly event directly so the test deterministically + // exercises the JS handler -> widget round-trip -> Python -> textarea path. + await chart.evaluate(el => { + (el as unknown as { emit: (event: string) => void }).emit( + 'plotly_doubleclick' + ); + }); + + await expect(log).toHaveValue('doubleclick'); + }); + + test('scatter on_relayout fires', async ({ page }) => { + await gotoPage(page, ''); + await openPanel( + page, + 'events_scatter_relayout', + SELECTORS.WIDGET_LOADER_ELEMENT_VISIBLE + ); + + const panel = page.locator(SELECTORS.WIDGET_LOADER_ELEMENT_VISIBLE); + const chart = panel.locator('.js-plotly-plot'); + await expect(chart).toBeVisible(); + + const log = panel.getByRole('textbox', { name: 'Event Log' }); + + // Plotly emits plotly_relayout when it applies the initial autorange, so + // the handler fires as the chart lays out — no drag/zoom gesture needed. + await expect(log).toHaveValue('relayout'); + }); +});