From dd17fd69af74499d7b01cc935c240f1220d10fb2 Mon Sep 17 00:00:00 2001 From: Bruce Date: Mon, 23 Oct 2023 17:29:12 +0800 Subject: [PATCH 1/2] refactor: v3.1.0-beta.1 --- .github/workflows/npm-publish.yml | 2 +- .github/workflows/unit-test.yml | 4 +- .gitignore | 9 +- .mocharc.json | 11 - .mocharc.nyc.json | 10 - .npmignore | 59 +- .swcrc | 23 + {tests => __tests__}/native.test.ts | 16 +- __tests__/nebula.test.ts | 118 + {tests => __tests__}/test-data.md | 0 babel.config.json | 75 - jest.config.js | 10 + package-lock.json | 10380 ++++++++++++++++++++ package.json | 60 +- specs/README.md | 5 +- specs/gen-nodejs/GraphService.js | 1498 --- specs/gen-nodejs/common_types.js | 2621 ----- specs/gen-nodejs/graph_types.js | 982 -- specs/index.d.ts | 597 -- specs/thrift-0.14.1.exe | Bin 3392000 -> 0 bytes src/native/addon.cc | 149 +- src/{ => native}/binding.gyp | 7 +- src/native/index.ts | 32 +- src/nebula/Connection.ts | 17 +- src/nebula/index.ts | 2 +- src/nebula/interface/GraphService.js | 1468 --- src/nebula/interface/common_types.js | 2622 ----- src/nebula/interface/graph_types.js | 983 -- src/nebula/parser/dataset.ts | 9 - src/nebula/parser/edge.ts | 8 - src/nebula/parser/index.ts | 6 +- src/nebula/parser/list.ts | 10 - src/nebula/parser/map.ts | 9 - src/nebula/parser/path.ts | 10 - src/nebula/parser/set.ts | 9 - src/nebula/parser/traverse.ts | 143 +- src/nebula/parser/utils.ts | 134 +- src/nebula/parser/value.ts | 23 - src/nebula/parser/vertex.ts | 10 - src/nebula/services/GraphService.d.ts | 73 + src/nebula/services/GraphService.js | 1470 +++ src/nebula/services/common_types.d.ts | 409 + src/nebula/services/common_types.js | 2845 ++++++ src/nebula/services/graph_types.d.ts | 91 + src/nebula/services/graph_types.js | 997 ++ src/nebula/types.ts | 44 +- src/thrift/binary.js | 168 - src/thrift/binary_protocol.js | 367 - src/thrift/browser.js | 49 - src/thrift/buffered_transport.js | 186 - src/thrift/compact_protocol.js | 915 -- src/thrift/connection.js | 407 - src/thrift/create_client.js | 54 - src/thrift/framed_transport.js | 216 - src/thrift/header_protocol.js | 258 - src/thrift/header_transport.js | 341 - src/thrift/http_connection.js | 266 - src/thrift/index.d.ts | 597 -- src/thrift/index.js | 76 - src/thrift/input_buffer_underrun_error.js | 32 - src/thrift/int64_util.js | 91 - src/thrift/json_parse.js | 299 - src/thrift/json_protocol.js | 799 -- src/thrift/log.js | 87 - src/thrift/multiplexed_processor.js | 63 - src/thrift/multiplexed_protocol.js | 73 - src/thrift/protocol.js | 22 - src/thrift/server.js | 123 - src/thrift/thrift.js | 241 - src/thrift/transport.js | 22 - src/thrift/web_server.js | 567 -- src/thrift/ws_connection.js | 286 - src/thrift/ws_transport.js | 206 - src/thrift/xhr_connection.js | 280 - tests/nebula.test.ts | 120 - tools/build-addon.mjs | 18 + tools/build.js | 118 - tools/clean.js | 57 - tools/configs/babel.config.json | 73 - tools/configs/build.tsconfig.json | 25 - tools/configs/coverage.tsconfig.json | 24 - tools/copy.js | 76 - tools/coverage.js | 69 - tools/libs/fs.js | 89 - tools/libs/utils.js | 173 - tools/run.js | 30 - tools/test.js | 28 - tsconfig.json | 17 +- 88 files changed, 16818 insertions(+), 19250 deletions(-) delete mode 100644 .mocharc.json delete mode 100644 .mocharc.nyc.json create mode 100644 .swcrc rename {tests => __tests__}/native.test.ts (84%) create mode 100644 __tests__/nebula.test.ts rename {tests => __tests__}/test-data.md (100%) delete mode 100644 babel.config.json create mode 100644 jest.config.js create mode 100644 package-lock.json delete mode 100644 specs/gen-nodejs/GraphService.js delete mode 100644 specs/gen-nodejs/common_types.js delete mode 100644 specs/gen-nodejs/graph_types.js delete mode 100644 specs/index.d.ts delete mode 100644 specs/thrift-0.14.1.exe rename src/{ => native}/binding.gyp (68%) delete mode 100644 src/nebula/interface/GraphService.js delete mode 100644 src/nebula/interface/common_types.js delete mode 100644 src/nebula/interface/graph_types.js delete mode 100644 src/nebula/parser/dataset.ts delete mode 100644 src/nebula/parser/edge.ts delete mode 100644 src/nebula/parser/list.ts delete mode 100644 src/nebula/parser/map.ts delete mode 100644 src/nebula/parser/path.ts delete mode 100644 src/nebula/parser/set.ts delete mode 100644 src/nebula/parser/value.ts delete mode 100644 src/nebula/parser/vertex.ts create mode 100644 src/nebula/services/GraphService.d.ts create mode 100644 src/nebula/services/GraphService.js create mode 100644 src/nebula/services/common_types.d.ts create mode 100644 src/nebula/services/common_types.js create mode 100644 src/nebula/services/graph_types.d.ts create mode 100644 src/nebula/services/graph_types.js delete mode 100644 src/thrift/binary.js delete mode 100644 src/thrift/binary_protocol.js delete mode 100644 src/thrift/browser.js delete mode 100644 src/thrift/buffered_transport.js delete mode 100644 src/thrift/compact_protocol.js delete mode 100644 src/thrift/connection.js delete mode 100644 src/thrift/create_client.js delete mode 100644 src/thrift/framed_transport.js delete mode 100644 src/thrift/header_protocol.js delete mode 100644 src/thrift/header_transport.js delete mode 100644 src/thrift/http_connection.js delete mode 100644 src/thrift/index.d.ts delete mode 100644 src/thrift/index.js delete mode 100644 src/thrift/input_buffer_underrun_error.js delete mode 100644 src/thrift/int64_util.js delete mode 100644 src/thrift/json_parse.js delete mode 100644 src/thrift/json_protocol.js delete mode 100644 src/thrift/log.js delete mode 100644 src/thrift/multiplexed_processor.js delete mode 100644 src/thrift/multiplexed_protocol.js delete mode 100644 src/thrift/protocol.js delete mode 100644 src/thrift/server.js delete mode 100644 src/thrift/thrift.js delete mode 100644 src/thrift/transport.js delete mode 100644 src/thrift/web_server.js delete mode 100644 src/thrift/ws_connection.js delete mode 100644 src/thrift/ws_transport.js delete mode 100644 src/thrift/xhr_connection.js delete mode 100644 tests/nebula.test.ts create mode 100644 tools/build-addon.mjs delete mode 100644 tools/build.js delete mode 100644 tools/clean.js delete mode 100644 tools/configs/babel.config.json delete mode 100644 tools/configs/build.tsconfig.json delete mode 100644 tools/configs/coverage.tsconfig.json delete mode 100644 tools/copy.js delete mode 100644 tools/coverage.js delete mode 100644 tools/libs/fs.js delete mode 100644 tools/libs/utils.js delete mode 100644 tools/run.js delete mode 100644 tools/test.js diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 6ad692a..8c2c74e 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -13,7 +13,7 @@ jobs: strategy: matrix: - node-version: [14.x] + node-version: [18.x] steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index 76e2458..9675041 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -6,7 +6,7 @@ jobs: strategy: matrix: - node-version: [14.x] + node-version: [18.x] steps: - name: Check out repository code @@ -38,4 +38,4 @@ jobs: - name: Unit Test run: | npm install --unsafe-perm - npm run coverage + npm run test diff --git a/.gitignore b/.gitignore index e2c76d6..c5f29c8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,11 @@ node_modules -dist .tmp -package-lock.json .DS_Store .nyc_output coverage -build +.vscode + +dist/ +lib/ +build/ +types/ diff --git a/.mocharc.json b/.mocharc.json deleted file mode 100644 index ca3601d..0000000 --- a/.mocharc.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "reporter": "spec", - "timeout": 60000, - "exit": true, - "require": [ - "source-map-support/register", - "ts-node/register", - "@babel/register", - "esm" - ] -} diff --git a/.mocharc.nyc.json b/.mocharc.nyc.json deleted file mode 100644 index c84ec15..0000000 --- a/.mocharc.nyc.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "reporter": "spec", - "timeout": 60000, - "exit": true, - "require": [ - "source-map-support/register", - "@babel/register", - "esm" - ] -} diff --git a/.npmignore b/.npmignore index 378eac2..e9fc687 100644 --- a/.npmignore +++ b/.npmignore @@ -1 +1,58 @@ -build +# Cortex +neurons +cortex_modules +.cortex + +# Numerous always-ignore extensions +*.bak +*.patch +*.diff +*.err + +# temp file for git conflict merging +*.orig +*.log +*.rej +*.swo +*.swp +*.zip +*.vi +*~ +*.sass-cache +*.tmp.html +*.dump + +# OS or Editor folders +.DS_Store +._* +.cache +.project +.settings +.tmproj +*.esproj +*.sublime-project +*.sublime-workspace +nbproject +thumbs.db +*.iml + +# Folders to ignore +.hg +.svn +.CVS +.idea +.vscode +.gitignore +.babelrc* +.eslint* +.prettierrc* +.husky +.github +node_modules/ + +# Project files or folders to ignore +src/ +tools/ +coverage/ +specs/ +.nebula-up/ diff --git a/.swcrc b/.swcrc new file mode 100644 index 0000000..bf0aedc --- /dev/null +++ b/.swcrc @@ -0,0 +1,23 @@ +{ + "$schema": "https://json.schemastore.org/swcrc", + "jsc": { + "parser": { + "syntax": "typescript", + "tsx": false, + "decorators": true, + "dynamicImport": true + }, + "loose": false, + "externalHelpers": true, + "keepClassNames": false + }, + "env": { + "targets": { + "node": "18" + } + }, + "module": { + "type": "commonjs" + }, + "minify": false +} \ No newline at end of file diff --git a/tests/native.test.ts b/__tests__/native.test.ts similarity index 84% rename from tests/native.test.ts rename to __tests__/native.test.ts index 20c7c5f..7ee4d6f 100644 --- a/tests/native.test.ts +++ b/__tests__/native.test.ts @@ -3,17 +3,17 @@ * Created by Wu Jian Ping on - 2021/02/09. */ -import { expect } from 'chai' -import { bytesToLongLongString, hash64 } from '../dist' +import { describe, expect, test } from '@jest/globals'; +import { bytesToLongLongString, hash64 } from '../src/native' describe('native', () => { - it('bytesToLongLongString', () => { + test('bytesToLongLongString', () => { const s = '-7897618527020261406' const buffer = [146, 102, 5, 203, 5, 105, 223, 226] - expect(bytesToLongLongString(buffer)).equal(s) + expect(bytesToLongLongString(buffer)).toBe(s) }) - it('hash64', () => { + test('hash64', () => { const testData = [ { keyNo: 'f10011b64aa4e7503cd45a7fdc24387b', a: '2852836996923339651', b: '-6853534673140605817' }, { keyNo: 'f1bc319830aa4bd525b6b211fc128e5e', a: '-6331077761356739522', b: '6750279366282124699' }, @@ -29,11 +29,11 @@ describe('native', () => { { keyNo: '5608c68f0f84a28a5c8c0479ebbd69c1', a: '8004344832703457518', b: '4306029215693896848' }, { keyNo: '科技型企业', a: '-6865176517154056019', b: '8588244832922351093' } ] - + for (const sample of testData) { const data = hash64(sample.keyNo) - expect(data[0]).equal(sample.a) - expect(data[1]).equal(sample.b) + expect(data[0]).toBe(sample.a) + expect(data[1]).toBe(sample.b) } }) }) diff --git a/__tests__/nebula.test.ts b/__tests__/nebula.test.ts new file mode 100644 index 0000000..870dba5 --- /dev/null +++ b/__tests__/nebula.test.ts @@ -0,0 +1,118 @@ +/* eslint-disable max-len */ +/** + * Created by Wu Jian Ping on - 2021/06/09. + */ + +import createClient, { type ClientOption } from '../src'; +import { describe, expect, test } from '@jest/globals'; + +const nebulaServer: ClientOption = { + servers: ['127.0.0.1:9669'], + userName: 'root', + password: 'nebula', + space: 'nebula_node', + pingInterval: 5000, + poolSize: 1 +} + +const commands = { + cmd1: 'get subgraph with prop 2 steps from "p001" yield vertices as nodes, edges as relationships', + cmd2: 'fetch prop on company "c001" yield properties(vertex) as node', + cmd3: 'go from "c001" over employee yield properties($^) as a, properties($$) as b, properties(edge) as p', + cmd4: 'find noloop path with prop from "p001" to "p002" over * yield path as p', + cmd5: 'RETURN list[1, 2, 3] AS a', + cmd6: 'UNWIND list[list[1, 2, 3], list[2, 3, 4]] as a RETURN a', + cmd7: 'RETURN set{1, 2, 3} AS a', + cmd8: 'RETURN map{a: LIST[1,2], b: SET{1,2,1}, c: "hee"} as a' +} + +describe('nebula', () => { + test('test-case-1', async () => { + const client = createClient(nebulaServer); + const response1 = await client.execute(commands.cmd1); + + expect(response1.data?.nodes?.length).toBeGreaterThan(0); + expect(response1.data?.relationships?.length).toBeGreaterThan(0); + + await client.close(); + }); + + test('test-case-2', async () => { + const client = createClient(nebulaServer); + + const response1 = await client.execute(commands.cmd2); + + expect(response1.data?.node?.length).toBeGreaterThan(0); + + await client.close(); + }); + + test('test-case-3', async () => { + const client = createClient(nebulaServer); + + const response1 = await client.execute(commands.cmd3); + + expect(response1.data?.a?.length).toBeGreaterThan(0); + expect(response1.data?.b?.length).toBeGreaterThan(0); + expect(response1.data?.p?.length).toBeGreaterThan(0); + + await client.close(); + }); + + test('test-case-4', async () => { + const client = createClient(nebulaServer); + + const response1 = await client.execute(commands.cmd4); + + expect(response1.data?.p?.length).toBeGreaterThan(0); + + await client.close(); + }); + + test('test-case-5-list', async () => { + const client = createClient(nebulaServer); + + const response1 = await client.execute(commands.cmd5); + + expect(response1.data?.a).toStrictEqual([[1, 2, 3]]); + + await client.close(); + }); + + test('test-case-6-list', async () => { + const client = createClient(nebulaServer); + + const response1 = await client.execute(commands.cmd6); + + expect(response1.data?.a).toStrictEqual([ + [1, 2, 3], + [2, 3, 4], + ]); + + await client.close(); + }); + + test('test-case-7-set', async () => { + const client = createClient(nebulaServer); + + const response1 = await client.execute(commands.cmd7); + + expect(response1.data?.a?.length).toEqual(1); + expect(response1.data?.a[0]?.length).toEqual(3); + + await client.close(); + }); + + test('test-case-8-map', async () => { + const client = createClient(nebulaServer); + + const response1 = await client.execute(commands.cmd8); + + expect(response1.data?.a?.length).toEqual(1); + expect(response1.data?.a[0]?.a).toStrictEqual([1, 2]); + expect(response1.data?.a[0]?.b?.length).toEqual(2); + expect(response1.data?.a[0]?.c).toEqual('hee'); + + await client.close(); + }); +}); diff --git a/tests/test-data.md b/__tests__/test-data.md similarity index 100% rename from tests/test-data.md rename to __tests__/test-data.md diff --git a/babel.config.json b/babel.config.json deleted file mode 100644 index d47e0d8..0000000 --- a/babel.config.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "presets": [ - [ - "@babel/env", - { - "modules": "auto", - "targets": { - "node": true - }, - "useBuiltIns": false - } - ], - [ - "@babel/preset-typescript", { - "allowNamespaces": true, - "allowDeclareFields": true - } - ] - ], - "plugins": [ - "istanbul", - "add-module-exports", - [ - "@babel/plugin-transform-runtime", - { - "absoluteRuntime": false, - "corejs": false, - "helpers": true, - "regenerator": true, - "useESModules": false - } - ], - "@babel/plugin-proposal-function-bind", - "@babel/plugin-proposal-export-default-from", - "@babel/plugin-proposal-logical-assignment-operators", - [ - "@babel/plugin-proposal-optional-chaining", { - "loose": false - } - ], - [ - "@babel/plugin-proposal-pipeline-operator", { - "proposal": "minimal" - } - ], - [ - "@babel/plugin-proposal-nullish-coalescing-operator", { - "loose": false - } - ], - "@babel/plugin-proposal-do-expressions", - - [ - "@babel/plugin-proposal-decorators", { - "legacy": true - } - ], - "@babel/plugin-proposal-function-sent", - "@babel/plugin-proposal-export-namespace-from", - "@babel/plugin-proposal-numeric-separator", - "@babel/plugin-proposal-throw-expressions", - - "@babel/plugin-syntax-dynamic-import", - "@babel/plugin-syntax-import-meta", - [ - "@babel/plugin-proposal-class-properties", { - "loose": false - } - ], - "@babel/plugin-proposal-json-strings" - ], - "generatorOpts": { - "compact": false - } -} diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 0000000..f23aec6 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,10 @@ +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + transform: { + '^.+\\.(t|j)sx?$': ['@swc/jest'], + }, + roots: ["/src/", "/__tests__/"], + testEnvironment: 'node', + collectCoverage: true, + collectCoverageFrom: ["**/*.ts", "!**/*.d.ts", "!**/node_modules/**"], +}; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..7fd61bb --- /dev/null +++ b/package-lock.json @@ -0,0 +1,10380 @@ +{ + "name": "@nebula-contrib/nebula-nodejs", + "version": "3.1.0-beta.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@nebula-contrib/nebula-nodejs", + "version": "3.1.0-beta.1", + "license": "Apache 2.0 License", + "dependencies": { + "@swc/helpers": "^0.5.3", + "bindings": "^1.5.0", + "browser-or-node": "^1.2.1", + "isomorphic-ws": "^4.0.1", + "lodash": "^4.17.21", + "node-addon-api": "^7.0.0", + "node-int64": "^0.4.0", + "q": "^1.5.0", + "thrift": "^0.19.0", + "ws": "^5.2.2" + }, + "devDependencies": { + "@istanbuljs/nyc-config-babel": "^3.0.0", + "@istanbuljs/nyc-config-typescript": "^1.0.1", + "@jest/globals": "^29.7.0", + "@swc/cli": "^0.1.62", + "@swc/core": "^1.3.93", + "@swc/jest": "^0.2.29", + "@types/bindings": "^1.5.2", + "@types/chai": "^4.2.18", + "@types/esm": "^3.2.0", + "@types/glob": "^7.1.3", + "@types/lodash": "^4.14.170", + "@types/node": "^14.18.63", + "@types/thrift": "^0.10.14", + "@typescript-eslint/eslint-plugin": "^4.27.0", + "@typescript-eslint/parser": "^4.27.0", + "assert": "^2.0.0", + "babel-eslint": "^10.1.0", + "chai": "^4.3.4", + "chalk": "^4.1.2", + "core-js": "^2.6.10", + "cowsay": "^1.5.0", + "cross-env": "^7.0.3", + "eslint": "^7.28.0", + "eslint-config-airbnb-base": "^14.2.0", + "eslint-config-semistandard": "^15.0.1", + "eslint-config-standard": "^16.0.3", + "eslint-plugin-import": "^2.23.4", + "eslint-plugin-jsdoc": "^32.3.4", + "eslint-plugin-node": "^11.0.0", + "eslint-plugin-prefer-arrow": "^1.2.2", + "eslint-plugin-promise": "^4.2.1", + "eslint-plugin-standard": "^5.0.0", + "esm": "^3.2.25", + "jest": "^29.7.0", + "mkdirp": "^0.5.1", + "node-gyp": "^9.4.0", + "nyc": "^15.1.0", + "open": "^7.4.2", + "rimraf": "^3.0.2", + "ts-jest": "^29.1.1", + "typescript": "^5.2.2", + "which": "^2.0.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz", + "integrity": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", + "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helpers": "^7.23.2", + "@babel/parser": "^7.23.0", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.0", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.15", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", + "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", + "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", + "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", + "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/register": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.22.15.tgz", + "integrity": "sha512-V3Q3EqoQdn65RCgTLwauZaTfd1ShhwPmbBv+1dkZV/HpCGMKVyn6oFcRlI7RaKqiDQjX2Qd3AuoEguBgdjIKlg==", + "dev": true, + "peer": true, + "dependencies": { + "clone-deep": "^4.0.1", + "find-cache-dir": "^2.0.0", + "make-dir": "^2.1.0", + "pirates": "^4.0.5", + "source-map-support": "^0.5.16" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/nyc-config-babel": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/nyc-config-babel/-/nyc-config-babel-3.0.0.tgz", + "integrity": "sha512-mPnSPXfTRWCzYsT64PnuPlce6/hGMCdVVMgU2FenXipbUd+FDwUlqlTihXxpxWzcNVOp8M+L1t/kIcgoC8A7hg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "@babel/register": "*", + "babel-plugin-istanbul": ">=5" + } + }, + "node_modules/@istanbuljs/nyc-config-typescript": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@istanbuljs/nyc-config-typescript/-/nyc-config-typescript-1.0.2.tgz", + "integrity": "sha512-iKGIyMoyJuFnJRSVTZ78POIRvNnwZaWIf8vG4ZS3rQq58MMDrqEX2nnzx0R28V2X8JvmKYiqY9FP2hlJsm8A0w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "nyc": ">=15" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/create-cache-key-function": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-27.5.1.tgz", + "integrity": "sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/create-cache-key-function/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/create-cache-key-function/node_modules/@types/yargs": { + "version": "16.0.7", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", + "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", + "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/reporters/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/reporters/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/reporters/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mole-inc/bin-wrapper": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@mole-inc/bin-wrapper/-/bin-wrapper-8.0.1.tgz", + "integrity": "sha512-sTGoeZnjI8N4KS+sW2AN95gDBErhAguvkw/tWdCjeM8bvxpz5lqrnd0vOJABA1A+Ic3zED7PYoLP/RANLgVotA==", + "dev": true, + "dependencies": { + "bin-check": "^4.1.0", + "bin-version-check": "^5.0.0", + "content-disposition": "^0.5.4", + "ext-name": "^5.0.0", + "file-type": "^17.1.6", + "filenamify": "^5.0.2", + "got": "^11.8.5", + "os-filter-obj": "^2.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/fs/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/fs/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/fs/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@swc/cli": { + "version": "0.1.62", + "resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.1.62.tgz", + "integrity": "sha512-kOFLjKY3XH1DWLfXL1/B5MizeNorHR8wHKEi92S/Zi9Md/AK17KSqR8MgyRJ6C1fhKHvbBCl8wboyKAFXStkYw==", + "dev": true, + "dependencies": { + "@mole-inc/bin-wrapper": "^8.0.1", + "commander": "^7.1.0", + "fast-glob": "^3.2.5", + "semver": "^7.3.8", + "slash": "3.0.0", + "source-map": "^0.7.3" + }, + "bin": { + "spack": "bin/spack.js", + "swc": "bin/swc.js", + "swcx": "bin/swcx.js" + }, + "engines": { + "node": ">= 12.13" + }, + "peerDependencies": { + "@swc/core": "^1.2.66", + "chokidar": "^3.5.1" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@swc/cli/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/cli/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/cli/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@swc/core": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.93.tgz", + "integrity": "sha512-690GRr1wUGmGYZHk7fUduX/JUwViMF2o74mnZYIWEcJaCcd9MQfkhsxPBtjeg6tF+h266/Cf3RPYhsFBzzxXcA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@swc/counter": "^0.1.1", + "@swc/types": "^0.1.5" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.3.93", + "@swc/core-darwin-x64": "1.3.93", + "@swc/core-linux-arm-gnueabihf": "1.3.93", + "@swc/core-linux-arm64-gnu": "1.3.93", + "@swc/core-linux-arm64-musl": "1.3.93", + "@swc/core-linux-x64-gnu": "1.3.93", + "@swc/core-linux-x64-musl": "1.3.93", + "@swc/core-win32-arm64-msvc": "1.3.93", + "@swc/core-win32-ia32-msvc": "1.3.93", + "@swc/core-win32-x64-msvc": "1.3.93" + }, + "peerDependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.93.tgz", + "integrity": "sha512-gEKgk7FVIgltnIfDO6GntyuQBBlAYg5imHpRgLxB1zSI27ijVVkksc6QwISzFZAhKYaBWIsFSVeL9AYSziAF7A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.93.tgz", + "integrity": "sha512-ZQPxm/fXdDQtn3yrYSL/gFfA8OfZ5jTi33yFQq6vcg/Y8talpZ+MgdSlYM0FkLrZdMTYYTNFiuBQuuvkA+av+Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.93.tgz", + "integrity": "sha512-OYFMMI2yV+aNe3wMgYhODxHdqUB/jrK0SEMHHS44GZpk8MuBXEF+Mcz4qjkY5Q1EH7KVQqXb/gVWwdgTHpjM2A==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.93.tgz", + "integrity": "sha512-BT4dT78odKnJMNiq5HdjBsv29CiIdcCcImAPxeFqAeFw1LL6gh9nzI8E96oWc+0lVT5lfhoesCk4Qm7J6bty8w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.93.tgz", + "integrity": "sha512-yH5fWEl1bktouC0mhh0Chuxp7HEO4uCtS/ly1Vmf18gs6wZ8DOOkgAEVv2dNKIryy+Na++ljx4Ym7C8tSJTrLw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.93.tgz", + "integrity": "sha512-OFUdx64qvrGJhXKEyxosHxgoUVgba2ztYh7BnMiU5hP8lbI8G13W40J0SN3CmFQwPP30+3oEbW7LWzhKEaYjlg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.93.tgz", + "integrity": "sha512-4B8lSRwEq1XYm6xhxHhvHmKAS7pUp1Q7E33NQ2TlmFhfKvCOh86qvThcjAOo57x8DRwmpvEVrqvpXtYagMN6Ig==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.93.tgz", + "integrity": "sha512-BHShlxtkven8ZjjvZ5QR6sC5fZCJ9bMujEkiha6W4cBUTY7ce7qGFyHmQd+iPC85d9kD/0cCiX/Xez8u0BhO7w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.93.tgz", + "integrity": "sha512-nEwNWnz4JzYAK6asVvb92yeylfxMYih7eMQOnT7ZVlZN5ba9WF29xJ6kcQKs9HRH6MvWhz9+wRgv3FcjlU6HYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.93.tgz", + "integrity": "sha512-jibQ0zUr4kwJaQVwgmH+svS04bYTPnPw/ZkNInzxS+wFAtzINBYcU8s2PMWbDb2NGYiRSEeoSGyAvS9H+24JFA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.2.tgz", + "integrity": "sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==", + "dev": true + }, + "node_modules/@swc/helpers": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.3.tgz", + "integrity": "sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@swc/jest": { + "version": "0.2.29", + "resolved": "https://registry.npmjs.org/@swc/jest/-/jest-0.2.29.tgz", + "integrity": "sha512-8reh5RvHBsSikDC3WGCd5ZTd2BXKkyOdK7QwynrCH58jk2cQFhhHhFBg/jvnWZehUQe/EoOImLENc9/DwbBFow==", + "dev": true, + "dependencies": { + "@jest/create-cache-key-function": "^27.4.2", + "jsonc-parser": "^3.2.0" + }, + "engines": { + "npm": ">= 7.0.0" + }, + "peerDependencies": { + "@swc/core": "*" + } + }, + "node_modules/@swc/types": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", + "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==", + "dev": true + }, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dev": true, + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", + "dev": true + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.3.tgz", + "integrity": "sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.6", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.6.tgz", + "integrity": "sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.3.tgz", + "integrity": "sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.3.tgz", + "integrity": "sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/bindings": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@types/bindings/-/bindings-1.5.3.tgz", + "integrity": "sha512-u/KebkhMlcst1X5dnj8n1DB6pjhVRe1P0k7SJT1Dv9fHfC8Y6N9Hncc/2mAE977h5oMH/ibGv0rvfgY6kS1cRQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "dev": true, + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, + "node_modules/@types/chai": { + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.9.tgz", + "integrity": "sha512-69TtiDzu0bcmKQv3yg1Zx409/Kd7r0b5F1PfpYJfSHzLGtB53547V4u+9iqKYsTu/O2ai6KTb0TInNpvuQ3qmg==", + "dev": true + }, + "node_modules/@types/esm": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/esm/-/esm-3.2.1.tgz", + "integrity": "sha512-kEl28dU4KvsivGF/acxUuPY2gaLPLVbeyvCa97nGS9u2pN14uLQ6/mKtkTNJ3/8cmKzYq8vnvkC0y/zjuO78Vg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.8.tgz", + "integrity": "sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz", + "integrity": "sha512-V46MYLFp08Wf2mmaBhvgjStM3tPa+2GAdy/iqoX+noX1//zje2x4XmrIU0cAwyClATsTmahbtoQ2EwP7I5WSiA==", + "dev": true + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.2.tgz", + "integrity": "sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.3.tgz", + "integrity": "sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", + "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/lodash": { + "version": "4.14.200", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.200.tgz", + "integrity": "sha512-YI/M/4HRImtNf3pJgbF+W6FrXovqj+T+/HpENLTooK9PnkacBsDpeP3IpHab40CClUfhNmdM2WTNP2sa2dni5Q==", + "dev": true + }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "14.18.63", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", + "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", + "dev": true + }, + "node_modules/@types/node-int64": { + "version": "0.4.31", + "resolved": "https://registry.npmjs.org/@types/node-int64/-/node-int64-0.4.31.tgz", + "integrity": "sha512-nkuJrHfmjsE3oJzbkygfRYX1tDMhBxj5LTZzP/GIGbBze6QXM6Juz6vxh9K8Y5OJODqAciY6gxdYNRqNgxsaEA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/q": { + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.7.tgz", + "integrity": "sha512-HBPgtzp44867rkL+IzQ3560/E/BlobwCjeXsuKqogrcE99SKgZR4tvBBCuNJZMhUFMz26M7cjKWZg785lllwpA==", + "dev": true + }, + "node_modules/@types/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/4YQT5Kp6HxUDb4yhRkm0bJ7TbjvTddqX7PZ5hz6qV3pxSo72f/6YPRo+Mu2DU307tm9IioO69l7uAwn5XNcFA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.2.tgz", + "integrity": "sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw==", + "dev": true + }, + "node_modules/@types/thrift": { + "version": "0.10.15", + "resolved": "https://registry.npmjs.org/@types/thrift/-/thrift-0.10.15.tgz", + "integrity": "sha512-3D92M0dQhyXojzV0NQpp8L5OsM3nyScAhvqe7yjng5FfnSBo2/yP2bYS4Wqk8AGBsjEAksp+VZ2720pVsjSmsA==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/node-int64": "*", + "@types/q": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.29", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.29.tgz", + "integrity": "sha512-nacjqA3ee9zRF/++a3FUY1suHTFKZeHba2n8WeDw9cCVdmzmHpIxyzOJBcpHvvEmS8E9KqWlSnWHUkOrkhWcvA==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.2", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.2.tgz", + "integrity": "sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", + "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", + "dev": true, + "dependencies": { + "@typescript-eslint/experimental-utils": "4.33.0", + "@typescript-eslint/scope-manager": "4.33.0", + "debug": "^4.3.1", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^4.0.0", + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@typescript-eslint/experimental-utils": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", + "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", + "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "debug": "^4.3.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", + "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", + "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", + "dev": true, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", + "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", + "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.33.0", + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "dev": true, + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/append-transform": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", + "dev": true, + "dependencies": { + "default-require-extensions": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", + "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/assert": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", + "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-nan": "^1.3.2", + "object-is": "^1.1.5", + "object.assign": "^4.1.4", + "util": "^0.12.5" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "deprecated": "babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "eslint": ">= 4.12.1" + } + }, + "node_modules/babel-eslint/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/bin-check": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-4.1.0.tgz", + "integrity": "sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==", + "dev": true, + "dependencies": { + "execa": "^0.7.0", + "executable": "^4.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-version": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-6.0.0.tgz", + "integrity": "sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "find-versions": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bin-version-check": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-5.1.0.tgz", + "integrity": "sha512-bYsvMqJ8yNGILLz1KP9zKLzQ6YpljV3ln1gqhuLkUtyfGi3qXKGuK2p+U4NAvjVFzDFiBBtOpCOSFNuYYEGZ5g==", + "dev": true, + "dependencies": { + "bin-version": "^6.0.0", + "semver": "^7.5.3", + "semver-truncate": "^3.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bin-version-check/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/bin-version-check/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/bin-version-check/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/bin-version/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/bin-version/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bin-version/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bin-version/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-or-node": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-1.3.0.tgz", + "integrity": "sha512-0F2z/VSnLbmEeBcUrSuDH5l0HxTXdQQzLjkmBR4cYfvg1zJrKSlmIZFqyFR8oX0NrwPhy3c3HQ6i3OxMbew4Tg==" + }, + "node_modules/browserslist": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", + "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/cacache": { + "version": "17.1.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", + "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^7.0.3", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/cacache/node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/cacache/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true, + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "dev": true, + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caching-transform": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", + "dev": true, + "dependencies": { + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/caching-transform/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caching-transform/node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/call-bind": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.4.tgz", + "integrity": "sha512-e68w37XfAb5fL5M3NTxqKLcXRUkL2/kFlQjQjE/8jvPMBKmO5ZDycRkS/DrZRXjegOzwWzEwW88m+8r+D0PUUA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001551", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001551.tgz", + "integrity": "sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chai": { + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.0.8" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", + "dev": true + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "peer": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/comment-parser": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.1.5.tgz", + "integrity": "sha512-RePCE4leIhBlmrqiYTvaqEeGYg7qpSl4etaIabKtdOQVi+mSTIBBklGUwIr79GXYnl3LpMwmDw4KeR2stNc6FA==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", + "dev": true, + "hasInstallScript": true + }, + "node_modules/cowsay": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/cowsay/-/cowsay-1.5.0.tgz", + "integrity": "sha512-8Ipzr54Z8zROr/62C8f0PdhQcDusS05gKTS87xxdji8VbWefWly0k8BwGK7+VqamOrkv3eGsCkPtvlHzrhWsCA==", + "dev": true, + "dependencies": { + "get-stdin": "8.0.0", + "string-width": "~2.1.1", + "strip-final-newline": "2.0.0", + "yargs": "15.4.1" + }, + "bin": { + "cowsay": "cli.js", + "cowthink": "cli.js" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dedent": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", + "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "dev": true, + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-require-extensions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz", + "integrity": "sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==", + "dev": true, + "dependencies": { + "strip-bom": "^4.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.561", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.561.tgz", + "integrity": "sha512-eS5t4ulWOBfVHdq9SW2dxEaFarj1lPjvJ8PaYMOjY0DecBaj/t4ARziL2IPpDr4atyWwjLFGQ2vo/VCgQFezVQ==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", + "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.1", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-airbnb-base": { + "version": "14.2.1", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz", + "integrity": "sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==", + "dev": true, + "dependencies": { + "confusing-browser-globals": "^1.0.10", + "object.assign": "^4.1.2", + "object.entries": "^1.1.2" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "eslint": "^5.16.0 || ^6.8.0 || ^7.2.0", + "eslint-plugin-import": "^2.22.1" + } + }, + "node_modules/eslint-config-semistandard": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-semistandard/-/eslint-config-semistandard-15.0.1.tgz", + "integrity": "sha512-sfV+qNBWKOmF0kZJll1VH5XqOAdTmLlhbOl9WKI11d2eMEe+Kicxnpm24PQWHOqAfk5pAWU2An0LjNCXKa4Usg==", + "dev": true, + "peerDependencies": { + "eslint": ">=6.0.1", + "eslint-config-standard": ">=14.1.0", + "eslint-plugin-import": ">=2.18.0", + "eslint-plugin-node": ">=9.1.0", + "eslint-plugin-promise": ">=4.2.1", + "eslint-plugin-standard": ">=4.0.0" + } + }, + "node_modules/eslint-config-standard": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz", + "integrity": "sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peerDependencies": { + "eslint": "^7.12.1", + "eslint-plugin-import": "^2.22.1", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-promise": "^4.2.1 || ^5.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-es": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "dev": true, + "dependencies": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-es/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.28.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz", + "integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.findlastindex": "^1.2.2", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.8.0", + "has": "^1.0.3", + "is-core-module": "^2.13.0", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.6", + "object.groupby": "^1.0.0", + "object.values": "^1.1.6", + "semver": "^6.3.1", + "tsconfig-paths": "^3.14.2" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-jsdoc": { + "version": "32.3.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-32.3.4.tgz", + "integrity": "sha512-xSWfsYvffXnN0OkwLnB7MoDDDDjqcp46W7YlY1j7JyfAQBQ+WnGCfLov3gVNZjUGtK9Otj8mEhTZTqJu4QtIGA==", + "dev": true, + "dependencies": { + "comment-parser": "1.1.5", + "debug": "^4.3.1", + "jsdoctypeparser": "^9.0.0", + "lodash": "^4.17.21", + "regextras": "^0.7.1", + "semver": "^7.3.5", + "spdx-expression-parse": "^3.0.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0" + } + }, + "node_modules/eslint-plugin-jsdoc/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-plugin-jsdoc/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-plugin-jsdoc/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/eslint-plugin-node": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "dev": true, + "dependencies": { + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "peerDependencies": { + "eslint": ">=5.16.0" + } + }, + "node_modules/eslint-plugin-node/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-plugin-node/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-prefer-arrow": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prefer-arrow/-/eslint-plugin-prefer-arrow-1.2.3.tgz", + "integrity": "sha512-J9I5PKCOJretVuiZRGvPQxCbllxGAV/viI20JO3LYblAodofBxyMnZAJ+WGeClHgANnSJberTNoFWWjrWKBuXQ==", + "dev": true, + "peerDependencies": { + "eslint": ">=2.0.0" + } + }, + "node_modules/eslint-plugin-promise": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.3.1.tgz", + "integrity": "sha512-bY2sGqyptzFBDLh/GMbAxfdJC+b0f23ME63FOE4+Jao0oZ3E1LEwFtWJX/1pGMJLiTtrSSern2CRM/g+dfc0eQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint-plugin-standard": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-5.0.0.tgz", + "integrity": "sha512-eSIXPc9wBM4BrniMzJRBm2uoVuXz2EPa+NXPk2+itrVt+r5SbKFERx/IgrK/HmfjddyKVz2f+j+7gBRvu19xLg==", + "deprecated": "standard 16.0.0 and eslint-config-standard 16.0.0 no longer require the eslint-plugin-standard package. You can remove it from your dependencies with 'npm rm eslint-plugin-standard'. More info here: https://github.com/standard/standard/issues/1316", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peerDependencies": { + "eslint": ">=5.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/eslint/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/eslint/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", + "dev": true, + "dependencies": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/execa/node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "dev": true, + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/execa/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/execa/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/execa/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + }, + "node_modules/executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "dependencies": { + "pify": "^2.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + "dev": true + }, + "node_modules/ext-list": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", + "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", + "dev": true, + "dependencies": { + "mime-db": "^1.28.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ext-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", + "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", + "dev": true, + "dependencies": { + "ext-list": "^2.0.0", + "sort-keys-length": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-type": { + "version": "17.1.6", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-17.1.6.tgz", + "integrity": "sha512-hlDw5Ev+9e883s0pwUsuuYNu4tD7GgpUnOvykjv1Gya0ZIjuKumthDRua90VUn6/nlRKAjcxLUnHNTIUWwWIiw==", + "dev": true, + "dependencies": { + "readable-web-to-node-stream": "^3.0.2", + "strtok3": "^7.0.0-alpha.9", + "token-types": "^5.0.0-alpha.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "node_modules/filename-reserved-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-3.0.0.tgz", + "integrity": "sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/filenamify": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-5.1.1.tgz", + "integrity": "sha512-M45CbrJLGACfrPOkrTp3j2EcO9OBkKUYME0eiqOCa7i2poaklU0jhlIaMlr8ijLorT0uLAzrn3qXOp5684CkfA==", + "dev": true, + "dependencies": { + "filename-reserved-regex": "^3.0.0", + "strip-outer": "^2.0.0", + "trim-repeated": "^2.0.0" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "peer": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-versions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-5.1.0.tgz", + "integrity": "sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==", + "dev": true, + "dependencies": { + "semver-regex": "^4.0.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", + "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/fromentries": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", + "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "dev": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/gauge/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/gauge/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stdin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "node_modules/hasha": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", + "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", + "dev": true, + "dependencies": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hasha/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hasha/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dev": true, + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "node_modules/is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "peer": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isomorphic-ws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", + "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-hook": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", + "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", + "dev": true, + "dependencies": { + "append-transform": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-processinfo": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", + "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==", + "dev": true, + "dependencies": { + "archy": "^1.0.0", + "cross-spawn": "^7.0.3", + "istanbul-lib-coverage": "^3.2.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-processinfo/node_modules/p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/istanbul-lib-report/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-changed-files/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/jest-changed-files/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-changed-files/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-changed-files/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-cli/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-cli/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-cli/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-snapshot/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdoctypeparser": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz", + "integrity": "sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==", + "dev": true, + "bin": { + "jsdoctypeparser": "bin/jsdoctypeparser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "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 + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", + "dev": true + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true + }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "peer": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-dir/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "peer": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-collect/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minipass-fetch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", + "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-fetch/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-flush/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-addon-api": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.0.0.tgz", + "integrity": "sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==" + }, + "node_modules/node-gyp": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.0.tgz", + "integrity": "sha512-dMXsYP6gc9rRbejLXmTbVRYjAHw7ppswsKyMxuxJxxOHzluIO1rGp9TOQgjFJ+2MCqcOcQTOPB/8Xwhr+7s4Eg==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^11.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^12.13 || ^14.13 || >=16" + } + }, + "node_modules/node-gyp/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-gyp/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-gyp/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" + }, + "node_modules/node-preload": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", + "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", + "dev": true, + "dependencies": { + "process-on-spawn": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "dev": true + }, + "node_modules/nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dev": true, + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/nyc": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", + "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", + "dev": true, + "dependencies": { + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^2.0.0", + "get-package-type": "^0.1.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" + }, + "bin": { + "nyc": "bin/nyc.js" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/nyc/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/nyc/node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/nyc/node_modules/istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nyc/node_modules/p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", + "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", + "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/object.values": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/os-filter-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-2.0.0.tgz", + "integrity": "sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==", + "dev": true, + "dependencies": { + "arch": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/package-hash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.15", + "hasha": "^5.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", + "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/peek-readable": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", + "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "peer": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "peer": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "peer": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "peer": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "peer": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/process-on-spawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", + "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "dev": true, + "dependencies": { + "fromentries": "^1.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", + "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readable-web-to-node-stream": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", + "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", + "dev": true, + "dependencies": { + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/regextras": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.7.1.tgz", + "integrity": "sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w==", + "dev": true, + "engines": { + "node": ">=0.1.14" + } + }, + "node_modules/release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==", + "dev": true, + "dependencies": { + "es6-error": "^4.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dev": true, + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "optional": true + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/semver-regex": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz", + "integrity": "sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semver-truncate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-3.0.0.tgz", + "integrity": "sha512-LJWA9kSvMolR51oDE6PN3kALBNaUdkxzAGcexw8gjMA8xr5zUqK0JiR3CgARSqanYF3Z1YHvsErb1KDgh+v7Rg==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semver-truncate/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-truncate/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-truncate/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "peer": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dev": true, + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", + "dev": true, + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-keys-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", + "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==", + "dev": true, + "dependencies": { + "sort-keys": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "peer": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spawn-wrap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", + "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", + "dev": true, + "dependencies": { + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "which": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/spawn-wrap/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", + "dev": true + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/ssri": { + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", + "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ssri/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-outer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-2.0.0.tgz", + "integrity": "sha512-A21Xsm1XzUkK0qK1ZrytDUvqsQWict2Cykhvi0fBQntGG5JSprESasEyV1EZ/4CiR5WB5KjzLTrP/bO37B0wPg==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strtok3": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz", + "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==", + "dev": true, + "dependencies": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^5.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/table": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/table/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 + }, + "node_modules/table/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", + "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/thrift": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/thrift/-/thrift-0.19.0.tgz", + "integrity": "sha512-FfAeToex47DYF5UiqFiLXc0dTOQ1Dt94hdT/p1WEM8HQGOvI32jGs235QUeOvYwb1bApsTfFCa+ACDyF0fVtrg==", + "dependencies": { + "browser-or-node": "^1.2.1", + "isomorphic-ws": "^4.0.1", + "node-int64": "^0.4.0", + "q": "^1.5.0", + "ws": "^5.2.3" + }, + "engines": { + "node": ">= 10.18.0" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/token-types": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", + "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==", + "dev": true, + "dependencies": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/trim-repeated": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-2.0.0.tgz", + "integrity": "sha512-QUHBFTJGdOwmp0tbOG505xAgOp/YliZP/6UgafFXYZ26WT1bvQmSMJUvkeVSASuJJHbqsFbynTvkd5W8RBTipg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^5.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/trim-repeated/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ts-jest": { + "version": "29.1.1", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", + "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", + "dev": true, + "dependencies": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "^7.5.3", + "yargs-parser": "^21.0.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/ts-jest/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-jest/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-jest/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dev": true, + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "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, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", + "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", + "dev": true + }, + "node_modules/v8-to-istanbul": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz", + "integrity": "sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true + }, + "node_modules/which-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/ws": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz", + "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json index 05b473c..cdb06a6 100644 --- a/package.json +++ b/package.json @@ -1,15 +1,19 @@ { "name": "@nebula-contrib/nebula-nodejs", - "version": "3.0.3", + "version": "3.1.0-beta.1", "description": "This repository provides Nebula client API in Nodejs.", - "main": "index.js", + "main": "lib/index.js", "scripts": { - "build": "cross-env NODE_ENV=production babel-node --max-old-space-size=7168 ./tools/run build", - "clean": "babel-node ./tools/run clean", - "test": "babel-node ./tools/run test", + "build": "npm run build:addon && npm run types && npm run build:lib", + "build:lib": "swc src --out-dir lib", + "build:addon": "node tools/build-addon.mjs", + "clean": "rimraf build/* lib/* types/*", + "types": "tsc", + "test": "jest", "lint": "eslint", - "coverage": "babel-node ./tools/run coverage" + "prepublish": "npm run clean && npm run build" }, + "types": "./types", "repository": { "type": "git", "url": "git+https://github.com/nebula-contrib/nebula-node.git" @@ -21,53 +25,44 @@ }, "homepage": "https://github.com/nebula-contrib/nebula-node#readme", "dependencies": { + "@swc/helpers": "^0.5.3", "bindings": "^1.5.0", "browser-or-node": "^1.2.1", "isomorphic-ws": "^4.0.1", + "lodash": "^4.17.21", + "node-addon-api": "^7.0.0", "node-int64": "^0.4.0", "q": "^1.5.0", - "ws": "^5.2.2", - "lodash": "^4.17.21" + "thrift": "^0.19.0", + "ws": "^5.2.2" }, "keywords": [ "nebula", "nodejs nebula sdk" ], "engines": { - "node": ">=10.0.0" + "node": ">=18.0.0" }, "devDependencies": { - "@babel/cli": "^7.14.5", - "@babel/core": "^7.14.6", - "@babel/node": "^7.14.5", - "@babel/plugin-proposal-decorators": "^7.14.5", - "@babel/plugin-proposal-do-expressions": "^7.14.5", - "@babel/plugin-proposal-export-default-from": "^7.14.5", - "@babel/plugin-proposal-function-bind": "^7.14.5", - "@babel/plugin-proposal-function-sent": "^7.14.5", - "@babel/plugin-proposal-pipeline-operator": "^7.14.5", - "@babel/plugin-proposal-throw-expressions": "^7.14.5", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-transform-runtime": "^7.14.5", - "@babel/preset-env": "^7.14.5", - "@babel/preset-typescript": "^7.14.5", "@istanbuljs/nyc-config-babel": "^3.0.0", "@istanbuljs/nyc-config-typescript": "^1.0.1", + "@jest/globals": "^29.7.0", + "@swc/cli": "^0.1.62", + "@swc/core": "^1.3.93", + "@swc/jest": "^0.2.29", + "@types/bindings": "^1.5.2", "@types/chai": "^4.2.18", "@types/esm": "^3.2.0", "@types/glob": "^7.1.3", "@types/lodash": "^4.14.170", - "@types/mocha": "^8.2.2", - "@types/node": "^14.17.3", + "@types/node": "^14.18.63", + "@types/thrift": "^0.10.14", "@typescript-eslint/eslint-plugin": "^4.27.0", "@typescript-eslint/parser": "^4.27.0", "assert": "^2.0.0", "babel-eslint": "^10.1.0", - "babel-plugin-add-module-exports": "^1.0.4", - "babel-plugin-istanbul": "^6.0.0", - "babel-plugin-transform-typescript-metadata": "^0.3.2", "chai": "^4.3.4", - "chalk": "^4.1.1", + "chalk": "^4.1.2", "core-js": "^2.6.10", "cowsay": "^1.5.0", "cross-env": "^7.0.3", @@ -82,13 +77,14 @@ "eslint-plugin-promise": "^4.2.1", "eslint-plugin-standard": "^5.0.0", "esm": "^3.2.25", + "jest": "^29.7.0", "mkdirp": "^0.5.1", - "mocha": "^8.4.0", + "node-gyp": "^9.4.0", "nyc": "^15.1.0", "open": "^7.4.2", "rimraf": "^3.0.2", - "ts-node": "^10.0.0", - "typescript": "4.1.5", + "ts-jest": "^29.1.1", + "typescript": "^5.2.2", "which": "^2.0.2" }, "publishConfig": { diff --git a/specs/README.md b/specs/README.md index 6756a75..8b4634c 100644 --- a/specs/README.md +++ b/specs/README.md @@ -5,5 +5,8 @@ [graph.thrift](https://github.com/vesoft-inc/nebula/blob/master/src/interface/graph.thrift) ```shell -thrift-0.14.1.exe -r --gen js:node graph.thrift +# thrift@0.19.0 +# https://www.apache.org/dyn/closer.cgi?path=/thrift/0.19.0/thrift-0.19.0.tar.gz +thrift --gen js:node,ts,es6,with_ns graph.thrift +thrift --gen js:node,ts,es6,with_ns common.thrift ``` diff --git a/specs/gen-nodejs/GraphService.js b/specs/gen-nodejs/GraphService.js deleted file mode 100644 index 6910cd3..0000000 --- a/specs/gen-nodejs/GraphService.js +++ /dev/null @@ -1,1498 +0,0 @@ -// -// Autogenerated by Thrift Compiler (0.14.1) -// -// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING -// -"use strict"; - -var thrift = require('thrift'); -var Thrift = thrift.Thrift; -var Q = thrift.Q; -var Int64 = require('node-int64'); - -var common_ttypes = require('./common_types'); - - -var ttypes = require('./graph_types'); -//HELPER FUNCTIONS AND STRUCTURES - -var GraphService_authenticate_args = function(args) { - this.username = null; - this.password = null; - if (args) { - if (args.username !== undefined && args.username !== null) { - this.username = args.username; - } - if (args.password !== undefined && args.password !== null) { - this.password = args.password; - } - } -}; -GraphService_authenticate_args.prototype = {}; -GraphService_authenticate_args.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.STRING) { - this.username = input.readString(); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.STRING) { - this.password = input.readString(); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -GraphService_authenticate_args.prototype.write = function(output) { - output.writeStructBegin('GraphService_authenticate_args'); - if (this.username !== null && this.username !== undefined) { - output.writeFieldBegin('username', Thrift.Type.STRING, 1); - output.writeString(this.username); - output.writeFieldEnd(); - } - if (this.password !== null && this.password !== undefined) { - output.writeFieldBegin('password', Thrift.Type.STRING, 2); - output.writeString(this.password); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var GraphService_authenticate_result = function(args) { - this.success = null; - if (args) { - if (args.success !== undefined && args.success !== null) { - this.success = new ttypes.AuthResponse(args.success); - } - } -}; -GraphService_authenticate_result.prototype = {}; -GraphService_authenticate_result.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 0: - if (ftype == Thrift.Type.STRUCT) { - this.success = new ttypes.AuthResponse(); - this.success.read(input); - } else { - input.skip(ftype); - } - break; - case 0: - input.skip(ftype); - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -GraphService_authenticate_result.prototype.write = function(output) { - output.writeStructBegin('GraphService_authenticate_result'); - if (this.success !== null && this.success !== undefined) { - output.writeFieldBegin('success', Thrift.Type.STRUCT, 0); - this.success.write(output); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var GraphService_signout_args = function(args) { - this.sessionId = null; - if (args) { - if (args.sessionId !== undefined && args.sessionId !== null) { - this.sessionId = args.sessionId; - } - } -}; -GraphService_signout_args.prototype = {}; -GraphService_signout_args.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I64) { - this.sessionId = input.readI64(); - } else { - input.skip(ftype); - } - break; - case 0: - input.skip(ftype); - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -GraphService_signout_args.prototype.write = function(output) { - output.writeStructBegin('GraphService_signout_args'); - if (this.sessionId !== null && this.sessionId !== undefined) { - output.writeFieldBegin('sessionId', Thrift.Type.I64, 1); - output.writeI64(this.sessionId); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var GraphService_signout_result = function(args) { -}; -GraphService_signout_result.prototype = {}; -GraphService_signout_result.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - if (ftype == Thrift.Type.STOP) { - break; - } - input.skip(ftype); - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -GraphService_signout_result.prototype.write = function(output) { - output.writeStructBegin('GraphService_signout_result'); - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var GraphService_execute_args = function(args) { - this.sessionId = null; - this.stmt = null; - if (args) { - if (args.sessionId !== undefined && args.sessionId !== null) { - this.sessionId = args.sessionId; - } - if (args.stmt !== undefined && args.stmt !== null) { - this.stmt = args.stmt; - } - } -}; -GraphService_execute_args.prototype = {}; -GraphService_execute_args.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I64) { - this.sessionId = input.readI64(); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.STRING) { - this.stmt = input.readBinary(); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -GraphService_execute_args.prototype.write = function(output) { - output.writeStructBegin('GraphService_execute_args'); - if (this.sessionId !== null && this.sessionId !== undefined) { - output.writeFieldBegin('sessionId', Thrift.Type.I64, 1); - output.writeI64(this.sessionId); - output.writeFieldEnd(); - } - if (this.stmt !== null && this.stmt !== undefined) { - output.writeFieldBegin('stmt', Thrift.Type.STRING, 2); - output.writeBinary(this.stmt); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var GraphService_execute_result = function(args) { - this.success = null; - if (args) { - if (args.success !== undefined && args.success !== null) { - this.success = new ttypes.ExecutionResponse(args.success); - } - } -}; -GraphService_execute_result.prototype = {}; -GraphService_execute_result.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 0: - if (ftype == Thrift.Type.STRUCT) { - this.success = new ttypes.ExecutionResponse(); - this.success.read(input); - } else { - input.skip(ftype); - } - break; - case 0: - input.skip(ftype); - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -GraphService_execute_result.prototype.write = function(output) { - output.writeStructBegin('GraphService_execute_result'); - if (this.success !== null && this.success !== undefined) { - output.writeFieldBegin('success', Thrift.Type.STRUCT, 0); - this.success.write(output); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var GraphService_executeWithParameter_args = function(args) { - this.sessionId = null; - this.stmt = null; - this.parameterMap = null; - if (args) { - if (args.sessionId !== undefined && args.sessionId !== null) { - this.sessionId = args.sessionId; - } - if (args.stmt !== undefined && args.stmt !== null) { - this.stmt = args.stmt; - } - if (args.parameterMap !== undefined && args.parameterMap !== null) { - this.parameterMap = Thrift.copyMap(args.parameterMap, [common_ttypes.Value]); - } - } -}; -GraphService_executeWithParameter_args.prototype = {}; -GraphService_executeWithParameter_args.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I64) { - this.sessionId = input.readI64(); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.STRING) { - this.stmt = input.readBinary(); - } else { - input.skip(ftype); - } - break; - case 3: - if (ftype == Thrift.Type.MAP) { - this.parameterMap = {}; - var _rtmp335 = input.readMapBegin(); - var _size34 = _rtmp335.size || 0; - for (var _i36 = 0; _i36 < _size34; ++_i36) { - var key37 = null; - var val38 = null; - key37 = input.readString(); - val38 = new common_ttypes.Value(); - val38.read(input); - this.parameterMap[key37] = val38; - } - input.readMapEnd(); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -GraphService_executeWithParameter_args.prototype.write = function(output) { - output.writeStructBegin('GraphService_executeWithParameter_args'); - if (this.sessionId !== null && this.sessionId !== undefined) { - output.writeFieldBegin('sessionId', Thrift.Type.I64, 1); - output.writeI64(this.sessionId); - output.writeFieldEnd(); - } - if (this.stmt !== null && this.stmt !== undefined) { - output.writeFieldBegin('stmt', Thrift.Type.STRING, 2); - output.writeBinary(this.stmt); - output.writeFieldEnd(); - } - if (this.parameterMap !== null && this.parameterMap !== undefined) { - output.writeFieldBegin('parameterMap', Thrift.Type.MAP, 3); - output.writeMapBegin(Thrift.Type.STRING, Thrift.Type.STRUCT, Thrift.objectLength(this.parameterMap)); - for (var kiter39 in this.parameterMap) { - if (this.parameterMap.hasOwnProperty(kiter39)) { - var viter40 = this.parameterMap[kiter39]; - output.writeString(kiter39); - viter40.write(output); - } - } - output.writeMapEnd(); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var GraphService_executeWithParameter_result = function(args) { - this.success = null; - if (args) { - if (args.success !== undefined && args.success !== null) { - this.success = new ttypes.ExecutionResponse(args.success); - } - } -}; -GraphService_executeWithParameter_result.prototype = {}; -GraphService_executeWithParameter_result.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 0: - if (ftype == Thrift.Type.STRUCT) { - this.success = new ttypes.ExecutionResponse(); - this.success.read(input); - } else { - input.skip(ftype); - } - break; - case 0: - input.skip(ftype); - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -GraphService_executeWithParameter_result.prototype.write = function(output) { - output.writeStructBegin('GraphService_executeWithParameter_result'); - if (this.success !== null && this.success !== undefined) { - output.writeFieldBegin('success', Thrift.Type.STRUCT, 0); - this.success.write(output); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var GraphService_executeJson_args = function(args) { - this.sessionId = null; - this.stmt = null; - if (args) { - if (args.sessionId !== undefined && args.sessionId !== null) { - this.sessionId = args.sessionId; - } - if (args.stmt !== undefined && args.stmt !== null) { - this.stmt = args.stmt; - } - } -}; -GraphService_executeJson_args.prototype = {}; -GraphService_executeJson_args.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I64) { - this.sessionId = input.readI64(); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.STRING) { - this.stmt = input.readBinary(); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -GraphService_executeJson_args.prototype.write = function(output) { - output.writeStructBegin('GraphService_executeJson_args'); - if (this.sessionId !== null && this.sessionId !== undefined) { - output.writeFieldBegin('sessionId', Thrift.Type.I64, 1); - output.writeI64(this.sessionId); - output.writeFieldEnd(); - } - if (this.stmt !== null && this.stmt !== undefined) { - output.writeFieldBegin('stmt', Thrift.Type.STRING, 2); - output.writeBinary(this.stmt); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var GraphService_executeJson_result = function(args) { - this.success = null; - if (args) { - if (args.success !== undefined && args.success !== null) { - this.success = args.success; - } - } -}; -GraphService_executeJson_result.prototype = {}; -GraphService_executeJson_result.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 0: - if (ftype == Thrift.Type.STRING) { - this.success = input.readBinary(); - } else { - input.skip(ftype); - } - break; - case 0: - input.skip(ftype); - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -GraphService_executeJson_result.prototype.write = function(output) { - output.writeStructBegin('GraphService_executeJson_result'); - if (this.success !== null && this.success !== undefined) { - output.writeFieldBegin('success', Thrift.Type.STRING, 0); - output.writeBinary(this.success); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var GraphService_executeJsonWithParameter_args = function(args) { - this.sessionId = null; - this.stmt = null; - this.parameterMap = null; - if (args) { - if (args.sessionId !== undefined && args.sessionId !== null) { - this.sessionId = args.sessionId; - } - if (args.stmt !== undefined && args.stmt !== null) { - this.stmt = args.stmt; - } - if (args.parameterMap !== undefined && args.parameterMap !== null) { - this.parameterMap = Thrift.copyMap(args.parameterMap, [common_ttypes.Value]); - } - } -}; -GraphService_executeJsonWithParameter_args.prototype = {}; -GraphService_executeJsonWithParameter_args.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I64) { - this.sessionId = input.readI64(); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.STRING) { - this.stmt = input.readBinary(); - } else { - input.skip(ftype); - } - break; - case 3: - if (ftype == Thrift.Type.MAP) { - this.parameterMap = {}; - var _rtmp342 = input.readMapBegin(); - var _size41 = _rtmp342.size || 0; - for (var _i43 = 0; _i43 < _size41; ++_i43) { - var key44 = null; - var val45 = null; - key44 = input.readBinary(); - val45 = new common_ttypes.Value(); - val45.read(input); - this.parameterMap[key44] = val45; - } - input.readMapEnd(); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -GraphService_executeJsonWithParameter_args.prototype.write = function(output) { - output.writeStructBegin('GraphService_executeJsonWithParameter_args'); - if (this.sessionId !== null && this.sessionId !== undefined) { - output.writeFieldBegin('sessionId', Thrift.Type.I64, 1); - output.writeI64(this.sessionId); - output.writeFieldEnd(); - } - if (this.stmt !== null && this.stmt !== undefined) { - output.writeFieldBegin('stmt', Thrift.Type.STRING, 2); - output.writeBinary(this.stmt); - output.writeFieldEnd(); - } - if (this.parameterMap !== null && this.parameterMap !== undefined) { - output.writeFieldBegin('parameterMap', Thrift.Type.MAP, 3); - output.writeMapBegin(Thrift.Type.STRING, Thrift.Type.STRUCT, Thrift.objectLength(this.parameterMap)); - for (var kiter46 in this.parameterMap) { - if (this.parameterMap.hasOwnProperty(kiter46)) { - var viter47 = this.parameterMap[kiter46]; - output.writeBinary(kiter46); - viter47.write(output); - } - } - output.writeMapEnd(); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var GraphService_executeJsonWithParameter_result = function(args) { - this.success = null; - if (args) { - if (args.success !== undefined && args.success !== null) { - this.success = args.success; - } - } -}; -GraphService_executeJsonWithParameter_result.prototype = {}; -GraphService_executeJsonWithParameter_result.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 0: - if (ftype == Thrift.Type.STRING) { - this.success = input.readBinary(); - } else { - input.skip(ftype); - } - break; - case 0: - input.skip(ftype); - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -GraphService_executeJsonWithParameter_result.prototype.write = function(output) { - output.writeStructBegin('GraphService_executeJsonWithParameter_result'); - if (this.success !== null && this.success !== undefined) { - output.writeFieldBegin('success', Thrift.Type.STRING, 0); - output.writeBinary(this.success); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var GraphService_verifyClientVersion_args = function(args) { - this.req = null; - if (args) { - if (args.req !== undefined && args.req !== null) { - this.req = new ttypes.VerifyClientVersionReq(args.req); - } - } -}; -GraphService_verifyClientVersion_args.prototype = {}; -GraphService_verifyClientVersion_args.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.STRUCT) { - this.req = new ttypes.VerifyClientVersionReq(); - this.req.read(input); - } else { - input.skip(ftype); - } - break; - case 0: - input.skip(ftype); - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -GraphService_verifyClientVersion_args.prototype.write = function(output) { - output.writeStructBegin('GraphService_verifyClientVersion_args'); - if (this.req !== null && this.req !== undefined) { - output.writeFieldBegin('req', Thrift.Type.STRUCT, 1); - this.req.write(output); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var GraphService_verifyClientVersion_result = function(args) { - this.success = null; - if (args) { - if (args.success !== undefined && args.success !== null) { - this.success = new ttypes.VerifyClientVersionResp(args.success); - } - } -}; -GraphService_verifyClientVersion_result.prototype = {}; -GraphService_verifyClientVersion_result.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 0: - if (ftype == Thrift.Type.STRUCT) { - this.success = new ttypes.VerifyClientVersionResp(); - this.success.read(input); - } else { - input.skip(ftype); - } - break; - case 0: - input.skip(ftype); - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -GraphService_verifyClientVersion_result.prototype.write = function(output) { - output.writeStructBegin('GraphService_verifyClientVersion_result'); - if (this.success !== null && this.success !== undefined) { - output.writeFieldBegin('success', Thrift.Type.STRUCT, 0); - this.success.write(output); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var GraphServiceClient = exports.Client = function(output, pClass) { - this.output = output; - this.pClass = pClass; - this._seqid = 0; - this._reqs = {}; -}; -GraphServiceClient.prototype = {}; -GraphServiceClient.prototype.seqid = function() { return this._seqid; }; -GraphServiceClient.prototype.new_seqid = function() { return this._seqid += 1; }; - -GraphServiceClient.prototype.authenticate = function(username, password, callback) { - this._seqid = this.new_seqid(); - if (callback === undefined) { - var _defer = Q.defer(); - this._reqs[this.seqid()] = function(error, result) { - if (error) { - _defer.reject(error); - } else { - _defer.resolve(result); - } - }; - this.send_authenticate(username, password); - return _defer.promise; - } else { - this._reqs[this.seqid()] = callback; - this.send_authenticate(username, password); - } -}; - -GraphServiceClient.prototype.send_authenticate = function(username, password) { - var output = new this.pClass(this.output); - var params = { - username: username, - password: password - }; - var args = new GraphService_authenticate_args(params); - try { - output.writeMessageBegin('authenticate', Thrift.MessageType.CALL, this.seqid()); - args.write(output); - output.writeMessageEnd(); - return this.output.flush(); - } - catch (e) { - delete this._reqs[this.seqid()]; - if (typeof output.reset === 'function') { - output.reset(); - } - throw e; - } -}; - -GraphServiceClient.prototype.recv_authenticate = function(input,mtype,rseqid) { - var callback = this._reqs[rseqid] || function() {}; - delete this._reqs[rseqid]; - if (mtype == Thrift.MessageType.EXCEPTION) { - var x = new Thrift.TApplicationException(); - x.read(input); - input.readMessageEnd(); - return callback(x); - } - var result = new GraphService_authenticate_result(); - result.read(input); - input.readMessageEnd(); - - if (null !== result.success) { - return callback(null, result.success); - } - return callback('authenticate failed: unknown result'); -}; - -GraphServiceClient.prototype.signout = function(sessionId, callback) { - this._seqid = this.new_seqid(); - if (callback === undefined) { - var _defer = Q.defer(); - this._reqs[this.seqid()] = function(error, result) { - if (error) { - _defer.reject(error); - } else { - _defer.resolve(result); - } - }; - this.send_signout(sessionId); - return _defer.promise; - } else { - this._reqs[this.seqid()] = callback; - this.send_signout(sessionId); - } -}; - -GraphServiceClient.prototype.send_signout = function(sessionId) { - var output = new this.pClass(this.output); - var params = { - sessionId: sessionId - }; - var args = new GraphService_signout_args(params); - try { - output.writeMessageBegin('signout', Thrift.MessageType.ONEWAY, this.seqid()); - args.write(output); - output.writeMessageEnd(); - this.output.flush(); - var callback = this._reqs[this.seqid()] || function() {}; - delete this._reqs[this.seqid()]; - callback(null); - } - catch (e) { - delete this._reqs[this.seqid()]; - if (typeof output.reset === 'function') { - output.reset(); - } - throw e; - } -}; - -GraphServiceClient.prototype.execute = function(sessionId, stmt, callback) { - this._seqid = this.new_seqid(); - if (callback === undefined) { - var _defer = Q.defer(); - this._reqs[this.seqid()] = function(error, result) { - if (error) { - _defer.reject(error); - } else { - _defer.resolve(result); - } - }; - this.send_execute(sessionId, stmt); - return _defer.promise; - } else { - this._reqs[this.seqid()] = callback; - this.send_execute(sessionId, stmt); - } -}; - -GraphServiceClient.prototype.send_execute = function(sessionId, stmt) { - var output = new this.pClass(this.output); - var params = { - sessionId: sessionId, - stmt: stmt - }; - var args = new GraphService_execute_args(params); - try { - output.writeMessageBegin('execute', Thrift.MessageType.CALL, this.seqid()); - args.write(output); - output.writeMessageEnd(); - return this.output.flush(); - } - catch (e) { - delete this._reqs[this.seqid()]; - if (typeof output.reset === 'function') { - output.reset(); - } - throw e; - } -}; - -GraphServiceClient.prototype.recv_execute = function(input,mtype,rseqid) { - var callback = this._reqs[rseqid] || function() {}; - delete this._reqs[rseqid]; - if (mtype == Thrift.MessageType.EXCEPTION) { - var x = new Thrift.TApplicationException(); - x.read(input); - input.readMessageEnd(); - return callback(x); - } - var result = new GraphService_execute_result(); - result.read(input); - input.readMessageEnd(); - - if (null !== result.success) { - return callback(null, result.success); - } - return callback('execute failed: unknown result'); -}; - -GraphServiceClient.prototype.executeWithParameter = function(sessionId, stmt, parameterMap, callback) { - this._seqid = this.new_seqid(); - if (callback === undefined) { - var _defer = Q.defer(); - this._reqs[this.seqid()] = function(error, result) { - if (error) { - _defer.reject(error); - } else { - _defer.resolve(result); - } - }; - this.send_executeWithParameter(sessionId, stmt, parameterMap); - return _defer.promise; - } else { - this._reqs[this.seqid()] = callback; - this.send_executeWithParameter(sessionId, stmt, parameterMap); - } -}; - -GraphServiceClient.prototype.send_executeWithParameter = function(sessionId, stmt, parameterMap) { - var output = new this.pClass(this.output); - var params = { - sessionId: sessionId, - stmt: stmt, - parameterMap: parameterMap - }; - var args = new GraphService_executeWithParameter_args(params); - try { - output.writeMessageBegin('executeWithParameter', Thrift.MessageType.CALL, this.seqid()); - args.write(output); - output.writeMessageEnd(); - return this.output.flush(); - } - catch (e) { - delete this._reqs[this.seqid()]; - if (typeof output.reset === 'function') { - output.reset(); - } - throw e; - } -}; - -GraphServiceClient.prototype.recv_executeWithParameter = function(input,mtype,rseqid) { - var callback = this._reqs[rseqid] || function() {}; - delete this._reqs[rseqid]; - if (mtype == Thrift.MessageType.EXCEPTION) { - var x = new Thrift.TApplicationException(); - x.read(input); - input.readMessageEnd(); - return callback(x); - } - var result = new GraphService_executeWithParameter_result(); - result.read(input); - input.readMessageEnd(); - - if (null !== result.success) { - return callback(null, result.success); - } - return callback('executeWithParameter failed: unknown result'); -}; - -GraphServiceClient.prototype.executeJson = function(sessionId, stmt, callback) { - this._seqid = this.new_seqid(); - if (callback === undefined) { - var _defer = Q.defer(); - this._reqs[this.seqid()] = function(error, result) { - if (error) { - _defer.reject(error); - } else { - _defer.resolve(result); - } - }; - this.send_executeJson(sessionId, stmt); - return _defer.promise; - } else { - this._reqs[this.seqid()] = callback; - this.send_executeJson(sessionId, stmt); - } -}; - -GraphServiceClient.prototype.send_executeJson = function(sessionId, stmt) { - var output = new this.pClass(this.output); - var params = { - sessionId: sessionId, - stmt: stmt - }; - var args = new GraphService_executeJson_args(params); - try { - output.writeMessageBegin('executeJson', Thrift.MessageType.CALL, this.seqid()); - args.write(output); - output.writeMessageEnd(); - return this.output.flush(); - } - catch (e) { - delete this._reqs[this.seqid()]; - if (typeof output.reset === 'function') { - output.reset(); - } - throw e; - } -}; - -GraphServiceClient.prototype.recv_executeJson = function(input,mtype,rseqid) { - var callback = this._reqs[rseqid] || function() {}; - delete this._reqs[rseqid]; - if (mtype == Thrift.MessageType.EXCEPTION) { - var x = new Thrift.TApplicationException(); - x.read(input); - input.readMessageEnd(); - return callback(x); - } - var result = new GraphService_executeJson_result(); - result.read(input); - input.readMessageEnd(); - - if (null !== result.success) { - return callback(null, result.success); - } - return callback('executeJson failed: unknown result'); -}; - -GraphServiceClient.prototype.executeJsonWithParameter = function(sessionId, stmt, parameterMap, callback) { - this._seqid = this.new_seqid(); - if (callback === undefined) { - var _defer = Q.defer(); - this._reqs[this.seqid()] = function(error, result) { - if (error) { - _defer.reject(error); - } else { - _defer.resolve(result); - } - }; - this.send_executeJsonWithParameter(sessionId, stmt, parameterMap); - return _defer.promise; - } else { - this._reqs[this.seqid()] = callback; - this.send_executeJsonWithParameter(sessionId, stmt, parameterMap); - } -}; - -GraphServiceClient.prototype.send_executeJsonWithParameter = function(sessionId, stmt, parameterMap) { - var output = new this.pClass(this.output); - var params = { - sessionId: sessionId, - stmt: stmt, - parameterMap: parameterMap - }; - var args = new GraphService_executeJsonWithParameter_args(params); - try { - output.writeMessageBegin('executeJsonWithParameter', Thrift.MessageType.CALL, this.seqid()); - args.write(output); - output.writeMessageEnd(); - return this.output.flush(); - } - catch (e) { - delete this._reqs[this.seqid()]; - if (typeof output.reset === 'function') { - output.reset(); - } - throw e; - } -}; - -GraphServiceClient.prototype.recv_executeJsonWithParameter = function(input,mtype,rseqid) { - var callback = this._reqs[rseqid] || function() {}; - delete this._reqs[rseqid]; - if (mtype == Thrift.MessageType.EXCEPTION) { - var x = new Thrift.TApplicationException(); - x.read(input); - input.readMessageEnd(); - return callback(x); - } - var result = new GraphService_executeJsonWithParameter_result(); - result.read(input); - input.readMessageEnd(); - - if (null !== result.success) { - return callback(null, result.success); - } - return callback('executeJsonWithParameter failed: unknown result'); -}; - -GraphServiceClient.prototype.verifyClientVersion = function(req, callback) { - this._seqid = this.new_seqid(); - if (callback === undefined) { - var _defer = Q.defer(); - this._reqs[this.seqid()] = function(error, result) { - if (error) { - _defer.reject(error); - } else { - _defer.resolve(result); - } - }; - this.send_verifyClientVersion(req); - return _defer.promise; - } else { - this._reqs[this.seqid()] = callback; - this.send_verifyClientVersion(req); - } -}; - -GraphServiceClient.prototype.send_verifyClientVersion = function(req) { - var output = new this.pClass(this.output); - var params = { - req: req - }; - var args = new GraphService_verifyClientVersion_args(params); - try { - output.writeMessageBegin('verifyClientVersion', Thrift.MessageType.CALL, this.seqid()); - args.write(output); - output.writeMessageEnd(); - return this.output.flush(); - } - catch (e) { - delete this._reqs[this.seqid()]; - if (typeof output.reset === 'function') { - output.reset(); - } - throw e; - } -}; - -GraphServiceClient.prototype.recv_verifyClientVersion = function(input,mtype,rseqid) { - var callback = this._reqs[rseqid] || function() {}; - delete this._reqs[rseqid]; - if (mtype == Thrift.MessageType.EXCEPTION) { - var x = new Thrift.TApplicationException(); - x.read(input); - input.readMessageEnd(); - return callback(x); - } - var result = new GraphService_verifyClientVersion_result(); - result.read(input); - input.readMessageEnd(); - - if (null !== result.success) { - return callback(null, result.success); - } - return callback('verifyClientVersion failed: unknown result'); -}; -var GraphServiceProcessor = exports.Processor = function(handler) { - this._handler = handler; -}; -GraphServiceProcessor.prototype.process = function(input, output) { - var r = input.readMessageBegin(); - if (this['process_' + r.fname]) { - return this['process_' + r.fname].call(this, r.rseqid, input, output); - } else { - input.skip(Thrift.Type.STRUCT); - input.readMessageEnd(); - var x = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN_METHOD, 'Unknown function ' + r.fname); - output.writeMessageBegin(r.fname, Thrift.MessageType.EXCEPTION, r.rseqid); - x.write(output); - output.writeMessageEnd(); - output.flush(); - } -}; -GraphServiceProcessor.prototype.process_authenticate = function(seqid, input, output) { - var args = new GraphService_authenticate_args(); - args.read(input); - input.readMessageEnd(); - if (this._handler.authenticate.length === 2) { - Q.fcall(this._handler.authenticate.bind(this._handler), - args.username, - args.password - ).then(function(result) { - var result_obj = new GraphService_authenticate_result({success: result}); - output.writeMessageBegin("authenticate", Thrift.MessageType.REPLY, seqid); - result_obj.write(output); - output.writeMessageEnd(); - output.flush(); - }).catch(function (err) { - var result; - result = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message); - output.writeMessageBegin("authenticate", Thrift.MessageType.EXCEPTION, seqid); - result.write(output); - output.writeMessageEnd(); - output.flush(); - }); - } else { - this._handler.authenticate(args.username, args.password, function (err, result) { - var result_obj; - if ((err === null || typeof err === 'undefined')) { - result_obj = new GraphService_authenticate_result((err !== null || typeof err === 'undefined') ? err : {success: result}); - output.writeMessageBegin("authenticate", Thrift.MessageType.REPLY, seqid); - } else { - result_obj = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message); - output.writeMessageBegin("authenticate", Thrift.MessageType.EXCEPTION, seqid); - } - result_obj.write(output); - output.writeMessageEnd(); - output.flush(); - }); - } -}; -GraphServiceProcessor.prototype.process_signout = function(seqid, input, output) { - var args = new GraphService_signout_args(); - args.read(input); - input.readMessageEnd(); - this._handler.signout(args.sessionId); -}; -GraphServiceProcessor.prototype.process_execute = function(seqid, input, output) { - var args = new GraphService_execute_args(); - args.read(input); - input.readMessageEnd(); - if (this._handler.execute.length === 2) { - Q.fcall(this._handler.execute.bind(this._handler), - args.sessionId, - args.stmt - ).then(function(result) { - var result_obj = new GraphService_execute_result({success: result}); - output.writeMessageBegin("execute", Thrift.MessageType.REPLY, seqid); - result_obj.write(output); - output.writeMessageEnd(); - output.flush(); - }).catch(function (err) { - var result; - result = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message); - output.writeMessageBegin("execute", Thrift.MessageType.EXCEPTION, seqid); - result.write(output); - output.writeMessageEnd(); - output.flush(); - }); - } else { - this._handler.execute(args.sessionId, args.stmt, function (err, result) { - var result_obj; - if ((err === null || typeof err === 'undefined')) { - result_obj = new GraphService_execute_result((err !== null || typeof err === 'undefined') ? err : {success: result}); - output.writeMessageBegin("execute", Thrift.MessageType.REPLY, seqid); - } else { - result_obj = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message); - output.writeMessageBegin("execute", Thrift.MessageType.EXCEPTION, seqid); - } - result_obj.write(output); - output.writeMessageEnd(); - output.flush(); - }); - } -}; -GraphServiceProcessor.prototype.process_executeWithParameter = function(seqid, input, output) { - var args = new GraphService_executeWithParameter_args(); - args.read(input); - input.readMessageEnd(); - if (this._handler.executeWithParameter.length === 3) { - Q.fcall(this._handler.executeWithParameter.bind(this._handler), - args.sessionId, - args.stmt, - args.parameterMap - ).then(function(result) { - var result_obj = new GraphService_executeWithParameter_result({success: result}); - output.writeMessageBegin("executeWithParameter", Thrift.MessageType.REPLY, seqid); - result_obj.write(output); - output.writeMessageEnd(); - output.flush(); - }).catch(function (err) { - var result; - result = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message); - output.writeMessageBegin("executeWithParameter", Thrift.MessageType.EXCEPTION, seqid); - result.write(output); - output.writeMessageEnd(); - output.flush(); - }); - } else { - this._handler.executeWithParameter(args.sessionId, args.stmt, args.parameterMap, function (err, result) { - var result_obj; - if ((err === null || typeof err === 'undefined')) { - result_obj = new GraphService_executeWithParameter_result((err !== null || typeof err === 'undefined') ? err : {success: result}); - output.writeMessageBegin("executeWithParameter", Thrift.MessageType.REPLY, seqid); - } else { - result_obj = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message); - output.writeMessageBegin("executeWithParameter", Thrift.MessageType.EXCEPTION, seqid); - } - result_obj.write(output); - output.writeMessageEnd(); - output.flush(); - }); - } -}; -GraphServiceProcessor.prototype.process_executeJson = function(seqid, input, output) { - var args = new GraphService_executeJson_args(); - args.read(input); - input.readMessageEnd(); - if (this._handler.executeJson.length === 2) { - Q.fcall(this._handler.executeJson.bind(this._handler), - args.sessionId, - args.stmt - ).then(function(result) { - var result_obj = new GraphService_executeJson_result({success: result}); - output.writeMessageBegin("executeJson", Thrift.MessageType.REPLY, seqid); - result_obj.write(output); - output.writeMessageEnd(); - output.flush(); - }).catch(function (err) { - var result; - result = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message); - output.writeMessageBegin("executeJson", Thrift.MessageType.EXCEPTION, seqid); - result.write(output); - output.writeMessageEnd(); - output.flush(); - }); - } else { - this._handler.executeJson(args.sessionId, args.stmt, function (err, result) { - var result_obj; - if ((err === null || typeof err === 'undefined')) { - result_obj = new GraphService_executeJson_result((err !== null || typeof err === 'undefined') ? err : {success: result}); - output.writeMessageBegin("executeJson", Thrift.MessageType.REPLY, seqid); - } else { - result_obj = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message); - output.writeMessageBegin("executeJson", Thrift.MessageType.EXCEPTION, seqid); - } - result_obj.write(output); - output.writeMessageEnd(); - output.flush(); - }); - } -}; -GraphServiceProcessor.prototype.process_executeJsonWithParameter = function(seqid, input, output) { - var args = new GraphService_executeJsonWithParameter_args(); - args.read(input); - input.readMessageEnd(); - if (this._handler.executeJsonWithParameter.length === 3) { - Q.fcall(this._handler.executeJsonWithParameter.bind(this._handler), - args.sessionId, - args.stmt, - args.parameterMap - ).then(function(result) { - var result_obj = new GraphService_executeJsonWithParameter_result({success: result}); - output.writeMessageBegin("executeJsonWithParameter", Thrift.MessageType.REPLY, seqid); - result_obj.write(output); - output.writeMessageEnd(); - output.flush(); - }).catch(function (err) { - var result; - result = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message); - output.writeMessageBegin("executeJsonWithParameter", Thrift.MessageType.EXCEPTION, seqid); - result.write(output); - output.writeMessageEnd(); - output.flush(); - }); - } else { - this._handler.executeJsonWithParameter(args.sessionId, args.stmt, args.parameterMap, function (err, result) { - var result_obj; - if ((err === null || typeof err === 'undefined')) { - result_obj = new GraphService_executeJsonWithParameter_result((err !== null || typeof err === 'undefined') ? err : {success: result}); - output.writeMessageBegin("executeJsonWithParameter", Thrift.MessageType.REPLY, seqid); - } else { - result_obj = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message); - output.writeMessageBegin("executeJsonWithParameter", Thrift.MessageType.EXCEPTION, seqid); - } - result_obj.write(output); - output.writeMessageEnd(); - output.flush(); - }); - } -}; -GraphServiceProcessor.prototype.process_verifyClientVersion = function(seqid, input, output) { - var args = new GraphService_verifyClientVersion_args(); - args.read(input); - input.readMessageEnd(); - if (this._handler.verifyClientVersion.length === 1) { - Q.fcall(this._handler.verifyClientVersion.bind(this._handler), - args.req - ).then(function(result) { - var result_obj = new GraphService_verifyClientVersion_result({success: result}); - output.writeMessageBegin("verifyClientVersion", Thrift.MessageType.REPLY, seqid); - result_obj.write(output); - output.writeMessageEnd(); - output.flush(); - }).catch(function (err) { - var result; - result = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message); - output.writeMessageBegin("verifyClientVersion", Thrift.MessageType.EXCEPTION, seqid); - result.write(output); - output.writeMessageEnd(); - output.flush(); - }); - } else { - this._handler.verifyClientVersion(args.req, function (err, result) { - var result_obj; - if ((err === null || typeof err === 'undefined')) { - result_obj = new GraphService_verifyClientVersion_result((err !== null || typeof err === 'undefined') ? err : {success: result}); - output.writeMessageBegin("verifyClientVersion", Thrift.MessageType.REPLY, seqid); - } else { - result_obj = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message); - output.writeMessageBegin("verifyClientVersion", Thrift.MessageType.EXCEPTION, seqid); - } - result_obj.write(output); - output.writeMessageEnd(); - output.flush(); - }); - } -}; diff --git a/specs/gen-nodejs/common_types.js b/specs/gen-nodejs/common_types.js deleted file mode 100644 index 6991ac5..0000000 --- a/specs/gen-nodejs/common_types.js +++ /dev/null @@ -1,2621 +0,0 @@ -// -// Autogenerated by Thrift Compiler (0.14.1) -// -// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING -// -"use strict"; - -var thrift = require('thrift'); -var Thrift = thrift.Thrift; -var Q = thrift.Q; -var Int64 = require('node-int64'); - - -var ttypes = module.exports = {}; -ttypes.NullType = { - '__NULL__' : 0, - 'NaN' : 1, - 'BAD_DATA' : 2, - 'BAD_TYPE' : 3, - 'ERR_OVERFLOW' : 4, - 'UNKNOWN_PROP' : 5, - 'DIV_BY_ZERO' : 6, - 'OUT_OF_RANGE' : 7 -}; -ttypes.PropertyType = { - 'UNKNOWN' : 0, - 'BOOL' : 1, - 'INT64' : 2, - 'VID' : 3, - 'FLOAT' : 4, - 'DOUBLE' : 5, - 'STRING' : 6, - 'FIXED_STRING' : 7, - 'INT8' : 8, - 'INT16' : 9, - 'INT32' : 10, - 'TIMESTAMP' : 21, - 'DURATION' : 23, - 'DATE' : 24, - 'DATETIME' : 25, - 'TIME' : 26, - 'GEOGRAPHY' : 31 -}; -ttypes.ErrorCode = { - 'SUCCEEDED' : 0, - 'E_DISCONNECTED' : -1, - 'E_FAIL_TO_CONNECT' : -2, - 'E_RPC_FAILURE' : -3, - 'E_LEADER_CHANGED' : -4, - 'E_SPACE_NOT_FOUND' : -5, - 'E_TAG_NOT_FOUND' : -6, - 'E_EDGE_NOT_FOUND' : -7, - 'E_INDEX_NOT_FOUND' : -8, - 'E_EDGE_PROP_NOT_FOUND' : -9, - 'E_TAG_PROP_NOT_FOUND' : -10, - 'E_ROLE_NOT_FOUND' : -11, - 'E_CONFIG_NOT_FOUND' : -12, - 'E_MACHINE_NOT_FOUND' : -13, - 'E_ZONE_NOT_FOUND' : -14, - 'E_LISTENER_NOT_FOUND' : -15, - 'E_PART_NOT_FOUND' : -16, - 'E_KEY_NOT_FOUND' : -17, - 'E_USER_NOT_FOUND' : -18, - 'E_STATS_NOT_FOUND' : -19, - 'E_SERVICE_NOT_FOUND' : -20, - 'E_BACKUP_FAILED' : -24, - 'E_BACKUP_EMPTY_TABLE' : -25, - 'E_BACKUP_TABLE_FAILED' : -26, - 'E_PARTIAL_RESULT' : -27, - 'E_REBUILD_INDEX_FAILED' : -28, - 'E_INVALID_PASSWORD' : -29, - 'E_FAILED_GET_ABS_PATH' : -30, - 'E_BAD_USERNAME_PASSWORD' : -1001, - 'E_SESSION_INVALID' : -1002, - 'E_SESSION_TIMEOUT' : -1003, - 'E_SYNTAX_ERROR' : -1004, - 'E_EXECUTION_ERROR' : -1005, - 'E_STATEMENT_EMPTY' : -1006, - 'E_BAD_PERMISSION' : -1008, - 'E_SEMANTIC_ERROR' : -1009, - 'E_TOO_MANY_CONNECTIONS' : -1010, - 'E_PARTIAL_SUCCEEDED' : -1011, - 'E_NO_HOSTS' : -2001, - 'E_EXISTED' : -2002, - 'E_INVALID_HOST' : -2003, - 'E_UNSUPPORTED' : -2004, - 'E_NOT_DROP' : -2005, - 'E_BALANCER_RUNNING' : -2006, - 'E_CONFIG_IMMUTABLE' : -2007, - 'E_CONFLICT' : -2008, - 'E_INVALID_PARM' : -2009, - 'E_WRONGCLUSTER' : -2010, - 'E_ZONE_NOT_ENOUGH' : -2011, - 'E_ZONE_IS_EMPTY' : -2012, - 'E_STORE_FAILURE' : -2021, - 'E_STORE_SEGMENT_ILLEGAL' : -2022, - 'E_BAD_BALANCE_PLAN' : -2023, - 'E_BALANCED' : -2024, - 'E_NO_RUNNING_BALANCE_PLAN' : -2025, - 'E_NO_VALID_HOST' : -2026, - 'E_CORRUPTED_BALANCE_PLAN' : -2027, - 'E_NO_INVALID_BALANCE_PLAN' : -2028, - 'E_IMPROPER_ROLE' : -2030, - 'E_INVALID_PARTITION_NUM' : -2031, - 'E_INVALID_REPLICA_FACTOR' : -2032, - 'E_INVALID_CHARSET' : -2033, - 'E_INVALID_COLLATE' : -2034, - 'E_CHARSET_COLLATE_NOT_MATCH' : -2035, - 'E_SNAPSHOT_FAILURE' : -2040, - 'E_BLOCK_WRITE_FAILURE' : -2041, - 'E_REBUILD_INDEX_FAILURE' : -2042, - 'E_INDEX_WITH_TTL' : -2043, - 'E_ADD_JOB_FAILURE' : -2044, - 'E_STOP_JOB_FAILURE' : -2045, - 'E_SAVE_JOB_FAILURE' : -2046, - 'E_BALANCER_FAILURE' : -2047, - 'E_JOB_NOT_FINISHED' : -2048, - 'E_TASK_REPORT_OUT_DATE' : -2049, - 'E_JOB_NOT_IN_SPACE' : -2050, - 'E_JOB_NEED_RECOVER' : -2051, - 'E_INVALID_JOB' : -2065, - 'E_BACKUP_BUILDING_INDEX' : -2066, - 'E_BACKUP_SPACE_NOT_FOUND' : -2067, - 'E_RESTORE_FAILURE' : -2068, - 'E_SESSION_NOT_FOUND' : -2069, - 'E_LIST_CLUSTER_FAILURE' : -2070, - 'E_LIST_CLUSTER_GET_ABS_PATH_FAILURE' : -2071, - 'E_LIST_CLUSTER_NO_AGENT_FAILURE' : -2072, - 'E_QUERY_NOT_FOUND' : -2073, - 'E_AGENT_HB_FAILUE' : -2074, - 'E_CONSENSUS_ERROR' : -3001, - 'E_KEY_HAS_EXISTS' : -3002, - 'E_DATA_TYPE_MISMATCH' : -3003, - 'E_INVALID_FIELD_VALUE' : -3004, - 'E_INVALID_OPERATION' : -3005, - 'E_NOT_NULLABLE' : -3006, - 'E_FIELD_UNSET' : -3007, - 'E_OUT_OF_RANGE' : -3008, - 'E_DATA_CONFLICT_ERROR' : -3010, - 'E_WRITE_STALLED' : -3011, - 'E_IMPROPER_DATA_TYPE' : -3021, - 'E_INVALID_SPACEVIDLEN' : -3022, - 'E_INVALID_FILTER' : -3031, - 'E_INVALID_UPDATER' : -3032, - 'E_INVALID_STORE' : -3033, - 'E_INVALID_PEER' : -3034, - 'E_RETRY_EXHAUSTED' : -3035, - 'E_TRANSFER_LEADER_FAILED' : -3036, - 'E_INVALID_STAT_TYPE' : -3037, - 'E_INVALID_VID' : -3038, - 'E_NO_TRANSFORMED' : -3039, - 'E_LOAD_META_FAILED' : -3040, - 'E_FAILED_TO_CHECKPOINT' : -3041, - 'E_CHECKPOINT_BLOCKED' : -3042, - 'E_FILTER_OUT' : -3043, - 'E_INVALID_DATA' : -3044, - 'E_MUTATE_EDGE_CONFLICT' : -3045, - 'E_MUTATE_TAG_CONFLICT' : -3046, - 'E_OUTDATED_LOCK' : -3047, - 'E_INVALID_TASK_PARA' : -3051, - 'E_USER_CANCEL' : -3052, - 'E_TASK_EXECUTION_FAILED' : -3053, - 'E_PLAN_IS_KILLED' : -3060, - 'E_NO_TERM' : -3070, - 'E_OUTDATED_TERM' : -3071, - 'E_OUTDATED_EDGE' : -3072, - 'E_WRITE_WRITE_CONFLICT' : -3073, - 'E_CLIENT_SERVER_INCOMPATIBLE' : -3061, - 'E_ID_FAILED' : -3062, - 'E_RAFT_UNKNOWN_PART' : -3500, - 'E_RAFT_LOG_GAP' : -3501, - 'E_RAFT_LOG_STALE' : -3502, - 'E_RAFT_TERM_OUT_OF_DATE' : -3503, - 'E_RAFT_UNKNOWN_APPEND_LOG' : -3504, - 'E_RAFT_WAITING_SNAPSHOT' : -3511, - 'E_RAFT_SENDING_SNAPSHOT' : -3512, - 'E_RAFT_INVALID_PEER' : -3513, - 'E_RAFT_NOT_READY' : -3514, - 'E_RAFT_STOPPED' : -3515, - 'E_RAFT_BAD_ROLE' : -3516, - 'E_RAFT_WAL_FAIL' : -3521, - 'E_RAFT_HOST_STOPPED' : -3522, - 'E_RAFT_TOO_MANY_REQUESTS' : -3523, - 'E_RAFT_PERSIST_SNAPSHOT_FAILED' : -3524, - 'E_RAFT_RPC_EXCEPTION' : -3525, - 'E_RAFT_NO_WAL_FOUND' : -3526, - 'E_RAFT_HOST_PAUSED' : -3527, - 'E_RAFT_WRITE_BLOCKED' : -3528, - 'E_RAFT_BUFFER_OVERFLOW' : -3529, - 'E_RAFT_ATOMIC_OP_FAILED' : -3530, - 'E_LEADER_LEASE_FAILED' : -3531, - 'E_UNKNOWN' : -8000 -}; -var SchemaID = module.exports.SchemaID = function(args) { - this.tag_id = null; - this.edge_type = null; - if (args) { - if (args.tag_id !== undefined && args.tag_id !== null) { - this.tag_id = args.tag_id; - } - if (args.edge_type !== undefined && args.edge_type !== null) { - this.edge_type = args.edge_type; - } - } -}; -SchemaID.prototype = {}; -SchemaID.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I32) { - this.tag_id = input.readI32(); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.I32) { - this.edge_type = input.readI32(); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -SchemaID.prototype.write = function(output) { - output.writeStructBegin('SchemaID'); - if (this.tag_id !== null && this.tag_id !== undefined) { - output.writeFieldBegin('tag_id', Thrift.Type.I32, 1); - output.writeI32(this.tag_id); - output.writeFieldEnd(); - } - if (this.edge_type !== null && this.edge_type !== undefined) { - output.writeFieldBegin('edge_type', Thrift.Type.I32, 2); - output.writeI32(this.edge_type); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var Date = module.exports.Date = function(args) { - this.year = null; - this.month = null; - this.day = null; - if (args) { - if (args.year !== undefined && args.year !== null) { - this.year = args.year; - } - if (args.month !== undefined && args.month !== null) { - this.month = args.month; - } - if (args.day !== undefined && args.day !== null) { - this.day = args.day; - } - } -}; -Date.prototype = {}; -Date.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I16) { - this.year = input.readI16(); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.BYTE) { - this.month = input.readByte(); - } else { - input.skip(ftype); - } - break; - case 3: - if (ftype == Thrift.Type.BYTE) { - this.day = input.readByte(); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -Date.prototype.write = function(output) { - output.writeStructBegin('Date'); - if (this.year !== null && this.year !== undefined) { - output.writeFieldBegin('year', Thrift.Type.I16, 1); - output.writeI16(this.year); - output.writeFieldEnd(); - } - if (this.month !== null && this.month !== undefined) { - output.writeFieldBegin('month', Thrift.Type.BYTE, 2); - output.writeByte(this.month); - output.writeFieldEnd(); - } - if (this.day !== null && this.day !== undefined) { - output.writeFieldBegin('day', Thrift.Type.BYTE, 3); - output.writeByte(this.day); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var Time = module.exports.Time = function(args) { - this.hour = null; - this.minute = null; - this.sec = null; - this.microsec = null; - if (args) { - if (args.hour !== undefined && args.hour !== null) { - this.hour = args.hour; - } - if (args.minute !== undefined && args.minute !== null) { - this.minute = args.minute; - } - if (args.sec !== undefined && args.sec !== null) { - this.sec = args.sec; - } - if (args.microsec !== undefined && args.microsec !== null) { - this.microsec = args.microsec; - } - } -}; -Time.prototype = {}; -Time.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.BYTE) { - this.hour = input.readByte(); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.BYTE) { - this.minute = input.readByte(); - } else { - input.skip(ftype); - } - break; - case 3: - if (ftype == Thrift.Type.BYTE) { - this.sec = input.readByte(); - } else { - input.skip(ftype); - } - break; - case 4: - if (ftype == Thrift.Type.I32) { - this.microsec = input.readI32(); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -Time.prototype.write = function(output) { - output.writeStructBegin('Time'); - if (this.hour !== null && this.hour !== undefined) { - output.writeFieldBegin('hour', Thrift.Type.BYTE, 1); - output.writeByte(this.hour); - output.writeFieldEnd(); - } - if (this.minute !== null && this.minute !== undefined) { - output.writeFieldBegin('minute', Thrift.Type.BYTE, 2); - output.writeByte(this.minute); - output.writeFieldEnd(); - } - if (this.sec !== null && this.sec !== undefined) { - output.writeFieldBegin('sec', Thrift.Type.BYTE, 3); - output.writeByte(this.sec); - output.writeFieldEnd(); - } - if (this.microsec !== null && this.microsec !== undefined) { - output.writeFieldBegin('microsec', Thrift.Type.I32, 4); - output.writeI32(this.microsec); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var DateTime = module.exports.DateTime = function(args) { - this.year = null; - this.month = null; - this.day = null; - this.hour = null; - this.minute = null; - this.sec = null; - this.microsec = null; - if (args) { - if (args.year !== undefined && args.year !== null) { - this.year = args.year; - } - if (args.month !== undefined && args.month !== null) { - this.month = args.month; - } - if (args.day !== undefined && args.day !== null) { - this.day = args.day; - } - if (args.hour !== undefined && args.hour !== null) { - this.hour = args.hour; - } - if (args.minute !== undefined && args.minute !== null) { - this.minute = args.minute; - } - if (args.sec !== undefined && args.sec !== null) { - this.sec = args.sec; - } - if (args.microsec !== undefined && args.microsec !== null) { - this.microsec = args.microsec; - } - } -}; -DateTime.prototype = {}; -DateTime.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I16) { - this.year = input.readI16(); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.BYTE) { - this.month = input.readByte(); - } else { - input.skip(ftype); - } - break; - case 3: - if (ftype == Thrift.Type.BYTE) { - this.day = input.readByte(); - } else { - input.skip(ftype); - } - break; - case 4: - if (ftype == Thrift.Type.BYTE) { - this.hour = input.readByte(); - } else { - input.skip(ftype); - } - break; - case 5: - if (ftype == Thrift.Type.BYTE) { - this.minute = input.readByte(); - } else { - input.skip(ftype); - } - break; - case 6: - if (ftype == Thrift.Type.BYTE) { - this.sec = input.readByte(); - } else { - input.skip(ftype); - } - break; - case 7: - if (ftype == Thrift.Type.I32) { - this.microsec = input.readI32(); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -DateTime.prototype.write = function(output) { - output.writeStructBegin('DateTime'); - if (this.year !== null && this.year !== undefined) { - output.writeFieldBegin('year', Thrift.Type.I16, 1); - output.writeI16(this.year); - output.writeFieldEnd(); - } - if (this.month !== null && this.month !== undefined) { - output.writeFieldBegin('month', Thrift.Type.BYTE, 2); - output.writeByte(this.month); - output.writeFieldEnd(); - } - if (this.day !== null && this.day !== undefined) { - output.writeFieldBegin('day', Thrift.Type.BYTE, 3); - output.writeByte(this.day); - output.writeFieldEnd(); - } - if (this.hour !== null && this.hour !== undefined) { - output.writeFieldBegin('hour', Thrift.Type.BYTE, 4); - output.writeByte(this.hour); - output.writeFieldEnd(); - } - if (this.minute !== null && this.minute !== undefined) { - output.writeFieldBegin('minute', Thrift.Type.BYTE, 5); - output.writeByte(this.minute); - output.writeFieldEnd(); - } - if (this.sec !== null && this.sec !== undefined) { - output.writeFieldBegin('sec', Thrift.Type.BYTE, 6); - output.writeByte(this.sec); - output.writeFieldEnd(); - } - if (this.microsec !== null && this.microsec !== undefined) { - output.writeFieldBegin('microsec', Thrift.Type.I32, 7); - output.writeI32(this.microsec); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var Value = module.exports.Value = function(args) { - this.nVal = null; - this.bVal = null; - this.iVal = null; - this.fVal = null; - this.sVal = null; - this.dVal = null; - this.tVal = null; - this.dtVal = null; - this.vVal = null; - this.eVal = null; - this.pVal = null; - this.lVal = null; - this.mVal = null; - this.uVal = null; - this.gVal = null; - this.ggVal = null; - this.duVal = null; - if (args) { - if (args.nVal !== undefined && args.nVal !== null) { - this.nVal = args.nVal; - } - if (args.bVal !== undefined && args.bVal !== null) { - this.bVal = args.bVal; - } - if (args.iVal !== undefined && args.iVal !== null) { - this.iVal = args.iVal; - } - if (args.fVal !== undefined && args.fVal !== null) { - this.fVal = args.fVal; - } - if (args.sVal !== undefined && args.sVal !== null) { - this.sVal = args.sVal; - } - if (args.dVal !== undefined && args.dVal !== null) { - this.dVal = new ttypes.Date(args.dVal); - } - if (args.tVal !== undefined && args.tVal !== null) { - this.tVal = new ttypes.Time(args.tVal); - } - if (args.dtVal !== undefined && args.dtVal !== null) { - this.dtVal = new ttypes.DateTime(args.dtVal); - } - if (args.vVal !== undefined && args.vVal !== null) { - this.vVal = new ttypes.Vertex(args.vVal); - } - if (args.eVal !== undefined && args.eVal !== null) { - this.eVal = new ttypes.Edge(args.eVal); - } - if (args.pVal !== undefined && args.pVal !== null) { - this.pVal = new ttypes.Path(args.pVal); - } - if (args.lVal !== undefined && args.lVal !== null) { - this.lVal = new ttypes.NList(args.lVal); - } - if (args.mVal !== undefined && args.mVal !== null) { - this.mVal = new ttypes.NMap(args.mVal); - } - if (args.uVal !== undefined && args.uVal !== null) { - this.uVal = new ttypes.NSet(args.uVal); - } - if (args.gVal !== undefined && args.gVal !== null) { - this.gVal = new ttypes.DataSet(args.gVal); - } - if (args.ggVal !== undefined && args.ggVal !== null) { - this.ggVal = new ttypes.Geography(args.ggVal); - } - if (args.duVal !== undefined && args.duVal !== null) { - this.duVal = new ttypes.Duration(args.duVal); - } - } -}; -Value.prototype = {}; -Value.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I32) { - this.nVal = input.readI32(); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.BOOL) { - this.bVal = input.readBool(); - } else { - input.skip(ftype); - } - break; - case 3: - if (ftype == Thrift.Type.I64) { - this.iVal = input.readI64(); - } else { - input.skip(ftype); - } - break; - case 4: - if (ftype == Thrift.Type.DOUBLE) { - this.fVal = input.readDouble(); - } else { - input.skip(ftype); - } - break; - case 5: - if (ftype == Thrift.Type.STRING) { - this.sVal = input.readString(); - } else { - input.skip(ftype); - } - break; - case 6: - if (ftype == Thrift.Type.STRUCT) { - this.dVal = new ttypes.Date(); - this.dVal.read(input); - } else { - input.skip(ftype); - } - break; - case 7: - if (ftype == Thrift.Type.STRUCT) { - this.tVal = new ttypes.Time(); - this.tVal.read(input); - } else { - input.skip(ftype); - } - break; - case 8: - if (ftype == Thrift.Type.STRUCT) { - this.dtVal = new ttypes.DateTime(); - this.dtVal.read(input); - } else { - input.skip(ftype); - } - break; - case 9: - if (ftype == Thrift.Type.STRUCT) { - this.vVal = new ttypes.Vertex(); - this.vVal.read(input); - } else { - input.skip(ftype); - } - break; - case 10: - if (ftype == Thrift.Type.STRUCT) { - this.eVal = new ttypes.Edge(); - this.eVal.read(input); - } else { - input.skip(ftype); - } - break; - case 11: - if (ftype == Thrift.Type.STRUCT) { - this.pVal = new ttypes.Path(); - this.pVal.read(input); - } else { - input.skip(ftype); - } - break; - case 12: - if (ftype == Thrift.Type.STRUCT) { - this.lVal = new ttypes.NList(); - this.lVal.read(input); - } else { - input.skip(ftype); - } - break; - case 13: - if (ftype == Thrift.Type.STRUCT) { - this.mVal = new ttypes.NMap(); - this.mVal.read(input); - } else { - input.skip(ftype); - } - break; - case 14: - if (ftype == Thrift.Type.STRUCT) { - this.uVal = new ttypes.NSet(); - this.uVal.read(input); - } else { - input.skip(ftype); - } - break; - case 15: - if (ftype == Thrift.Type.STRUCT) { - this.gVal = new ttypes.DataSet(); - this.gVal.read(input); - } else { - input.skip(ftype); - } - break; - case 16: - if (ftype == Thrift.Type.STRUCT) { - this.ggVal = new ttypes.Geography(); - this.ggVal.read(input); - } else { - input.skip(ftype); - } - break; - case 17: - if (ftype == Thrift.Type.STRUCT) { - this.duVal = new ttypes.Duration(); - this.duVal.read(input); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -Value.prototype.write = function(output) { - output.writeStructBegin('Value'); - if (this.nVal !== null && this.nVal !== undefined) { - output.writeFieldBegin('nVal', Thrift.Type.I32, 1); - output.writeI32(this.nVal); - output.writeFieldEnd(); - } - if (this.bVal !== null && this.bVal !== undefined) { - output.writeFieldBegin('bVal', Thrift.Type.BOOL, 2); - output.writeBool(this.bVal); - output.writeFieldEnd(); - } - if (this.iVal !== null && this.iVal !== undefined) { - output.writeFieldBegin('iVal', Thrift.Type.I64, 3); - output.writeI64(this.iVal); - output.writeFieldEnd(); - } - if (this.fVal !== null && this.fVal !== undefined) { - output.writeFieldBegin('fVal', Thrift.Type.DOUBLE, 4); - output.writeDouble(this.fVal); - output.writeFieldEnd(); - } - if (this.sVal !== null && this.sVal !== undefined) { - output.writeFieldBegin('sVal', Thrift.Type.STRING, 5); - output.writeString(this.sVal); - output.writeFieldEnd(); - } - if (this.dVal !== null && this.dVal !== undefined) { - output.writeFieldBegin('dVal', Thrift.Type.STRUCT, 6); - this.dVal.write(output); - output.writeFieldEnd(); - } - if (this.tVal !== null && this.tVal !== undefined) { - output.writeFieldBegin('tVal', Thrift.Type.STRUCT, 7); - this.tVal.write(output); - output.writeFieldEnd(); - } - if (this.dtVal !== null && this.dtVal !== undefined) { - output.writeFieldBegin('dtVal', Thrift.Type.STRUCT, 8); - this.dtVal.write(output); - output.writeFieldEnd(); - } - if (this.vVal !== null && this.vVal !== undefined) { - output.writeFieldBegin('vVal', Thrift.Type.STRUCT, 9); - this.vVal.write(output); - output.writeFieldEnd(); - } - if (this.eVal !== null && this.eVal !== undefined) { - output.writeFieldBegin('eVal', Thrift.Type.STRUCT, 10); - this.eVal.write(output); - output.writeFieldEnd(); - } - if (this.pVal !== null && this.pVal !== undefined) { - output.writeFieldBegin('pVal', Thrift.Type.STRUCT, 11); - this.pVal.write(output); - output.writeFieldEnd(); - } - if (this.lVal !== null && this.lVal !== undefined) { - output.writeFieldBegin('lVal', Thrift.Type.STRUCT, 12); - this.lVal.write(output); - output.writeFieldEnd(); - } - if (this.mVal !== null && this.mVal !== undefined) { - output.writeFieldBegin('mVal', Thrift.Type.STRUCT, 13); - this.mVal.write(output); - output.writeFieldEnd(); - } - if (this.uVal !== null && this.uVal !== undefined) { - output.writeFieldBegin('uVal', Thrift.Type.STRUCT, 14); - this.uVal.write(output); - output.writeFieldEnd(); - } - if (this.gVal !== null && this.gVal !== undefined) { - output.writeFieldBegin('gVal', Thrift.Type.STRUCT, 15); - this.gVal.write(output); - output.writeFieldEnd(); - } - if (this.ggVal !== null && this.ggVal !== undefined) { - output.writeFieldBegin('ggVal', Thrift.Type.STRUCT, 16); - this.ggVal.write(output); - output.writeFieldEnd(); - } - if (this.duVal !== null && this.duVal !== undefined) { - output.writeFieldBegin('duVal', Thrift.Type.STRUCT, 17); - this.duVal.write(output); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var NList = module.exports.NList = function(args) { - this.values = null; - if (args) { - if (args.values !== undefined && args.values !== null) { - this.values = Thrift.copyList(args.values, [ttypes.Value]); - } - } -}; -NList.prototype = {}; -NList.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.LIST) { - this.values = []; - var _rtmp31 = input.readListBegin(); - var _size0 = _rtmp31.size || 0; - for (var _i2 = 0; _i2 < _size0; ++_i2) { - var elem3 = null; - elem3 = new ttypes.Value(); - elem3.read(input); - this.values.push(elem3); - } - input.readListEnd(); - } else { - input.skip(ftype); - } - break; - case 0: - input.skip(ftype); - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -NList.prototype.write = function(output) { - output.writeStructBegin('NList'); - if (this.values !== null && this.values !== undefined) { - output.writeFieldBegin('values', Thrift.Type.LIST, 1); - output.writeListBegin(Thrift.Type.STRUCT, this.values.length); - for (var iter4 in this.values) { - if (this.values.hasOwnProperty(iter4)) { - iter4 = this.values[iter4]; - iter4.write(output); - } - } - output.writeListEnd(); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var NMap = module.exports.NMap = function(args) { - this.kvs = null; - if (args) { - if (args.kvs !== undefined && args.kvs !== null) { - this.kvs = Thrift.copyMap(args.kvs, [ttypes.Value]); - } - } -}; -NMap.prototype = {}; -NMap.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.MAP) { - this.kvs = {}; - var _rtmp36 = input.readMapBegin(); - var _size5 = _rtmp36.size || 0; - for (var _i7 = 0; _i7 < _size5; ++_i7) { - var key8 = null; - var val9 = null; - key8 = input.readString(); - val9 = new ttypes.Value(); - val9.read(input); - this.kvs[key8] = val9; - } - input.readMapEnd(); - } else { - input.skip(ftype); - } - break; - case 0: - input.skip(ftype); - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -NMap.prototype.write = function(output) { - output.writeStructBegin('NMap'); - if (this.kvs !== null && this.kvs !== undefined) { - output.writeFieldBegin('kvs', Thrift.Type.MAP, 1); - output.writeMapBegin(Thrift.Type.STRING, Thrift.Type.STRUCT, Thrift.objectLength(this.kvs)); - for (var kiter10 in this.kvs) { - if (this.kvs.hasOwnProperty(kiter10)) { - var viter11 = this.kvs[kiter10]; - output.writeString(kiter10); - viter11.write(output); - } - } - output.writeMapEnd(); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var NSet = module.exports.NSet = function(args) { - this.values = null; - if (args) { - if (args.values !== undefined && args.values !== null) { - this.values = Thrift.copyList(args.values, [ttypes.Value]); - } - } -}; -NSet.prototype = {}; -NSet.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.SET) { - this.values = []; - var _rtmp313 = input.readSetBegin(); - var _size12 = _rtmp313.size || 0; - for (var _i14 = 0; _i14 < _size12; ++_i14) { - var elem15 = null; - elem15 = new ttypes.Value(); - elem15.read(input); - this.values.push(elem15); - } - input.readSetEnd(); - } else { - input.skip(ftype); - } - break; - case 0: - input.skip(ftype); - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -NSet.prototype.write = function(output) { - output.writeStructBegin('NSet'); - if (this.values !== null && this.values !== undefined) { - output.writeFieldBegin('values', Thrift.Type.SET, 1); - output.writeSetBegin(Thrift.Type.STRUCT, this.values.length); - for (var iter16 in this.values) { - if (this.values.hasOwnProperty(iter16)) { - iter16 = this.values[iter16]; - iter16.write(output); - } - } - output.writeSetEnd(); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var Row = module.exports.Row = function(args) { - this.values = null; - if (args) { - if (args.values !== undefined && args.values !== null) { - this.values = Thrift.copyList(args.values, [ttypes.Value]); - } - } -}; -Row.prototype = {}; -Row.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.LIST) { - this.values = []; - var _rtmp318 = input.readListBegin(); - var _size17 = _rtmp318.size || 0; - for (var _i19 = 0; _i19 < _size17; ++_i19) { - var elem20 = null; - elem20 = new ttypes.Value(); - elem20.read(input); - this.values.push(elem20); - } - input.readListEnd(); - } else { - input.skip(ftype); - } - break; - case 0: - input.skip(ftype); - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -Row.prototype.write = function(output) { - output.writeStructBegin('Row'); - if (this.values !== null && this.values !== undefined) { - output.writeFieldBegin('values', Thrift.Type.LIST, 1); - output.writeListBegin(Thrift.Type.STRUCT, this.values.length); - for (var iter21 in this.values) { - if (this.values.hasOwnProperty(iter21)) { - iter21 = this.values[iter21]; - iter21.write(output); - } - } - output.writeListEnd(); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var DataSet = module.exports.DataSet = function(args) { - this.column_names = null; - this.rows = null; - if (args) { - if (args.column_names !== undefined && args.column_names !== null) { - this.column_names = Thrift.copyList(args.column_names, [null]); - } - if (args.rows !== undefined && args.rows !== null) { - this.rows = Thrift.copyList(args.rows, [ttypes.Row]); - } - } -}; -DataSet.prototype = {}; -DataSet.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.LIST) { - this.column_names = []; - var _rtmp323 = input.readListBegin(); - var _size22 = _rtmp323.size || 0; - for (var _i24 = 0; _i24 < _size22; ++_i24) { - var elem25 = null; - elem25 = input.readString(); - this.column_names.push(elem25); - } - input.readListEnd(); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.LIST) { - this.rows = []; - var _rtmp327 = input.readListBegin(); - var _size26 = _rtmp327.size || 0; - for (var _i28 = 0; _i28 < _size26; ++_i28) { - var elem29 = null; - elem29 = new ttypes.Row(); - elem29.read(input); - this.rows.push(elem29); - } - input.readListEnd(); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -DataSet.prototype.write = function(output) { - output.writeStructBegin('DataSet'); - if (this.column_names !== null && this.column_names !== undefined) { - output.writeFieldBegin('column_names', Thrift.Type.LIST, 1); - output.writeListBegin(Thrift.Type.STRING, this.column_names.length); - for (var iter30 in this.column_names) { - if (this.column_names.hasOwnProperty(iter30)) { - iter30 = this.column_names[iter30]; - output.writeString(iter30); - } - } - output.writeListEnd(); - output.writeFieldEnd(); - } - if (this.rows !== null && this.rows !== undefined) { - output.writeFieldBegin('rows', Thrift.Type.LIST, 2); - output.writeListBegin(Thrift.Type.STRUCT, this.rows.length); - for (var iter31 in this.rows) { - if (this.rows.hasOwnProperty(iter31)) { - iter31 = this.rows[iter31]; - iter31.write(output); - } - } - output.writeListEnd(); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var Coordinate = module.exports.Coordinate = function(args) { - this.x = null; - this.y = null; - if (args) { - if (args.x !== undefined && args.x !== null) { - this.x = args.x; - } - if (args.y !== undefined && args.y !== null) { - this.y = args.y; - } - } -}; -Coordinate.prototype = {}; -Coordinate.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.DOUBLE) { - this.x = input.readDouble(); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.DOUBLE) { - this.y = input.readDouble(); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -Coordinate.prototype.write = function(output) { - output.writeStructBegin('Coordinate'); - if (this.x !== null && this.x !== undefined) { - output.writeFieldBegin('x', Thrift.Type.DOUBLE, 1); - output.writeDouble(this.x); - output.writeFieldEnd(); - } - if (this.y !== null && this.y !== undefined) { - output.writeFieldBegin('y', Thrift.Type.DOUBLE, 2); - output.writeDouble(this.y); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var Point = module.exports.Point = function(args) { - this.coord = null; - if (args) { - if (args.coord !== undefined && args.coord !== null) { - this.coord = new ttypes.Coordinate(args.coord); - } - } -}; -Point.prototype = {}; -Point.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.STRUCT) { - this.coord = new ttypes.Coordinate(); - this.coord.read(input); - } else { - input.skip(ftype); - } - break; - case 0: - input.skip(ftype); - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -Point.prototype.write = function(output) { - output.writeStructBegin('Point'); - if (this.coord !== null && this.coord !== undefined) { - output.writeFieldBegin('coord', Thrift.Type.STRUCT, 1); - this.coord.write(output); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var LineString = module.exports.LineString = function(args) { - this.coordList = null; - if (args) { - if (args.coordList !== undefined && args.coordList !== null) { - this.coordList = Thrift.copyList(args.coordList, [ttypes.Coordinate]); - } - } -}; -LineString.prototype = {}; -LineString.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.LIST) { - this.coordList = []; - var _rtmp333 = input.readListBegin(); - var _size32 = _rtmp333.size || 0; - for (var _i34 = 0; _i34 < _size32; ++_i34) { - var elem35 = null; - elem35 = new ttypes.Coordinate(); - elem35.read(input); - this.coordList.push(elem35); - } - input.readListEnd(); - } else { - input.skip(ftype); - } - break; - case 0: - input.skip(ftype); - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -LineString.prototype.write = function(output) { - output.writeStructBegin('LineString'); - if (this.coordList !== null && this.coordList !== undefined) { - output.writeFieldBegin('coordList', Thrift.Type.LIST, 1); - output.writeListBegin(Thrift.Type.STRUCT, this.coordList.length); - for (var iter36 in this.coordList) { - if (this.coordList.hasOwnProperty(iter36)) { - iter36 = this.coordList[iter36]; - iter36.write(output); - } - } - output.writeListEnd(); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var Polygon = module.exports.Polygon = function(args) { - this.coordListList = null; - if (args) { - if (args.coordListList !== undefined && args.coordListList !== null) { - this.coordListList = Thrift.copyList(args.coordListList, [Thrift.copyList, ttypes.Coordinate]); - } - } -}; -Polygon.prototype = {}; -Polygon.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.LIST) { - this.coordListList = []; - var _rtmp338 = input.readListBegin(); - var _size37 = _rtmp338.size || 0; - for (var _i39 = 0; _i39 < _size37; ++_i39) { - var elem40 = null; - elem40 = []; - var _rtmp342 = input.readListBegin(); - var _size41 = _rtmp342.size || 0; - for (var _i43 = 0; _i43 < _size41; ++_i43) { - var elem44 = null; - elem44 = new ttypes.Coordinate(); - elem44.read(input); - elem40.push(elem44); - } - input.readListEnd(); - this.coordListList.push(elem40); - } - input.readListEnd(); - } else { - input.skip(ftype); - } - break; - case 0: - input.skip(ftype); - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -Polygon.prototype.write = function(output) { - output.writeStructBegin('Polygon'); - if (this.coordListList !== null && this.coordListList !== undefined) { - output.writeFieldBegin('coordListList', Thrift.Type.LIST, 1); - output.writeListBegin(Thrift.Type.LIST, this.coordListList.length); - for (var iter45 in this.coordListList) { - if (this.coordListList.hasOwnProperty(iter45)) { - iter45 = this.coordListList[iter45]; - output.writeListBegin(Thrift.Type.STRUCT, iter45.length); - for (var iter46 in iter45) { - if (iter45.hasOwnProperty(iter46)) { - iter46 = iter45[iter46]; - iter46.write(output); - } - } - output.writeListEnd(); - } - } - output.writeListEnd(); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var Geography = module.exports.Geography = function(args) { - this.ptVal = null; - this.lsVal = null; - this.pgVal = null; - if (args) { - if (args.ptVal !== undefined && args.ptVal !== null) { - this.ptVal = new ttypes.Point(args.ptVal); - } - if (args.lsVal !== undefined && args.lsVal !== null) { - this.lsVal = new ttypes.LineString(args.lsVal); - } - if (args.pgVal !== undefined && args.pgVal !== null) { - this.pgVal = new ttypes.Polygon(args.pgVal); - } - } -}; -Geography.prototype = {}; -Geography.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.STRUCT) { - this.ptVal = new ttypes.Point(); - this.ptVal.read(input); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.STRUCT) { - this.lsVal = new ttypes.LineString(); - this.lsVal.read(input); - } else { - input.skip(ftype); - } - break; - case 3: - if (ftype == Thrift.Type.STRUCT) { - this.pgVal = new ttypes.Polygon(); - this.pgVal.read(input); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -Geography.prototype.write = function(output) { - output.writeStructBegin('Geography'); - if (this.ptVal !== null && this.ptVal !== undefined) { - output.writeFieldBegin('ptVal', Thrift.Type.STRUCT, 1); - this.ptVal.write(output); - output.writeFieldEnd(); - } - if (this.lsVal !== null && this.lsVal !== undefined) { - output.writeFieldBegin('lsVal', Thrift.Type.STRUCT, 2); - this.lsVal.write(output); - output.writeFieldEnd(); - } - if (this.pgVal !== null && this.pgVal !== undefined) { - output.writeFieldBegin('pgVal', Thrift.Type.STRUCT, 3); - this.pgVal.write(output); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var Tag = module.exports.Tag = function(args) { - this.name = null; - this.props = null; - if (args) { - if (args.name !== undefined && args.name !== null) { - this.name = args.name; - } - if (args.props !== undefined && args.props !== null) { - this.props = Thrift.copyMap(args.props, [ttypes.Value]); - } - } -}; -Tag.prototype = {}; -Tag.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.STRING) { - this.name = input.readString(); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.MAP) { - this.props = {}; - var _rtmp348 = input.readMapBegin(); - var _size47 = _rtmp348.size || 0; - for (var _i49 = 0; _i49 < _size47; ++_i49) { - var key50 = null; - var val51 = null; - key50 = input.readString(); - val51 = new ttypes.Value(); - val51.read(input); - this.props[key50] = val51; - } - input.readMapEnd(); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -Tag.prototype.write = function(output) { - output.writeStructBegin('Tag'); - if (this.name !== null && this.name !== undefined) { - output.writeFieldBegin('name', Thrift.Type.STRING, 1); - output.writeString(this.name); - output.writeFieldEnd(); - } - if (this.props !== null && this.props !== undefined) { - output.writeFieldBegin('props', Thrift.Type.MAP, 2); - output.writeMapBegin(Thrift.Type.STRING, Thrift.Type.STRUCT, Thrift.objectLength(this.props)); - for (var kiter52 in this.props) { - if (this.props.hasOwnProperty(kiter52)) { - var viter53 = this.props[kiter52]; - output.writeString(kiter52); - viter53.write(output); - } - } - output.writeMapEnd(); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var Vertex = module.exports.Vertex = function(args) { - this.vid = null; - this.tags = null; - if (args) { - if (args.vid !== undefined && args.vid !== null) { - this.vid = new ttypes.Value(args.vid); - } - if (args.tags !== undefined && args.tags !== null) { - this.tags = Thrift.copyList(args.tags, [ttypes.Tag]); - } - } -}; -Vertex.prototype = {}; -Vertex.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.STRUCT) { - this.vid = new ttypes.Value(); - this.vid.read(input); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.LIST) { - this.tags = []; - var _rtmp355 = input.readListBegin(); - var _size54 = _rtmp355.size || 0; - for (var _i56 = 0; _i56 < _size54; ++_i56) { - var elem57 = null; - elem57 = new ttypes.Tag(); - elem57.read(input); - this.tags.push(elem57); - } - input.readListEnd(); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -Vertex.prototype.write = function(output) { - output.writeStructBegin('Vertex'); - if (this.vid !== null && this.vid !== undefined) { - output.writeFieldBegin('vid', Thrift.Type.STRUCT, 1); - this.vid.write(output); - output.writeFieldEnd(); - } - if (this.tags !== null && this.tags !== undefined) { - output.writeFieldBegin('tags', Thrift.Type.LIST, 2); - output.writeListBegin(Thrift.Type.STRUCT, this.tags.length); - for (var iter58 in this.tags) { - if (this.tags.hasOwnProperty(iter58)) { - iter58 = this.tags[iter58]; - iter58.write(output); - } - } - output.writeListEnd(); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var Edge = module.exports.Edge = function(args) { - this.src = null; - this.dst = null; - this.type = null; - this.name = null; - this.ranking = null; - this.props = null; - if (args) { - if (args.src !== undefined && args.src !== null) { - this.src = new ttypes.Value(args.src); - } - if (args.dst !== undefined && args.dst !== null) { - this.dst = new ttypes.Value(args.dst); - } - if (args.type !== undefined && args.type !== null) { - this.type = args.type; - } - if (args.name !== undefined && args.name !== null) { - this.name = args.name; - } - if (args.ranking !== undefined && args.ranking !== null) { - this.ranking = args.ranking; - } - if (args.props !== undefined && args.props !== null) { - this.props = Thrift.copyMap(args.props, [ttypes.Value]); - } - } -}; -Edge.prototype = {}; -Edge.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.STRUCT) { - this.src = new ttypes.Value(); - this.src.read(input); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.STRUCT) { - this.dst = new ttypes.Value(); - this.dst.read(input); - } else { - input.skip(ftype); - } - break; - case 3: - if (ftype == Thrift.Type.I32) { - this.type = input.readI32(); - } else { - input.skip(ftype); - } - break; - case 4: - if (ftype == Thrift.Type.STRING) { - this.name = input.readString(); - } else { - input.skip(ftype); - } - break; - case 5: - if (ftype == Thrift.Type.I64) { - this.ranking = input.readI64(); - } else { - input.skip(ftype); - } - break; - case 6: - if (ftype == Thrift.Type.MAP) { - this.props = {}; - var _rtmp360 = input.readMapBegin(); - var _size59 = _rtmp360.size || 0; - for (var _i61 = 0; _i61 < _size59; ++_i61) { - var key62 = null; - var val63 = null; - key62 = input.readString(); - val63 = new ttypes.Value(); - val63.read(input); - this.props[key62] = val63; - } - input.readMapEnd(); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -Edge.prototype.write = function(output) { - output.writeStructBegin('Edge'); - if (this.src !== null && this.src !== undefined) { - output.writeFieldBegin('src', Thrift.Type.STRUCT, 1); - this.src.write(output); - output.writeFieldEnd(); - } - if (this.dst !== null && this.dst !== undefined) { - output.writeFieldBegin('dst', Thrift.Type.STRUCT, 2); - this.dst.write(output); - output.writeFieldEnd(); - } - if (this.type !== null && this.type !== undefined) { - output.writeFieldBegin('type', Thrift.Type.I32, 3); - output.writeI32(this.type); - output.writeFieldEnd(); - } - if (this.name !== null && this.name !== undefined) { - output.writeFieldBegin('name', Thrift.Type.STRING, 4); - output.writeString(this.name); - output.writeFieldEnd(); - } - if (this.ranking !== null && this.ranking !== undefined) { - output.writeFieldBegin('ranking', Thrift.Type.I64, 5); - output.writeI64(this.ranking); - output.writeFieldEnd(); - } - if (this.props !== null && this.props !== undefined) { - output.writeFieldBegin('props', Thrift.Type.MAP, 6); - output.writeMapBegin(Thrift.Type.STRING, Thrift.Type.STRUCT, Thrift.objectLength(this.props)); - for (var kiter64 in this.props) { - if (this.props.hasOwnProperty(kiter64)) { - var viter65 = this.props[kiter64]; - output.writeString(kiter64); - viter65.write(output); - } - } - output.writeMapEnd(); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var Step = module.exports.Step = function(args) { - this.dst = null; - this.type = null; - this.name = null; - this.ranking = null; - this.props = null; - if (args) { - if (args.dst !== undefined && args.dst !== null) { - this.dst = new ttypes.Vertex(args.dst); - } - if (args.type !== undefined && args.type !== null) { - this.type = args.type; - } - if (args.name !== undefined && args.name !== null) { - this.name = args.name; - } - if (args.ranking !== undefined && args.ranking !== null) { - this.ranking = args.ranking; - } - if (args.props !== undefined && args.props !== null) { - this.props = Thrift.copyMap(args.props, [ttypes.Value]); - } - } -}; -Step.prototype = {}; -Step.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.STRUCT) { - this.dst = new ttypes.Vertex(); - this.dst.read(input); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.I32) { - this.type = input.readI32(); - } else { - input.skip(ftype); - } - break; - case 3: - if (ftype == Thrift.Type.STRING) { - this.name = input.readString(); - } else { - input.skip(ftype); - } - break; - case 4: - if (ftype == Thrift.Type.I64) { - this.ranking = input.readI64(); - } else { - input.skip(ftype); - } - break; - case 5: - if (ftype == Thrift.Type.MAP) { - this.props = {}; - var _rtmp367 = input.readMapBegin(); - var _size66 = _rtmp367.size || 0; - for (var _i68 = 0; _i68 < _size66; ++_i68) { - var key69 = null; - var val70 = null; - key69 = input.readString(); - val70 = new ttypes.Value(); - val70.read(input); - this.props[key69] = val70; - } - input.readMapEnd(); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -Step.prototype.write = function(output) { - output.writeStructBegin('Step'); - if (this.dst !== null && this.dst !== undefined) { - output.writeFieldBegin('dst', Thrift.Type.STRUCT, 1); - this.dst.write(output); - output.writeFieldEnd(); - } - if (this.type !== null && this.type !== undefined) { - output.writeFieldBegin('type', Thrift.Type.I32, 2); - output.writeI32(this.type); - output.writeFieldEnd(); - } - if (this.name !== null && this.name !== undefined) { - output.writeFieldBegin('name', Thrift.Type.STRING, 3); - output.writeString(this.name); - output.writeFieldEnd(); - } - if (this.ranking !== null && this.ranking !== undefined) { - output.writeFieldBegin('ranking', Thrift.Type.I64, 4); - output.writeI64(this.ranking); - output.writeFieldEnd(); - } - if (this.props !== null && this.props !== undefined) { - output.writeFieldBegin('props', Thrift.Type.MAP, 5); - output.writeMapBegin(Thrift.Type.STRING, Thrift.Type.STRUCT, Thrift.objectLength(this.props)); - for (var kiter71 in this.props) { - if (this.props.hasOwnProperty(kiter71)) { - var viter72 = this.props[kiter71]; - output.writeString(kiter71); - viter72.write(output); - } - } - output.writeMapEnd(); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var Path = module.exports.Path = function(args) { - this.src = null; - this.steps = null; - if (args) { - if (args.src !== undefined && args.src !== null) { - this.src = new ttypes.Vertex(args.src); - } - if (args.steps !== undefined && args.steps !== null) { - this.steps = Thrift.copyList(args.steps, [ttypes.Step]); - } - } -}; -Path.prototype = {}; -Path.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.STRUCT) { - this.src = new ttypes.Vertex(); - this.src.read(input); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.LIST) { - this.steps = []; - var _rtmp374 = input.readListBegin(); - var _size73 = _rtmp374.size || 0; - for (var _i75 = 0; _i75 < _size73; ++_i75) { - var elem76 = null; - elem76 = new ttypes.Step(); - elem76.read(input); - this.steps.push(elem76); - } - input.readListEnd(); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -Path.prototype.write = function(output) { - output.writeStructBegin('Path'); - if (this.src !== null && this.src !== undefined) { - output.writeFieldBegin('src', Thrift.Type.STRUCT, 1); - this.src.write(output); - output.writeFieldEnd(); - } - if (this.steps !== null && this.steps !== undefined) { - output.writeFieldBegin('steps', Thrift.Type.LIST, 2); - output.writeListBegin(Thrift.Type.STRUCT, this.steps.length); - for (var iter77 in this.steps) { - if (this.steps.hasOwnProperty(iter77)) { - iter77 = this.steps[iter77]; - iter77.write(output); - } - } - output.writeListEnd(); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var HostAddr = module.exports.HostAddr = function(args) { - this.host = null; - this.port = null; - if (args) { - if (args.host !== undefined && args.host !== null) { - this.host = args.host; - } - if (args.port !== undefined && args.port !== null) { - this.port = args.port; - } - } -}; -HostAddr.prototype = {}; -HostAddr.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.STRING) { - this.host = input.readString(); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.I32) { - this.port = input.readI32(); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -HostAddr.prototype.write = function(output) { - output.writeStructBegin('HostAddr'); - if (this.host !== null && this.host !== undefined) { - output.writeFieldBegin('host', Thrift.Type.STRING, 1); - output.writeString(this.host); - output.writeFieldEnd(); - } - if (this.port !== null && this.port !== undefined) { - output.writeFieldBegin('port', Thrift.Type.I32, 2); - output.writeI32(this.port); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var KeyValue = module.exports.KeyValue = function(args) { - this.key = null; - this.value = null; - if (args) { - if (args.key !== undefined && args.key !== null) { - this.key = args.key; - } - if (args.value !== undefined && args.value !== null) { - this.value = args.value; - } - } -}; -KeyValue.prototype = {}; -KeyValue.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.STRING) { - this.key = input.readString(); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.STRING) { - this.value = input.readString(); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -KeyValue.prototype.write = function(output) { - output.writeStructBegin('KeyValue'); - if (this.key !== null && this.key !== undefined) { - output.writeFieldBegin('key', Thrift.Type.STRING, 1); - output.writeString(this.key); - output.writeFieldEnd(); - } - if (this.value !== null && this.value !== undefined) { - output.writeFieldBegin('value', Thrift.Type.STRING, 2); - output.writeString(this.value); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var Duration = module.exports.Duration = function(args) { - this.seconds = null; - this.microseconds = null; - this.months = null; - if (args) { - if (args.seconds !== undefined && args.seconds !== null) { - this.seconds = args.seconds; - } - if (args.microseconds !== undefined && args.microseconds !== null) { - this.microseconds = args.microseconds; - } - if (args.months !== undefined && args.months !== null) { - this.months = args.months; - } - } -}; -Duration.prototype = {}; -Duration.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I64) { - this.seconds = input.readI64(); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.I32) { - this.microseconds = input.readI32(); - } else { - input.skip(ftype); - } - break; - case 3: - if (ftype == Thrift.Type.I32) { - this.months = input.readI32(); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -Duration.prototype.write = function(output) { - output.writeStructBegin('Duration'); - if (this.seconds !== null && this.seconds !== undefined) { - output.writeFieldBegin('seconds', Thrift.Type.I64, 1); - output.writeI64(this.seconds); - output.writeFieldEnd(); - } - if (this.microseconds !== null && this.microseconds !== undefined) { - output.writeFieldBegin('microseconds', Thrift.Type.I32, 2); - output.writeI32(this.microseconds); - output.writeFieldEnd(); - } - if (this.months !== null && this.months !== undefined) { - output.writeFieldBegin('months', Thrift.Type.I32, 3); - output.writeI32(this.months); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var LogInfo = module.exports.LogInfo = function(args) { - this.log_id = null; - this.term_id = null; - if (args) { - if (args.log_id !== undefined && args.log_id !== null) { - this.log_id = args.log_id; - } - if (args.term_id !== undefined && args.term_id !== null) { - this.term_id = args.term_id; - } - } -}; -LogInfo.prototype = {}; -LogInfo.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I64) { - this.log_id = input.readI64(); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.I64) { - this.term_id = input.readI64(); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -LogInfo.prototype.write = function(output) { - output.writeStructBegin('LogInfo'); - if (this.log_id !== null && this.log_id !== undefined) { - output.writeFieldBegin('log_id', Thrift.Type.I64, 1); - output.writeI64(this.log_id); - output.writeFieldEnd(); - } - if (this.term_id !== null && this.term_id !== undefined) { - output.writeFieldBegin('term_id', Thrift.Type.I64, 2); - output.writeI64(this.term_id); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var DirInfo = module.exports.DirInfo = function(args) { - this.root = null; - this.data = null; - if (args) { - if (args.root !== undefined && args.root !== null) { - this.root = args.root; - } - if (args.data !== undefined && args.data !== null) { - this.data = Thrift.copyList(args.data, [null]); - } - } -}; -DirInfo.prototype = {}; -DirInfo.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.STRING) { - this.root = input.readString(); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.LIST) { - this.data = []; - var _rtmp379 = input.readListBegin(); - var _size78 = _rtmp379.size || 0; - for (var _i80 = 0; _i80 < _size78; ++_i80) { - var elem81 = null; - elem81 = input.readString(); - this.data.push(elem81); - } - input.readListEnd(); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -DirInfo.prototype.write = function(output) { - output.writeStructBegin('DirInfo'); - if (this.root !== null && this.root !== undefined) { - output.writeFieldBegin('root', Thrift.Type.STRING, 1); - output.writeString(this.root); - output.writeFieldEnd(); - } - if (this.data !== null && this.data !== undefined) { - output.writeFieldBegin('data', Thrift.Type.LIST, 2); - output.writeListBegin(Thrift.Type.STRING, this.data.length); - for (var iter82 in this.data) { - if (this.data.hasOwnProperty(iter82)) { - iter82 = this.data[iter82]; - output.writeString(iter82); - } - } - output.writeListEnd(); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var CheckpointInfo = module.exports.CheckpointInfo = function(args) { - this.space_id = null; - this.parts = null; - this.path = null; - if (args) { - if (args.space_id !== undefined && args.space_id !== null) { - this.space_id = args.space_id; - } - if (args.parts !== undefined && args.parts !== null) { - this.parts = Thrift.copyMap(args.parts, [ttypes.LogInfo]); - } - if (args.path !== undefined && args.path !== null) { - this.path = args.path; - } - } -}; -CheckpointInfo.prototype = {}; -CheckpointInfo.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I32) { - this.space_id = input.readI32(); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.MAP) { - this.parts = {}; - var _rtmp384 = input.readMapBegin(); - var _size83 = _rtmp384.size || 0; - for (var _i85 = 0; _i85 < _size83; ++_i85) { - var key86 = null; - var val87 = null; - key86 = input.readI32(); - val87 = new ttypes.LogInfo(); - val87.read(input); - this.parts[key86] = val87; - } - input.readMapEnd(); - } else { - input.skip(ftype); - } - break; - case 3: - if (ftype == Thrift.Type.STRING) { - this.path = input.readString(); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -CheckpointInfo.prototype.write = function(output) { - output.writeStructBegin('CheckpointInfo'); - if (this.space_id !== null && this.space_id !== undefined) { - output.writeFieldBegin('space_id', Thrift.Type.I32, 1); - output.writeI32(this.space_id); - output.writeFieldEnd(); - } - if (this.parts !== null && this.parts !== undefined) { - output.writeFieldBegin('parts', Thrift.Type.MAP, 2); - output.writeMapBegin(Thrift.Type.I32, Thrift.Type.STRUCT, Thrift.objectLength(this.parts)); - for (var kiter88 in this.parts) { - if (this.parts.hasOwnProperty(kiter88)) { - var viter89 = this.parts[kiter88]; - output.writeI32(kiter88); - viter89.write(output); - } - } - output.writeMapEnd(); - output.writeFieldEnd(); - } - if (this.path !== null && this.path !== undefined) { - output.writeFieldBegin('path', Thrift.Type.STRING, 3); - output.writeString(this.path); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var LogEntry = module.exports.LogEntry = function(args) { - this.cluster = null; - this.log_str = null; - if (args) { - if (args.cluster !== undefined && args.cluster !== null) { - this.cluster = args.cluster; - } - if (args.log_str !== undefined && args.log_str !== null) { - this.log_str = args.log_str; - } - } -}; -LogEntry.prototype = {}; -LogEntry.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I64) { - this.cluster = input.readI64(); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.STRING) { - this.log_str = input.readString(); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -LogEntry.prototype.write = function(output) { - output.writeStructBegin('LogEntry'); - if (this.cluster !== null && this.cluster !== undefined) { - output.writeFieldBegin('cluster', Thrift.Type.I64, 1); - output.writeI64(this.cluster); - output.writeFieldEnd(); - } - if (this.log_str !== null && this.log_str !== undefined) { - output.writeFieldBegin('log_str', Thrift.Type.STRING, 2); - output.writeString(this.log_str); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -ttypes.version = '3.0.0'; diff --git a/specs/gen-nodejs/graph_types.js b/specs/gen-nodejs/graph_types.js deleted file mode 100644 index 15b2cfc..0000000 --- a/specs/gen-nodejs/graph_types.js +++ /dev/null @@ -1,982 +0,0 @@ -// -// Autogenerated by Thrift Compiler (0.14.1) -// -// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING -// -"use strict"; - -var thrift = require('thrift'); -var Thrift = thrift.Thrift; -var Q = thrift.Q; -var Int64 = require('node-int64'); - -var common_ttypes = require('./common_types'); - - -var ttypes = module.exports = {}; -var ProfilingStats = module.exports.ProfilingStats = function(args) { - this.rows = null; - this.exec_duration_in_us = null; - this.total_duration_in_us = null; - this.other_stats = null; - if (args) { - if (args.rows !== undefined && args.rows !== null) { - this.rows = args.rows; - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field rows is unset!'); - } - if (args.exec_duration_in_us !== undefined && args.exec_duration_in_us !== null) { - this.exec_duration_in_us = args.exec_duration_in_us; - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field exec_duration_in_us is unset!'); - } - if (args.total_duration_in_us !== undefined && args.total_duration_in_us !== null) { - this.total_duration_in_us = args.total_duration_in_us; - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field total_duration_in_us is unset!'); - } - if (args.other_stats !== undefined && args.other_stats !== null) { - this.other_stats = Thrift.copyMap(args.other_stats, [null]); - } - } -}; -ProfilingStats.prototype = {}; -ProfilingStats.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I64) { - this.rows = input.readI64(); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.I64) { - this.exec_duration_in_us = input.readI64(); - } else { - input.skip(ftype); - } - break; - case 3: - if (ftype == Thrift.Type.I64) { - this.total_duration_in_us = input.readI64(); - } else { - input.skip(ftype); - } - break; - case 4: - if (ftype == Thrift.Type.MAP) { - this.other_stats = {}; - var _rtmp31 = input.readMapBegin(); - var _size0 = _rtmp31.size || 0; - for (var _i2 = 0; _i2 < _size0; ++_i2) { - var key3 = null; - var val4 = null; - key3 = input.readBinary(); - val4 = input.readBinary(); - this.other_stats[key3] = val4; - } - input.readMapEnd(); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -ProfilingStats.prototype.write = function(output) { - output.writeStructBegin('ProfilingStats'); - if (this.rows !== null && this.rows !== undefined) { - output.writeFieldBegin('rows', Thrift.Type.I64, 1); - output.writeI64(this.rows); - output.writeFieldEnd(); - } - if (this.exec_duration_in_us !== null && this.exec_duration_in_us !== undefined) { - output.writeFieldBegin('exec_duration_in_us', Thrift.Type.I64, 2); - output.writeI64(this.exec_duration_in_us); - output.writeFieldEnd(); - } - if (this.total_duration_in_us !== null && this.total_duration_in_us !== undefined) { - output.writeFieldBegin('total_duration_in_us', Thrift.Type.I64, 3); - output.writeI64(this.total_duration_in_us); - output.writeFieldEnd(); - } - if (this.other_stats !== null && this.other_stats !== undefined) { - output.writeFieldBegin('other_stats', Thrift.Type.MAP, 4); - output.writeMapBegin(Thrift.Type.STRING, Thrift.Type.STRING, Thrift.objectLength(this.other_stats)); - for (var kiter5 in this.other_stats) { - if (this.other_stats.hasOwnProperty(kiter5)) { - var viter6 = this.other_stats[kiter5]; - output.writeBinary(kiter5); - output.writeBinary(viter6); - } - } - output.writeMapEnd(); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var PlanNodeBranchInfo = module.exports.PlanNodeBranchInfo = function(args) { - this.is_do_branch = null; - this.condition_node_id = null; - if (args) { - if (args.is_do_branch !== undefined && args.is_do_branch !== null) { - this.is_do_branch = args.is_do_branch; - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field is_do_branch is unset!'); - } - if (args.condition_node_id !== undefined && args.condition_node_id !== null) { - this.condition_node_id = args.condition_node_id; - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field condition_node_id is unset!'); - } - } -}; -PlanNodeBranchInfo.prototype = {}; -PlanNodeBranchInfo.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.BOOL) { - this.is_do_branch = input.readBool(); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.I64) { - this.condition_node_id = input.readI64(); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -PlanNodeBranchInfo.prototype.write = function(output) { - output.writeStructBegin('PlanNodeBranchInfo'); - if (this.is_do_branch !== null && this.is_do_branch !== undefined) { - output.writeFieldBegin('is_do_branch', Thrift.Type.BOOL, 1); - output.writeBool(this.is_do_branch); - output.writeFieldEnd(); - } - if (this.condition_node_id !== null && this.condition_node_id !== undefined) { - output.writeFieldBegin('condition_node_id', Thrift.Type.I64, 2); - output.writeI64(this.condition_node_id); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var Pair = module.exports.Pair = function(args) { - this.key = null; - this.value = null; - if (args) { - if (args.key !== undefined && args.key !== null) { - this.key = args.key; - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field key is unset!'); - } - if (args.value !== undefined && args.value !== null) { - this.value = args.value; - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field value is unset!'); - } - } -}; -Pair.prototype = {}; -Pair.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.STRING) { - this.key = input.readBinary(); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.STRING) { - this.value = input.readBinary(); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -Pair.prototype.write = function(output) { - output.writeStructBegin('Pair'); - if (this.key !== null && this.key !== undefined) { - output.writeFieldBegin('key', Thrift.Type.STRING, 1); - output.writeBinary(this.key); - output.writeFieldEnd(); - } - if (this.value !== null && this.value !== undefined) { - output.writeFieldBegin('value', Thrift.Type.STRING, 2); - output.writeBinary(this.value); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var PlanNodeDescription = module.exports.PlanNodeDescription = function(args) { - this.name = null; - this.id = null; - this.output_var = null; - this.description = null; - this.profiles = null; - this.branch_info = null; - this.dependencies = null; - if (args) { - if (args.name !== undefined && args.name !== null) { - this.name = args.name; - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field name is unset!'); - } - if (args.id !== undefined && args.id !== null) { - this.id = args.id; - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field id is unset!'); - } - if (args.output_var !== undefined && args.output_var !== null) { - this.output_var = args.output_var; - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field output_var is unset!'); - } - if (args.description !== undefined && args.description !== null) { - this.description = Thrift.copyList(args.description, [ttypes.Pair]); - } - if (args.profiles !== undefined && args.profiles !== null) { - this.profiles = Thrift.copyList(args.profiles, [ttypes.ProfilingStats]); - } - if (args.branch_info !== undefined && args.branch_info !== null) { - this.branch_info = new ttypes.PlanNodeBranchInfo(args.branch_info); - } - if (args.dependencies !== undefined && args.dependencies !== null) { - this.dependencies = Thrift.copyList(args.dependencies, [null]); - } - } -}; -PlanNodeDescription.prototype = {}; -PlanNodeDescription.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.STRING) { - this.name = input.readBinary(); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.I64) { - this.id = input.readI64(); - } else { - input.skip(ftype); - } - break; - case 3: - if (ftype == Thrift.Type.STRING) { - this.output_var = input.readBinary(); - } else { - input.skip(ftype); - } - break; - case 4: - if (ftype == Thrift.Type.LIST) { - this.description = []; - var _rtmp38 = input.readListBegin(); - var _size7 = _rtmp38.size || 0; - for (var _i9 = 0; _i9 < _size7; ++_i9) { - var elem10 = null; - elem10 = new ttypes.Pair(); - elem10.read(input); - this.description.push(elem10); - } - input.readListEnd(); - } else { - input.skip(ftype); - } - break; - case 5: - if (ftype == Thrift.Type.LIST) { - this.profiles = []; - var _rtmp312 = input.readListBegin(); - var _size11 = _rtmp312.size || 0; - for (var _i13 = 0; _i13 < _size11; ++_i13) { - var elem14 = null; - elem14 = new ttypes.ProfilingStats(); - elem14.read(input); - this.profiles.push(elem14); - } - input.readListEnd(); - } else { - input.skip(ftype); - } - break; - case 6: - if (ftype == Thrift.Type.STRUCT) { - this.branch_info = new ttypes.PlanNodeBranchInfo(); - this.branch_info.read(input); - } else { - input.skip(ftype); - } - break; - case 7: - if (ftype == Thrift.Type.LIST) { - this.dependencies = []; - var _rtmp316 = input.readListBegin(); - var _size15 = _rtmp316.size || 0; - for (var _i17 = 0; _i17 < _size15; ++_i17) { - var elem18 = null; - elem18 = input.readI64(); - this.dependencies.push(elem18); - } - input.readListEnd(); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -PlanNodeDescription.prototype.write = function(output) { - output.writeStructBegin('PlanNodeDescription'); - if (this.name !== null && this.name !== undefined) { - output.writeFieldBegin('name', Thrift.Type.STRING, 1); - output.writeBinary(this.name); - output.writeFieldEnd(); - } - if (this.id !== null && this.id !== undefined) { - output.writeFieldBegin('id', Thrift.Type.I64, 2); - output.writeI64(this.id); - output.writeFieldEnd(); - } - if (this.output_var !== null && this.output_var !== undefined) { - output.writeFieldBegin('output_var', Thrift.Type.STRING, 3); - output.writeBinary(this.output_var); - output.writeFieldEnd(); - } - if (this.description !== null && this.description !== undefined) { - output.writeFieldBegin('description', Thrift.Type.LIST, 4); - output.writeListBegin(Thrift.Type.STRUCT, this.description.length); - for (var iter19 in this.description) { - if (this.description.hasOwnProperty(iter19)) { - iter19 = this.description[iter19]; - iter19.write(output); - } - } - output.writeListEnd(); - output.writeFieldEnd(); - } - if (this.profiles !== null && this.profiles !== undefined) { - output.writeFieldBegin('profiles', Thrift.Type.LIST, 5); - output.writeListBegin(Thrift.Type.STRUCT, this.profiles.length); - for (var iter20 in this.profiles) { - if (this.profiles.hasOwnProperty(iter20)) { - iter20 = this.profiles[iter20]; - iter20.write(output); - } - } - output.writeListEnd(); - output.writeFieldEnd(); - } - if (this.branch_info !== null && this.branch_info !== undefined) { - output.writeFieldBegin('branch_info', Thrift.Type.STRUCT, 6); - this.branch_info.write(output); - output.writeFieldEnd(); - } - if (this.dependencies !== null && this.dependencies !== undefined) { - output.writeFieldBegin('dependencies', Thrift.Type.LIST, 7); - output.writeListBegin(Thrift.Type.I64, this.dependencies.length); - for (var iter21 in this.dependencies) { - if (this.dependencies.hasOwnProperty(iter21)) { - iter21 = this.dependencies[iter21]; - output.writeI64(iter21); - } - } - output.writeListEnd(); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var PlanDescription = module.exports.PlanDescription = function(args) { - this.plan_node_descs = null; - this.node_index_map = null; - this.format = null; - this.optimize_time_in_us = null; - if (args) { - if (args.plan_node_descs !== undefined && args.plan_node_descs !== null) { - this.plan_node_descs = Thrift.copyList(args.plan_node_descs, [ttypes.PlanNodeDescription]); - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field plan_node_descs is unset!'); - } - if (args.node_index_map !== undefined && args.node_index_map !== null) { - this.node_index_map = Thrift.copyMap(args.node_index_map, [null]); - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field node_index_map is unset!'); - } - if (args.format !== undefined && args.format !== null) { - this.format = args.format; - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field format is unset!'); - } - if (args.optimize_time_in_us !== undefined && args.optimize_time_in_us !== null) { - this.optimize_time_in_us = args.optimize_time_in_us; - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field optimize_time_in_us is unset!'); - } - } -}; -PlanDescription.prototype = {}; -PlanDescription.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.LIST) { - this.plan_node_descs = []; - var _rtmp323 = input.readListBegin(); - var _size22 = _rtmp323.size || 0; - for (var _i24 = 0; _i24 < _size22; ++_i24) { - var elem25 = null; - elem25 = new ttypes.PlanNodeDescription(); - elem25.read(input); - this.plan_node_descs.push(elem25); - } - input.readListEnd(); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.MAP) { - this.node_index_map = {}; - var _rtmp327 = input.readMapBegin(); - var _size26 = _rtmp327.size || 0; - for (var _i28 = 0; _i28 < _size26; ++_i28) { - var key29 = null; - var val30 = null; - key29 = input.readI64(); - val30 = input.readI64(); - this.node_index_map[key29] = val30; - } - input.readMapEnd(); - } else { - input.skip(ftype); - } - break; - case 3: - if (ftype == Thrift.Type.STRING) { - this.format = input.readBinary(); - } else { - input.skip(ftype); - } - break; - case 4: - if (ftype == Thrift.Type.I32) { - this.optimize_time_in_us = input.readI32(); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -PlanDescription.prototype.write = function(output) { - output.writeStructBegin('PlanDescription'); - if (this.plan_node_descs !== null && this.plan_node_descs !== undefined) { - output.writeFieldBegin('plan_node_descs', Thrift.Type.LIST, 1); - output.writeListBegin(Thrift.Type.STRUCT, this.plan_node_descs.length); - for (var iter31 in this.plan_node_descs) { - if (this.plan_node_descs.hasOwnProperty(iter31)) { - iter31 = this.plan_node_descs[iter31]; - iter31.write(output); - } - } - output.writeListEnd(); - output.writeFieldEnd(); - } - if (this.node_index_map !== null && this.node_index_map !== undefined) { - output.writeFieldBegin('node_index_map', Thrift.Type.MAP, 2); - output.writeMapBegin(Thrift.Type.I64, Thrift.Type.I64, Thrift.objectLength(this.node_index_map)); - for (var kiter32 in this.node_index_map) { - if (this.node_index_map.hasOwnProperty(kiter32)) { - var viter33 = this.node_index_map[kiter32]; - output.writeI64(kiter32); - output.writeI64(viter33); - } - } - output.writeMapEnd(); - output.writeFieldEnd(); - } - if (this.format !== null && this.format !== undefined) { - output.writeFieldBegin('format', Thrift.Type.STRING, 3); - output.writeBinary(this.format); - output.writeFieldEnd(); - } - if (this.optimize_time_in_us !== null && this.optimize_time_in_us !== undefined) { - output.writeFieldBegin('optimize_time_in_us', Thrift.Type.I32, 4); - output.writeI32(this.optimize_time_in_us); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var ExecutionResponse = module.exports.ExecutionResponse = function(args) { - this.error_code = null; - this.latency_in_us = null; - this.data = null; - this.space_name = null; - this.error_msg = null; - this.plan_desc = null; - this.comment = null; - if (args) { - if (args.error_code !== undefined && args.error_code !== null) { - this.error_code = args.error_code; - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field error_code is unset!'); - } - if (args.latency_in_us !== undefined && args.latency_in_us !== null) { - this.latency_in_us = args.latency_in_us; - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field latency_in_us is unset!'); - } - if (args.data !== undefined && args.data !== null) { - this.data = new common_ttypes.DataSet(args.data); - } - if (args.space_name !== undefined && args.space_name !== null) { - this.space_name = args.space_name; - } - if (args.error_msg !== undefined && args.error_msg !== null) { - this.error_msg = args.error_msg; - } - if (args.plan_desc !== undefined && args.plan_desc !== null) { - this.plan_desc = new ttypes.PlanDescription(args.plan_desc); - } - if (args.comment !== undefined && args.comment !== null) { - this.comment = args.comment; - } - } -}; -ExecutionResponse.prototype = {}; -ExecutionResponse.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I32) { - this.error_code = input.readI32(); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.I64) { - this.latency_in_us = input.readI64(); - } else { - input.skip(ftype); - } - break; - case 3: - if (ftype == Thrift.Type.STRUCT) { - this.data = new common_ttypes.DataSet(); - this.data.read(input); - } else { - input.skip(ftype); - } - break; - case 4: - if (ftype == Thrift.Type.STRING) { - this.space_name = input.readString(); - } else { - input.skip(ftype); - } - break; - case 5: - if (ftype == Thrift.Type.STRING) { - this.error_msg = input.readString(); - } else { - input.skip(ftype); - } - break; - case 6: - if (ftype == Thrift.Type.STRUCT) { - this.plan_desc = new ttypes.PlanDescription(); - this.plan_desc.read(input); - } else { - input.skip(ftype); - } - break; - case 7: - if (ftype == Thrift.Type.STRING) { - this.comment = input.readString(); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -ExecutionResponse.prototype.write = function(output) { - output.writeStructBegin('ExecutionResponse'); - if (this.error_code !== null && this.error_code !== undefined) { - output.writeFieldBegin('error_code', Thrift.Type.I32, 1); - output.writeI32(this.error_code); - output.writeFieldEnd(); - } - if (this.latency_in_us !== null && this.latency_in_us !== undefined) { - output.writeFieldBegin('latency_in_us', Thrift.Type.I64, 2); - output.writeI64(this.latency_in_us); - output.writeFieldEnd(); - } - if (this.data !== null && this.data !== undefined) { - output.writeFieldBegin('data', Thrift.Type.STRUCT, 3); - this.data.write(output); - output.writeFieldEnd(); - } - if (this.space_name !== null && this.space_name !== undefined) { - output.writeFieldBegin('space_name', Thrift.Type.STRING, 4); - output.writeString(this.space_name); - output.writeFieldEnd(); - } - if (this.error_msg !== null && this.error_msg !== undefined) { - output.writeFieldBegin('error_msg', Thrift.Type.STRING, 5); - output.writeString(this.error_msg); - output.writeFieldEnd(); - } - if (this.plan_desc !== null && this.plan_desc !== undefined) { - output.writeFieldBegin('plan_desc', Thrift.Type.STRUCT, 6); - this.plan_desc.write(output); - output.writeFieldEnd(); - } - if (this.comment !== null && this.comment !== undefined) { - output.writeFieldBegin('comment', Thrift.Type.STRING, 7); - output.writeString(this.comment); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var AuthResponse = module.exports.AuthResponse = function(args) { - this.error_code = null; - this.error_msg = null; - this.session_id = null; - this.time_zone_offset_seconds = null; - this.time_zone_name = null; - if (args) { - if (args.error_code !== undefined && args.error_code !== null) { - this.error_code = args.error_code; - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field error_code is unset!'); - } - if (args.error_msg !== undefined && args.error_msg !== null) { - this.error_msg = args.error_msg; - } - if (args.session_id !== undefined && args.session_id !== null) { - this.session_id = args.session_id; - } - if (args.time_zone_offset_seconds !== undefined && args.time_zone_offset_seconds !== null) { - this.time_zone_offset_seconds = args.time_zone_offset_seconds; - } - if (args.time_zone_name !== undefined && args.time_zone_name !== null) { - this.time_zone_name = args.time_zone_name; - } - } -}; -AuthResponse.prototype = {}; -AuthResponse.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I32) { - this.error_code = input.readI32(); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.STRING) { - this.error_msg = input.readString(); - } else { - input.skip(ftype); - } - break; - case 3: - if (ftype == Thrift.Type.I64) { - this.session_id = input.readI64(); - } else { - input.skip(ftype); - } - break; - case 4: - if (ftype == Thrift.Type.I32) { - this.time_zone_offset_seconds = input.readI32(); - } else { - input.skip(ftype); - } - break; - case 5: - if (ftype == Thrift.Type.STRING) { - this.time_zone_name = input.readString(); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -AuthResponse.prototype.write = function(output) { - output.writeStructBegin('AuthResponse'); - if (this.error_code !== null && this.error_code !== undefined) { - output.writeFieldBegin('error_code', Thrift.Type.I32, 1); - output.writeI32(this.error_code); - output.writeFieldEnd(); - } - if (this.error_msg !== null && this.error_msg !== undefined) { - output.writeFieldBegin('error_msg', Thrift.Type.STRING, 2); - output.writeString(this.error_msg); - output.writeFieldEnd(); - } - if (this.session_id !== null && this.session_id !== undefined) { - output.writeFieldBegin('session_id', Thrift.Type.I64, 3); - output.writeI64(this.session_id); - output.writeFieldEnd(); - } - if (this.time_zone_offset_seconds !== null && this.time_zone_offset_seconds !== undefined) { - output.writeFieldBegin('time_zone_offset_seconds', Thrift.Type.I32, 4); - output.writeI32(this.time_zone_offset_seconds); - output.writeFieldEnd(); - } - if (this.time_zone_name !== null && this.time_zone_name !== undefined) { - output.writeFieldBegin('time_zone_name', Thrift.Type.STRING, 5); - output.writeString(this.time_zone_name); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var VerifyClientVersionResp = module.exports.VerifyClientVersionResp = function(args) { - this.error_code = null; - this.error_msg = null; - if (args) { - if (args.error_code !== undefined && args.error_code !== null) { - this.error_code = args.error_code; - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field error_code is unset!'); - } - if (args.error_msg !== undefined && args.error_msg !== null) { - this.error_msg = args.error_msg; - } - } -}; -VerifyClientVersionResp.prototype = {}; -VerifyClientVersionResp.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I32) { - this.error_code = input.readI32(); - } else { - input.skip(ftype); - } - break; - case 2: - if (ftype == Thrift.Type.STRING) { - this.error_msg = input.readString(); - } else { - input.skip(ftype); - } - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -VerifyClientVersionResp.prototype.write = function(output) { - output.writeStructBegin('VerifyClientVersionResp'); - if (this.error_code !== null && this.error_code !== undefined) { - output.writeFieldBegin('error_code', Thrift.Type.I32, 1); - output.writeI32(this.error_code); - output.writeFieldEnd(); - } - if (this.error_msg !== null && this.error_msg !== undefined) { - output.writeFieldBegin('error_msg', Thrift.Type.STRING, 2); - output.writeString(this.error_msg); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - -var VerifyClientVersionReq = module.exports.VerifyClientVersionReq = function(args) { - this.version = '3.0.0'; - if (args) { - if (args.version !== undefined && args.version !== null) { - this.version = args.version; - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field version is unset!'); - } - } -}; -VerifyClientVersionReq.prototype = {}; -VerifyClientVersionReq.prototype.read = function(input) { - input.readStructBegin(); - while (true) { - var ret = input.readFieldBegin(); - var ftype = ret.ftype; - var fid = ret.fid; - if (ftype == Thrift.Type.STOP) { - break; - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.STRING) { - this.version = input.readString(); - } else { - input.skip(ftype); - } - break; - case 0: - input.skip(ftype); - break; - default: - input.skip(ftype); - } - input.readFieldEnd(); - } - input.readStructEnd(); - return; -}; - -VerifyClientVersionReq.prototype.write = function(output) { - output.writeStructBegin('VerifyClientVersionReq'); - if (this.version !== null && this.version !== undefined) { - output.writeFieldBegin('version', Thrift.Type.STRING, 1); - output.writeString(this.version); - output.writeFieldEnd(); - } - output.writeFieldStop(); - output.writeStructEnd(); - return; -}; - diff --git a/specs/index.d.ts b/specs/index.d.ts deleted file mode 100644 index 32f101b..0000000 --- a/specs/index.d.ts +++ /dev/null @@ -1,597 +0,0 @@ -// Type definitions for thrift 0.10 -// Project: http://thrift.apache.org -// Definitions by: Kamek -// Kevin Greene -// Jesse Zhang -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 - -/// - -import * as net from 'net'; -import * as http from 'http'; -import * as https from 'https'; -import * as tls from 'tls'; -import { EventEmitter } from 'events'; - -// Thrift re-exports node-int64 and Q -import Int64 = require('node-int64'); -export { Int64 as Int64 }; -import Q = require('q'); -export { Q as Q }; - -export interface TMap { - ktype: Thrift.Type; - vtype: Thrift.Type; - size: number; -} - -export interface TMessage { - fname: string; - mtype: Thrift.MessageType; - rseqid: number; -} - -export interface TField { - fname: string; - ftype: Thrift.Type; - fid: number; -} - -export interface TList { - etype: Thrift.Type; - size: number; -} - -export interface TSet { - etype: Thrift.Type; - size: number; -} - -export interface TStruct { - fname: string; -} - -export interface TStructLike { - read(input: TProtocol): void; - write(output: TProtocol): void; -} - -export interface TTransport { - commitPosition(): void; - rollbackPosition(): void; - isOpen(): boolean; - open(): boolean; - close(): boolean; - setCurrSeqId(seqId: number): void; - ensureAvailable(len: number): void; - read(len: number): Buffer; - readByte(): number; - readI16(): number; - readI32(): number; - readDouble(): number; - readString(): string; - write(buf: Buffer | string): void; - flush(): void; -} - -export interface TProtocol { - flush(): void; - writeMessageBegin(name: string, type: Thrift.MessageType, seqid: number): void; - writeMessageEnd(): void; - writeStructBegin(name: string): void; - writeStructEnd(): void; - writeFieldBegin(name: string, type: Thrift.Type, id: number): void; - writeFieldEnd(): void; - writeFieldStop(): void; - writeMapBegin(ktype: Thrift.Type, vtype: Thrift.Type, size: number): void; - writeMapEnd(): void; - writeListBegin(etype: Thrift.Type, size: number): void; - writeListEnd(): void; - writeSetBegin(etype: Thrift.Type, size: number): void; - writeSetEnd(): void; - writeBool(bool: boolean): void; - writeByte(b: number): void; - writeI16(i16: number): void; - writeI32(i32: number): void; - writeI64(i64: number | Int64): void; - writeDouble(dbl: number): void; - writeString(arg: string | Buffer): void; - writeBinary(arg: string | Buffer): void; - readMessageBegin(): TMessage; - readMessageEnd(): void; - readStructBegin(): TStruct; - readStructEnd(): void; - readFieldBegin(): TField; - readFieldEnd(): void; - readMapBegin(): TMap; - readMapEnd(): void; - readListBegin(): TList; - readListEnd(): void; - readSetBegin(): TSet; - readSetEnd(): void; - readBool(): boolean; - readByte(): number; - readI16(): number; - readI32(): number; - readI64(): Int64; - readDouble(): number; - readBinary(): Buffer; - readString(): string; - getTransport(): TTransport; - skip(type: Thrift.Type): void; -} - -export interface HttpHeaders { - [name: string]: number | string | string[] | undefined; -} - -export interface SeqId2Service { - [seqid: number]: string; -} - -export class Connection extends EventEmitter { - seqId2Service: SeqId2Service; - connection: net.Socket; - ssl: boolean; - options: ConnectOptions; - transport: TTransport; - protocol: TProtocol; - offline_queue: Buffer[]; - connected: boolean; - constructor(stream: net.Socket, options?: ConnectOptions); - end(): void; - destroy(): void; - initialize_retry_vars(): void; - write(data: Buffer): void; - connection_gone(): void; -} - -export class HttpConnection extends EventEmitter { - options: ConnectOptions; - host: string; - port: number; - https: boolean; - transport: TTransport; - protocol: TProtocol; - constructor(host: string, port: number, options?: ConnectOptions); - responseCallback(response: http.IncomingMessage): void; - write(data: Buffer): void; -} - -export class XHRConnection extends EventEmitter { - seqId2Service: SeqId2Service; - options: ConnectOptions; - wpos: number; - rpos: number; - useCORS: boolean; - send_buf: string; - recv_buf: string; - transport: TTransport; - protocol: TProtocol; - headers: HttpHeaders; - constructor(host: string, port: number, options?: ConnectOptions); - getXmlHttpRequestObject(): XMLHttpRequest; - flush(): void; - setRecvBuffer(buf: string): void; - isOpen(): boolean; - open(): void; - close(): void; - read(len: number): string; - readAll(): string; - write(buf: string): void; - getSendBuffer(): string; -} - -export interface WSOptions { - host: string; - port: number; - path: string; - headers: HttpHeaders; -} - -export class WSConnection extends EventEmitter { - seqId2Service: SeqId2Service; - options: ConnectOptions; - host: string; - port: number; - secure: boolean; - transport: TTransport; - protocol: TProtocol; - path: string; - send_pending: Buffer[]; - wsOptions: WSOptions; - constructor(host: string, port: number, options?: ConnectOptions); - isOpen(): boolean; - open(): void; - close(): void; - uri(): string; - write(data: Buffer): void; -} - -export class Multiplexer { - createClient(serviceName: string, client: TClientConstructor, connection: Connection): TClient; -} - -export class MultiplexedProcessor { - constructor(stream?: any, options?: any); - process(input: TProtocol, output: TProtocol): void; -} - -export type TTransportCallback = - (msg?: Buffer, seqid?: number) => void; - -export interface ServiceMap { - [uri: string]: ServerOptions; -} - -export interface ServiceOptions { - transport?: TTransportConstructor; - protocol?: TProtocolConstructor; - processor?: { new(handler: THandler): TProcessor }; - handler?: THandler; -} - -export interface ServerOptions extends ServiceOptions { - cors?: string[]; - files?: string; - headers?: HttpHeaders; - services?: ServiceMap; - tls?: tls.TlsOptions; -} - -export interface ConnectOptions { - transport?: TTransportConstructor; - protocol?: TProtocolConstructor; - path?: string; - headers?: HttpHeaders; - https?: boolean; - debug?: boolean; - max_attempts?: number; - retry_max_delay?: number; - connect_timeout?: number; - timeout?: number; - nodeOptions?: http.RequestOptions | https.RequestOptions; -} - -export interface WSConnectOptions { - transport?: TTransportConstructor; - protocol?: TProtocolConstructor; - path?: string; - headers?: HttpHeaders; - secure?: boolean; - wsOptions?: WSOptions; -} - -export type TClientConstructor = - { new(output: TTransport, pClass: { new(trans: TTransport): TProtocol }): TClient; } | - { Client: { new(output: TTransport, pClass: { new(trans: TTransport): TProtocol }): TClient; } }; - -export type TProcessorConstructor = - { new(handler: THandler): TProcessor } | - { Processor: { new(handler: THandler): TProcessor } }; - -export interface WebServerOptions { - services: { - [path: string]: { - processor: TProcessorConstructor; - handler: THandler; - } - }; -} - -export function createConnection(host: string | undefined, port: number, options?: ConnectOptions): Connection; -export function createSSLConnection(host: string | undefined, port: number, options?: ConnectOptions): Connection; -export function createHttpConnection(host: string | undefined, port: number, options?: ConnectOptions): HttpConnection; -export function createXHRConnection(host: string | undefined, port: number, options?: ConnectOptions): XHRConnection; -export function createWSConnection(host: string | undefined, port: number, options?: WSConnectOptions): WSConnection; - -export function createXHRClient( - client: TClientConstructor, - connection: XHRConnection -): TClient; - -export function createHttpClient( - client: TClientConstructor, - connection: HttpConnection -): TClient; - -export function createWSClient( - client: TClientConstructor, - connection: WSConnection -): TClient; - -export function createStdIOClient( - client: TClientConstructor, - connection: Connection -): TClient; - -export function createClient( - client: TClientConstructor, - connection: Connection -): TClient; - -// THandler is going to be a hash of user-defined functions for prcessing RPC calls -export function createServer( - processor: TProcessorConstructor, - handler: THandler, - options?: ServerOptions -): http.Server | tls.Server; - -// tslint:disable-next-line no-unnecessary-generics -export function createWebServer(options: WebServerOptions): http.Server | tls.Server; - -export class TBufferedTransport implements TTransport { - constructor(buffer?: Buffer, callback?: TTransportCallback); - static receiver(callback: (trans: TBufferedTransport, seqid: number) => void, seqid: number): (data: Buffer) => void; - commitPosition(): void; - rollbackPosition(): void; - isOpen(): boolean; - open(): boolean; - close(): boolean; - setCurrSeqId(seqId: number): void; - ensureAvailable(len: number): void; - read(len: number): Buffer; - readByte(): number; - readI16(): number; - readI32(): number; - readDouble(): number; - readString(): string; - write(buf: Buffer | string): void; - flush(): void; -} - -export class TFramedTransport implements TTransport { - constructor(buffer?: Buffer, callback?: TTransportCallback); - static receiver(callback: (trans: TFramedTransport, seqid: number) => void, seqid: number): (data: Buffer) => void; - commitPosition(): void; - rollbackPosition(): void; - isOpen(): boolean; - open(): boolean; - close(): boolean; - setCurrSeqId(seqId: number): void; - ensureAvailable(len: number): void; - read(len: number): Buffer; - readByte(): number; - readI16(): number; - readI32(): number; - readDouble(): number; - readString(): string; - write(buf: Buffer | string): void; - flush(): void; -} - -export interface TTransportConstructor { - new(buffer?: Buffer, callback?: TTransportCallback): TTransport; -} - -export class TBinaryProtocol implements TProtocol { - constructor(trans: TTransport, strictRead?: boolean, strictWrite?: boolean); - flush(): void; - writeMessageBegin(name: string, type: Thrift.MessageType, seqid: number): void; - writeMessageEnd(): void; - writeStructBegin(name: string): void; - writeStructEnd(): void; - writeFieldBegin(name: string, type: Thrift.Type, id: number): void; - writeFieldEnd(): void; - writeFieldStop(): void; - writeMapBegin(ktype: Thrift.Type, vtype: Thrift.Type, size: number): void; - writeMapEnd(): void; - writeListBegin(etype: Thrift.Type, size: number): void; - writeListEnd(): void; - writeSetBegin(etype: Thrift.Type, size: number): void; - writeSetEnd(): void; - writeBool(bool: boolean): void; - writeByte(b: number): void; - writeI16(i16: number): void; - writeI32(i32: number): void; - writeI64(i64: number | Int64): void; - writeDouble(dbl: number): void; - writeString(arg: string | Buffer): void; - writeBinary(arg: string | Buffer): void; - readMessageBegin(): TMessage; - readMessageEnd(): void; - readStructBegin(): TStruct; - readStructEnd(): void; - readFieldBegin(): TField; - readFieldEnd(): void; - readMapBegin(): TMap; - readMapEnd(): void; - readListBegin(): TList; - readListEnd(): void; - readSetBegin(): TSet; - readSetEnd(): void; - readBool(): boolean; - readByte(): number; - readI16(): number; - readI32(): number; - readI64(): Int64; - readDouble(): number; - readBinary(): Buffer; - readString(): string; - getTransport(): TTransport; - skip(type: Thrift.Type): void; -} - -export class TJSONProtocol implements TProtocol { - constructor(trans: TTransport); - flush(): void; - writeMessageBegin(name: string, type: Thrift.MessageType, seqid: number): void; - writeMessageEnd(): void; - writeStructBegin(name: string): void; - writeStructEnd(): void; - writeFieldBegin(name: string, type: Thrift.Type, id: number): void; - writeFieldEnd(): void; - writeFieldStop(): void; - writeMapBegin(ktype: Thrift.Type, vtype: Thrift.Type, size: number): void; - writeMapEnd(): void; - writeListBegin(etype: Thrift.Type, size: number): void; - writeListEnd(): void; - writeSetBegin(etype: Thrift.Type, size: number): void; - writeSetEnd(): void; - writeBool(bool: boolean): void; - writeByte(b: number): void; - writeI16(i16: number): void; - writeI32(i32: number): void; - writeI64(i64: number | Int64): void; - writeDouble(dbl: number): void; - writeString(arg: string | Buffer): void; - writeBinary(arg: string | Buffer): void; - readMessageBegin(): TMessage; - readMessageEnd(): void; - readStructBegin(): TStruct; - readStructEnd(): void; - readFieldBegin(): TField; - readFieldEnd(): void; - readMapBegin(): TMap; - readMapEnd(): void; - readListBegin(): TList; - readListEnd(): void; - readSetBegin(): TSet; - readSetEnd(): void; - readBool(): boolean; - readByte(): number; - readI16(): number; - readI32(): number; - readI64(): Int64; - readDouble(): number; - readBinary(): Buffer; - readString(): string; - getTransport(): TTransport; - skip(type: Thrift.Type): void; -} - -export class TCompactProtocol implements TProtocol { - constructor(trans: TTransport); - flush(): void; - writeMessageBegin(name: string, type: Thrift.MessageType, seqid: number): void; - writeMessageEnd(): void; - writeStructBegin(name: string): void; - writeStructEnd(): void; - writeFieldBegin(name: string, type: Thrift.Type, id: number): void; - writeFieldEnd(): void; - writeFieldStop(): void; - writeMapBegin(ktype: Thrift.Type, vtype: Thrift.Type, size: number): void; - writeMapEnd(): void; - writeListBegin(etype: Thrift.Type, size: number): void; - writeListEnd(): void; - writeSetBegin(etype: Thrift.Type, size: number): void; - writeSetEnd(): void; - writeBool(bool: boolean): void; - writeByte(b: number): void; - writeI16(i16: number): void; - writeI32(i32: number): void; - writeI64(i64: number | Int64): void; - writeDouble(dbl: number): void; - writeString(arg: string | Buffer): void; - writeBinary(arg: string | Buffer): void; - readMessageBegin(): TMessage; - readMessageEnd(): void; - readStructBegin(): TStruct; - readStructEnd(): void; - readFieldBegin(): TField; - readFieldEnd(): void; - readMapBegin(): TMap; - readMapEnd(): void; - readListBegin(): TList; - readListEnd(): void; - readSetBegin(): TSet; - readSetEnd(): void; - readBool(): boolean; - readByte(): number; - readI16(): number; - readI32(): number; - readI64(): Int64; - readDouble(): number; - readBinary(): Buffer; - readString(): string; - getTransport(): TTransport; - skip(type: Thrift.Type): void; -} - -export interface TProtocolConstructor { - new(trans: TTransport, strictRead?: boolean, strictWrite?: boolean): TProtocol; -} - -// thrift.js -export namespace Thrift { - enum Type { - STOP = 0, - VOID = 1, - BOOL = 2, - BYTE = 3, - I08 = 3, - DOUBLE = 4, - I16 = 6, - I32 = 8, - I64 = 10, - STRING = 11, - UTF7 = 11, - STRUCT = 12, - MAP = 13, - SET = 14, - LIST = 15, - UTF8 = 16, - UTF16 = 17 - } - - enum MessageType { - CALL = 1, - REPLY = 2, - EXCEPTION = 3, - ONEWAY = 4 - } - - class TException extends Error { - name: string; - message: string; - - constructor(message: string); - - getMessage(): string; - } - - enum TApplicationExceptionType { - UNKNOWN = 0, - UNKNOWN_METHOD = 1, - INVALID_MESSAGE_TYPE = 2, - WRONG_METHOD_NAME = 3, - BAD_SEQUENCE_ID = 4, - MISSING_RESULT = 5, - INTERNAL_ERROR = 6, - PROTOCOL_ERROR = 7, - INVALID_TRANSFORM = 8, - INVALID_PROTOCOL = 9, - UNSUPPORTED_CLIENT_TYPE = 10 - } - - class TApplicationException extends TException { - message: string; - code: number; - - constructor(type?: TApplicationExceptionType, message?: string); - read(input: TProtocol): void; - write(output: TProtocol): void; - getCode(): number; - } - - enum TProtocolExceptionType { - UNKNOWN = 0, - INVALID_DATA = 1, - NEGATIVE_SIZE = 2, - SIZE_LIMIT = 3, - BAD_VERSION = 4, - NOT_IMPLEMENTED = 5, - DEPTH_LIMIT = 6 - } - - class TProtocolException implements Error { - name: string; - message: string; - type: TProtocolExceptionType; - - constructor(type: TProtocolExceptionType, message: string); - } - - function objectLength(obj: any): number; -} diff --git a/specs/thrift-0.14.1.exe b/specs/thrift-0.14.1.exe deleted file mode 100644 index 28d086bfd75fbbae447a7dcc2d7f077dd36d78d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3392000 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�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

vFzgSnL4KrQNXw-gL@zkmtr3kzZ9E>gY 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

_?rlXTCM#bv_U8k-;>!yQ=RM-DtDyH$`Icb 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%0Dfa0ig*8$nora|=Hr8f11EEv|} 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

YpPaWPTZJpsqj1MWGe>2HebCHNyePSZiCfdl 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

Y#um7awG!Od?^Q1Md@dYq!k~*v)3Kt-Uqe zx#;X(NVjj;aOJXLDM!HDs6W_f%$fGlE7!24O@n<8>7_LUYcR`*;4Zz|Rihx=`oZ_NDcj87cnb3sCT zaMWrU_VksJP920{8k_->=HJ*icxx@kwXKWoag79F*i7~IgW-&|vox`P3OP;eXV?}8 zsNz{2T}1@~n2J~V+^RfkdIS)?PQd2gz6k-Zi2+;;z~Z@lVQD)UTbkjW*iYt3STa*e zsuya-@u^gqY}dpL%g>GGR*#%R?vj2O#xMd_xHSD357>aguxYE! z0MV{zDjvT^>&;iVh<<8BG)H?$8k~_Savv=52keD+hBY1v< zD@(zZ*0}s$vmxC(J|P?Gg2IMBpkX2-?5sVx$=R^=nm9JFW;bdU29&1J=6Te&J!EW4 zvwWpFz70io>rVlrVq1S}Bh`&Ub&l2#YPj`QSJV0pKDIssUb=35OYeONTmSDx()tIL zqxBzNmAv)au1?VUcBolezco!<3v~#V7&gC!<=dL$tH3=W#<;Nm!Kqjd+}uc&BTywd z(3W>+!k5RFQ*Z?@?z~M445$EoR^Dj|nez2QVagmF zsE&xlrYn;(<<)`&OgVP0VM}uOUqZ4(lg6Sn@q0%?6QPD)2wzvYVLt^W(QqQuxu)_nXN z)B3$>;*F`#E|AvaLR)yT`y#Dxf&PhY{m4eD8-(f{3NfM>I=-gAoVWY&wMI=*ph z)PG96f9>NbDeBcP!D4wm0VjrstR0vR|0Wxq;d~!&LvGV8B@n?#l;AlSC-#>0lN}{F z!}#x*^0j)ZUi^sSjXKjYlOKo6MRkqFuWBgB^Ml`6Bi;!eSL5mWe8evG=#%y88}02_ zDzT&!aQRO0T;tqvXBs@Hbi8kEzSDzB;@tfvhKN^Se*AM8p4ki;(mLBvc&4Y6R6D_R zIITNW&%dJqGfjBLH^-h&0mP2a$cDmW^K8m=pks{sCsLxE?+y}dx9tquZTsc%nH}mu zI2j;oF+bvEEaIKp>nGpb>xjoj*L!PY!e`%eZ=8h09{CKQF#*|LvO1nEtK&WN>NtO> z69#It5f_mCk**mQK$ypWg%q}M%~yvgfZB~L46toY{UtHBK__cd>=${$iAjS*`99dw_4od3utC;-X6S7B<?-*Z-}QcGvaSP8faT#OyYLzgD! z%4~Xl5w1Liqey6cdObN9jcj<(vdLT-4hDcLe>+igC55j_uT)PVP#|kq^zeV^RfG6{ zct(3XSbztO^Q#Aj65AGbPGSoYL96+aie=AZVU)pJ_fwvcAwcwVjjp`Hhifp=*W&F3#YU>*R@mSYa`1h+% z#=4e&I@XnkPo~kzjIj1%F@{SrTT@3_ccccVc1g8r5h5LRcO)b-!ntN$>)i5$E&0=F za}lX4^{DJ>w1O9NK_FbE4%->NRNLG%rgP4hPTU3j|!?v0Kga3&0)jO1DpWXQ_y(I}Jt{3W7l%rol*P4J| zYeXTE`2_#Q>PL9sq)=fSn8a;)ZE&xR#fX;be+q`S!Gquv>{I7-ipKh8@3Vf&@$Gk) zT!CCDkYeZ0iW&W`ou+<|xqh;$=b~y3X;)f1AWic=kmiL3OWYORK52&V76TvV5e){I zFBg6zQ*$-tEWas_EE`PE72X%V#n$ZlpTsI%5**U9(lHWY*22Fm0$*v(ZN)QP@X zOU3ltn>qZ^%^Yp8J|pb>p@Z=@_PYbyIsSo2^bHef|U~ z(H3>&nDf7{*NZ+E(>8Ec&v+hgGV<6aYI#EC9tN&KRLVZV9VF`q-(YgL^e#)7yR*){ z7`Zhp-bR!#On9lVlzJcRdU7M2KS6MBf3cNh6KUk*|*_gjlA@pI8hfY+>3SK zVBtQ?Gswy<2#!)1qI0T>`gPmP6Km<4!p+90KV1SS%;RwKTp{=9P`|fu$T>KBpE}+V z{z2h>9IFV<-i!6FkknzON;syCXmT5F#CQiaI=pV!ol_biza_|r-N960hqAcJkWg_s zPq_lSOJs^ri{RM~^_Eulaxj%sF?aiVUTXZ1YW$hK4u7WM@pNugME@cYBOC)VUPvRF zcgbB&IW6M&b)5%Wa=FaLU{I|rMc3j5Hb?*$jq0`Zu1+WxU)|}1I|p#_iVSP{*0fk{ zY0zLUjY0c}mR{mIZ#FtGkCT$>2v{Qn^SDYh%vNOI-Dry)&yn%CdxRpHP-DN%X-J9c z?|4-Gf2F@0F@$K{YUSOTkcm%9-Kr0WkLcDtm|iCv6sKU(DB*bgDt2btg zJTAJ&F&3}GtRPk=nm1DIVJy|yIUi!nI0@53dT(bd}F-G|)j8?eW{KEKcy?-t(bgc!F8hN{HqRXoRz zrshjD6~kx2Z|o*DGI!_{L&}XH1;<$tP2JL{)_sjC(3^9>P|>=tcYw1q>}cwJ4y}_> zbNy7CB3tWLASKGpf4mpfy0h%aL3_DRq5e*{2G_r3uUiSo8cZcN{fwPyM-uYzY~6%6 zb~<$Lc<1E0_brxZ8W`7lW-$0Mh~t{s*%BT;h(nsFYQVe9fsu=5FZ`7p<~8@O=B6?8qm zeGY-s7Ol0n^tnXS%bj z27H8mwD~!Xx|7g0vQ;ObRSteWK(BL$dIXwBf8mQZIG9qnQ+(-4yA%)6jL)-@&*|0Gm`j z>ZsRNUg?L1XIfR0ojQHuu84))6P^hR`8})=fTONOLn}>-VsN&@#-KbbB-fDC4)7}8 z)4;CZkr5&rv3cEMz<&d9?P)Y_^S(zF=&bv}OR;(1Z$sxrJdL?J{!PxA{k?lQU)XTF z%{<%ky@-^k<*SAH`M>Ztc7iew+z8#p>D~?F5^3j!x(VgwsB~}vM6UjsZok3}lf0kA zubR0_UdI<)I#2;L^*snj=e0l*78baC{X4{Gk%IoQ_vd5X)^QZ6-izEmMp=ZNhaNjY z4)e_&;wrjSQ{2)!B;gj=`-EGn11M&=>i;qKF5poWN&oO98Ik~j86Y6w4JE5lSVaXy z!4)I}L5NIaV$`UtvWnP| zsHmu*tn>d>b)Pe5?!z0u=lOOYVd&FU)m>d(U0q#WJr3PG3aa?)Ix_TvH@EBpUjG}8 zAKA>tGpwz&s1A`0rvrO~c(&0{40f^WSswZpJd26FMYY93W z={;i^`DHh-G%$qGW4RFsZr?V|*w|a3{dwYAT1=#{_sMfC=AYVYs z7y}E(o&!Ci$f>2L8XwftyJ<#2PkzR^AFd+QY#{%Bq-(>u*JE7sn)vGD!LC|S4qhb| z_bXo3Wa~n1@ey`PN@WkzjcctXW9drozTZ5K8gg&<)ACI2?NA5# z7|8fcdSx1w>yUSOCx}v@tGqh3*|Ijdq)2(%#|L@ZqhCfi5$J&H;Hlt|75AJ2etkxY z=iPS+=L~ew>`13Koyn8_=n&+cfgQ>AtJ;wJRl$svnqgM~7%x!^n-G%`RS;lLf}S4! z1Y(o88odnko+|TMNdl)D2&^@oYDDMtzwi(=@w$tgEocR~tbe#R3U@E1ccZ_YBDpI* z8ENEtBM!^;I??=yGlx@h#GaS~NRGG`x%*VSu_+6On2956#U)CPXmuT%gBcf=-Bw(N zda!OdIil6I6R%-}D|>M=DnSLJ9+D%jBZBRSEGI`yLWgl?MxImWraF|0@1|3UN{+af zO8$eAO$0%9l<@CHm^&p$q>@AE1x=OMDLp7T;-x<`zZ1F>OUV&!di~={j`-0}Ohq=% zvK7e@sgp>Hmt*1TWK%v2>TXcy=YYWyw1o$BA$ZU!bfe9UArP(+p=Y!bxdyGt)5XC zDMz$=RP5W}J;}@S<_c@&uwItZZZqwo<}iAKf7e+(){gk0Wpu3k$_C%tU6y55n}3uY zcQ6Bi->N;7uki|`urKMZ&htn3JqTznU);Hz$8EHP(o$!pJB?&aq@XP_Pm?%9Rxpyq$?@R(av9Xn zQTCKk86cFa?H;q`Yis2`TiszB-tan23%If}7B;d)Ax9eRfh1Zg9*U!RFVzOMC-mg&;Taw{8!eWr%#%Wn*Qieo<7i3iI@AffkMx7B%fx-gpslLs z*DFG^A&f)+l&VDDfL#7pq?9=HMKXte$%F`8rYA&@Z^aTiJs|@9=7b22D(VArxU*#u zVbBPXB%aWq1*#)1$gvN{+WA*$nJ$}x>PonJa-lUHmwMldY|25`Df<3C| zmpQ2~;@r+OcCwo?F#?H@o}Ffu%1#qDcKY2BQXv?>%2s%=weM@76)i=c(j!QZ>E2^= zY?bkW&HX;E{4HsAyUHW!bGmH;_OyNt^yvLndf=W( z=MC~^Y$QJCBR$@7RMNKf+pd)!Mw6VHqcvqavR;T{eubEiQ>-y0|p{K8Y(-BRp|H_D)dBFp;qo< zdeXFX&phP5RDJ@v6A`q*7tdWBWRJKeV_BA2Tv_AG`L^0T-^u|Na4DF>TS!67$FN`< za0CmeXJZNe5%C=fQFj%dwLZ~x4Amrznup@ytI2#>4H}pm^xqXB4|7ilzXHm^s}#y99M7k4+-6 z2R#f}Q~?w*U+R>M!^Rt}u!?&K#qkE{B=WvuH%tc@N(XS7gJn5tatZ9#P01y~cI)q; zQ^2xX$Fe!x$|M61Sk?xTK!jnT!vbKrTE~Kie)XY~`=PbEnOGgb61t;u07Fk5!}5Uq zNDT7rAZ681_IL3SHH(SoFu8s-OdnfLB};Hdc5gRp;PPJlJ^^NM2e z2>ynF=Dku+MC=FQDTo*tyc?nNnkw5>+2LjRR|HAEo3WaSu3^aBYCmjRT;HjcyV zVORwa-6<_nU<~*y559BbfEKbc0EV7 z^^fZMPhT2cFUhaGWCp@(DMO%t&~*IrIq?TBEzn;g3+?qS#Dv1kPEV%}H6dA7E$hLF zwJ1!XUe=}imdQH%(_mIh4TdRi(qLih-C77Y26d)vit!E*i2~`cz|;#B1$u30pn^&y zJs2fuvg-Attj$OXWLle}%gpBe%sA7gjC_Z*9$t$tw3((XrkCbX@>A}HsJtRL|Ebhe zk3wTcN`cB|qgafuu(0J@=qeHFIoRWirv~7?n8)!4?;rLb$)`0JqV__I&==e%@RJ@T zhbR5Facj>=zS1RSrc6e*(H9y37u*{0?7&KmGkX5@Hm1&L;0sv-mEo3F*(I~ z73j+m_zYQa)bgu@N=lRxrphh24~uP=`o`6RDnOhz(07<(9|mVSdX$T;-oo6x=h^yNHQ%Lr)LaL1nNyg=ygcL>n=i!5{ z@*dudPbMpfO&62>Qr6qV?~F+C7W(A7$~^hB9s2Zp5~iBfo#2CG=(E-X90<}w z2}DVjtn~F{iP&Brgq#Ro+KPn zA4L$49b%=#N7-iYfRfP4giL<5L);8V88CAw(a6v5_C*?3Y17L6-jf0Qv$Azy!1%;S z23%rDMuiO@o}gXS$2$sf^WR?{a6EI!YV;1x9VWJA#OiT_c!Iu%E}(Z)VO@q|tN2@T zi@&glt_0z*@g-?ABn8QVik&S49J!AT`8REAqAR`n&m^CYFSXdc3M$~gGIH4s!l#f~ zBl&&fK9jxQ2exB0mLuiWa(HOH-Yk-WDH&R+-Q!pmcq7u|o`nydM;FqcrRDYRCPWGc z++KX-r6e1V%Ce2-^->)V+izZXGk(Km5t0*{YDjkx{gMtaF4G-g^xmA;OTfAVjDE|E zpmr2uY>*K&6TeJuFjIc6lD_(V)E(mX8LVW3l6P^3WHKdnYxKGqtcMiYOL2)Mf>aIZKvHGpx=^jXPzNB%q%eQA+bUM# z!j}1jcXo7%S@|E9n3n4ZWS2Pi?63UpJqu4R1*jA@FXpzFJvav-AB*=T~k-WLLGEO{D5&2^NMJk3oXT8!i9c90&9movmdzmhnyj9{obDJgFKEnE-;SzwSAmEZ9#R8fPgwy3d&a{X_7^K$G*a_tFlLlUf+ zT!cKLCoQ_!g6IixD^P1?;ZNi_n^1Q?CkA>>;wTh`*ofbqzv z&e?#WZ)m+N)M$hqm)T~f&T^^CRWiJVbK=kTu_TA zmNBh|F37c2Jx*n#;DTzdtj%-^?`7B_c*(V3$E?;)V28{UJaCUUdQ9&`mI{6+@*d|` z{$-A(G|Y}xdYq@9*Yr3~SQ@fH7-6I#+x;Q4zPxOyrKA&u8Dz`$98A@?T^cV&$e~3I z8!jMF4D${ie?9Z;aCj^zl+Q>g>_fPbeP3I$=e!G1n`F#n79El05k3^oaz4Itb z%4xE>Y!j(*D>^DbS}H>SM&hMY-2V%c?huLeg~v;}qa^**2U1AeaGwRz3pvozAcDQk z!n@)KBpanR_t(&EV60g#=i#G&{B&(289UPKC=}7THwYsKteFq!Bfq*}ET&ca^axV4;hsrlA&dwe4I z*)D`@IDOV3Gs$9TM_6`(4kRjoa68uw7>rWEhmMt%PFp=doYK5J7IR|d%#A~ z?&sK=?I*Izu5|y3e z1nLH^lHuLeWawk5aZ$M@9h#SY*a*YJ;c?7*!EA{0(9a zzSE1OK)73ZqI?^$^m`ml5T3cvS0p@5!NT)50Qrv4m^O$4REf^31~C$K)mq$GAg;$n zBi}v=*((kt+k=pGfSp5N!|Ise=Rd?IxCb^F6J*H4e*p)8k; z+5bI_h;;Ax#>ukXD2p`&wJ@&~M}RP!77vlJS@> zcvc{is3W^8*zVtWC^l=JBui2b`P;aM}G!p!%H>0o2l9Lall>;fbB($tKRJDIAG-guqO$uPBQ7L zIACMQIvkJ9G*85vO$1Mk18EBo97tg6Bth|QY_2rJTmv=GgjkDTaRW&9aEEvSkdd@; z#!jh?^;eSvI$8S5p0}FpiR@_3GP>UaeO!baE|^kc2?)oUj^|M`W0(|O$Rw32xhYsB z(|Z2JH>3c<*7Lov;(SLWpK4Jh7J>Ds%gby!ZaeWqI7Q^$7Y(?0JTF|-c? zR>pjyL9QRDw#jj5j3XKjEamCCYO`W;`%8CH5(P1pD5d|KF?A(Oi?ON~(W+k5pK^gT zhzz2YDQg^RjoqJpFq+U4qGjl}{;z^Qq7ioLw$%>U4z>Mh$^0*F-uQ+|)GL8H0ypm_ zGYkuS#!#Nuf1?J3cwufv6%EIXR^R5qP(rumpwXiln^MlJrRU*-IF0WMJcgc3(4jLK zs|57qJ#Vp|jIAWM4P@^^87}4&i31Z53kLpwiu*UdEXjiV4#wtg1&lWTSf0kfu!bO& zx|wRWj&pp^>lFB5ilE7> zMP!WFI*o%6l4|g6v9@v&{!(!<11T;>#hvhBC!Y%QFYL2|17wB(OrDzKeIhPCsK@^$IYSxJ#6D!Kt7JoGOL;aM(& zNXUy3Ifz7$-%(GD&O8qRB5zPU7Fw0&9iI!kDlCe`fl645e&5HgIgZ&GJw1_tosL$X z;_Lp+oH(8cl07)SMvJhw$04FAd?eTzgho9>7F_7b*9sI8G}~+(D23rNg&Bkn7rh^q zCL1XS2XP~-Nt#SCQO6TB@>-qIVO!NzU~cqm3knZ0TR8R8~N^t@;mrjzfmi+c*?B*VX4MiLe3>0?krh$sSW1qB5 zE*nvK(J1aF0}VQNmwzKMq)5DjLl^z`ix?I8TiaD6=JWz{m~F^MSXrBc^N{zsWgU6H zsW^^g;OxxT&)xql3HZu)vJKD~oz*7p*M2}2$C3f;A5Yc1q(ZT@7UvX+laU4(K5{N9 z68GRCB&;f^T>2rvhz&BuZ)p^%W=>-x}gvO9Ih#nd< zAJX1S0Vfg~lZ*N-TO_fSlYu&NLV{1s#jC>P(`Srjy@Ov76;!ns;itqBjePKXAgD* zF4`^E*^ftUR=p{OEL<$k!WR;Ybc<-{7!V674;i1E;sHu9xY6yIHFU_9hg%8hp4T_v zx5vAdN|59o_Y%!wl4`3MPbtK7F-di0U5DG15R;AT0YO@H8Vm=`P4N88w+w)3tVD#T zzjQTJFNJn`-0SdNSjjphBU_5Xmsm(OFMYvXqdzI?!KxJRpOI+@7@~VHO{@21}f7`02AgdJoqjD10}Ss}RdHY>J%Xu`}^~BMmFRE1Du+pB#G+dkdoA*iVR+D*v+x>={QDoOJHcAO>&+ z#CK0be0L4_w-$x{P$AX;bi{XlhqxIWAbXeBltAFoCCxkUp7yMtv?!ssEy)Iqy1@8sIO>hhsOZ0u(`v1fRU(MjW z+Ec?sEns5}O)={0gMTIA4xJn0slpLCCKqspkTE%jC`PqE8boJ&$KdnG%U+3o)S-;+ zY%YAZmxwM$G(K7D2)2M3Pro2mO=ODM-e}In={4=%iT|5g@h|xt=97Tr=P)0^51)`t ztR{3ZT2oFqy`%sQCW}X|LUVFtbDYte;{d47BCDMhhfFUbgVf2mXqSU2?{Pl@iikNW zw%V$Spqtr&5ilUg$o8-jB~`2C+C8inXQyj=@lpGnZrGn8|4+T6iFP-(E{@uRW3?@; zt}7dCmw;!BZKJn%+^a!qxKn%pJs{QV2#=!{8k=;qQ}lpCR?ZHX#&oR2_2KJMGm&|N zY0^%(CxI>5V|dzM^a+hph($gSmY!|`^o&%YTO7Oh$Nl<@%t$Qp_DUqCgBf;RjhvCp zRWcsIR`)aLp6bI!Uf_0#ZAIuoe>r0FK8`IIH=-@18DJ*!#92zP#S(UC9N2y#uwx1K zN(t-#C^p^iU^`)&n@ML7xbn-?#sOasa1t~;+L(uDnktaDNikuUsKafVSaYESu=?De zM07&uegRcjC;M?BR|uK==c7U_3SIG?6hAu^lvym(yg1*9J&BQ{iM3;&*Bs0I7#D68J5u&{g^WVNkSEyim0 z66z8wGc-5NonU$^2~nLybbA~`Hz`CgoM>hSBN|7DswJWUaS-)EU78oP^vPXyoG?Ue zX4wDz603B8c9Pdy0*j+`7}m0Dqu17C)=lKdX^e2b74+Ilzb-ld0- z=C+QQ=6}Fl5QeyyM0@}*C!=#{C_)zdGh*`hNW?@)A|_-y;-2^&192_lZLz3%4aB%x zM^Vr9?rcKBEha(|F(K0tlZK0d_(q9%pn+*u<2 z1TQ8_R-|hy_cP)n_*1r+2uZ|*Oh-&QJO<*8@REZS6$auoZRJjY)Vuc)5@rPvl86bJ zj+hpW7>FlJ#Ag|Z$$eYzZZNPC6^WHFG1fQ--0daG5B{YyAw@c$!Y?h-<{yGPJ@#mA zLX-*mey7BT7{c7ZKEvjo2_LdtMrr@_bzblqYNuuBeH210y97;MwG4S+p80B}TD|4n z*h*yz>MH#lt_y|}qJ0ukRvbi`sEY>KSr;U7#rzfND6f3s4`S&J65j<9ABAP+vN6uO zSsLS8$QWmvS8~@W?jA?HWpygc5n_Q}bQPuefFIo=@%JoPhG+a}r#G00S41T~pNOkt&B<|yk3(JJ zK*Hnrt&IJ6ZQUOslcq>}tcw0vfc8L?-4#fCF%_@V{rcLC2Y5pk6_R zJ8x&j&S zZQHw+jZ;ors!tKV&z@|!_k&J$c4(uVL5DjY_Yr`I%h_BF+5QirLfmFn?%W#EfK@t$cZj8Ns?S4p zU$LB>*HGP1??xe2P)^~C;~+bm>MEyj=QwqLe~&tbr?Cn|U)RS=o z_!3p9m7REiD#X|;+=;pzIf(S11!C4e%my^+H?El+Q`E6WICa7F(fCv7IMsXFF zlckH2GZ(PIS%2xXcYaqkY)-hw-26xL96Mtt-Q zdz;7N!TQ)t^(aKx-%(?N5zQh*lO!T%97Mwdh^V*0i24#DAqOih4x(Rh2BMZxVrMX- zkMYr$E?e}*_Sju}A%KX+D;Uwegh-v{mBvAIeE<;&L@=UULbO(Ptv?X?_Q~IU;vlsL zkdpKTBmEJEm#?3hfMA;Nah4@xs`%|G>(J`F}fcwms)F2yk$#z|yF2C`Ir`?ZYs zi9sc~Pc)>aoy3L6 zW3|wf{UvyzfkU}bxKIe;?-(?FV5Rigi3y~364tG;r}Sa6n52(4d?tQ~kG}O%1-`Z= zHlpWH7meu<*geE&*(v|fhqmo3+k@AcK|8>*%P%38@iNS7GkofeVh|TnPZ83M=5`W& z!9+bw{=?eXeXNIBrIx~QW<86KzGBI&yW=2Qq!2|^q}LK6HGGaZhz6l9x`E5E`jv?I zTwnX>AIJ5{5*N5m2Hl5<6xCad09uu`xL7DeY>bg}wd{P^z zw}p8FCF5WAePN1!iIorIBN_TaX)s=Iq7^X7vym)^kPsZvx+>2q7#x=@ec<&JVP>$be!Fsq+tRfpt zo#`*!OdTYrzsmXN-#AHjkOlx9yqPLrxq~g~@l-iR`!7XZ(nC0Mq1FV^6{i!TbcrZ6 z4x*o7UPU#4Kf*`f0Ey`J*J8Kmd9u@>gF^0+K0qjxRewhu6f;qmILfLlLBEZ9cjJRq zx<*4xIF{Zh))!1eQ$TB&X}DaP1s($#h3G_%K8~+sM;cg=nlegqj70U(FMpR>j5S30 zB06KI_e&tYB)iuQX6Xw~a)70-cO7`Ij{1JzMABypSNCr$meNO47}EF6HdI#9_byeA zA$?m=7XyVDCOu*z(T{i^1x>1!(2_f1k z5lxDNC^vv8T|Ya`B-DAk}Z9Z~mkwS;Kgw~>ZhRR{_h zSq5ld9~q%P3$8!Qqs zW+0Js!l_8Q0#E-n_vs=LUC%?fOoJJ=?qo_#T_h%rkC|cYYHS!HtgK}OTO91_g1(=P z`#2s>0fO0#LBhG~4l#ubrLR!=9J^4tgUiXn^y)E3U8(%fTpnb~bffa_TrP!!>>iw2 z?GP3e>ef+rD){bP7LOi5h6jfJY1m!*UP^m8Hp3T?jTUY(%perw7Of$Tb}lf`!L4@;dL(j86mA@mehTzE z`tJHHiP7uU724zdSeu*>s!gtfUFTaPr@$p}55!t7{;X_35;$%qIYp17Q7e`+*Kom? z?giWW2mBb@UWiTkW!PYJ5mlz>gmA|4J}Z~z8IqdrEY>g0a_kRor6%Sn{-+%8k2P+2 zLSEvyshaaK;vOAg0ugKAFzwG18TRuP+6YdS5AKpql?)5+-zlex^ru{~-{emb=y0_2 zXrxTYKz>mVi+lNE+9E9=bEjyScYJ^Lh|oiAaA{Pc)Oe^(IyCq}06V%tm(DW%2k5Oy z{g(e6QLW5gnvOh}h=boy@2ErjV8=DkUpMgMc-tMj zP{2vvw>z5XUav~dIU8ob$({K8M$6X_!1A)EEj8mIn?U|X4U}ksE$5IJO!qN9 zp#Al|Mn`s++z4*k`~H=X|K<#WT9La!kxgCThXH6!WrYCKhcJpnxB;kkf<3p`@3PCvd07G8o$~%H>z9_~xLPC5SBz&!yCgB6s-bFP+ z`~W7a)7OOYf*ht0#ucGepF&mK=j(&Ps=x6n%P#!)KK|Q_|9;1RU*Ny5@t@SU|2EIR zsQGEOP%(P9%h3`K$T_O-o`CEFuwnIZKJ)%%@2N zG07%oVp8E2UnYRBhha&%YOJR8VMd1dAp{YUHf10HbjMXs`W{u98bmrF=RGBw7i4XJ zyFNl&K0=|MmF)GWVxxW@bx9EGGHCHmRJ)&2rAwrON=W`hrG$zgf6MVn%AXw1F<+Y2 zPf9HjMWt#;Fp>%T4NE8%QW{lvPyExg5K`8xb+|nr?g)G7Tb5P|2|lwo){fSmG~h_H zmFn6M5nu@eR1?6@y>x(N2G|@Cz{vn>3E+OS1ihI-bMzq6eD=qe)wNjNjuCkD-+-g)wMGOtUe{HHldnGZ}sFFrrHeh+s zRAnG7p4q74-$;z*Ns+ESN<8OT!t(>q2w;NTcbb|YW7b3v${d)ZzMWD*XH$h3^4=45 z#T7ypmHVke&v%%_JgN|*!8f8VPGnjRQ6qT`l`lFM1zKFvC(z<-rWXOyZ2;lH1X&bcJm*hqLs5#E8a!r5`~_C{Tm#fn)e-@xw0D`_Ul=h2n}{vsl~ z8s^Ty%gqco)p}2_busP+9LzFU24o9I4@Gh!Qymd-o7ghFnY$n|DoD@~W z+bK~ku~F09gyTvYtik5?@wc1k+cNsr+uW)P2`-Pml}JV<#i9NEvorw6Q_qw1iK9?w zoKjb;;-9Ply!?~ZMFoB;=Y1T)FfZ^^CMcwDpWq=mo7_ zR#(lHkyfw6U(xEt2WdCa&c|52tghOK0NWU#nNHq@7y!vi2$s8D8%US`xY&->q2BqNQ6H51KQRyl%n@!bM`&543C$bTk zrtm}%;S_u#L#&UUlv>KK<$z(2Rkkh+2yalbH^kNl%WgYYLqt&=@};!A5aatiw){$V zm7JZpAAEH{6c<7Q{KeD7v(mG{8`kKewjW?5Y6OMg;X?7(Lw;oUZWO=uj376!JQ

  • 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 z

    s20nO9>uZ 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 !ZF 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 n#sy6=~hOM`O8p-{g}Rt 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�t|8ki_~mdtIj$XLpvp0^HJDI18!^ks8^1-N!95 zt*RztIv!BESd>r02jrx=7nKjSa2YG`Y?13b&}t|;B=8~30H2PSK5FW%SJe?XF zs|@^Nx^bHmMcV=Ul%YMUatq5A!F+3Z-{NqOfnpk=7l_Ysa$LT;VA4b)6kr3qT?>V#D(8wn4CCC z*Y7eL6{{?Lw|RpDxfLGe+281Bfs2= zEX{yInmw?NC=V%n;I~1xfQVM8XJTG!v0%B;kqi}v`mBW_5BQ&UW^7aN36TIrzl$|E zEXv0E16sK+h0uWA5h6v`}CM!un{XK;jW+vDK)eK z19ul?{%CXkacDlQQ`l11eKsDb7V9&xdFR*TGZ+mQLL0EFU8$v88$cVZvU!flb8hh9 z;pxdyo>I(5ylFOni}ohwvn)PuiZ=a_G@8#xs=|zOf&k!|b>t3eq$%$iwQ8_c zi8WEG9cf4XJJ|e>l`dGBI zwrQESWdZFEx(9pBHs{kbJqovt8JaLysS5L^Y(Y0dMw1i&uIyvIlA~QnTWu&sp{~7~ z|Fo$m_SZ&K?ddUTFY+QmTeSOzG-h={Okr=mKSU1U@!lz)_usQ08@iA&mNzjc_J0CA zp_^>R;ARjy^h;$J;up`gNJ4>R)UxxevM*&7?R%jm=+ty#dWFu8ETv1rFi`V6%Mk z0%owd1fF(Jpcii``kE-w_yG?uBNtLE8RFxE0J*Qh@pUoxxr#9%HK``!h$hTAmjQeu zbeZFbYIKfC`q@Z){+;Wr)ttGv!3&H&PH{9=-gS5v4( zY#baB$u_Z^-(~k**zLd-K|MBd*JB_*jd8$}&pn?OrF;|sBAo)gViqa0s)7^hY{&xF z>EAPz2hVr9BoM@>rM)hJs;RrSSZIfZ1o7EzfYF*f7Rqvdavw+W7dX&V4#Z~+#Z;+b zYLbcor*M~3@{tB6#I=*yjLB(4nDPy##5T*5U3EnWy!LbUCmolf{y5WZkLrCBkSTi)Rn1Vw?4SzJ$G~P_a*W z`J0Ww$ei}U6@FDQ_$jyJfIEy&c`jJ3U)0Qk(fQ?hF`}U1P>rew5~89ZQT=8D9XXM| zsb`c;^M-9WY02|O9dXKJ;;zZMeLh_dM)H*!tHvR~=v`%lM{1Pz~is73X(AxAgizf#C`D`23IGStk$PT~m#7VX=L^e~b{ZCl*r7-s!i1 zGb85x7#F*TXNFp%eH7Di4PAV8p9OxhZ#Z@03-18u-CsP~)&Z>MEM#)TwcD(XYKQgq z1UDL9^YKe{8oc+I^uu@-p`W6M5Npon7rs5C0YWJc?6OmO$?@j|1yh5aubRiEt}c}+ zqPVHzd>L0GJ6*7!r~%Yes>Q4ykkM1IGCwOGgHmR0;R~ql7Fd;k1U3Pn6KRo#BP36A zu9D;@aDl4hI%-3NZJydu0!48AW((5!`NkCyGy+A=Ze?%wpzvNxc`2EU%{YQ2+ z>)#wf?!?*O@U`Gc+bnuquDj@UIX&%hAZj#Q+H3MX>_(_X^{W?4X?|^EDUDYumde>x zjHR?ST$7mQ;q{8?yTvOjxBtMdOf2WawU%i)UWeH^dR9)v6E#hJuO(Qvr6@RacbV3VGpr-vG|3Nn3XCaa zMtgtsQ`*D$Rsv4gX&HDFcUTW9iy2t?BFgbE*sq*Y`;*v^*xAkC?iXlF1_|&_gdav1 zoEgD@A?~n0gk;e}v}e5{2aGiaU5b5f=`r2n88`o;olQ}(yOQBxl>V6jfG(-M zBQ%IBfCjiYEl<577zG7p6Ex5=HcdxU5HUBE^e9GIGHMt=4PPhVuxe~?`rp9x1a*7s zJda1ahn)lZX3!y&l^nq0gOyAxz>1(!e3lL`B5#RlhVDT!Lf_C{T|I8+p;L3TB9M?3 za$GletELF>g+HjT!_Ury=4u^7ZT!dDI>ik~et3$}a_3ivq8PE0{!0Y$g*Q30bZKjQ zjAkQ`Wx`DV%E8V_@0daa{>Y=vq^QM5`}>Jo_vF72C1Tv*kt3Ta4WW6j(kLYsj5rX(Y;q!t@%b$QeU)cZmbLJjPKs_OL`ObbSpjLspzl z!|?ds>%CH&VP@&$pgrujjSvUp+5rUzddBQHz}iJxAY>v6FO8{znGbW!679-K7X;lq z$xr(Ip=`dsopvAA|Mce>eQ^H~d|1E#=(G3oVf}UUv+UlZ&$2)KdynL=`YSxoZ+@2j zdiS&JyZ->+;A8t+Jf}XaPyUt9Ci>j|vH~AjK<9wM%4?$_;}ITAAkQ9#Lp{(v{8(R* z_rQ>C?iYjp5$8e>6N67Il3@`Dn>w6lgPxV?`5xZ4aerjtv7J%aU&HN^;wYqIynw^_ zQ<9FlJUyeE3Nx_&@XR`P`#Tv4nd!ke{A#Q->AHQIdhbK_fLQRUi0R+DEIw^&jnllmr=)G`8<2_S3l3b{8yo+nf_dG zeuw82wlA~KC(fI{>+t>N-}+qh`v0uFLxnk{4u*D%9COZ*gVRoRejurp&CTWa@ZF3- zF*t;jIjVhO z!-sF}_SU)N zBsN1TV>Vn=G(m7-`{2uDP}m6-rdOPvGP<&_={IBrPZ@NX#-?a>gMAc~t;1GgT?M`X z-7@Rdm!dD)@s!dF+bSeyedX7dChfd%+EQ{uS=brC5Sq#IzXpX=?;vz1t*6vLQh$P) z=`??0I#q&4`OPc}Jb~yQz>dzyBC8Ipe0zL6@y*mPfH|cBkp0D%6fKvD-W)z zp_if(9d3ELu2EFoZw=2$r>dG#+7>w8R9Qft(GI@?B8Q==k4-zla-}LhjcX$erF}03 z+Ci|-pLjc`EyDxC#mOHXd?)Ux5H^LtgJcRPoDu3wTr323p46FnH;OF)|k9s0f%C zp$OOCWG&2bd6p>$jv+bcN$k7w6-J~?mR6#?(R9OrVJmo9mMM|?y)fS= z(_tKcAJN)zuUMf0r{b^T)LYKxWeY|ej0~91@JNr9k#+8gkSgmR)FmD$PNN=*x}3MVc_Mf#*JB(oCubnF z2vxpAGk^gxVd}kgK1GkGQ=Ho&2_KHBSTWA#Z8Rf2E2FPeY;PR=kv*Xg0WPko)^1#f zwG{DC7-u??KAiO7SCCW=!ZJQlCf-=DE2u-=<7k%)F=VhajaPik6QqRk68uJL))%53 za@L4``N=0wG(DwXNUlv`{|i!$icG8>X*!gU&Tn#5pHbQ=eJ>QFqKBfwpuIGo!FKQN z0^Bo_xe>LPNm|f^26+MU0X0-jSb{-wO2ui4&j1ccXidrV&s_}Vbh z{oed}{W13Dk5{+yO%J?^<$!vlK?{2gcxbQ-&F}}DG%_m8WwqaP05lA8gcnP)%kE*3{jlUHU<9r>8w}7uPlL0m`131_cmu zX)b<+pRDH&wtS|Vzk_hle2zK+JP+suieIu&x+n6x4qd1$-QjxGK?nruI0l_PWW-{- z-`)92?O+(Xx*h^$ScQ@^(M;8Bh!JqOSRzwrL$?iIUfu{A!0xOL!; zbmq!w-xn{WZ_Snd!2yh0NL=H;G=IX)aBruQV+#g?m87-xO2VVw(bttEOj(R403Vm$ z-0BRzir{?O+d1hE`tY}1eKqXjQa6CAtD=({j0=SN?5*524yVyU?w_9oBRoe)C7HJ- zL0Q|4a8$oD>~vj*c<^2UC#DCFkaD}lXAWTZq*5Btn(WIVEsdauW^1CD-3n-t?AYI+ z!-)RsJA-V6{&v)<;gl69@|PyQM89f|E4mM21B#nZw;tXG0SxJQK5&0&i)$h^M2>RB zz<_TRFRIjI6mUI8Oc#cT$XCCHj$$C=pPXw3;n{%-!8F{EPY{HOGE3tF4J0*V^2iDrdJcz{Pj9BYqnlfu7Nr4KxbH0POD`hocbrfGO4x$`nd0?qK3rtqle+0P%=NKy9YF zERb+xo%|d^*}}{h#n>uPfQnh((C!zpP7yELNb17Z@^{2#z?}(UGIq0zC*2oZuYZ1c z5ED-n-4t%(D0>mB)EQX<4S8>xkhf^li+D$%HQCX`FBn(1{Y#RvhrD+IZE4Lj5w^Jj z9-Jt;?(_Cu7+GQ>9`F{W{?S(dtL_o0GWM^-Jbp0MYWZ>lwrJekxVHYAvvR93I)_=a zvk0(UX(AtOlx^-Q{4$(ixlSiA7s|8oAafq6e3Ls(&L!V+!nKe>_vm-X5;z~@^s;hm z510?<5yV_8$20#7me?g-Jh1sy@7N%bB=2`7so~k0t_h#jK1Idf_%4l%o$vsWctVjt z+nsZd+h=g|?OKhomykWBB{}E74P|3QL(f=4Jd|mSCgH}^pWT17_MrXX{?>g`8`+!q z1PEER7;?1m7~TX=Q=pCzuu7hR_oRH4m^AqH#R-=_2e?$$Z1I%tw3dTT?0xM4vii7H z+nhXbR-XJ0HNeMcq~B_r8sYJyKT^hUHL+o>HO+!^=$7E#o{dR0>|5^uOtd5qKqfvp z;hnn}1xOD0Rv&HRLH1m*SwiTzCcJ>a@EY(uLhvLS)^jxl%CZ&{@Y~yK%;!rvWd9^D z(v$bV50O+f!Lr5cV4Iay*B|YipvWldnx3I|u&?hOzZ@OQWO*F|yR}HVAKM0q69Pgr zPGYf^u>%T18DqJTAu5^*KWRk)EY&t#*pa#Rn;hn~?n7V;7ZeIyz}PALRm+-fz+@I& zJC%n)=sh1FX7hFO64xAvYZ9u)$V!nGQi-o5;GyoobJb@sT#UVzGs6Mo1B)_gpYyWd z=Wi~--5*eQ=P=%8S1}YX8(|%xmBLwtG8`yJE-InTa(!rz`}W2>W+3KU z`jK#WTU9vHu0X~JcUX-w@J0=vFEMq@bSxdzr(>5tp#28!2QVGRkgGEe2C?o!#y6Gw zuoanh9b?y(RCeihaDjLRJSo?UpfC_FJwWDu@$&+E3N~P-bQ!? zz)Z?C;`8PF+MQc7FwMo@Jm{d1w>%aVSW^B3c${{sOHUZv(3Dn$=9?gp(^}oN<$6cJh4+{wvdsd%N9P80$_v^J?#N{5{<8UA;Q~F6b z=WzwA&1?mFPS&%IuN`PVO{QB{jEd0dW}!HG$fyc2ps%%yVH<-C2Mbk0Yg|K%JFW1x9Y$>3pQ>al9LV4KtcfikSGQq&oAqWe{(7a8OSHmw!i^Wz2v4W9WZ^Om^Qb6dywrjJVYOxc$9`H?6G|+7J5{ zdQRz@r1OYWKFANTv{5mn9gj=}&JJ9B{(VN`41<=$ZlSAWy8=`xyhv$TA3 z&9i=l6}`OT%@TV!K>8YL&v6TwwfQPt{GGb$FdF(dG7=Nf!f}i-umxox}IfLIK+DrFU(*b@vg;*Xq!tKN2N5yS+;>^9< z7$AZC$s6T~xw166uh2XDc;6~}Mq;M~B#<#|1olvqAxJxl<|Xep(nNBCvwJ^d8!C`>;B9uyma(`U0gPXJ zna6y{&&UJwgYh{swe>Ni!?W_h_jXbi)dQd2GxM0=`uJ?@7yN$5X8^vFecA+0TWh1Z za?5>N zl8&oo-KcPU;hHi)&_r29>q|{+k7GAozOn)93ShfHKzeM1PB_}ej{U6>~tY(0>*c%2az^#i#1MY zV0;5dca+yz2Y&Izn^P+WhTDi*V|Z!7yOFM%G3$pgPhVE9(LDIJ(?8mSwJ3}o<*D4k zaS)8Qypjvq)+bQbW1yGNezG6uneY9Rla3;g1Thp@pgTR&&IIhO(A9*p6UMdIubYaChz8f(fMzzF^~L+LVJRT9z!NN%G2D<~j^zTF zW|5pU@sr@s|3ntoFf2lo*vTtoh;RhQ=^b3dPDBv&Xh_PBOasNyP#OB5;QSxWvaOvl zrsKsaFQ}7yOj?dFC1bX7G0VQZ4FA}F`~Cc5zx+F&XTSR&;P3hm%op~1Jkyta{xAJW zcJI&e56{2EbLtNle>Z*q&cA>8zdhIY|F!ad z`=g`mm;dld_Wl3y?45m)kN>Y{*>^wxME<_>|IG93H-Gtg_T|6yJo~=!Jp0}LbL-m- z($KH(@b6dnm-eUbZfa2T9GvD3c|cO}aaS^(+%4vN^YEaTJR==6a+LEsC}1!gAOqx- zvpjftz08EmWG>HK$QqX~WaGSq)0<=ly%z?HlkU3|1i6V#fUZ*WW&Sl16~2e>M2`>ByccBu3#Jj&I-)0M$ct1^f#0fQQ(#uSUTWa z%d+7YN?0AeHZ?Ku&D;5gmWw0bz4A6%Adb1r5MI&_+@9k*VsT;N7?z5|rw#jYcxzM~ z*LyFH`ndT>1z_7-GNPrvg>^UJ)P(Y8wW>_TCYnTUxc?ZXzam~^pSIe(aKxy|#>#x{ z5S|t_0}oy!y(n|MH*7@0JkAU#`w9!R?jj1ZTmh`$fcU$Zq(O#(c&J3=mGC9dI6AO= zLd%lWFABw$S;`QjmlFQXMScX29B-=)eNe5SF|<`sT1Y2P3c2ekG?Zy;_Lg8PkcfU_>U@io zYO^opTRIQ~G0zijD-QoG@I#Ls;BW+Z!cnMyg)JcSdMtw2j7M$_DnjBv85dV48ZpvF zA(m4lSnT~^tq^!H=Oy0(B3GW8dTa(*{a~|ExqDF&35Xl-LxA1tH_oGCgb%*_Xo;s7 z$pJ=t_0^H$JlX^%4-lX55E>;{{xahz^^xl%M1G$b)%sWSS2OSz!D8b<2MWd#9eRzo z$gbC>HtI`wnYR{r0Xh*_W>!EBJZK>>9sNbFNWq6!%tI@HX6H*x)-ap7K`;1FxgqCc zNrmXA>WZb~s-y`mJUbfr+gb4@*+Xc#P!AIH+-G!f-R1hSyMpPV-#_F!F-C(c~Q-B zt~Jd+K|_I>8`xQEqlKM*ez_R`%8M_%Gg0{Q^)acdMygBbUyzm9JlXn_(%Q_UdW=n+ zGgc;LJ7jmH=X}zf(>%e34N7i^$bl2&Ak7hKGDd(&!a85sdS!KEVlr)%cNnFQpR;4= zq716GhKvwQtcf!<^wfBY^;OXmB9zY%<> zbC};j#6|eI-Nd>tWJXLNXcYhIC;JBXD%A%|6Gl{mz`3Q2GqqDNVx} z3l|58(>w!w5@@%2bBotg;_}s)0XPscpmhR**8o5jXuKU{>w zthHyx6V-QfebzJMhcb;B4#0f>yJq-&cicmayBpdxM*tLULjm?OSL^*W3< zq%j&2eieb^I+~=1&M_JHIa>r>W)2~PnNH@+Eia$j9&|UP872ytiVbq99UB6aSKUdb z1QzdjshkZ9%Ebw`)&AM~+Jp36p>~t+AwP18b% z-85|zA$HSuhS<%5{v~NoVRo@h^V`kqc$npSS6WeNyBl?@OvHw6AR$);+aaVv#&{}ntRYZK4g6X7TO%hha8JjeD*xW zwZ#^EfbTb&3-itS;@#9K9-?9??y#?;wMi{|m27|nznrD+9NI^mPu%bR@k62Ll2fR`T@mbg} z2JRzH5QbfS;hM&b`bIn;UC&y*EFa!uYqIMnbHCR{PRsj>x4n3sm-K>*a4sn)lw4>a z(F#1j;)r8o_%?*6V`EMh#o&}^iUjSnR={8-=9bl3ifK?wIv%BbK}Vww zjj1ac@yYdst7ga4V=y^t$U6uZ2bVV_rM!gcWPid(oYa^eE{_JRunc!-JD?uUm17fx zHCMu1^&*<0{!G*h_qMMe#l5H<%~i*M;}zorV$$(lGk_CD-i^=$f`&iv#v#WxF4=}n zyBG10WGa<5F3Dta{l#-{%;r-Vwp5kUn3-EnF3ll4MRS0u2$9z`Ko>#RP9crZJ*0)Y zO=JQ`LR|QQgpE#7U05q>JveNUn2zSW)81rrTAqlEUDV}`NZs8g;+ajXs?{oQ2yI4! z_Uho2EQ+a53@7y_>lqftpRcSw;pKc7R2x9UsgH#we}pKon_@4RvOljkV#kL%!F$7- zKwA|;BH=j?;IeA;&AE)M?f_6N0<0TzPUxE|cVCm8S8?xU+__;DSi0yn+yrFpU2>gW zcF8tk;3B@A^F^^sCFC36+UksJUYJMJ#k^h2VSbrcm&<#z;55@%kl*AeAL~bc^y1Pz zn;Vzz856&B4~af!QhFFWZbFdv7l&%2RBUq^pUy|A&@mv!mbo!RnFU_+c@wZEgp}yC zifpa5$6Ko#kMBQfuWoFtZvddVpYtziGgMd{IVWTseXhCIYl%PBo%2 zeFPB;$H+sGUhS|h)Wg>d=>tSg8#b=YUcpqe`b%)y{l$SJhPJ|b?aM8pd`tTGIsZl^ z`IgL|5}2pstw7G)^5#=q4%%Y0NuQbkz}JSKdz6CA6N{h)MpaR%OWg9`q65O*N)4at*hE6aF}!RrvWi zr~sjn;{FQY*5^w!TDA2gnyq{ZOb~yxDCPt8i4Bq-p2f`YG_H;?u(jV!tEIgJ2yrs3 zUJ&87R|919L7IrioFjiW$ZCryqS$Sw4h#dCJ!S-hk911EOny>im z1H(G)8wMLMZ*}^`@lk4Nu^w$(d6H4Wx(Sof&PfB;cntCn(Ty=>k`akz)NAMo#+6A% z8T0^HxiBh_9UJ2KIpSny(I7)%kLqw1;0_}yI#5+k3X@=ng~s9amu|F@CjDq7O*+zQ z8ug@=w5Thsq(^;eC0#nxN}BYhPh59d`6k_IK5O=ezxzjs!3TT9>v;dwKYspR_lacx zH*5(1sW0L^Jio>BZ~xL4*}Z=OY1i;eyFxst_JzmaKc9S`2<#nc9~t259r5O^UDzow zIwyIs-T#8^M-LHMXda#Q`^R?fd)Q$p+3aXwR>gci9-Lf9MFt!|b!qhlvyg+= z@DjttFuYH!>3LZOq6OsL0q$YYuhoG_Ic~L#vpO2DegK_dclT%-_6|wV=Qw~# z%{u&JTdmko9`7Hw(EiaJ9>Q;rFg?dVrttBtfu@#l*2K|c=)L-bsjhCla_vLOkdqaHuB1>KbU%zJA%K$7n~Het9) zCkrsdY~b47eAe)X=^=)F+BEb0FU>&NpXslP57X+VGD*Ik#ww(@P{+$8Z#Q|y#7pzl z$T-X_J`L>q5iEly?^ql^!oj$sX(dP_oS`3~j~4FsQhRIj$?8gh=4`q**uZuV*YfPD z7WEBIm3l#Me1Ib6{y*N{2hPsos{bD=RN6v~Ev;0cy(|g$UdY}A8fdy?At9TPv>}Pf z2B=B8Y_fNgE&GqXyCf-4qf$j}6~CgbN-MRrMQtm!ROvsZwkThPHYzA8DB4m{K~bSa z3-7NrFZg0^(2@7D;16}lu_yy5g4rud<_1z&H zP1W@Lz(DG+o^4Sz~-fm1^!{WYV{GeErPaHsP`Hh}|^g2g`A6 zT}~?)R6WDN80P~NE7vtFd9OaFmTn(eNrkX}WKOcqCMYuZ-g6q!kQiq);)F(d79yi1 zYXS%C-X!1R9%jQz8^Ht$gvQ5oNe{(!dzQcX5~3pN?Kgy!S%w8`raPy)82igB)CdHEqlopvr}F^!?-<- zV+y1(UDB#W>w^lD1(nloBlGpY)YRUNM4{5ER{~yFJWs zsSQXcT?n5VYRtrfo7w;6moyCpYg1OS!|X~j5#Z4auWhu@OaghXm^=Z$$)yiB(mu$- z5V9n(rpeA@`(|EtqBub9Y1PVQU{@m1&ubRN+Bt8h^3^fcR+G^@ZSyQzr;y=l|Ke;4 z`ArWQ=rxg2skJqp?^FBH!z9tSNT=yIF|I8N7adj-OLJRgTs?^T70imU*svY%^(Uz)p6@GS z8zj~4f6QmA2!YXJYG&31cR8Oj+-|_>{iDs)h-@t0voLNmH(9!6cLk`?1JYkxV7>d^a5KH0CtLi8;c`E^Q&!cX z1+oH0%}NN9MsF-XxN`Y&E?8N|mwG(rQL#o?nE~RX)1dqP|qj&i$8iVS@3LFzT||EvpM@yuB{q zumJemSYw2Hl_p1IR%~>Ihd-|D8ufvMaaNDihl!4acV6OhmB6jFZ7rVrNjPgb6-;v^ ziM!SEBzkq9?%RT_xmD)NdP1>m3iEQLDi$|m+mNN{+Zg26XEe`Cs1QA-$zu3?p3KLO z(_rN~U&LOl`d#^mNQ$x^=Fk!g&A>oDcNXaPJf@}>^V5HRxj8BN)5faZCLU52b3!*a zVlq@wx4Qxr@fDVqbkSl>OhLh_$29|`)~7ok+=k7`SlF z(1;c$Bj~LME)vV`LwDuh3UMn2}K;)qdc$S?!^_>^CY--o`p@M zB5*+(kD~5-UgUGLh1yu2lkJ^Ol*~9j_4CM?7Fwy)ni+&Kd7Sx63(1Pj(-!;ps4J;o zvZl{eyC^3;kyu$r9F#-s2clCzt71sT*2(yT2~#f@xrXH1*sL!5LLxr>4hn)ggjzpm zjoU{*9b4_qCI;j7kTp-N%2PpnUPDa%SeY8#!gfA!U+1HahrT(4P30xQ>19MU)0U0X zxfw#yr+LL>DbgJ2m0O;+Sr_uO&$hIE zolN2?%TX73F1jqNrw!!*TFzK;_Ul)?{@mA{{rYn`f04dmZs*xl6rMnH!@yVWtoX7Lg!klLj=NKr_XXn~i(S|B)m@fA3e!AG+!*sEK_tVApKIG@| zr8;>(KV7W;R=grLottx>vwRZ9=G6(UZ)t>L)K0!@J9oo$-b28srWCaDpm{5?#9yE3 zx0h^57d}b2T;g%J0*M6+eO=*f6i^Z0N`btce}3(?XM5c>i5qz7lbVDCyWSJl_X?u| zNb(cc+iKR=uY=c+*N z&eXXmx>nfxQmYsC_~1;>CSi$R2yT0z!^s&lbK3sT!CtI#v^leopuIDnoT14u%uJ5; zcjgaG`lOA-T0?V?F-mQ8VSZ+E#xCP*8uj$J^BE##CqpLc*%mz&j!FsWy94 zG?r#cu44>8e~{frD}3fk)9C|w<}UIR>^4yj{hD;Qi9=cp=E7=Js|lr{i*}Fi_v->y zFO0ZF!1B`fb*y8!^FMcgTk9BZ`!CijxHr44FL|@AS$N`D|9j-*H@heH2RGi+bqw*G zq(%R<+f|*DG!*E&{AHtVIdD>I+Rgs>NP)hshxz`(CU@uWZ*qtEo&EeK_XO_`^Lr<7 z8?YRx{S@IoNWTAIlhIfE(1^SF<0J0jJ4f8%XGh#^{OY|IeP1cjg3XOPArVmO8p4{r zXYRTds68##kJa`Zit8Te6=xU+w8Jt7P70WutnF#n{8hVlbgq1-+q8z`EU;j1g}r0* z<0~mnmSlDEw1j`GJ7(|Z(8&-mQT6bzFQS4Ro>o#wVkL$k@;Ls_#A7Ln%(@=?H; zd6r$Xb247+NV9#AbEWttNhl|6-hCSW-Md>TboK+xN3f>mtsKb3mE~b=H)ki<&9nH= z%uREZn&S@GsTp?O>KGYJ!SxWYZUt5kq4;7!4U1`J4){Bvub7@Wz-dwb7^T@m?5fG#zxeLMV(&S`Syt1niK%cvllaNC-EJ8-VrU`6NK0Qj6LFe5sde+W z=nwlNgWvo-eH@!86)-J}`MJ?)?!$rqu^2LDa!(go8Igr*XWhp~8L4NOHO=jDwY+ac zaR%;+>6CHYZzag;R{fjo>3%j=@;p3t{Jw-6T|sXJQ-USg(yJCPUy%Fm)I5?!r!T21kE8p_h}(a5W(=~HD~a%7#D zuD~@hwZq1+tBj0TOJb6x1b6RTv0EFCoBUJb#Vc#vCdX5JJLR^(?q4GKr4>zXi6l3p z^Ye2fBev$k;*5-pk>`;S4A6Cr6^Q3)$iph!(%KoaUMb0N7M2t$N31 z_`<@5><~+nyCWl1eg0ayn7*-zlV>7d+gFCioGt23NK@jz>O>n zX^HmdC-6y+Ur2`AS>zrtyAb?XMYj-xK?@1AsWMi?(h%FDJm1|GJdGfC_b8g6S_^et{{8dx0sc7h#;p1sA?;E{FAdx_w_}2UMO~x3UtIk|5C} zP0XJa)~&ZRrus_4elPb*R7`+n1>v|NUdRSZPX2s%}N|-nsyV(G-sSx z^Hj6Iu8~pFjQ2Mhe^oZh>*|EOM!@gm`x#n=Nx#)m`(Ux3P4yMbkU>QbO&y}W7yX^? z)e1g-4ytIajT9Y4ohQXnh-BeSnpx3urBr1u$gPMUnjDLpCFJ83@PVN4?e!@1BqlZS zTOPi%EVU*$Q3wN23meIS=@FgVzDG;`JZgI2xp@fN+n%@zX%myZM;0HP*}K>p{0lS? z#-BeFIaQ;nDuzh<2XIJ*sd)TV;2Ho#L=cqlAm%-|8Ovfw{0iS`82pM@EF^S9GK;N? za*5oA$^PEuTu84ZE1BG)(e#qF0*5mBX24J=lh_9JpvQ;^i5re!ML-#*TssSs^WkUsm*+^TqVKrPyd>;ghYlHgBF|}&e=o^F-mU zS_=mW5Dwm|iT3D-d0Kdt>de4Mos^6qOl*x!us3XOi~+Sr3GS#2so2m-Z81Wf2^{M? zX-mxDk`=2eR%>=YHhIcYs|@l70Rnc5^;dZ5xksf8T#d7Mu=?D>|o8pT&nO( z-wL#3D!372YB>rx`9>Sloi(wEX)&yvqHVd5)klnV#yM*r<_eeI2ztm)bSu?DOMbmV z*jn~bb}7~@fpUR*OrnbJnMOiGCTp5oLu#PeR^ZR?jV*`|U-fmSomrInvtnGw7&)~( z9w(NqJ?#v!g$;{7f==PtrTli6VbC8kGV|_%yQySi6QyH16?|=I#?VhJ4HFP_qq#XX zZiD95-b1T6ZD%nD_ce?M2dPh5=4gt1Yz=*cy;+3lUWmZB*6QNY8Y3k`Vr_fK*O>94 z6=OE6uP`_IiX3w`9`kHWip9dh$K1n2+9!l3{H-NfinLHYa#|E7=6S3Ya@`m=`Lfm~ z!(V873U$G!pSAgUT(A8V>VOn14YEP&d_2Qj8M52QD`MW=(rbmKeFa=aAD>>Th>Aeb z5Zn?nngu*v>t_N_gXlzlhW51B3aH_$XiH4)OXZa{fV6*=t0`L9Vu}H0yV|SlM+mxa zXRYGlvpitxAJkk4xx^XZ6}m!Kt1tRYi-HTcrg~ zQ3WnJLrpA;{}~ZR!@}GoQ>)Ch1${eyTPo^La(jGMn`79#=U_;_eP-_!ZCN$9Z{L)? zZnhRiXnk&bfGUZ!W_Ku|&Uj*jeY&vA8-{g(^&AWeA6 z5~p7aL{hF_d$%7m2DuRIq#r})=#`30Xf-&ffjVPz8&zUT=bVG^n`=dYYcu8bYjl$SS zargRT-Oc8jc_`9w4Ao+GM~uuI8Xc1^>5p+9q8Q#QLRB%ykHu92UM^eVx1nNOT2nEK zEb+?Jr!klyS?yqpOX5bcCVG5LFqje5CXEMUaqCVsU)Y23Woazs!BElq3T+9$f*J2(rLjc4fJM|MW04_M>4bKIs8>nYCxU>6BrSSIixkHm;bRgOp+}g! zZW1b%8#HCM*B#TjT@{%kGt3?QuoV6R%fzFAltHsUz3ess2i{X0ke?iO<*FkS% zhaTbfD_j&j!b+cxyvoWr3QF|PW!r*>vh=|d8L`6kysn##Fe|HoIq=9pWMZ-v+vl^I#Bcf77~r+& z#?EB$eVjix9B%Js%n`~EmUWt%ZlDO zm7C76W6%7)4v`=@SPuPK<*aSyQjM98A7gs^Sr*Xdx@5`p7DpTURN1k@-X!mDHa8TD zG@93!Loiqv-h!^4yIb6N*g6@=X)c>oiXoL(pT?{wmZfVXgVl|Dm^Jv#h>15Ij2s1b z%ud9~hLm8t_1njRip%ss-HGrSSFPEd9XAPBdqNcmEk8dh~&jU4B|ljx1#+P zPrbw#)O8Jl7jvVYL4swoVgwqF!VKeAn~=#yVsQ*D`r;Tv#*vndgRqc<(Y)un&AHej z0j6|p_oU*LWp1Yu+#QO*$}L!z6JuRS>)VN%mb2{#KT1l*cUAq;@Xy-=xxJ9hK{5&2 zygSAbRiUHXbVfqGpwYtSXBNT0!z_1Zr&;F>GDcg=$6@b@43Ah9M~b!_AIOI3!E(u= zGz)g@wKCX^uNX8zYrN@BEwkTX7@1+0M$v9k#Fi%<`RXa@ky|(%hOmYvp2i>C0x|?Y zyotZP#P@~xjn=b1tI_zJ`su1ILXAndD>?E^!oM)?U0d1yi z5@0}jb}gUBu?B}JS;HFJ$dD{;N4Y(!IA3S0Esd)@MbMw~miL6)!yO!cOk12)M+wM! z$a1`VExj5()l!yFSsR$+j_cnw=R3{iSkwF3XhgX`X$M=JBz(OsO!P~$_?};2GF1u` z@0ev+v#1pK&K6(sp5w~a(z{ak>X^H+>Gn`A&!ZFy?M%iXk}I@7kvVdYYlqZ8ByCjA zq@sJ4@g!`EOZUBQ=;lMIG*LSKl$bekHzM2;}4E z4vW**tlhpSu74MMY;}~Dpxes!Vpx9(Z&-ktFZ#~n5BtgN{&6jYALGolZClqO4|7*d zp!bHzejdCca(CjxK5TaNZ?cG&_(L-`MYhfgb(yboVUc8~#zAddAFK$HIIT6N-urXH zv~sfDsCupk;-yJd(=$3*lR4sbIQl?js)A!Uwc zv}I&@8Vceu*ix!IyJc>BLM@ObAJ=s;3enZvfom+$3%w_} zIuUQ79jues6s0@U+QWMHV77(Kx|K)QRK7%Pl&!IT$*p#;=u)PncvMSqVMh;#6d~H7 zL~F)g&o=F#!j#K_AZ+|OILHcY2F%{A)g#%h-kaSciekc;rzv?3vY2fHh|)NeEzfV| zO-a79B^0`D;6{&G*mGzft1I>G$3eN5EYr^&Gk3Qp~7&LJ{YVryhSjO)+i~(4QQYttqCRZqe&EWHNB(I>NRjI;5-l zUUFq0Hig#sT)X{NEnG|kTPy-`J}%degd>t5!vaJgz0%Gpd<{(Eu9QOr!`%-_|M) ze@9)mdTV+DU*iv@4l9FY06oXnG5d9}!STErctREpU&mGpa(YF3a;$S+ZT-e|n})Ur zCio9uIPgs3q%C~bPhLGBQ-D6zPY(FT&A#j#Qb%olM)1cZmW9^qOO|K>$0W)2MD>ATt;#dtoj$ zm!zucTQ3t?ZK(<}Fi@Ubga_TSpQRmSIsevp9tn}!&Y_F@I&mS6XkYabU3R5wyEZGr+fK|1_pqC@3y+;5ToqosJAJzl?aKN-twtSZWVD)h zKj)rfq~vU_IBPmfLek}*o%IE8xA_KMiW|)Zsfebug=h68XZwz|FKDdBFUqjqgE;He z*BRXt#{2&&eH*8Z4PiS1>Qzpsmd3&omRo5vhi~sRtz;c#q@%H&Be=#`1h&qbW*Dy1 zk$5bu7Nc8~Ns;(1KlChMvudqe$<^AgSkXy4vZ5!yvPd@KgLgc!3y%7M>CB_GzN|xz z0qT8Rwdb`PsWIp%(k*Rob?lbBvh8)6TrUWiFN)(9(@yAPI8J0@hO3V!_U0Q~$53289!Oi#R``F}~mdY0fe)Dfk(ls%m~tGf2fqfTdOU%rezsIM9=?D0JEkxkEQ zkLSbRH_9RAquCzM!@S@8T5t`Hy4sFWcPGEAFBq-d<9Wl+tghUH`Xux%K-=mPoooo+ zH$5{R>~mf|l%G8_2i+c~Os44g#;4I0w0|0REtZu($}6)x*ur%Bn*Hvbo6+yWyqlW2 zNWNo7=Y_9fB<*nIByQimeumv-IGQh$z#iW1;6*d@L4=N)66A zqjO+@qpv3i2DY`w*Ya|n;_V&ZH)30E<`z2h<5SG?hnEqV-3xJNrm;S8V(`@rV5XR5 znmeQy-I$Z(pP8Jb=FpbViCul+FbXcliKR7rL(3&_7S?QBoaU$&D8&&ps)2zauUe&k z5D4C(31&z~SuVbQW)5*7uPI)_5XI8*>N%%dvD%e|m+RRUpZOU-=Jvvky$W6kk33o5 zL0ZGMSz%*#=n(mqNu}UG7K`70w?UPg`gc&2q^=}!1b|nC=wA0OI0;qAcg*M2spjKb z_OiOXx40B*4=TeuNs*c z>*Zg@8O%Ypmj3z2;Zi0JnH)i##wZeGDAM9jY@j74<9>eiIq-&#Xv}w~;W)4JT(~1T zc0JfpFnHKF*vpeuz<~j^QNfRP&)+MZ#p$TwW1lK-*OyFN8$D} zXy#n25Zu~O#Z!8Iyi;Rs*USiernT%?TSjI^_HaK5OQi{B;l`(Zvc9F}P+;yAmR}Oj z?dfwatwRF?vQISJ$oRP{gs6$-UjoqR^S?53c?HFD#FPX!c~<5lC^0b))nULhKT6L( zR|ri*$!VpYmh(~0FKJVsHR|SknFVc8kGK7u>hn9<(ycE3j%xaq+T?(uta7@iTHl?4 ztfg8d9tdY_x-!J6J2gLb@4#VXOGRcl!`0Ur{;7bUXog?uhO4r(@K+OeD&T2c!N{1r z#BlOc+1iLy;lj5DjWyo&oVF8*VEootJ2OiYxptCq;Zkg1dlvRBt*yIqsa;=8M>nTt zfQ2iJvE>?Gai-0mv14JqHGE`(duuen*JKLsL2Zk& zZ;=V1Gt@wT%M}f;3vtW3%AI*PTdc|d1{cl zZ{um+&|H13?1IX3#FxGsIXIN-WN2H&l+4(vc-OLiW{b@=uS(?b+mS%y=@`S~xe3G9 zI9(!W<#jr#!x1YZ&p#_1Uq%H+8sBt)2nY3qPDGsMz;b9cTq=}^OUewjvVegxArTuF z&K&gByscHyMw>M{EPPejqj7lpme$6DtgVlli6vudi7z1 z$^~qOq-7fn&PS^y?Vv6Bb~|Jz=(mhnYs}xytcpd#Toa!S7Bl%g&{CQWLiVfJUAWp5 zw>+o;$2eggY@C@msQWYhG^3Pm(w(_tgv*YzLWx`pB2Sps!t{Z;(b)zEq#4gzoTJ}C z`wz#?JLDTb=P1HPjBUkP=6L}Z<1nSktW_VAFoDEiv0~)syG`K^p`0r#K%nb#lgfjE z$Y6Q{cYpXpoQE|-rhc;)n$6R~!!bGRa123!FP?LDfJ=U6~ zO;~YwQq_jVMzqk5d$p^>nAw`nf?pumPWncay{Xj553OvbEBwEqHBf+s+B$B@oQ(@> zXQ*7Q4l&qaiwvT;alE&U{eOXf`c5TgpGPmkWMkRCjtT6WXu z^|@l$iIo-Mbhuy%r~1)yz9u+q5Vz1)Sos&|nBc%c`BzJV4;rMV5O2&MTu4;c(kfX_ zA25Z2@6f+^-Z4;LnAPe}7FGsDr+{aY;g??wC^FpXrSX`rTdak_PwjzCvs$>qm?{P< z^38B(>@WIZaTv+Hy8XN)Ku=*fn59$5vvdY%^ZK34P^EI28l8<Eim#SKYrXiH8DvWeGg&nA6-HX|BR5`Vp0P$7bii16^xb^Q=rWho{VSU=$uQ+r(aF8YK&7WPy@D{)KdMo%*xt(kMq^J@ z&Cbfl9&MIwlsh7tDj0d1aTHP)=BC5QGG(Q0m$o6Sjtp#%^`Wrj_@_{hCNy?8QSpZh zR;4ESDvVyj2;7ffLffZ0?h(nNUFtTZY|=^;`i(M9weCT-OCqLT!^>tVj#_&2D7&xh z5uTR6GJG734GbKuscNbV6)!4G2`R~;qi9}Wbu;BpMc3dm-Q43g6M!@{%tb6;z(Crt zM%|Q|mQ29vc34C6)^In1WH}E};zZKdDC53+z^E|d+wT!I-OF38Jibo>QMS6JF2fQo zp_O~umZiD(X-M($@}Yhrrjy~zlMz3=OcW`;wA-?GPkt7U-pcn;aNFuNT|yPjd6(n~ z(>IgdaH7ZyxhKpPD++C%{9}WsciLdXk&V!>bJI+_aa=Wsj$?y3vM~FH?EE$SgThZA z=|+6VMmx6E#y2CL2@HY!cd!%4I%G8|GZI*cpq3?$Teg~J?R3;fYD%=>Jt@$C+2Rau zA&r#aeswKNx|k3f*&~f!3CvQ%rz@4^HSM5)w~Vzc;0Qf#!%QjJsH>M@1sbw|t&nIy zCw!hWN5xk#lN8bU*b$xKo8C*)N}-i=Q6d*@6I3=bD~Hrpt+USS;b)A1?h=m@o50a9 z6WhkttJX5LQz)}D5g{)_Ykl95F1}`s1#>=}!FjQ_<_}|TXC`5~ed(yp&sjFg6xr$E zVcgCPaSyIoyJmIGqt5D^$~&gFF`IJm)l;KIxaVr91(tRq70sZGhvgihZ8<%DT6MJc zi?&WH7;OOq4TsWuE?lv$X7PF`{#|%N`&E@s3!6w`(-tOYlLu+jSV3PrwZLp*#Z0y| za)n+#u6!LTM zCKiXa)n1_)X=|#7;*3pYFr!#sJUYu}!o5szv;V`wnYp}RB<)Jka#^M`&0-@8sjn2< zSf!4sIfn49fBX_lgfJ*s&{j70Bo-P}U8!iEQg1hs`~*9X32ZMNqdFI?&Bb_^mM$BtvKam1C|TU8XWd%!bJJ)TM=o~cx<=C&&+@&~Mm1exr6 zdtTVMcCkN#F?PKW~@70N_F=+=wV3o|qW~$tmD&Nts z(1hVmx;=V0UxK34zdg@R7n~t{)^SzF&suiP9nYx=3_N82_AELx-=zlL<|dREJ=r*k z-OzIkaQK(a&D8d=g9f_*_BNdoR`RvG=b2j_E8|b9RU;XHN9rgW_R9xSU2BY4=Dj+i z6btLX05d7fpK8uIG5f2G$Or9Dh?Yh25fna}IU>63?6P3j=%e5Vy!qw~a5W`s1Gay~ z*OgeVRb}qmKg@VWgKy_3@9=%K%3kl!S^f!Q)~W9;v^V5C%Uv>orN)oIN9+7z`p*?E zkm>u!Hk-%tX|g73b#pn5yznxfsUgNF->3Rn|G>{;)q~)Yym^Z+!dTKM%Cor0k+1h)#y%<|T96Eus@IXCtj3n5qzL{RQd z787^rM0m&cDWjJ~?fnze{a7XY84V}&S{Z`x(DYtEw!V0D?h2i38g;S}^V{I{vm~6& zVM}RP&t868gQhsbvo%-m+%^{4$bGuK&#@HH-N?F1t+Tv=69Tl(a`E!w_e#FE{>rzv z?(&Gm^Xo1beTg-fM}S{vJ?EE4-EAM*WA|+w`TO4MF8%%-+W$`N5KSl9VnN?N)}?A8 zBTt=a+tI06j$iUMwT9c0sbx#XmMwWxZOMj#B^Nt)DsDml>a3s9rFqW1nSiI(PIaTx zTlTz#bvp!cFN*ufE(sT-Y}Te4f}8zQduVLwK&KAEZ2bWK+I7j`f@_0yf#0dxbFna0 z;a;y{z8t9SR9cNTSUu4^Ew3M0IpJa|1eW`P@_F09R#H2RQ{W7hC1Uc9myBPmNG7g)M$wJ*i_rve@cFaXX3Oog4WNErnMUS9UEn-W zW7Njc9AsBVD_NINgQoL*)yux+*;z9^c8NBobcSXqGFv)cyM}X6(Bq1z*G+T4rLE8b z6}*srb$$ZDVNBQ-+pWBJ61O%GPSIdAH#!!nYMFbMJ(Hmpca?dRRha%aA@S zN7`zWWx?<5jp;xlWT$j1R)O%^n9rtYtSojA6zR{X5b7kofLh^$ASL`l+6u`Q@`Y!X ztss`HxX5#*^n<&lS)?b%ZgEF)E1?JXkpGm2zLN^cL4PBxP%u_%5E$h1JeJ2xvQQg0 z&&+S0V7;7`XOgG&nhMJZx340W`gt~+VFFr?r@6oLyqJ2D684nC;$`(&ndjaStxYMF zNluEw_&Jm?%}6^rGrPNH=g8ZcLu5oUIWa!0L* zX81^&6SVwUn!8m?2s7HT^~QSld6C>_*^FUyz`{QDZXT7XSYBrUW8${)wP#xrsary` z`rkR7puG`U)?FLAD2L^t2ejnC&#UX2Pf#2soCvIiU zZD#TcbPVWl4a>KZMD*M>HH?iNTaHz`rpCCMcig*@G|m&VXa7TIG3*s8^;ve#3+Oy8 z+6>6M*FQV9(1cI&XOuFddR6e#)MX5(ivZ(02KX#K(~8-w}I~YmB)&>tpViv%+4P@O>ZtPp~EAhF{<0++Eyz z_PI^&`R-voRFx7+uc&UORuRrjIw+AE{Hp!jleA7jJm!W~vz z&4(?8A+y%lwFuCO`Q*4P?<(Ed)IOVc7}`?Xyk)qyZfN6hZO7(K>$Y#Ny=lvi+L~?a zYTI}4Z+OF+VRL!o<}H`jE{$LEAKJo^1X4KAJEERd(c53au2d7X7)Jg06<$BO%J zTc(R8I@rHD=e=ku`$)xrxyOw)~ViKXsso{IJ@eK%?WG{y6OPO#2m=(n(?boXZ<({JC&kj zZbVe{t3@kQJd7>08pdoB^q5(yrs6l+vhWPlSPy3{wpLfm*dOTEHg#L0SgU%be0RY8 zVR65otsph+w$|7s+M7)?FznLWpn#KQjLJ*MmGL*U(}OkZ8_23(vO*k6j1672txQANw$z$g9Q%ynviLDQV@i^@3ljc@lD2)g+Vq~GWNSEf9_uTNLS!LOorI0v zk+hg1oKMoz0wco&zu{~Q2Nt!y zjVXH7OW>gjoH^|Yo!RBjDu4#PH}T_pX5{fpXE%DSYH&y z(CKb)t22$3r$-U6DhnU^4kM#PjziTmQyO8y=T704IYzCS%6!}}Lx%31=&jfqL!FQf zG7U$kg61P*3x#0;DVl&(bN+pllgW_Q=<%)FBXjx5#}uajAzfl=gBuepeHCDM-8iHZ zx{5LL5tE4}a>8H^iv4|C8uf&BLI_b#W@h1Q^6Vk`D||}o1~cCJybmQr&_Co);5U3o zAL5rjtv(8`?={pj4EU;sMbgSFW;V1b%C0EPb7{*p=W!m0{gs6QCoF~^9l{&DM; zqYS2D%A864@>=f2FSZ{hTS>1l5~p+EYoUJ%gjAG}WFtgt75Hgr6NX;Ono6}&TBG8v zLYdr$F?^qk0+-Tmc#JW5nP&+?XII!_73}smTpH2)HY=-p;hLlrcj)t;54+r2<^^V^ zY@Z|)&|a_g8|EfVQ?8&h$rEFB)FGQzi~X>g>|`LIp4PC2bh?um+|}@o4IhnOl`ca{ zQ_I?axl&eEPh0%AZ&uC8A?Zi$45fkEF2CeD4cF{*q~Q?~C+G{NX>+AU4X4lOgT!Vj&R<8V!DU7)BRnUA0}g| z5Aj>+q`G3kGf75zMloE(kOX3)G{>B{6S+u#HxXt31W`BrF==R8qj95W+^XozDF&l< z`<;AvM_sWRb$i##)-nM0goo;fnU$b~2uS$Apba99VX%)=tT6inQJ z)^zB32~(-k--2wZjwdl`BWUCOfH}hwrYVyd4wQ~eBlLr3&U+xd4Ri~yF`Y7r360FI zZx2=xPi_%+0bP;^d60|*;;qmNGL64A6fuC#XtiaEIX?*E7&N7#PaMC-a^uiIjj3W6 z+h6Oa2ygcu>6e`(9EfW)gmbm5ollVYH5jQ?*$y1{ii-M-USXqxrZB?o5jA8^NTTSj zmNlEO4!YKs&Fd~*^QIt^k($`vCsDd7O1s3+PxT7#sq!d%KgeD1P?z@71GPdKz(4q# zH-<^AgX|)2Wuaxgyv7FdQ{MB4rZ{c0E~>!KX0NazRG?YPhgoGbmWy(l*;%p^wnIN0 zEz3G7O`W1Y(!JAh+B*Yz!BuT+jxEg^Gug7il$Y3KW*CfP+Mew5!@{`v{WD{J^wby1 z&?g~Qc-8K#mGs{{32WaN0%$`K*Qt9uyUHZ+Cv$_ok+8Zk$7B_YK3ut=Syx#kg3Xzam1BofV;RlWFDrtXvNq@E}CMz z+7-+%p?qVTd27=@`na^DF$2O`HCtZZ>^woz5+BoAkTuiUZFA@=c|&dCgZPH>s*KIb zux$BU+GjMF=Q->1iKWsA@_` zwEDDVerHDxr@c>NIGfb#TwBXzWI%y&@?Yi7Z=oRTsOR7!Y0Bb20o#Bg2CQw@CgjM+ zBWx^Qj+fT#WtqD=2$Agx&cbY~ZL37iT@CRfrzM7AU%l56JPk!1A!!{ge3Gi=FY!OB#*)*N-*&N}y~0x7N;HYC zp!1q47s`lcGLem>6EBEK;vRKr;R}6aS8>ZP-V`)57bSP+l%GjaPcIF;lAbNog=P2H zp|=LLI-$X6OOE$TJF6sEMyj<7N$NBQc7ki*RWz#RX_;^a#UVFE#s0sXU&N$amXOu1 zKG-tNKUI=45=Qk=hK^EOg9>j_E+ zyRj3&Yb8crjMOsVLWRn$-F5j<-gz^l7p!q!yD6xWNrruI_gwj5Wo0OGvymn7Q(>uK zn9mU9TI$P^-pQw(2v}xLOz%UIT=Xu_qtHj%J&M$+NONrz8jqrX?(n8f&&)*stbzY| z>Xr%Db{pG=S-!T4_*%GVzZWvEHFwC_ksmlPqsA(1=lqFR_HFA>aJMxmnpM(%hpS|= zCY*E{roz}6A+`_5%jUm&TzBG#I9IcHoWrN{_CmbOcrdOBlbTzGd8}VYsL?uc8f8cG z__zi4Z8jQ^)lA`Pgv6UZf1QXppVe8cs7H@LeYH^oeJa*_9XBe+tVYK8{k36@kjx0z z@Y=puli|+wwt;v6S)$7g)K+8M8@2Ru8f=T26ie`Ann)umN1Ak(XVxV8v$H~YJZWXU zP89SnvmqsIsgr6b8rMu8LPuJ=Wz&v}H;*u09qn*y=mb+{SFukY|M=Y=Q+FvFr%WFz zH_k4bX0^rMwhPx+3@gCc#26C7T89OWGA4dDm&-es=4wd|zy35|UTG6-X#{R|Oe||U zbPE@2sunbFXWIeH?kP9?GG|ue>}|6jm*lyZkaJSOOles;C@k%tt%38Pq3^X5f}b zHa2MOY{7bd)x>CRR0FN{49njSEz1hp(i%;d<7k31t|h{LZA)}Cp~(=96&y2H===w) zu#_E^>TAAuD!07Q)}JBR0_jFl)bT zt(F~ecm=z=<_;Mr5Jc5PEjIGFGpe62Cjy2}4do8zXpPYUYA>`Xt?|jxeN9U#U&>VG zkF9W#ymWj_6Dq&v&F0!{ZGgrN$XbWhRTDI#Vb-$4vKR7)xS^#7eR>pSbj~h-%hr|fUHX6E)SJ2*ADY`U{dZ4ztXvU;JxB;Vou!I5cwYt0$KT~MsTs{LhlxDz)ShM?GVI(c zEv*xwJf<2ba(w64r#o*nM}s5O&BO@|A{RsLGDdJz8+{^b=e?7K>0zz+)g4la`yeN2jwg zH6Dg5b|Nih9I+e%jZEpY*l%7%;P;1+yytJGP?(?RPqr{HNDFoe=uq53nIuR9H4L^` zNMQE@4fb8Rz>J`}ILd-Mut~Sr@QDL`zRnplR$V~-tD%!=P2ynRS*_)Lrghn^a(!IT z*T1r_hH(4xqLH2&^|1#aZm=&jg$E8CXdQU1wclqiUw+myD%*AoYqApL)f|*z%|pym zHKh!TRi!b~W!s0W##o8<8Y`ir`xCmsK?L^%{h9Vv9_|~r{_wWa_ZZ)YpJ^BR@8`Ql zf6=pT_plqc{%-kqj9Xu){_eJ8aC^D`K3acw=hJPsgbr&|D2P+m>wuOF9Ef*#6d-BnYkA6)c!Iz<{&P1<6e{O_lh$ zw4uXZO5L$XQrdVtn%y^YNVqRuvu(4k4h-0ZXXn;6+qSQ>#N1kce!MNu2raxd@X&5) z?p(iS<0du&r15vKadei!C3+U!;5@?4&N`Nt`^!|8*#5Y+c7mYjv8~8ms8I~}F}}?Z zbg-|`lCQaNJHxr*b(`KaqU{GZ7OD!jakE{YL%n-Z&oG;}jBMSu<)UqCE*=@$vUYgg zWy9oMtpvRX*&BGVvUn+H-nV4|i>Y{LjS(q@7>cnVO?dL@;?=aNn>QAvF8<7YPD9ZV z3L1Z_r<$7Kwh%6SoYUe`h@Cv=dBCBLpEDZM0h2!*1x|!IcxN3 z6ax1d+4+qKB(kG3Djg*RW%r?V{<}?9wd-|@cNmb+9yKif*i2?rNzg8M7$sY=lm=Xf zj1sA!XVlPMb(x{^O5D(xD(+TRcKO&@I~ROKhti>5hLrMjbnqf0M9(CZ2dRXsK~1+3 zpM^bnSjA->z(9?zTpC_p$$i^ETI|(}d0Kc4_pHIrO=V74k;t8T?(iX6V#NXCW;{W219) z9R7UK*h+Z%xOG4r_dMU(p4&6iY45Ia#e%(=vd6xo8rz_xhZ)-K{rMYIZlV5;|@S2VvG-1(De2Uf1lxNS#RuEq+ z<;aizewa3Mpq~>2`nByzsmZp%Hxj}LtllbUUJa@Xdn#w7L8~>emdk8K#wgD#o#tA@ zegjb##S5xz>~EAH7XB_*Qa!|Z3HzvNvcE(jWbR+M;A^1k+!cE!=KHNZgtnlLvlIsz z%nEoE1(6Lg*2JB=qMryzfj4scA_QOYVfG(sVNhWDu)icMRBEbQCuCF2WvCn(T}3>~ zr_8bnNmZJvO>(*O0+n^=0317O5cFs5T*~X&_W!kVcX>7*D}fiN_{ z5+M;xwX{%>Z^c`e2YWNs9%xfiXcE4i^b3rBj(Td1rSh9dxQXPNY`ffVXJ)CJ0??)c3U4_}%3#QqWYjj_=#*&UmD8#eAzYjfH`d5ff zgW92a&{AHCr^3(gW$ljR_qBGr`#r7|?l#xZ?Vj&_?e_EgU~>%+At$F+wX9??fHB*k z?R4F7&DnKj)fhrM5Nw^QtcGE!>6#UIy!Nv!Dn{_Ao2QI*sEQgRh?UH&>39gv{-(1> zkRx|jY2ZVkRb)V6F@?DN{3R6{CCjFCJD-~NY-YaYwzDQ)W>Xu{)Gpj|u~bsiPNakB zG;7tl&|d)CV7y$y6oU@ty@)m<-KDq zShwv3zc%fGWt8-C9Aqi(n zm41D1?R*c&H#gsfp40WiV8u}fYjKJl68^p;G(U(;!la#p>)+_y#o@Y-JTJj0>(w1k zA8Wi~xQ*ei;i!^m%+k-QG3?IPo0PROA&^!j8X}HTyOR$oyIOPNnp^yZE8}dy#G=(1 zwbr=JWtrq!{WQBCRz;077<8ax=rjwpYg}Pi+cUuyh9KqAH#GC(bs4OYjHobXC^Jc)94aX}}U+$mT|~%jmRY zveoAos`nx52WZ+a1d&aj>y`y(`!S`=NytK)R=!6|)0!?O(O8$lB>c3lvr~ z)={^ot+Jpw7#ZB#I;xq#NHp)A+O~CXShsfA9i?7#0jb8HBOVJ?{AgiyFR;#t$wRaL zy?2|zo^9kb1mGakqXhHPOsUtZQYuoH_6DfmUA=K4XNJ5xhk)FsjElVL1;%O zB{zrs%mpl4Cwmg%EBtIfxYyH+`Qm!emS~<#sX{j;6z#Sj8>+oWx|IIfIP4PZrSed% zVl3Smq%g!&B@X%_%1j)q`NFpTQ|PQul%i!OywTw9a|TU@L-?%S_s(u;!5`5eVPdrmy0o3&BAKWF%mqUf!YVQGZ0#uzMy zZw@o+?OHuUiA73`iR=}s+b!-NaSMiLp z#CUezu3vW>kdXG=CYioi29tdG*Qf{Po*gb?j1yssMjAe-f&?uibBlP>F!W}*5wUiL zx=DX1u%;NKb|?6XVT&QVBSswuLM&)d^Yo4}lHoNvS5B*(_i`%jL{%_X%%t*0c^5J+ zw~|Z#nS@oiVdOILB#-%*{H+F++_uN#c4je(X5ZAa8AV2K@AY10da$B;&%FtSh2 zo7kd28F5@75gWE(zxS!c-buZ8NW|x_2R>&UPZ(7Ajvthjy+(RE)m)0fjRC9;kKZv` ztQ^rjV-)yJGCh&pFx8z$^N)xu>pkTG9_831XZe@TQWx&Ag*^%XN>)8oR91>j^f8yq zA&azQ2WIB3Py>&mlbPUj+kH3Qyr8PnjT|V`WSCgFS?Mk|37t<*Uj*0WY)9F#s0GJ_ zthMOeqg&>-x2Go9;W9Jrt%80`hzZjQ0316ju+URQs_X=M9|Rh+#3|uwnlkq^^x*j! zz6?VoKMnW1sAt|Z)bJ=0(KORtcdgm5oQh!I`ovg4_2{ba#W?FUz0EKvHWA^o7)!W) zOB%z)DXn5ST9frucC}8CsKPgi6u#p}f?q?ZuwGX>5Q9ION1aMeBaI1_6|a#5EQtDQ z__|{0vEDnPv~SV_waarX0@Tu)FMFu|>Hf9a+3mX*!EmIZOsUaC4D;%%OpW~nPn zcG3wAjIU}%npmkdFu=0LfqVPHuvpo%d6G$>81Jb z-HF9Z@vDGB;ei(#qbwO~Qa-^KZv|(-Mo`*Nlw`~v`=*&9_9N)IeYVWZCPdYq<~#;b zvDS2@BX60!Nv0T2jSD+C+jF9*^{Ums|`vfcUyTaN@k=^dHsF%a)^vJSXw4|5aWkvV-DKJRcr}gzr z>GG+H(8UGXJ>yeXY&9T;xQ9QJ#y;Kfk`)Cz88T6jjXV$-{iisZIS&w8C}C3A5_yW# zs1+S!Gw33L5%DAh=ZMcQ;Zmp~B2!no(lqp4Va=5@1`0CN6*p>W<$Of2Ws(zS*C7ZhYnVDK5QV4t+Pj>$&liFD}}o*RDg=y=L;D)G9bJx{FpCXaJ>UQi76#2S6S-~;DhZomB7 z1Kho#p`YmSMuX~#+aZ1~GrH+lSY z<{*-<;rqJaCja>O@`9&0q;ceb58)P_FzxmOj}iAsh@ZYIOng#Yig!7FkzJ|Z5PlI? zjH__R;hsKzn(O0`K8a|zn*ogURrcpgxfKR zoA5OFe)_Mf^YdYFZo>aFN;lvaj`*bMr+Ag;6-hb@uQY@&#T9WzeB#3cgc0pkc}(+z z2)m~j`TQv!%K_bEFZ179d6)lf56!wqzngZL->ULD_=;(F{fX1=`0tr^ONsmN%ctEf zeD4Z)LE-iXTu(nZ>y880R-jC`!rl0{@Ed&bIaY4qx%F>mo#@k(@@qf*Sw#4hAN!%> z-2sR2RneTLA)G7V>we-KLpoJFyAGUVJ<9h)@|!;MzWHCO9{~+Ht0kO@f zqBVvWJ=c@plY7X;qe=NF?5#=JzL4)bO7&57Lh_$J9|rf`;9145a4Z5+{+tx}Bkn1G zDqof5Wt2~q3=AdwB)G|_L!lpPSBYGmu z8>lBYLc?)AXl~%Q93G@}#5x)2YCvDP-0vY?Sq>~={;8~2;(rjl-)dapQ2i~}Rnae6 z^~5$xbwP5kwyH}0)P5ZX(so9Cttvb5`sqYAzml{sN>li^0+$6EpugP%$*8>S1@>e*y_38_6=+Vx9<&`=8Dvy)CH~$viC&7DP z5=L~sJNZ_eU3@QkxLOWt_}u|Kj6B75Qh4L@1@J$K{}AcMemM=h8oyX?V;ue7Mt+v# zr(e;eC*_a);v@gVrSEqn-^#-crF@HD;!Okhw7zX6pH=BSL;l38s=6rtDW6sGl=t)z ze&M>DbbIApycSf? zDo%rNi@v`Y{|>@D32eYU^5!7lDKAsMH0`?;u1DIp;ujy~`+?+J?xML&pKvLj=&Z_n zO1u2;J|#~>IG2BU)}4Ivw7ZY^depb2?b%q!yW&b8T>R>3cY6rSXCdrC{Nf`%H9&Z>0BSudV=37_Z#7j@~$VP@i@}BuScJ8N1#XPi#NBBmL7deC%J>~ zn+TK2SM;~E;H%29Dz9nTDo#q1%60>IuLpmWbvH5_lkdR-cGJ7V;ps_^7>_`?_??D-8s6Um-lc(m`mWOH6ed36@zbPnYmdBM{u*=y zAo3^1)9>}fY2c^dD%p`=`rJpjV-%kJRN)k_Z^18pM3-oYkHW0v`wN7N;|t-fN?&Qk zN9FWn3Ac1t>8a_n=n>k3TG4GeZXYh;dV+7cSILKk1xKWB74MOMpCMlQt@NsBPiasZ z4JfKoiGGEX+q-+vd%MDawVIAE;5P|848%M{eu<~IC~kN}SMAhd*e~>; zaS`FtN3rZs&Y;7 zD2*E77A3gl_72?kgG;|vIOL~zRb`&yQrznadn1t2rZn^@A2rgx4|oQMw3}z}UtOZ@ z!=$@4aZ?&k@O=l6@*?8U?}`6F|C+>6y4Ue7_p1CUtkS9SQ`#x55A@)}e3G7MP&m0= zPMTGGJ7#fSz6!sBaJx>+-9+<^d>`%+|4ICo0#VLx<9!l{JWbz)yDD#KdZIzJmg!RZ zN-I9Xb4%&_`s7=5KUT`y6W~~xxET(<@9aU>iKVa)^DP`zd`$6*M&VTac_8xUq(`gc zjwR_RuENRfHX!nGL+M-L;&VOWCzmjn!EYsh@l%*8x)m>dgkx9YCO+Pld<*}b$+zO} zBF@dY-2*HIBF*yCBOEv2z6eO`N*Y!;s%RJ9^x5=}j5QNC;og5bHU!+O@^=uw^iepu z2~Sme!u?_VQ#w}(KTyt>;@^#Xd_>D-$+z4eC12O$rr)acz;`y|lp`NRO~%_@$4+rEcQUFk$WlXRL>d2~$PW$%I=8JVw~auZUaWZz`oF z`cqmJR=9;H#c@xM^oE*6+HWA-ak%NXs!ZgUKEj*g5RJoxdAdh>*Wq_7v^@Zn^Jnsg zf0duo6i&rI2}tE9(xdqE_{GO$^Njpk?vwvaABx*a{8sV*M&c_>Ro)eE1yGf?a0{p6 z$4BWu!S@}&eL&3bh8}63n9wTP=96#XR6K=AamhVC$3MnA)|s>&J@DU_;1g}T2&*_% zd=Q>H6<)uItv0504{0>;({B~8_Pm}M>L9_^ikY2obq!^5=P(q zN%IKsZXlLL`kvxj{x~+yesoUoR`KI8a41Yw-W2cd9(lQpc=1u(gM8l(q~#O+^{e!i zR(zC?XOeHZE3Fi-+};6g^U$H+DjMY%AK|=?@5_J>1CclB``x(5Hg_vHt9Wu;i#poF z?`h(vk8mh_d_?2TNf>?Kn0zaoaF_9%_%E|=IKiWETXEaEtcd#_!rTlThkMN51AM1^ zUx8n*IbY$d;$xbQ>|)oI(}3oxc#8vlvSi8D^EBZ;LtN#jinnPVRbKOiRh%ljhVaBk zVaJkhxj#U>n7+P6-xDQ%J(GMZ%-zs6pSTI{rsc?a4|)~$njU`F;dciR%i%uWqio$o zoGO0ZN|^LfxU!ql6Yk@nE5$#__oF~e@A7}GPNQ*FF^yvgw-UEBZlpo^KMB9pJ#gJh zdg-HZaud#~@>M$NBN|1|9mGjxG=@?7yOK1-vzz!n>1_Hn;>Eni@bZ60DUD}HocYAoA^GNxK-(_z;6hM@)_~yS8?S37*OW7{5Rl#Iev#rVdP#V0}7iy%8zJY z`Py#$%JX%&f1wAihw+P#@^vuzmisNl8^-NMAm;50yr*d?OckAqmp-Dw()+h+9yXHj zqUGe|+wc&t9A;<*<4@eH(mw{j^iepuoe0D^-1#1~+*ZRmCs!Q*@STl6>5qq@z5Zn3RL~wkr8nI*XI=^1nUFr~Kzj;cvlTysqM( z_%9w;${KzvfO7flfA(~DuwOZ7Pt#I;e~a#8~6b55OBhG;SXF7yz#iY zy8*Zhcoyh?QQh4HJOpfhaov3mIQAuVcM0%L;9lU^+b+-U~ z7C7^}>+Vy)>P2;T2XOuO)ZMFIR(GES`d?mmPXjwnBwgT~S3oOpKk%Mc*4-n(hVKOr zaO_Eh1AZR(@~i4@-S-g|c;Cr&_j{+*-OFEHccZVVyH5bevgLUP@Oj{*Q|s>SK(nvz zei?WQSa(|8-3q*Naovpr9|2BSQg?3y{t$QqSaf>b?E_v_#~t`0@GP*oQFpVzdw{P4 z{mr^N2z(KE0yyQ2y1N*-7Wi%8ap06Q>+Y?<9|J$Rl>GIRUW<6Z)4*4k!Jp;$1Ft@- z?%KeA0=Jx9cfYiv?p}CK-Tfl)zSq~?s)4#&zpn0n@C|jhc)0G~va9Y6?5?}BFR#1% zfF+}K_dR3K3|!U**EnyQ+HPZe*hdiTX&ZOp8$@%lDq;J&DGss0D~R!HD7lh2aa2)yI%vo4lKW_?*2${ z0A3t~cfbjUkP)Eu*19_aTzNI+06Y%txTfwteJ$nmHt7E$cm%xjFmZnvz5>qzFZfaT z2Q;s%yESj;_s1w_;0La+yMO(Oy4(J9!~s5aW8H201#rF#xd9sQuDg!{e}6Oi{8e}c zobrBn0Q~SRgaNMnK;1n6obo|%0AB;%_#t=)EV>n3z}de>`2yR1qwe}XjQj%M^%3L) zSpLzvdl)$9H|y?CZbLplM*030vJ3pk$4LwL`W^7}lXZ8-r|NDBcn|P3;731=Ons*A z-U~bn{J`(l-Jb)azgKs60+-xbcmECC`8mq-_lW}xejePwAs1IP*Re&CwFgjc``e?^+Wdw^H`HSz}B z3ViOty1U{bF?_9-+*)ep85=&{$=c^5TYjFK{n#-b)(pTHs!wc6@{OnlQj!z&$54+^b*OaJzv|0FMLT zT-0#W-_vkszO3PX0eA{%znpY{<6i+T;BQ~qa7(_o;SK}0zN+CieqY1g4}9$8hWqL% z4fh|fZn$-?A?;ej{q$)K_l_2E&uX~eUD0qiozrl~p4)KyU)OMd2Gmv(4>;(7x<1JXt+0QYq<9V@7+##;LnEP$Bu^k4dC2M zC0Cw0RDSF?i0`s^uMLyegfD%3680T zdmqr6Zn(2&8t(1DUBC&m$N}&n;343ID;sVO_;RP=4$ead&|IL5f#10bSv>$g;1j^t zf!aaj6}S(0#Ub(wJPI6sEAo0Z0;_)lKj4&~Y`7o$DfskG!T?i01CMSX zZ@{rX+i*V$JPPdoKMnWFpKG|;pKrLcexc$11-R;6$Q{snH{}XE1f2Ve-~c}MOVm@~ z@?Rz$;3?qZo2Vba!S|34;GFluPv9=#*k2)Ez&n9Qfc-a+34fp8}l7|mbw!orW!3W$Ay!O{f1GxLwN#{2j?ze$Ye1y9CQRL}1(gfCi z40?b?zePTP(T_tb@GS80+Z*nMzYYDs2Y^R_OMa)}-h2mPfZzCJ!~N=~p!?I%44nKK zcm~`Lto|%ve-|0QlX~zu$`APH?>F4-pKrLg+(p{JX@5X^_ks&J<%+?PlTxF2}i zk%s#saPFUwZ(!Y@HQevt2mkMHxJ!Yb2kr%q{d3X*J`0@w7Y+C0z+J$a2M7b)4-Eb# z^aH2-74!iQ0sVgspMd*;{s(yn9tX~U2pqsyf%SjWa5n>&{w?u=eGgMdfaCwZ;l2bs z{AGCj72*PS0UIBIXMp=Ef$r~iUH0uKO# z|H?0L&J&aqu<_sEEAS2Aseh-g|3||;{UmvK3VdH{xI4d2o}Pv${|O)ei~9Es-k)u_ z*L<_#o&=^`(;fF6O?MBlmPnYPx4%)pR?)ujzgsaNpl_yMez0-ga`+Z9Jvvego)# zb<=(1HBI-IwWj;bspO-NG=X;lC!Yo`;MI$p?pok)fc_;-=BU99jGx|g=hVRmd;++Z zqqSCYBirYJ{xh2HUf|g?o9>4Grh5dqxYcxn%bMweSOY^NObX3b5@Q zcyMmhUGzHm0laQy)BQDY{_C6Wy}(mIdjKAv2aUkvz&WePBd~k0>0Ww%lYWYHfx!!! z^iS}2ZPWc2@D1RDL*!#!)BVmyc=pDo`{_-DyBOLwg9CT~xNJ+)-3|0_B@e*h4>aA6 z1GC$j?hV6D_p>{i?rXpYE@`?KUfOh9FKfEjys1h5(R7PUcln+s zcZ!kbIN`5ox+6gUB>4eeGX;-<&rUbpcg-~2a$pX40vMcay84ym9~hjYynx4n-5ulx zsLeOsUjZu@kP+Y!;GCu?9$kMRw-A8)!#fV-|oCVsN%&ipBO z1JvFDPk8`u6>Av&l z2@jn03*ZFKc^CA&8-4+&{37)TcnVneOUTMEBNM>C0I$0V+JJ8WZ+%bG-49&wUStZVasu9cOVh3SK-2vr@W2O~?p3!!2k;2+$zN-_ zU;1_2exvEW1f2U}Z~=b=T=)@W_M=VrIiU5M@ELgfZB2K=$H*)2cfdKn)pUOhEcrOR z0UiMcZ$}P+hxGdi@&>H^ZRi4?0j7S3G6G(A2jvR98}4Q zY5p#C_xGCaV?gIl$_JSFeeeK3@_FRo3)KBTg#WV2;1OW=7bzRy^e+()cnCP<2;qSTfF*x|90PCvQ+N)% z{yx$I-UIwMaM}Iv7x>LT2RCreUl119`~W-vZUY_yYJW+(z}tb(0*?dd{1tKqobcDk z2=JRg>p^7cVagG>7udFaX!|pr)sKAh*G4yg@RS?>@IOyo|J}0jtQ*)hv}<_l+O1o6 zaf}RiTkSfqxBs$r{Tvvgw>NN*;6?rWM-R4l>EINOwVT_;!DhR*ailS)X6*8Zm$YWb z_JB*z4+PNrnZQMBhc~%J&K;(@v~+^#;;{+&9ezD)e*Wn6;5KE3wdKb!#(eMv!R?@X z0=n;eS&VmRO!1sMgFW83O^k8S?c#Ifa?*F6VRKcj<;(YubDqb^@q6vI;l-D&U869y zlA9bC7u_}~Tm!e2Fs9|>?vUH%#{~S|?FZ#HR&d*BY3wh#$#JsewidV9qMMxDe9_I) zI9PDoWNBPebhB`W3vOF2+;v4a3-|wVb~o@{&-?$!*M+u7O@&orT^e1DlBMLEl0~wV ztR(9~jmU(|^%5B+qfVBRQ721eNaiXd7o#vrXOxV{I*}n+B>%_r`+4r1&N;t*zuo?y z+wJ`By*{7!`}My3Tx{Z(`yc0qhs(|W&vW5&d7LYXtMT5Hr>o)be z@$Coo3-@Q$f1Dc??oaW7=Y|L6Uj2`ALAjEebJty|{}fToTL;ALiA#y~@1Aw#dizm9 zoifhN8_S*xceZ`_zZE-SWpYgYI+P3c*vZP3`Al;7zjNSo-F5C3&KAXkaM1o)X$P*ij+URg{SiGkSFu+Q~fIr_dW6FB}d@iz-F(XjFYaWZrsd}mBMb25^vZ{Aol(H3+RlAj_+*OXNokQn} zqvS|F{KheRGn5oL80yN>2#K$JRFu2XGe8U%e)-JB?OLzLB#iW+yC z>#DD>MyZ=eSxAbrN}aL;${urmc=$H7^b7|9EvO1~{ zsFNF|PV!+vok3VLhp$GdlXF1X$|z+^Tvq*WJ}gTA-Ir?D(R`#vsgv9&=zj`ojY6ol zQc>g4T+WV?BgZ*%og>e&)IBR}a+OEPRpz>zQT^G5>d#KpI{$*orLnai9(g{J5BJzm zx%#7W4aJ(Z%B&@a#;v~pv43K?tp1xy`L&c)ZXGILzj4rJBh>k$QRjocd2Wnq`zX|yk45!IC*DpSZV^HfQl|K%ZzZq&SS~+fqdUkbk+#S`v)~e(n+RviAj%-x>IjFVG zbu4vAwV#J-e<8-=62~i0?eZg8Ov*(EF>cE1sK)TPj|k#8n~EBDn&V7VyIH7qvwc1t z`FxJaa2#(FY$EEvHJ0Q!*{0YK*6fAvBlKHqQQ|tKs6Kz|_$Sm}*k>Cx4dVK!L;2N* zwDjonlIA+;s5UYjOZ7o&UM8c~W177UH7_$A&q2-0eAHfe47DehW6gNCMCgy&s-mop zYE&H4EZ7@ysPV?5&L`MJ)KRk!LL;M(H^X%^QRB^WoNaS#E{69XY9HjI##`X)g{bis zp~hS6^Ch;_mSJPAmtzyG@cBwqzcshJBlKJ2O>Q2HJH>`j_e?74P#)crp;6JtpW__4 zsPX67d|O}(QR6RiT#PmC6dpu7Rg_oXt6e|l$e_JA8*dX(?Ib!*LbapyZgg?&<5BJm z%Ie5;-7MGDoTf&pTjaXMu3KVDokQ=vya+keuKEyjRM3aksQ3ib+Vnt;VW{IvP~*(R z@N)&VpR#R^ujkr4)I2Cx^U;y#p^UO>yWDk@KQ&67_@jeWBKe zC`!&8%Bml^HqYkU0$YgTy@fSntd5eqin2PYT}Nx&`I5-HVnZOoJ9d`NpW{ z>QRo5MLp{~I__$FBERa4>FanP>RmYmo8btbAA?5{Pjo!RPP4b!nb?wYa~#jNi?KE5 zmpNXE#}Ti_L|o(Z@7NFRCe#{e%)7@#UdQ;B!CWTTMASMa*<_o7%BlHIy)<&pESKd! zfgF<^p)8lf>s3H`9V<}zSKBrA9s8l(WVhPwc9-3QdT;DUt!IN)LEa-!>v;?|#^Y@_ zdn)p4&6qP$>v@jj3+yP=dX95^g`H||vUi}?^ImL)58^TSFls#?$7Atn)Or?UBCf?Y z_#w8%&#)bSgYEH0)IIV$cEm%DnG|z8#-rM6g(qM;JQ2HMC+vltu^+13Anb}mu^W!Y zWSrpZSE7E&c%9>0?477z#Lq_k!gC&KPw02X8DneT6I>3ja~b7zY(}l~Hq>6*Y4_Ou zwn6LQdSiQ(Jr;G}cC=kl>)Z?VZs~_w=fS9Tz6kYwFb;L!UWHocY}7i>K;5@)HwA_88EK)aq8JqMOhuys90)@^^OhBE05MZFG3#GSKW~7oQs;T5vW{a zQ16k6K0n1yv$xrqb`EMB^D+GW==00%v-TzXhJ6n;UmH>LwFNa_-=XH~XViTCj+(E! z#|8a7)E;RQZ70xsHA`l9ZOLB2i|Yv%c>@sZ~_kFq)nY(8pk3J=Ip6(vW7>sF%X zx5_!H56IDDLgaoVCkFjULFEY9RMc2vIhP$JM~-vkx^5n7EcvK)UV_?tEA48mnWv3W za#vASM>VQ{F>Qj}hoN%l9g%QZ8So?qjKursF!qS&eEtrbEzo&39pxTp`NpNJaG{4V5b$m1{g|PN$&eLuK|w z$ywyG6s`5pIF(Or48A<_TqSo5`gk6y{gIAUUwbSsLVYfW_iLW(JnbAW**8&p>jTs{ z%Tay%)p4EUgXcga)OA_Y@A_9n?spnxYYz4MD%aKghN9FhaNXBjNA<6ZQm5*G`~^|U zCME@aI~{A*bz_t|c`h5?W0NC~y~O#yK=pmc0qyjOQaAC0pii3bOvWSMdZ-4J)Zvt+j{C=+vv=HjlJx@@>48))U;FNJ}KT8rEL6(LI1Un zlCBK;pN0n>HF-mn{qIBL((m;(&r)UeznXDOAXkXE=J>Q}Fb=hs@AgV+X)o*lqrHv) z)!qZmgZ9*)xU2qiTs3{F8DD|hTYkWt^r4QfPx!C8HFYZfKl+$Wu24L2qm&I%R!1tTei~{XE=H}_MAZGHz1x0Dl)0g-jzUzfB2=zdd|r9< z?#zmihs)vnAf|JWD-M;b87fyBRKL2R`gA&KpPY+&Ka9j!oP_$ex!&H2YF|HJR2@Y7 z&vXgee;L*O+o*k9LLRlh4%Pl9RQp>|?e9Rf{}ZbHy^f`>OO==Ud8|HpWg~2iN27io zYm55U>Ec-Gx>R|opD#|ar`uFJ4E3|;804?w#N3Md`QlN>QrD$^?tTJmo|}!bBCm5y z*PyJ%lMY$mFG%~@WAoXVwjD5AWMVpQI>sQs}Hm3ISbeKtGZ zhU)K5R681b^+B|g+%0IQH>#b1j-}cef@)`^W2tt=qV~a+s4-pVSn9gey>Pp|8}%Le zAZnc-v4!?|)X$k~P(NqB<5;S^)X$k8+s{zr)Lz?iP2}~APY%YIfEr^WYA%ydV@yWn z(s+`lM$VN*S*=gD%|YdQ6qRd@W2tgdxz+BSQF6ze6qHrIq9|q4D61pgb@ZOBj8I2q z)t@}qdm0tLglg|CRR7nb)_bGRe{Z+gZ&2gWcU=0lwa*oo!}*g>4*J;}H3#XAC!pH9 z8r9wnsI|P^=O40n+xt=N>X}e>5bc&xUdLusyMLm_d0h9P-F~Qc$D`W43$<^bK<$I~ zQ2V+HHMd9i2!4Ok7qzbkp`KGiQTuu%YM+ipJ>M=zJ>RZF?d#i7`}$tgIMnvM>uR4r ztxXwab?iWm;V0A>_WHc?sBaY!@^Cp=hf{)FDX3f*Iv$H!hg(p6x)U`Yvwi+b)O=ir zYHt{SPP@MLesek8UK!tWKLIuW?NIaI36-ZiYW{mW?vL6_=QOz>`1%@kH>c~2|ska z$=A1HC(dtoyvy#vuAJZRxWTDGe;eaTobT!QOzcj49`?ZN9ZyI7UUxR0it{i97y0~B zJdOA%$E&ap@#}axzKi<*)Ay0D{{uB&Ut&Lu^}060{=~=P037J}0vt$u37(CYVJc?f zAk4NosB*bD81o$G;}GH{cs{PcG<@FIUqS6(?UDHGDg596J+x1Cgzr7pTgPV9`Ry3q zzZl-XsQp{#wBUS0)bryAjKvnHeb>gZ)OD#mQqPahsDAyzp9>G7Us;sbk&WtC4k}+R zs$X+a{aTEg|K+H5SJ~H5{d(W=r>JLn1?s-qiR#xL)N`#)@8G^_gu1V~qVB6S)N^er z>b{zX`n~XK)O}TsdSCyJy06;w3GS;@)O~d|>bvbG)OXumsQW4pbzdz+-B-&{|GeZ` z$5Pj&%1hOk$|sdy>OPigU#dS+{gdjiRR5*MBQ-v$@k;F(srh&blkqLoeYF!$#-^tS z_f;>{eU*Wy;N7VEY9;Ev`V@6v?ZaN!u5WN(orArJFGSr}8L0beGU~pXhG*b(4B>3Y zQrD%*OVyXkCw1RSwI|iSRDWdnzDM;}vHCCdoRAuy)Oe-FFEt+z;RX0O4#TH$I2JpW zx-Kumwe~|CN&Fd(!fzZ)m6Mm?kM?)Gl=zS{CdFi6JdVXyj-{^43D^xA;<=-&Z&c%m_7h^sy#|5|wAI8^x{eAl> zKEnA5T#P&MQQU(CSm(@1F^^#*d>oHPXF2^BuB(5NyfKTDo z_%z;xEAcLT2J=w$7UHwG%<;4MJn^fJ-^CY*Kf%@b1-^)tSd72mOSm6j#)kbT#k_*e zQTdOvC*m67Q}A^RVF{j#Z{P@g6UU@XdT!(Kt z{s=!H{v1EVZ}B6nax8USs=nNSf8a)JFd#4ib-f+_1G{25_QKC_fUlpAn~6u^7Q76< zz%1N~H{+K$6D#lm)Os(%uki`ohR->cx-PflYqr#Guv_t;T;G8^aW`te|Ajx`p=Skg zCwnATaX!&;Pt^Nc&y>s@-D&@O=sm4N-xXPu*KsrI{7kHib5QT^1*rG;W2pD{Q;uaU z@r$VU_nX)dKR~^|%kePWhK+C+Y8-p9G1eLA_c+EAAB`&C)}Clj#^#(q9goCI@hF^* zN8=Jqz_+mleupiw;n~6axD)FAd;zw`8}V2yz~gWQCgSth2G?L)di`|cx z5;r_2$kQCh5+CFEc-svpaQ-yB4A1oW^HBHM5q0?ae@68CERXU!7TRT4m-t!KefBEW z$9GZp*(cZlzi=#dpH-snvtLm6*?!bKG(0!B&zhrRsr&3WY=S4E?z2c_US)S`}SAVK8`srxX%tl?en8h`@W51seLbXpL9muH$71I zQ6JQOHUM>>o$pxcx>R|o`tn>Hg@f@jJP)%ROI?>~cry;gnRo%t!C^QbhvQ<$QrD%* zOVyXU&z7U^vsI4eXyVsV_u0FSKSJGSpJN7oi@MK#z;XC1s@|XWkRic+b~x(%k+wDJ zoz?*_$1Xm93Qi_I-SJs?74dnfyYfPxzXY?0FLQjAz24r6*Kz$W$M@NMyn*utn2m)# zUu27I3Esl>QpaU>v)yKQ+F$Sv%KzcG-uc0J53|j1Cf8dzZf85;J)H0ExVPEueCSZ890w}vmDR03-KY&FLAuWK5t*ag>!o@8wizztd@IN8Y$sgK`RfscU2K=x zm3FmVW8bkK;%nsDT>X0fj`MH>@j}N->`MC*{)6jpIbLu7fuD2!YsdezzuK4! zf_@){UsCQU$8Bt9d#XLto`>I3KHc$n{Em2v;~VXC)OYedj_27$_ygykaQqzpNc@`P zQv8W{gX67s2kz$lZu}Mh^7%uD1>-mpt2v+OxRdRPe{jAZ?!&=8e-Z8{9_RQfn~in& zX2`+1n2Yr=5B2Z=FT_J|88*OYF&1A%?Spr*A@L`Uzre$YE3py&;`94$!{NODIo}-h zz49_Sa%M;WUP+_8j&!7Y%y_Jeld&F7Lw&DIcPtwa&&F7M2=%@4I5xy5?F+U9^>e{G z$D2^!D_>y~{2t@+H#`FCUKqqu*QLr!<(K+iIou}LcBt=_u8w=5zE}F;F*q3Yy>b!i zdu5zssq3;0UWIKj+wlx+Pdo=Z-~zkU=YP96_bg7=A47eABrqO*kF>+Huq*0(FZ&ebQi)%5`8V+#;tx>$EVtWG-z&Qu@5S?p>t7Vu z1oi#V5>>B*O-6mM^u`NuAdbMHK0g{&eiG_?Wh&}>Wu9X>n)p$?1mD0hxXrQDbvYJy z;W*rj%3D7@unAs9+!7~Z2h^RD?CZVlK)izULmiLCD~XreRrYoJzWvlr!l{&>YHzi< zcCKBF>R*?U!S_mv?Qe(Jk#+*Adeza}tdROCJoWBWY;$3(* z=3y=_MCD(G_u{jTU&YzP@8W&<3C_VU@P4dxEOlKzh`-qVw&AGYd~c3KpC7~X@o^l5I{%BW???5kA@{pH1)sptj-|d= zCgGDf2Up+=j-{^4l~{t$;5sbAP53N+bd_8>bd_h9)h1a{t9D>cc7m8Kl%J#Je0W3CH^@T z_1r%Km8XSmk4=a>qn`Uce7+AhB|aPV{yQI=<0#b6spC-l>k8C3^-Ri`8-1Kbl-KbJ zYMk$&#`!U7oLf-+`wlhEA5rhO-%#WH3pLKzF~R$%DQcXp@i0t6)$fjnV{dGX{eAvi zI}G)H8-p6>MASI1L5=ek)Hv@(jq^b~8Xrcj>Eoz&p2U{;g5%dv@2^s9jT`V-+=|EH z4ot+|*ar7uTdaR+@O!UDsJzXw10IJR@pwEQyI~TZiYj-8J;z>%ojIR@U2rmX#cQz} z-i*mO166+(o{aOcJ1)i^xC~Fhm8f#7@l<>R^?rNL=RZch-?pHB9{i+2AxDV?4Zvg84INz~Uo>6w3y#jSi#YDUb+u$A8 z7VpJ&_&02i1*rRD1$M;Mcs#y=xTk4LuoLk&sQcqb)cx^0cEv-+2lq!js$POk zMBN`rj+0UMM~dSR_9RY4-5i(GLSn9geA$5N&!v6RK z4#4N|EPT!9-?n9#%K6QXx7l5GudP2J*x%tbT@ZPHhbXHf73*LcYJXpBC!+S`6x5;p zu4iUeguE)Jd#A{Cicz^sP`OJ{`+Wl{_g2(?-{Dy5x>R|o{k|Ku-~U4G_t?vV_g+)f zv!yj^zjr{D?}FOzr=a%x>5iqYOT7o{r>>o*p{HiQR=u1^}H%~TwyCw@<5DYTjo$o`dSoe8-FJGP@Er z@2gSsz6Le#@A&$Mc9Y$Tn)mIFciBC5zip5iJU<(wettd*^?h+H>gZ^@+Mbxm`M!<^ z+M#x&9gCV*jVa-g=<8hIdWEQYEkey}vEvfdyp}pHv*j4e`QK3MeAMN^yr!VqSDkqg z+SfB8hq5|yQElg;+RpcR<SVi4)&X@A3L^Kl)OAW+M{_keN}c$t zf=hY~6s$8eqb#%X0MX8gV74)??s;~V~eLWYoj>E8K z+yRR6`*nz9*`p^N{$N3Y7Q%%qsmr0hx+tZlpM*|1pP=s^&{k1LW|UDR{&P}Kfz>hmq_o7C60 z*88aa`-$^?Zofu-NBqsR1Z=vJKsQz8+_-52T znBjPqU4oh~jd4+g{-})#%IesO>dP;vzWm`FnwN?wIYQTaJg6LL7#Rr zrpFVt&r`Tx2b9f-QZ{i~kXLh&7ojYd!}FR(c^&DfzKlop_Zn1xZ%57DeHfm9)I2Ol z&Hsz2ap;>lrm*&L=(5K0#0^1v&!O6T8FfC!9)@bK8LGWjj-|>;?Z=L&F`k6F?|V6x zx-PW```JOLduAx=y*AphR5_{l(Im%L+Z*id_HKK>eaJqFng`8U{pGdKLwKy&!C2x@ za}bX@R9|CCjZk0Zlq1b`(w!s2X4)*&JZ9S*n``q>?P(2HMQBfLl~Gof+X`E0t8BH6 zxiQGCeG>m<X`j z-*u=t*?`(dn;lDCm->F%hWdT~F1yF>w+(Izt~W-#UyefkexMC%9NKfqD{7w`E{DgF zL3tgSHp>>F_F6G&olAT^AJxwSTj=xIsJ)frIM?Q(`lEZOg)x zgN>=T-*JOmgRwQn@cwgrEb2Me5p^$hMg5+nr?2-#eV-3ReZLR!`4M&u>h~lQ9Z#{- zQ2!j}HpesV96R4Gwkz#2tl58|m9_5!QitcYit^eM)i&m~V9nxC=i^apmf$$iCZXmv z*>MW0U5%yqAll8MypC+w&q3{#T-18zq1w$yt>+TddagvZ`x2^uZ=mkO_fYrT$3Fj= z{mSmJyX{{#_V!>so1mU2Em7;)7M1@*)Owzb`hDYRK7Xb?2leyVg{bjs4;4QXectmZ zuOlCIuM{{gv_-ZU!_QO4rMAp&MvZ?PYWzE~rXQiA=>15}3Hp(O>PN_Ns!g-$sD5NP z=8xec({UE6AK9pWVYXM5>E^rMvWn(q=@W-DyDt+JIiZo2oWt@imCVzsY64|ulr zc~F~auA6Q%Y^KdZ9m=OM=10h`lcy2ZA{mfA8~ZYyl1twOb@pXKA8tG)jhH9rA)y_7I#hpI?i`|c!_Xc+c9)WtM9E0kY{@G;0 zs_5g-puCPuRKKzuOZ6)o^?aRy>enpCQrD&CdOm8;KZfepQ>gv$BC21n`~178Ir{|l zbHV4Rp9{YB^&e2r*I!ZlA?B`NKOBa7z8-~oz8;I(4;@kEPeP4bW#V6mKJF~a>&Qlp zdj@LVXQ9S5*XI}7C8+gSVOOKZy~go7sB!PGAEUl8cJTIX8lSn81451UZ) z@)gG7_jb44XY1b`?1x6Ec{v(Y{y5ZrI1#lUPDahkX{hg~vuqk_KU|C|KOVK#lTrI& z8frgG_w{@119lPW`LNXSQ>bU=i>U9X*HOPCe%J9w*oOFX$KRsb{lWff|HO`*kIN1I zIek1P5x2quRE41 zC$(SSx1XT)+2^SH^lQ|*{D9i8)u{2t+!NG047D!J9JfO4*LJ9N>FV=6ZC}*740Jri zjzE0}jYU19u5>KbKdE)O&fbn%m%AO`k6M?9uq{6B^H196?8~TidDHRx_7nR#s=cpK z>+lVKPJJo*Iwam3tV0rN9lE3Dw=e3sF$lE|Ls9E68g+k6K<)RdQSIL3SZW>aK&``l zsCCFktwRB79af<3kJXOfui)PG zwGI<~{Th1Yn)3am?)C@39<) z-8g>~YChWFN!Z!(so0(POzeT@`Fy$^kEe2e3hM89-RSdo+WWCL=O4Czw?(MG$MT9} z86tkie(dvGus`R&b1csy{@MQN^KthDe~+aZ4&wT;cn+T6SPmxcVb4JI>l{2EFT^y= za4at%o@}R~%1_4&aW;;?hkX8VOecOCM`AIK!nMBsq5TXm;rur^27h!cm0ym<-*Frs zGG|iEc#Ovh*a|Phj`k$m$DVC3u$SOu%4a&3R}o)pZ?pGc7U$>THTbAwsq*qVd=jt6 z7jPPuIF`CDZ^U(Y6K=9!+3)RdcpKO2-XD}Z+$P|3&bPxmuq)2MUcNrSo^MCt-CVy6 zb1@6=!JF}3oatE3CVs#!vQOasoPQ4U@HL+=#RrKu;9T75^E>cw#Je5;g%1%Qniu3h z(k9wYxRC2TaS`^zM{qDM#*0w>8ixgVmE&wX1D9}q4lcz7_;*~2%kUX|0$)buc^j8w znd8m4f_OVVg+JlbxDQui>;pl)rdUMW+Hn#-N8BBs$G$#4$PUNVoWB%b#4CLMdYfZs z;VWF9kFVlmKL3<`(Y}c#T>rpvx!s0qIls&CUR(dc;NQDyf*N;A+X3GrPIlbe4#f4G zAL@9torE88eyZbJ@nhm#$8+ss+{pRmj#t^&?fY2H^-u9LtiaE4CvL_)xCQIX4f@*% zw-O(XUt(LVz%KX|rr_7uAN3y9J8^bN?e9^2ujWuzhsx_4t|UTvl~bJ}*Leli#yeOS zKgN2v1@+$j4iCX!QSaS)^Md#85vcd>ao7;Mpx(Q^QSaSB*a$B|y>~A|y=Sh)CO94A z@qW~I=_B^8{4Dov9=>>JY6vsd!okE z7d4(isPPO(jptI-c&PXGW+;+VH;4 zaGgxld}X29%yukwNVO%^?-{6m&q4Kj0cu?yL$&`Vf37@;_A4l_V<)QpJ*f8UEC}{R zBUCJPUFwi(zd5S?V^Hn4x7|={cN%J6oaI=moYZq74fUM381e?RKJdKmR{(%(@(Clz5Ud7? zGi*&eeV-4&i|~BZ_xUK)_xWY0@AE8Fo||zr&P08mKY(L!5nhTkz&!u#<>%)>YF0sH_T#B!XA+i)K4!oT5O zoR9S%4ZhEtU_Nn6)VMp?WL!wx8yDd~d<2K$VjPVsKM4zPDn5p{;^Ua>>vM4_@nXlz zaT)O{$FJM>?Wg!8*DDsy|EYd-l+3<@ZM;It%;9D&5ynf zL+hi@PX^_6WTNJ0rOm>6#MzFe=I15U{JiBj2lZafMXh@t>U(P;YJQfX`lDRyBlJh# z3^7ZBzQm#W67N{`HFxnJL?2I@>!dqJ25P-0qxvun>*H;9CTctnpw@eV&o4!d=NZQ@ zqQ>*4{0VCPzHt04s=u0pl7r}P;?iKuNvJU=qxzeI>TiEke}|yve}v;P_Hug- zs$G@o@nP-rq*k_z<=K4a&^RliZ!c$p|;C|pL24ktFh&x&gY@#DIe9Z zC8&O_M6K^?)VSY3m3t4hr#3p?f_lz;=lDld-ruk>=l?>zS7K>j@0F&gxFxFpdKRaA zQv0~M9L|?Pc^x;}>GmGG+&+Nn{{mG1A49dH_iw>Lv{T_cm8f~DLaogosPQ*=GMJ|$ zQ0=rpwbKSQPn}U?>Vc}?2lZSy8#PZCpq^2qP|xGbQ1f&ZYF@5K)w>n-4!H}P;(azB z_4CHdsGr-m`1~KJ_iw!w!TYx{>iydS_5N*-djEFAWAIee`}a)L{HX7*Zm4}7w5BPScBz5$hcJ}P%HDwnQJh?1-7 zfU|na+{rSZdriqxv+{&OwcPK5E?-`}{K0xK}z}jT-kF)VjUn^BK6qzvdvN7)u%e{kNU12g1WCqI38ms+9`ILz0JQR~nawGJox{K@t- zteN-Z&ugCts)qYtNqLQ<2(^!j9ZTJ}C5}r``>4!uxvfC8m&LV$gJ>^tRWSFRQ0?_Z z&3!*qdxKH?_99e!<516ut5Ewk8}@x)HhNNCgLn?gYz-`oWOR(PobU@FJcFL6ZM?<0FTFVOu}t=0`9^SaW8hl`m2NA z+cv>2#4WKacEE0!jLFy=Pr`wCG7iP=I2wE4Bs>MDVo$skPsLnJ!MWHA7vpKT9DCy` z?1Qi4>G(eO#ZU1JtiTZN#D2I3&%`<}2EVs$gae3=#BaF)A1J^iTiOB zHY^VQyV1>YH1TnG37&{!@D#ihLzsc*;#eGk<8UmF$18CH-hh|k9XJv1L)|&~n2Ag9 za$Jd5;A)(VYf$&|J9riG7SvPVJJfxuduqT|o%!FR4yRN%`6ac)w=3%0Ian7jMBSs~ zeO>u<&*ewR$K`O&0@o=-<$NBM^9@wak5Kph7pOk&MBVp$F&1NA4(|ISQTKgoRQt-+ z{L9GW$vB{FC`#EpmsMY`j8e9ovN}po{U}9^smwXl|Dq^45?={&^g`trfyyz?=O?53 zG7UA}#{4<1qW1A}IXvIHU4I`cZ|tjn&J%0Ci&1$?980ae)OeIQE@5f^_<<{ z>swLJ*&SH3uNFn5obKP=Ot_sIexhicHDyN>! zp|7IP+rZa?J|?5`_I8|!%6lzp-fl+i(;2A#&O#k?QS-JKwNIC!=53{~uSU(=8r1vg z9n_kBjCwzPhI&7JgL*&xhYbDWPF{}R;rSNQz%sPV6{@1WY#n2Qdgy_na7_To_O#iRCr0;;`s zsP?*|=DQcFy?z*rgHZE56xFWEwBJ_yIJFP+D61nM)#ehr!anco%BMBTj*w4zl(Wip zs+}XIBp62=stu__s*lZ3<2crKM2(}X}v<1`lG!O_f75N<8rt^Ih5Cti{W*2 zoR6B<0@S<~qWV*W>QAv_sq0dEXDzBfAKFc*eZ1B2cDoDJPwm~JgXm}S8$mx)Y{;hC z98^DY9T%YbS%|S}!{_r*{mgfqX46sq%y67(vurl1zu_|9MxWOz*Q-X&Ys{NoXAG}1 z>WD+lYdosIt!z8gI(Ks19W}4Lv1Y$j9z;KKD6bc<+?yuF9& z$H%_@nf=P{K=nttuG?PwylC$yt_|KDNj4c(SL;?3rEZq%WTVEBgS!87okMfDJ4%ic z=O}fKGF$HR6<9Nt(05VB@|MS9ld-1mEm7)bQC3H`&2e3gp*Tw264xn3%|n?jw-s2^ zkNTBS#_+bsfXbDOI#gf#JT*dnmD8GLxlXooowy`+EM%bC|`Jdu5&YLj%L~iPq96MyuemNl^`jWokF}^dUWXdv22{DtsD5m7yc5-r zJ*al|t(o?H^znz@55}L0YBvqlZn|TsLu#++P`f%}1O9bh_lXXTSw~HIt%VMKYw1w` zRJQ6M`j_YS7rH-7Q2kr!cr|KX-axgt9@W2%sQ!J4YERcj|4{pUXigK?1!L`lnu`Ib zwg#itU^pt5t`$bfmFKdmzcEVLQp)NmaUJzPZdc^K#;*_Rw6g6`ZFR!%J&Br^-dNM; z(NS{dxUA~sMk!lDSskUQxsz(Y%sDhi>!aj|{~+j_>Qz%#b>e>f&vEOV^25K>pLOV( z{&x&@LRfRWxpC0H);x`CDwADH-Yoi{{Mo2-I%?GUKlV=yk4t^jyz1KQ|7!21O+kAq zQ}SQ!a4LMLp7NE^j*cB3yUy>9QYZ1lppMp2KO-hp{pTDhpN<3jo#r~}sPp4d{ksM= zj@wb|d>`uGScuwp%P|&TL_JU5M%}9$Q1|s$sNV_wh`O);MBUeieH8qh+XD6MIUe=1 z%qgg!75bz4uQtAk(0|QQ4rO)BLiK$8WSe3`Hr1xtbemx_ZI;cp zIX2hk*?e1I3vH1twk5XImf3P!VJmHwt+p{6J$@T+6KtYQvdK2ZhHR=$v*|X&X4)*9 zZF6j{&9nKoz!usfTWm{gsV%eRcAMR0_uBfO2IFpGTiOmb+4i;r?NB?~PO?+&tv1)r zwTta?yUM<9-?yLI3cJ(pv2`{D{cdEBwry<}n_~OhA$FvlV6V0}*}H6>U1*otXYH%@ zUHggs!dBW}?0(zuA3^_{+vDts_7oek=h_i=ti96SVDGT^*?haiuCy=Nx9msubNj8W zvVYhH<-zk$&*&c2QJ#M;tLJM*l(Jcr)sc|#{Kcb9>vO4lz zNB^uO6rqmFs?9RjD@V0ifoiYbmLP6|T9cNj`{i`UgHZc%IBE_@JDy;#wAa~N?45Qt z>brOz>brQ6&o8x4*;T0dYfPE=eYMX4m&4HKHy^P_%bxNatDZn7L_qvj^ZvGQrmIT7-4IXvGbu2YK2`K{xhP&xP6 z_Fo2Zebo3HIc|>HKgVFreD03WZg?D&)sbmcPk-kmd4KKWS9#SfaGgR_e~VD_T5L;f zDQZr?b^H@*f9yl`w?#z|cRax%Iv=6F>S@jjTxSJp{Hsypf5Wb~8||0& zJB+2=&!{>1)A1qS1oufi>Ux50hx&ak)LQ;w z8*C5u+!3hrQn_`X^{_-#C{jp6!ji&je1Te+3u+KcwajR8xs$=qwNHHCF<{`T<7=}d#Al0 z^)tXjj-~eBqo{G~UMQo}}3u##BguJU=QamR37Ry%G+tadc#Jr1e8 z9j#HCbEl*BLx$^W9c~a4k%wwyp>xFY=gcTMDx9OzIjS5>^|Kno>+;Va zjzjgY3D-&^W@k-S5b~Vn*F$}jnAf1j^$u#xAEU;+1-1XbL(S#SsPey~o-K8M2%d9?qs||RTKCo%{&~gcmr!2M zxfOOb>OGsxb$ySfpvJ5mw=|4Aw>d7W{uD+jTS8eKrKsE+P~+T;8s|3DICrAjZ^xfw z4z0a?UDo{d-xcIdM&<2|%6l0qZx$+VHfsK6p!z!tV{tyJ{9@F5VmazPu?jVRucPMg zebjyP32Oenz$W-DYW}KFd8$$GiF!WU+Kg>N}+k>OIjJRlW!6J#hx=d;T2M zJMu!*-{H(aeWzrizEiG6eW%=v`up`WQF-QI8(e^zKaH`^VYSbn=B|vgI=;8NQMvY^ z=B|EKFn5hmhw^F;@+0I`xo~dRNkgqmIx6?gj_*dT%Y&$Oc^K8_$L*7-efT;i(Oa!Qr}A=)KeR(Q{_6< zsCkO{Ihdz7)EdOw1e=JOrzBK6nwzA2L9Iuw<2;*h z3sCK;?RgQ})0iqKtD_RtRu!tPYE)Y>zj%yTle02P&JbmFq@r@BIY&AwXNF^0GykE+ z(dVUr@;VApd5fH<*sev*%ZHAo=3o=59o_qd2hmRa?x39nR6D0Q?uY9CU{pJoJH8&( zPL9pBc{bk`*g{)`x<`v`396qum)0cue8l`3^fM0C&kl}HLiMu`s-GhrUxw;u7RF+> z&9S+t`!>(!V@-c54x&G0l-E&?>d&u^>+A{o(+Jg{6C9s{>Q4yOpH$SnnC3Vg)t?NT ziRzD@=~?m7=cj=3ItnqoUr>9y7&Sj7w$zr{a$8~R{T4je8l&n}a$fJ7DqsHt)i1SC z|A^ZArTZ<794f1RBu6QmM_C>Dt`q(pRD?Pzt2WA9uN>8B^&Qg1aSFB}4q?rne5+aH^(vsOjzZVbJXJ@jQ{g&$QS)8rk6=GG zM768E*Qa^pc0-ia8l~Dan{G2~Cf1B4FG|h=%IYX|9j#$$ggPp#K2*3~C2BlX7=C9u zj@cLNpE%SJj~ZhF#$uvPLiJU9C3Ix%xE0lpdrRfe{oH>-$k!$l@S9y9IRr|QrpEB1e zN6mEwsy~%JuRiEr%88JN%i;M-+#mF#KPvb6s9dA$IQzK0*FK4{lzR@fRxkVfgZ5#2 z1?sst)$vXC4pcui-u6dF9&gNFK_6S9`q&ZG$CFSw^ykbdIkKE1`+z!&qSPs-tlBGb zUA3iWPI-iSTn^W%a@}gw8r9?90#!d7qvE4bV?Wlh48L#eNvL`4gLA1L_t;saxSXl^DLST~|K?Rz#@F<#3zHbu#tGm=sj~kYlMn zNzKE#sQYsSY97WombxxA4-@SaJI&r^XWBV-zFmy^R#@hErCn{;V9j1y)gtnI#?%eQ z6o;y#{#8b)6LOtY)I6j)PCp<==a!M%&2yc6TVM;FL-UsvB}awpRAP8NQTwtQwU=V* z{d*o>jgl)wSsfz}s8bcCPM+)JyN=$`Nv&!hxAJSBw67nu)eY6}(;Q3n`%Kh2oP(N& z3sL*%64Z0*GE|-{)IPe|&P3f$b5PHz`KWt*F{*qS{cJ+K8TCxvj@n1NP`@YHgDSTl z^?lON^^QQ@Bgdfji2B^PK9W%RHRda$)X8w2OjLieP;F(S z<}kx(lXHHBT9@xpef$lzE_E9O>vA~85htM5r5)-y z*A=xcy-@2i0JSdXqrR(0q1NRx)VgG$*5zi@y39mxie2y-?20dAH+&nDu?$bb&3H0y$L{zO_P~9p ze|8!hml^)=Lo~%xiCbd|CSfn^j;CQ?)PEmh5ca|0csgE+eenuB1Fy#r=3qaZg=gY? z?2nJ(0DKD1!WVHMzKLh!2bhZGI0(1lIk*eY#l1Kf>o?2{|Mwx9;1J@Lcs_Q(G)%^! z*c&gvfjA6@;&2>|7vdxwfm87!ycN?i7f0e;9EFSVVqA`+aTQ*Iuj3eeA1}pEF#{`b zEbhc{xCh5$9qx|_*bpznBYeNKz?$bm`^3o4g`5M*rbQ`R; z-l*s1Ak_QpB8;<;aIdm?iUF5!1xU8O4nGwozIXvHqO@cO)Q2D#t-nPFz*ABB6 z+wpd?z1H4rXV_VGu3c!C*cJA9`-)v_*Vzqrv)yKQ+F$G+wqATNuET6I+sd}Hoosj8 z+xEBLq25zJJ3iMA!z9j+aXbDTG%&8r-*sq0To$-M7c0`l0)$N5{zH%Al-{ z8&Q3jj_Sib&Y`^7QF4?xN2zm^*>YQf>Psc6Uvd1oEJ98$2lrXCpl?Yw*{0Z#O|@w@ z9o3G;(c}2Y(>Pp_d@Nl0jT*LY=_&? zc7nYU_1wJywU=&3J$LW6_uGe1?}*18KZ&aMf-SM@>?Zq_{oekD`dsZ2m#B9BiMmgIMz!<1 z&wp}MaJ{ZQ)Hb#EqVAIi9lwm4=QmOF{JzgWj7^9iN6qt-sGkd-^Yxafp9|VLJ`weE z!O5tf3r_R-GwnI{0@Tk1qa2U3SJ#H@Tr+Say1_$O(; zHM`a(LYJz55FL)7!2IcnXHaV%9{>OO66JNtYeRKK(r61qh1R}STM=$FdXgP&?9&_4Ui`HTFi-?=|j3eJ{>N{a$09U1XP{)>r>5FS}dx{Z&DE z9XnC`{uk8q?hn-ds@FQW-q;>xk45eK6EF@>vb|9IzMtbkcBma`$J)#7HTFh39rb>? z$3B31KP_p2M@y^Z(t%>gV?*@rUuccys(&ydTZ~Yjm8W zaTz*qKfBJIJN>-<46S>AG3R=8&JAd;##}d#dofxj54TJ2)sD33Os+GN>pb*)U5t+D zD)jwv1NvUQ9X(&aMAz>jbp3vZ&hHOs`*HO1bOK$!Np$^IsVnZU71u{UPd7n7PiH6I z7M+iO3+vy0`gP%UF(2w%I?=T`6J4A0urwcZK8w)#T#L@|pN`MP7vpQV4f9`V)8g;E@51ef*Gv3<^nJJ``aaw~vHJV-2hrc3o8tlK zXWk*`@6Si&`tj&@!;{g!^PYwNo%g$mbr0f8;*a7$yfZ!!AB|7Nzr>gEqvZKFHe>Z> zMXVnqu8AAP*=WCWdJ=)67|KO5WQ3Gp=aT-R|(yLPI4u7{{^S&W|R$K%uJxqco! zkFTQV`pv}ZeYKr>u20;yIM?4q<9E&~&h-rRIo%L_PB%@go_n>v`kZcqehxIoCiLC2 zFZwxuKs+QK5s!%{#8cv#aY4KwUK+2CH^sZ+uW%Oq{T4UJCv*KzxCQaw68|GsZC;FT z&A5J?8Mlrfh#!t0kFDsrJ|eMtu8)f+$Ft&h<0bJ&aUk9qABc~{C*m{lh4|07^6aAD zcgNbeS==`668DOqh@XjHh#m2icy?SEFN@d2o8!;pa9k3fj?c$e!$a^{JPQAe$K!K&D*gq(h2wZWK985gAI9tA&GBdP zm+_(a+xTSsQ~YauIsPlIyiL*H8gU(T{2SuGaC3YEx4}2D5&wYC`KB9rwi<#0R0j4;~&*jHkx4;<@p{cv-wE z-Vkq%cg6eS!|}2BRD3qRfHN7#KXFt1Pp+@gP<&5XCvF%wja$a;O2C(ysIJd^nO_)>g5uC#s8|LSq=xIvs5=ft^jm$+x#C(e%t$HU{%@%VUhJUyNh z7siX@qIhk*Dc%w9i4Vp{;}h|j_>TH-TsU*hj1?u}Q*8{=*9?)X4_Bt9OWj?bZg3wbH=>v7c`i+Rq7 z8^+D!HgTue6!(n>#lz#V@oVvn_?_4ruZ%aM&z*n6Y1ymtb2mYK%Ov{Tt+G=QtMBO} z;+k=N^tsz9@s#H#Zi>z5d%88Ywb9XZOo<0j5uQ}f=GhUzh5$ak-(Xo!j@i-AD z(PG}&*!q#m>(H=s(WVj2-4vT+OKgp8=$P9Rcf`)v6}w|k>_vaC?@Qbt2jXBHiotcOuh>fucT~|M|Z`gbKb#=e` zsB7s@+X3{QK8T*Jd(m9}JXs-ERb!E>8l7Ja+P3sv;G@%zgQ}&^i&H#vY@EscZPBtz+!JRJ@00kzcxXH_9ve@Lr^d75x$#1r z+ULvmnSOuV=ZUnLME9m@w_WFQzJ@&*-bf3G>??c^a zf1d3FKURL+Bhy?x7%e}KA{JLA3RGqD(*{}QzCrMW+~4;^LlQoS^<#t#;`>(F`Cqq!Rr&qs3~ zocM5b%txd9a6H+Sg-fUr(X)coxm&wfgsX$xP`8h|p1c0HwW<9?`MHjz&3M|lcKcOmQ}^Lw&h==2 z4d~n*V|RtNZE4f~wl;TFXw#QA{b;c-KYJ(3w6mULtDaZ1sX_O?7QH@3F6TOqo|B2h z>V5SbPR1(Q*{^MmZ7IK|ZRxW;cD$`^e}%RKX)_py($=v&TcK^$Ud3FiV@<4$b?98{ z(PyFoos&N|%`ZQvj^yY>*KuLu>(Dj18O`Op<=hInCaCKgPsXZ`6md10s|FosEn3X$ zyJfsgUhA2&C2d;c5$L%*4$Xa1JRP0)xrr}C*Z2yo#_Q1c;mx`JGxU9UKl(l#L4O}v zioOq*;S5}kj@R*D_{s8X+OT&qzYn8p`Z08@pF(qZZL~s;p44?Ns~%9kzai>chSA(h z(Egr5*XHlJZ{I#&t!46YyR_a7A1!k3hUVNG%{d>`y9`8^SBqa2Ts2p+%Ap3uDQrnkLGGXb2TPbi`ut3{w8$% z`^E#%^KwYyBhd45OyU#bDd_k-GlMHIz9H&chSBkjpyL}w*LN(jmev9-#*S|stMQfi z2D-Pa>{DD{Gp>tM>(=tA%InrbeM>9aZyP$U_QYyY*G*lw6VP#;7SBf4?YzVnq3d=z z`kY;hK4&+f<8v+(D=@wZ>RTq!@l}1Sh^x_ctHIJcCfDntRqe;W>9!tJc^%qlSDGK% zPeyg_JP-%t5V{V-=sJw#`Y1Y1bG=z+oQ|z#-(rll=osr_ zeQb!0IF+;I)6>u0oE_BF&a~}{-LWV3qB&jbt19Fip{`{#ZO7txuA9fTm?)FS_KvG= zzarNM(Rd&9d>)AI|M7{xf$mE;x|TiY`Rt8-x!)fLaB7WCY%RY=6V$a#V(AQiys#Qe zXE1RsTFkpSj+Du3J?GPsHism~5$ODmORN^PzB<2?(^rG z`Ad8U&fxw%=ri(Qu0I-|K!1067X7>13+Uf7UPb?Vnm5sLth#^kcei(;@q6R@(f^Ko zOWYW@&-Gp7htdD`^y65EpTe2=S=QpME7YZ@i4kiBk1`Z zMRU5&9Tjrcd?L>r+QvLrRcODT4*%QvhC`-b z4{n#vOI1seZ%s7c`f(F9-|WQO#+~CHaqqZ)JSZL(k3yg2uyDafl@dos}!maTxbX|UhuFG%Gb$Jq9 zmp`M=-30pFy@9UFYM(6rF1R+jE*qo&_ZeHD|E==&Xg|B+)OkJdv(vAK@02d;TDsA- zxFE6Z?W4C$d)t{~ByE-^$1-$1m!s$Gm0W)#u5v)p*P3zNxKZ3JZWVWkyTy5N-*`Yg zBpwluLD%ynbUjZ)*YoV$KM$R!?}bwjE5A-7)U}MJ?N}Vob@P~exJ(|~yIyq%7P%gX zTcPWg=dv!k_Zy*enT-lDK_;YiG98Il7j%Ku9-*a7M+HkwHZe7%O{kqY)0Z~)qVaFgb$Bv<@H0jHCt}atU*pTUzYh03Pai?Y z--52gA-TRGx=x#-@3$@EPG~>>B9EW1D<@t99lyESkDPw~+%CpXeM>*OZv)9Q7>D9; z?vJ4FhtaqU?a#CDSegD@o4P}azUtAw8e(Ivo5!+{j~>cR0yv|snI z_NdD9?xVh?AMN)RwBI`ut3_RNb-(V7i{p~GG%kzF<16uvxXNdXae9XDDl<;|Y@)92 zi;nSt#Om4{hR)fatG_t?oXyckT}wZjYanf1!@VlBok-isw5>X_pXs}fo_>8@s{!g-2GO-0N<19R<9CPZFHN7v z_U5WOyvVgCnrq#}>hrS^I;PDMtNXN7+#&7}_m1=9!SP6RTt45Il^K^~>Z7iuA05*` z97M-7gy!<+@d~-BK40XjMswBR)Hr4xGyVEFj+V4-Puq^ft+5Tw<-4MzLau?d8N||_ zq0hrGI**aWqj3zU=J;@h+;vA3bKE8FiBof|KDPWEyV7O>I<5=irRcb>M00rt4y=%C zjJlTbHxIfA?SV_k@y(& zyUGb@|NdO}<>}Xi+oe21)VB#_vxe<|AkvfN)DUyCb!q3FL3?a#5CTc$t9+(BK- z8E9YMM*I36mi7Rh>rLofe}PkbGF~Bf)lo(6YBcw{XzrP44zF!}-1O_=_}Y@g`k$qK zTbcUYF0Efr+FXkEaW&fSP4O;tPQOCu^jq}3@+7)uf5vM38@gxzK;QrWM$b_77mN4* zy6F3V6ZD-oC$akZpw?I0tNGOYYJY0~>id7k_#w1>41NE93jKRo8~XRycJ%#!0{Z?x z4SoNggLSwNXX3@UDK1K^-dF3Z?bUp0ew~9i#M{wv{1UguU*k6TJKPq>a625w2AsgT zIEmZiD(%JpKL%@|v3g&vueMk7srhwR+yL!=7W&`qZ-*bmU2zZm2!04#un7;rJ@E+q zFdl>R@Px$beQk=iH#VP|Uq6PYq5YqO`{9N7al8We$LsJD_)~1bA)Jqk@sqd&55T2( zATCR+-dF3Z?bUp0emw+VM4t!GSjX{S;h+DztdvWoXZ+~m9Cf1CyU^4O<$dUPPVQ2Qjx0`jn!OrXbyiq zt3r;pYjf5hr8Sv6+9YiM6pV*2jj} z7@J~qY(e+acW%##)1RfO{p_K><;Q7%2YQC?iw~pc^7+L7K;PF@UoPI?)mTkfgZAsa zRsU=Hemy%a)U|vWjZenXxs4abbJ3hWW33f(j!@U~cQof(#}zr(N1yXe&|Lm*(O)K) zIc(oXeakWEd*g(}YQEFZbvYXy-+AcVFG4@p7NP5M1NymlJDT?w=;z|E68{GM9Q{46 zg@4TTb-q&k{`Wpyo9mmS?f=7le~(%t@n2H^@A04LJRRG)CzaoaHgZ_nV+XnqooEh! z9;uLHAZ-WJ##?+^ z{H(Vnpa1*4=Dmm5@jZy1*T>NF`V>~yKJNgd!Cwg92{%Xg{a$t{`aSJR z^n2Tl==ZqWunzA*^F554qWSdq#Ix{^xHcAHap!h?n6mcn$i!?`GT$ ze~y0d8%DpEEkVzRd(rvz>CYOsOXs8Y#NvFkq2p;sUne!_xu`|o8Fh)(^HCogVqGt}eGX99GKj|N*&m9-IQ9N%sgSGczlvOIqHR3OXH{s^k~UvK`#%ru z{~~lPE{|8o8_{BZe@7WFlizygoJgBD(Dh#Bq#}pf$6DxmuaBAqG#a9T>n1KApRlxJYJXUXQ9vIcM~5QPmHIc^K(r1omzhXCa7B~ zUn`s>cKxb}&Efp2zfnF%Q`$D8>(i39_P?UcT%5sboN6;(p-mHYEzN1;nXLQf^z*f@>(iBX-RSsx&@uKV zR*PC+U6(%exw$^xf_{$OnfPAxb8K;3f<8A((K-1UHnalctNVJj_;UUKLH(=pPj8;mDg>6`j){s6o+HYDaF3m#s+lVc0sF7J5!ySh(Kv>#+j#O$pnE%+xGL?c(eXRC+S4nKzboy2fbQ$HSUQ{Wu6SR3 zHa?7w|FOhRq5b-9>{)?+>rO4^xfQx!JD~mUmRK$7xYTu1c}N5?UMj$<&fTGVl<;}}B6u{bV4$FUS0$1-#r?or)yu?yXs?!-Ol`24JDIac^=s&ib>apQ|}WsH>xK z>}_q2tkAaZn?>9D*np1Re)}r4?MRzWbnIPe>sfrNLffIV9e!Jzn*T08&#JCstkvik zeGfO6X~XT(x-_NTzVRS*jEAA~JPO^b4L z99w~LRh?d(vubqxY7*C?uk`t6QBM;}E$ zFFuLx?Pn5y0e$AbocO=c@2B5DKl8eCy$Ah$u{Uua`W?I<{XOxPT)z|jeequO_r*tY z{c-g7#itWLhyK3!B0BEZa3=9viB~(b_}_6_E3S{5bAJ<@jdOB+N319Q5W4Q3wKu;t z{kq#%7j?B8OYeomy=XCyd*0kVeIDzXVwJ--tb+V-Vwf7%Yj!8nAD!?V$JPUU%5{dX~z_n~8(gU)+LbT0D~ ze-<5IJNo(5fu7sW*p>U;u_yM%K6G5}{pbpeYmEAqadeF);$+CGHvbiSyC*bPr}Nn0}w#(;n(tdeOKq_Q!!Zi0<(aPMzhh3c0Jgi`>;{ z?i#eMdG4yvwk2&_)7CMXqm9_J*PdMdTzzi&ISwR8U+hm?- z@2j7G>&1=H=XF-%?a=3SSM=|tA4Wg_KA!un=;z-NSck{u`bp^e?ZCC+^QPY$ZkN_? zfclm@(e-;EK8mj2Q|S8r1znGq(ew9j^c_%rZn1vrqU*OwoQ=Nkwnf)(=Um?d{fyWL zXW)Ev{SHOf??^PyvFQ4ph_2tM==X=S(7!i-7p?bw^!vjV==xoQzVB|%{hy)hcR#v* zzefMw{JY%$1J)7$Iq~0cQ{sOl{x{Ade#du;{@#s#e|QgWf$z)p&2bL#Hi>t_t%yH} zTjNJ?8*IUCu@xPE8#Z7&&czON|6KdCdZyn$&;9^)EraOZ4JEd{V;e5h-gf4wI%GV=c4<6A-eyU zq0h%P=s0dh_y6bU{@+6}WKY#lD;dW_#`>1c}N7r{C4#uH4jIQrU;?X!3$Kynt zM91N?cte?SxW^4W#TZ&*BRaR%*n~dg&AD%0_o(`U%Jb_sbw4T|7f-^e^?lcc z)31Z;J3w8_Allau+Sf4J*OIst&FOQ~Rv~BI`9;p=*ofwAN?acs(DApRxqYUF%H-yD z>0I`teJ_^wEpdMwh=XYUAuR1%;-zs}9Er=(_x>x1-$I}J)h;N;=d<1Rz3JDJ+oka} zQQy*xj_-@;{Lewx^m=sv9zw_W0y@66E-cz@kJZEnp=ahB=9oGeZTTL)qTI1Pdz%09ngGx#J$mR?2nG)V00XZqvJRl?aw+llm^XnP~rxZR_6Y=WG9MX?t?oo}Ty|wC{yzF7tL)$TgC> zj{m9(b!#s!#$1C_`9~|XX-i!{8>=s#eqP)z-XrOw7ae~eI<|gvZnwlc(Y3la@nUoz zAIEBZI`MPpd3rJNYv|d23rp{jON!@oEi_&~ZW3ps@0huXcaM9;PoUo)Ka=%M5;2jJ8= zZm5u}hq{(tEbUR+ns2;9+p)AAPaDU+@ulVGU3XdWyJ~%Gh>fuc9lOtNdxczG)U|Y{ zZ4Wx`-sEtv2g>BIZD}vkejH1Ck$5sz{UEa`i^{5p*3!lf!pcOPL(pE}hSszG4iu=osn}tLIl8Pd$1*cZj>8XK7yI zebMuI0Qw$11l?c1lZ~#xIQpn>=|{&gfX-(yv0Bt|456RPi{lckCSHn;V;S1Nzr(d& zG5uO{yO`&qB7c2sh>fu)_M`m|p#9&O>%D0IeTkc5Gr9&X=$^Eq&uLrkx5p0jdtYbl zLfySRQ<4+M>V>RnZ#C9{VLe5be*sJ-1AMo{c{0TCR_` z#5?1?adBJ{r_RMhnf&IpkD4osK5DUaJ`>lW_qB9Bv2;G;Zs;8LM)zetx`v11RR0}| zDz9fB^)3BaI+uwD(Eio_2hslTjf>I#A4mIt8twl%oZ8Qc73jb2s=O~_1D4)*iJQ>= zn-jO7``Mbf4X5_=&>v1eU+2|b7YJODAr#9Bb zdh~oY#71;In-Vvp{cOgy`YWfO2e(W8bWz{_y3u{>LD#Jp?WYf&%k^lz+v45mzCD1> z=@E3_p2+=Y(dYRE^m+a#`aG|Eb@93TZk$24L)ECyZCla(XiMB4J7Om~#xC?6ccc5!ll#4~52xm{ zF?nKA! z*?XZ(Kjt2wu4OQ7hvIN@n785T@^i1cw#cz2I?nauCUG`89zV0Y%H-m9X})dLw|oN~ z<2mSBUWl&cO^JVwj&B&<#}RZNN8=dUug}2b3iMldUD0nnI**3f5?fypiznzJ@ zVk0`|ro_#$JNCrh*cbcbKpaHp;T-R}rovuaU#wYmtckU;4m}t3XfdzPS8f0Fd9CL@ zw53fux;`C=)%$Ah&e(;Hc>%gU7hyFn%KdB6{{8nky(`fF81*g7(f(hHZ=vU6wHu1- zv*TK5|LdduZ<6cVqVL;X(EZsf?iUY4-?xV*))~ZKM87|MHGUoa{&Ys-Z=+}J{KP*% z-?u+P|DONjTpvW=w?pXP^B1G<+a-y$^xuQT=g_}dyo7c5I?lwEe$4veyKpmnFV4bE zadX@TXJaF7f%C8)_s2PSFxt9o}*6S*t zpE2rNmZSUk3YOlHakU$Zc&)g8+yvdf+35M1o9ny8J>x!cK9=?m{XO+abpO7B?%&tZ z&&&Tt_pb;2yu1|MzpK%IA9EABe|Mq#cON?5-=On$OUM$c0%I-a^%9~)vLdTyK0bGt8kZV$@+!@SS>`YyTQ zhUwSWcTOL5E&XXb5C?PJJg(VfnLM^P*F@S(CP&px#XeP|@0WGaF>MlO$8FJl+8OQ7 zy*u*9<;UGYT}vmrR$b_sSP(Bj`??g(>F3;Fg`8v5wTz=VC(xX4#8qxCa(VWvZ=8O7 z+%Bz06ZI|4Xug)jt+6e(qvPv9=iZsP3#*B{6ZfF!wl{HKydHgCZ%KSN&LDmOox48| zuE2P!ZYjoFjgGelo&QGY{>?_$bS^sHUC{CFiSFM%=y>NRR`09z)%I#Wb$tGO;7_Js zPtR5lbuGQ<*!mLN-gi`QnfA6b$5`5oC&xr$^}aeji{rI8e#_K#=V$SmuuNU|J!0|q z4U6OQTEoEf^Rk}(o_uRDw+3`>jp(}1L)T`1w4Z~}aUF(^>nL>Hk4M{GijM1Qw13|v z11r$~81*gV$uoiWKZ*9g%1;Z|Li^t!@l3S;Iq15~Mf=|cOWz9;?}x6-rxSk;-Lo$x z{;${-7ohLgixMx2H^ke~&y`;$ehB?N?01RB;_~^VmgwOE;SD0yN(uG~Z9q^Z2vG_oL@=33?u$!D{?FdLI6bo`*FDi_hB) z(DSeb`rg_JJrDD62F^#vYhTCSQelm$Yw1PD+Lze&epeYN)82OO`B>Vld`FREb9BCQ z(egobzRl=+R@#PeA8;3i=K>Gxryu^Sub2@8#$?{chBH>-6*Fc4?g7 z{8=%cZ=rKNA4}sWk83p^C(v=ekyst)YSh=Y;`-<~XC_wnWlrL`aTj!7_DZ}TdX_$o zKBu3{^)I5||Gt8L|N9y`KhHwrPb<%Fg!-0Ibbe!rwKPw3AI9TEu1})_UtAU8}0wD$ipmZHCc4mLyjDSQ?*0`*;aGPj8}g zc;{Wk^D_hO*YTZLreEjPLS0L1oLcvRGVQEy+aB6zFFM{nw9o!rABcl-C=TP)y03Tp z^y^~os-G9*tBy6X7G0Cg&~@JmU6UPh-~7JoJImzfc4_<_X>$SE=N0HYu8TLvJ?}31 z*ayA;*Ia)OaW!!r`W$bC?)lEC_Ydm%eEd80-;wL@jz7!wU!u>)Ly3PIpNxM(=jH#c zcgx`P>&ETUJi5qlxdKb`N`Kd&YxiK{adhn_(DU>LT7R`)6t0ENYkhQHo8YyVNoj``lan{m0^SZ}I-;)9y?0tLW$R*At(C{{HiAbbRN>OVIBuKSKXb z`eXF>_Mc)M4&h8(jGN*TwEfcf9B$6_mvA<|j$7cWL&fjyGjI;^d(n39$E}FBz^!pR z+y-||{9)XV_~YpB?VrNA*oNEVG3ei3PD1mYjyn;boA~?jhw;a8Fy4!v1JC_|Kl=** z{NKgr(cD${6n#|38uaYeqQyM!ZC{x@)-zX2+O)>D*d9Bu^bSni6}w{(+Mjz=bLaHq zp6YKT?UthRc`mU!9<{%h;_K-7UFny_`*3wMR_m$fckRR*#F^;%os)PjdLDN{&+neO zz7KkS=O;cm9*%x)9gV(oj?eXzc; z&-FTS!?+*5*d&j5H_f;FZF2|tXJ5EB^<#cpi&PCr>-$&Qw3iP?Y z2Az**d~!wRLw(C~bYEXV&*)p|d{(=!xW0DW7~R)d=;z+nSdAY*&+>;7tM}FVYJPP- zA4BK!DRe$<=zNYr=W|kG^}bqPOY4Dt2Rj{oPo0x^VZ1mlLjQfvwdi~5CiEG&3w=-B zhvs=WJ{F(C&A9$-;up~O)T@c##L|1}{^C9LE;P@2abxs7H7oJf=zD6%#Jl5m#2>{5 z`~>=*`V6{%J~Ox8{T2TCzsuD7rH{Ine)QS^x_5)QZXWlh>KD`J@wWRikv5abRrNrT zs~XL%7PY>*uj``y+{n-EE6`6%@_aRU)G>bpJ#YVw&b=r1FO65D=jkSNPIu+{ui|gf z=jRXT^E007uf(^|^RxP|iu1G{dfwiT&Sy*X`PnIPQ`{GQuN;*4aP+(#i~e2kMD%m< zRP?>_t;FY}=j{jRdF#*hTdGR z?#X!OB;FC{5$_&9iXS2VB<_u$#gAe;HscA2)%$9FHIIHAPs9E39Q*`cm{{i%Uy=B_ z_|rIqpW^=F#E-{k;tTPgapi}Ke%>8x<7RQ&xJ%qCej!1y)A951%ds<_8PAIs$E)H`;?Ls!coyqE zg8z+6@oan!zlAR)R`09z)qU1;@y+pBVGr;i|nT6VJeFa6|0J&C$FKcpdJB*W=#k`)NMb`ruvcMbD{<<<6O7zi8zVx@CNrCm+#u%GP$kl*jkdWHTm1n&x>|6{|WJw zcxGIHj{gFz#>;d4TJ-zYP3Y&vUAg`%^!wIta4mciXW*aE?;n3dKQAV6YF!U}p#0i2 z{iaxpW^}Dv65HM}^_FSR?P71zW+*v^6A#8-T$Q?gu^(3>9zgqXE>*vpew^NRovTKQ zu~wsFtw~%P>ta2+j}2%)jk!J#ozuSP_rL>k{V;T$k3v6}k3+}h-dtE_T#jiVIjCA1 zlTH=)-s0RXrL%?R_S!^++|`d3^Q}VXJ2TEfb2#S4;mYgQmOM-1a6AJYpO25A{eK+o|5IrBEZYAUVh7s) zDQN#^=K2D34K70W?ebi|8a-1tq0h%1=<{(O`g}Z$mcOIV_`lG3eF zeqa6zTGrsc->2S#e!qEN>TiyIe{Vp)Pc@?JQ^(Jv4_4lvj^w!jU7st^vvobXKDVLk za}T;d52Nez76?*D~$uFv1m_4xwV{r#o` zjX!~|&u0?_GX2?R zg1VM9eqZERAE)+stU}us>ROI|TbuQMJ^lRbZy;?3)5hnbxk8(Xw3$TL^F5v(E~oCC=*7>D9;a+Ky< zAxG6yIjgZI*2X%Vn&Z13tuV*5X^m~MJ$9gHs1wcU`nOfcIgqx4aVQSQu{at>(A+*7 zcU8z;_lN&mcf3N~j?{Ip*86Swbr_(o!aU;Hc31O{T?(I9jD_zYf1U_?xC)wH`>k|LuJ}o-}N0yn^(~IKWLw8 zj1{gEKNCNU&f{a~`TbwX>j``J&?bss|i9oR5Bt`T&ej&1kfPd`r|wVG#(Io6`F zI>*g$Do0m^9Bs+b5!;iaGdaw6Uxge4X*(G0+p}6VI{o;)?U*OhW)j_}sy`QVs7BYL z23?CqYyz63yk$gB5a(QP(n#=9)-b z$NFl8whhk}Z5z?HO|d!G9fN17>50ng*OfNi$BG}Tl?hnb2CSGa&#rfqO^4m2Uci1 zmbNda?Z43e-!We7^SWqpEY7{ZOg`&5o|d#}Mdx$`n)7({ynGW~oA01wycAvMYjJAb z-nF#+oF}MjnT%D>7kyNt#XO#i)-rjl=Xg&@o72$oo{e5_LdV;Tj`x7X>Ua-9pQ|Gh zFGSD9Wr>f8*P!R(W^`Px#S3M|W#1FjwY(8+_XXnmr>0*Q>)W>Buf_NqV^eI7EwMGW z#rD_{J7ZVujy9F8M#G>*mbI1wjf)$(FK)v+el#=2M^8)9Q@ip{Yl zw#K&D9y?-Z?26s7C-%m^*dGVtU>u6WaU_n$u{a(l;$*CPA@h$lu{PGl`q&T~V^eI7 z2gJkT(ecFi&G_y3z1SD8kGI8p;=}Rx@lWw@aWby*w_-kP#SP-DxLw>eek8WUL*h~K z_;_mkRy;rcAoj;w(C5i#_ryO=|2&nRL+V;4(RTy?BXa(;r1y<|H&mnVvUSniUK^>9 zyM?;uXpL>?yP-Wfs`CgJ*J5<6UOTl+KaR2H z??sMUw2!*P_2@gYA+h;<*Nv3P$L-R%JJMzl%{he5e>m6s&~@xb$2gGdo#@_mp=;Eg z>pkfA;$EEEg9D$Le*H@Gn#jDcG_S<<(LCntE0c%YrTMg_O?&K!o#+~MCGJM&)04PA z_QpQ6Uq4G~|1|yhxn1gaEbYe8IlSYgVoqzL{cap*#ogo9aYwX2+n!aXKi8{^x)$rZ z_Jd{WThBH_X)}!WF_KulukQ0Gx-QG&ae~_S2NO8C{2##I3O{ zw#Sax8M|V4?1{ax5B-kO9|zFiV+PURV}{~z?vJ3q$Bf3YTpvg0={c)@w(>mdUMc2T zkIu6pvAUk>dN!i#IWO*uJ~s!Udv`e6?^gWWwF3S2QQ!RiXur24R@e8=cyC;czGs#s zUK*Fh*5UDDAzZOTg4sF-xGI3*LPm7?~DHJ;Q;jCQyr4) zN5o^|3FyD4IwkR$aRK`8sV+eOUFW5_er3Eq-h!KP|IWns#>F_B>q~G8T$=04;&OET zU86VuJpI0x_Vgdc+Bah9Y$tBU(%DYjiWc*F23wz-KCku6-IF%Gu`l+cxd-APdYM?3-v9n==j^P^tp+S zw3py$6g_xsTC_M_t+$o0WEgr37;^c;@l`e+Gh)h z>gfD7rOxp4)2|n|OY>`@zNHyU^F`;^iq5Ys*W1zYoq*2ol*DJo1@VG-DLTI^(fM7U z>$jli_fB+v_vZRybbd?F`7K4y?{nyT^d()bkOE0=^eX$>1w}ChqhtPE!PCSCu#G{GF&~q`KcmiFw z$;4G}6yw{KYkey)z9#BBuIAW+rG3THzM`MY$6#q+(fX&vGvk7ILA*3x8LyAGU}<0D zy}7W}T#R$6za+8lK>RfBh|eW{F}@bximUy**!Nwi+xxf5 z=dy|VmS%L_T4HN#i|y#XcVOvx&h<0nf_Oo^G+v3N=NbL{yah}9jy^jNpx-+mLHmCq zJ`wj|a!YpX-0b?TP<_?)%?!{h#qa@tyxE z^2|WrL%svM|6X~&Tc~eoP5U#B|}<*Sbku`xEqme?FyV;kC^V;NY1{`#nI=|{h_ z4kT9RrLNN;`dr)_7o*?PmZ0mjG}o7*>$DtQr&n_Q4V?NMX@05lIy9|RjB8(XTnEHM z;t^PSPbWSBeO^zCXQSg?-;VXfzexP6 z_?!59^u6>)^u6>K+!kNX{ePkFrIlAL#<@mZCvF%wMd!aIy1v_^`|M{`?W>jdxr6$a zQ_y`n8{OxH==d@|=S1q9l zHMYg}*bzHp7y5j4C+bMAu**x(55B?~#KNABKMJ zAC>qxoLcwG%Jl2H4^Y=Ki1s;z_PH4Cb4lW*Xfdy!Et6&PTF=~d@5+48+#f}AADvh& z>U>T|*ZrKt$H$X#b*?W&`}dvH`9|gS9HG8tG>)PDkE3&&$n{CI|EhNv^{dhKtVvvp z_FsoSL-mOp(C5D~aTEIdHz#h1t?>x-`9CJ{dFbn1!HlB^n-*<86o0aE3 zMt#e8oIvM4iO#=jt;`ple+|0+wdnloa=#v(e?#I%^b9m5ZbrXHwxIKG&2@e(eJ-i* zzqc3Pe^aH6`u@GD9sOMDNc&Fodt_JQ?%0D<=lj%uPrnYH!I88Xjbm{ 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ȍJ>SPyP~IvJ@a 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 diff --git a/src/native/addon.cc b/src/native/addon.cc index d60276d..161f035 100644 --- a/src/native/addon.cc +++ b/src/native/addon.cc @@ -1,96 +1,99 @@ -/** - * Created by Wu Jian Ping on - 2021/06/15. - */ - -#include +#include #include "./MurmurHash3.h" -namespace addon +Napi::Value BytesToLongLongString(const Napi::CallbackInfo &info) { - using v8::Array; - using v8::Context; - using v8::Exception; - using v8::Function; - using v8::FunctionCallbackInfo; - using v8::Integer; - using v8::Isolate; - using v8::Local; - using v8::Null; - using v8::Number; - using v8::Object; - using v8::String; - using v8::Undefined; - using v8::Value; - - void BytesToLongLongString(const FunctionCallbackInfo &args) + Napi::Env env = info.Env(); + + if (info.Length() != 1) { - Isolate *isolate = args.GetIsolate(); + Napi::TypeError::New(env, "Wrong number of arguments") + .ThrowAsJavaScriptException(); + return env.Null(); + } - unsigned char b0 = args[0].As()->Value(); - unsigned char b1 = args[1].As()->Value(); - unsigned char b2 = args[2].As()->Value(); - unsigned char b3 = args[3].As()->Value(); - unsigned char b4 = args[4].As()->Value(); - unsigned char b5 = args[5].As()->Value(); - unsigned char b6 = args[6].As()->Value(); - unsigned char b7 = args[7].As()->Value(); + if (!info[0].IsArray()) + { + Napi::TypeError::New(env, "Wrong arguments type").ThrowAsJavaScriptException(); + return env.Null(); + } - unsigned char chars[8] = {b0, b1, b2, b3, b4, b5, b6, b7}; + Napi::Array arr = info[0].As(); + if (arr.Length() != 8) + { + Napi::TypeError::New(env, "Wrong arguments").ThrowAsJavaScriptException(); + return env.Null(); + } - long long value = *(((long long *)chars)); + unsigned char chars[8]; + for (unsigned int i = 0; i < 8; i++) + { + if (!arr.Get(i).IsNumber()) + { + Napi::TypeError::New(env, "Wrong arguments").ThrowAsJavaScriptException(); + return env.Null(); + } + chars[i] = arr.Get(i).As().Uint32Value(); + } - // printf("v: %lld\n", value); + long long value = *(((long long *)chars)); - // long long range: -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 - char str[24]; - sprintf(str, "%lld", value); + // printf("v: %lld\n", value); - args.GetReturnValue().Set(String::NewFromUtf8( - isolate, str) - .ToLocalChecked()); - } + // long long range: -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 + char str[24]; + sprintf(str, "%lld", value); - void Hash64(const FunctionCallbackInfo &args) + return Napi::String::New(env, str); +} + +Napi::Value Hash64(const Napi::CallbackInfo &info) +{ + Napi::Env env = info.Env(); + + if (info.Length() != 1) { - Isolate *isolate = args.GetIsolate(); - Local context = isolate->GetCurrentContext(); + Napi::TypeError::New(env, "Wrong number of arguments") + .ThrowAsJavaScriptException(); + return env.Null(); + } - long long out[2]; + if (!info[0].IsString()) + { + Napi::TypeError::New(env, "Wrong arguments type").ThrowAsJavaScriptException(); + return env.Null(); + } - Local key = Local::Cast(args[0]); + Napi::String key = info[0].As(); - v8::String::Utf8Value str(isolate, key); + long long out[2]; + + const std::string str = key.Utf8Value(); + int length = str.length(); - char *c_str = *str; - int length = strlen(c_str); + MurmurHash3_x64_128((void *)str.c_str(), length, 0, &out); - MurmurHash3_x64_128((void *)c_str, length, 0, &out); + // long long range: -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 + char str0[24]; + char str1[24]; - // long long range: -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 - char str0[24]; - char str1[24]; + sprintf(str0, "%lld", out[0]); + sprintf(str1, "%lld", out[1]); - sprintf(str0, "%lld", out[0]); - sprintf(str1, "%lld", out[1]); + Napi::Array array = Napi::Array::New(env, 2); - Local array = Array::New(isolate, 2); - array->Set(context, Integer::New(isolate, 0), String::NewFromUtf8(isolate, str0).ToLocalChecked()); - array->Set(context, Integer::New(isolate, 1), String::NewFromUtf8(isolate, str1).ToLocalChecked()); - args.GetReturnValue().Set(array); - } + array.Set((uint32_t)0, Napi::String::New(env, str0)); + array.Set((uint32_t)1, Napi::String::New(env, str1)); - // setup exports - void Init(Local exports) - { - NODE_SET_METHOD(exports, "bytesToLongLongString", BytesToLongLongString); - NODE_SET_METHOD(exports, "hash64", Hash64); - } + return array; +} - // init module - // 下面这种方式在worker里面报Module did not self-register错误 - // NODE_MODULE(NODE_GYP_MODULE_NAME, Init) - NODE_MODULE_INIT() - { - Init(exports); - } +Napi::Object Init(Napi::Env env, Napi::Object exports) +{ + // exports.Set(Napi::String::New(env, "add"), Napi::Function::New(env, Add)); + exports.Set(Napi::String::New(env, "bytesToLongLongString"), Napi::Function::New(env, BytesToLongLongString)); + exports.Set(Napi::String::New(env, "hash64"), Napi::Function::New(env, Hash64)); + return exports; } + +NODE_API_MODULE(addon, Init) diff --git a/src/binding.gyp b/src/native/binding.gyp similarity index 68% rename from src/binding.gyp rename to src/native/binding.gyp index 11992e7..ca0476a 100644 --- a/src/binding.gyp +++ b/src/native/binding.gyp @@ -2,7 +2,7 @@ "targets": [ { "target_name": "addon", - "sources": [ "native/addon.cc", "native/MurmurHash3.cc"], + "sources": [ "./addon.cc", "./MurmurHash3.cc"], "cflags!": [ "-fno-exceptions", "-Wno-implicit-fallthrough", @@ -17,7 +17,10 @@ "-Wno-cast-function-type", "-Wno-attributes" ], - 'defines': [ 'NAPI_DISABLE_CPP_EXCEPTIONS' ] + "include_dirs": [ + " { - const tmp = _.reverse(buffer) - return addon.bytesToLongLongString(...tmp) -} +export const bytesToLongLongString = (buffer: number[]): string => { + return addon.bytesToLongLongString(buffer.reverse()); +}; -const hash64 = (key: string): string[] => { - return addon.hash64(key) -} - -export default { - bytesToLongLongString, - hash64 -} - -export { - bytesToLongLongString, - hash64 -} +export const hash64 = (key: string): string[] => { + return addon.hash64(key); +}; diff --git a/src/nebula/Connection.ts b/src/nebula/Connection.ts index c66581d..7aef40e 100644 --- a/src/nebula/Connection.ts +++ b/src/nebula/Connection.ts @@ -3,18 +3,19 @@ */ import _ from 'lodash' -import thrift from '../thrift' +import thrift from 'thrift' import { EventEmitter } from 'events' -import GraphService from './interface/GraphService' +import Int64 from 'node-int64' import { ConnectionOption, ConnectionInfo, Task } from './types' -import parser from './parser' +import { traverse } from './parser' import NebulaError from './NebulaError' +import * as GraphService from './services/GraphService' export default class Connection extends EventEmitter { private connectionOption: ConnectionOption; private connection: thrift.Connection; - private client: GraphService.Client; - private sessionId: Buffer; + private client: InstanceType; + private sessionId: Int64; public connectionId: string; // 是否完成执行命令前所有操作 public isReady = false; @@ -78,7 +79,7 @@ export default class Connection extends EventEmitter { if (response.error_code !== 0) { throw new NebulaError(response.error_code, response.error_msg) } - this.sessionId = response.session_id + this.sessionId = new Int64(response.session_id.buffer) this.emit('authorized', { sender: this }) @@ -143,7 +144,7 @@ export default class Connection extends EventEmitter { const timer = setTimeout(() => { resolve(false) }, timeout) this .client - .execute(this.sessionId, 'YIELD 1') + .execute(this.sessionId, Buffer.from('YIELD 1', 'utf-8')) .then(response => { clearTimeout(timer) resolve(response.error_code === 0) @@ -187,7 +188,7 @@ export default class Connection extends EventEmitter { response.metrics.execute = elapsed if (!task.returnOriginalData) { - return parser.traverse(response) + return traverse(response) } return Promise.resolve(response) }) diff --git a/src/nebula/index.ts b/src/nebula/index.ts index 48bc704..971ea78 100644 --- a/src/nebula/index.ts +++ b/src/nebula/index.ts @@ -5,7 +5,7 @@ import Client from './Client' import Connection from './Connection' import { ConnectionOption, ClientOption } from './types' -import parser from './parser' +import * as parser from './parser' const createClient = (option: ClientOption): Client => new Client(option) diff --git a/src/nebula/interface/GraphService.js b/src/nebula/interface/GraphService.js deleted file mode 100644 index 7069964..0000000 --- a/src/nebula/interface/GraphService.js +++ /dev/null @@ -1,1468 +0,0 @@ -// -// Autogenerated by Thrift Compiler (0.14.1) -// -// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING -// -'use strict' - -const thrift = require('../../thrift') -const Thrift = thrift.Thrift -const Q = thrift.Q -const Int64 = require('node-int64') - -const common_ttypes = require('./common_types') - - -const ttypes = require('./graph_types') -// HELPER FUNCTIONS AND STRUCTURES - -const GraphService_authenticate_args = function(args) { - this.username = null - this.password = null - if (args) { - if (args.username !== undefined && args.username !== null) { - this.username = args.username - } - if (args.password !== undefined && args.password !== null) { - this.password = args.password - } - } -} -GraphService_authenticate_args.prototype = {} -GraphService_authenticate_args.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.STRING) { - this.username = input.readString() - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.STRING) { - this.password = input.readString() - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -GraphService_authenticate_args.prototype.write = function(output) { - output.writeStructBegin('GraphService_authenticate_args') - if (this.username !== null && this.username !== undefined) { - output.writeFieldBegin('username', Thrift.Type.STRING, 1) - output.writeString(this.username) - output.writeFieldEnd() - } - if (this.password !== null && this.password !== undefined) { - output.writeFieldBegin('password', Thrift.Type.STRING, 2) - output.writeString(this.password) - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -const GraphService_authenticate_result = function(args) { - this.success = null - if (args) { - if (args.success !== undefined && args.success !== null) { - this.success = new ttypes.AuthResponse(args.success) - } - } -} -GraphService_authenticate_result.prototype = {} -GraphService_authenticate_result.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 0: - if (ftype == Thrift.Type.STRUCT) { - this.success = new ttypes.AuthResponse() - this.success.read(input) - } else { - input.skip(ftype) - } - break - case 0: - input.skip(ftype) - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -GraphService_authenticate_result.prototype.write = function(output) { - output.writeStructBegin('GraphService_authenticate_result') - if (this.success !== null && this.success !== undefined) { - output.writeFieldBegin('success', Thrift.Type.STRUCT, 0) - this.success.write(output) - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -const GraphService_signout_args = function(args) { - this.sessionId = null - if (args) { - if (args.sessionId !== undefined && args.sessionId !== null) { - this.sessionId = args.sessionId - } - } -} -GraphService_signout_args.prototype = {} -GraphService_signout_args.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I64) { - this.sessionId = input.readI64() - } else { - input.skip(ftype) - } - break - case 0: - input.skip(ftype) - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -GraphService_signout_args.prototype.write = function(output) { - output.writeStructBegin('GraphService_signout_args') - if (this.sessionId !== null && this.sessionId !== undefined) { - output.writeFieldBegin('sessionId', Thrift.Type.I64, 1) - output.writeI64(this.sessionId) - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -const GraphService_signout_result = function(args) { -} -GraphService_signout_result.prototype = {} -GraphService_signout_result.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - if (ftype == Thrift.Type.STOP) { - break - } - input.skip(ftype) - input.readFieldEnd() - } - input.readStructEnd() -} - -GraphService_signout_result.prototype.write = function(output) { - output.writeStructBegin('GraphService_signout_result') - output.writeFieldStop() - output.writeStructEnd() -} - -const GraphService_execute_args = function(args) { - this.sessionId = null - this.stmt = null - if (args) { - if (args.sessionId !== undefined && args.sessionId !== null) { - this.sessionId = args.sessionId - } - if (args.stmt !== undefined && args.stmt !== null) { - this.stmt = args.stmt - } - } -} -GraphService_execute_args.prototype = {} -GraphService_execute_args.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I64) { - this.sessionId = input.readI64() - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.STRING) { - this.stmt = input.readBinary() - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -GraphService_execute_args.prototype.write = function(output) { - output.writeStructBegin('GraphService_execute_args') - if (this.sessionId !== null && this.sessionId !== undefined) { - output.writeFieldBegin('sessionId', Thrift.Type.I64, 1) - output.writeI64(this.sessionId) - output.writeFieldEnd() - } - if (this.stmt !== null && this.stmt !== undefined) { - output.writeFieldBegin('stmt', Thrift.Type.STRING, 2) - output.writeBinary(this.stmt) - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -const GraphService_execute_result = function(args) { - this.success = null - if (args) { - if (args.success !== undefined && args.success !== null) { - this.success = new ttypes.ExecutionResponse(args.success) - } - } -} -GraphService_execute_result.prototype = {} -GraphService_execute_result.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 0: - if (ftype == Thrift.Type.STRUCT) { - this.success = new ttypes.ExecutionResponse() - this.success.read(input) - } else { - input.skip(ftype) - } - break - case 0: - input.skip(ftype) - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -GraphService_execute_result.prototype.write = function(output) { - output.writeStructBegin('GraphService_execute_result') - if (this.success !== null && this.success !== undefined) { - output.writeFieldBegin('success', Thrift.Type.STRUCT, 0) - this.success.write(output) - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -const GraphService_executeWithParameter_args = function(args) { - this.sessionId = null - this.stmt = null - this.parameterMap = null - if (args) { - if (args.sessionId !== undefined && args.sessionId !== null) { - this.sessionId = args.sessionId - } - if (args.stmt !== undefined && args.stmt !== null) { - this.stmt = args.stmt - } - if (args.parameterMap !== undefined && args.parameterMap !== null) { - this.parameterMap = Thrift.copyMap(args.parameterMap, [common_ttypes.Value]) - } - } -} -GraphService_executeWithParameter_args.prototype = {} -GraphService_executeWithParameter_args.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I64) { - this.sessionId = input.readI64() - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.STRING) { - this.stmt = input.readBinary() - } else { - input.skip(ftype) - } - break - case 3: - if (ftype == Thrift.Type.MAP) { - this.parameterMap = {} - const _rtmp335 = input.readMapBegin() - const _size34 = _rtmp335.size || 0 - for (let _i36 = 0; _i36 < _size34; ++_i36) { - let key37 = null - let val38 = null - key37 = input.readString() - val38 = new common_ttypes.Value() - val38.read(input) - this.parameterMap[key37] = val38 - } - input.readMapEnd() - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -GraphService_executeWithParameter_args.prototype.write = function(output) { - output.writeStructBegin('GraphService_executeWithParameter_args') - if (this.sessionId !== null && this.sessionId !== undefined) { - output.writeFieldBegin('sessionId', Thrift.Type.I64, 1) - output.writeI64(this.sessionId) - output.writeFieldEnd() - } - if (this.stmt !== null && this.stmt !== undefined) { - output.writeFieldBegin('stmt', Thrift.Type.STRING, 2) - output.writeBinary(this.stmt) - output.writeFieldEnd() - } - if (this.parameterMap !== null && this.parameterMap !== undefined) { - output.writeFieldBegin('parameterMap', Thrift.Type.MAP, 3) - output.writeMapBegin(Thrift.Type.STRING, Thrift.Type.STRUCT, Thrift.objectLength(this.parameterMap)) - for (const kiter39 in this.parameterMap) { - if (this.parameterMap.hasOwnProperty(kiter39)) { - const viter40 = this.parameterMap[kiter39] - output.writeString(kiter39) - viter40.write(output) - } - } - output.writeMapEnd() - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -const GraphService_executeWithParameter_result = function(args) { - this.success = null - if (args) { - if (args.success !== undefined && args.success !== null) { - this.success = new ttypes.ExecutionResponse(args.success) - } - } -} -GraphService_executeWithParameter_result.prototype = {} -GraphService_executeWithParameter_result.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 0: - if (ftype == Thrift.Type.STRUCT) { - this.success = new ttypes.ExecutionResponse() - this.success.read(input) - } else { - input.skip(ftype) - } - break - case 0: - input.skip(ftype) - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -GraphService_executeWithParameter_result.prototype.write = function(output) { - output.writeStructBegin('GraphService_executeWithParameter_result') - if (this.success !== null && this.success !== undefined) { - output.writeFieldBegin('success', Thrift.Type.STRUCT, 0) - this.success.write(output) - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -const GraphService_executeJson_args = function(args) { - this.sessionId = null - this.stmt = null - if (args) { - if (args.sessionId !== undefined && args.sessionId !== null) { - this.sessionId = args.sessionId - } - if (args.stmt !== undefined && args.stmt !== null) { - this.stmt = args.stmt - } - } -} -GraphService_executeJson_args.prototype = {} -GraphService_executeJson_args.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I64) { - this.sessionId = input.readI64() - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.STRING) { - this.stmt = input.readBinary() - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -GraphService_executeJson_args.prototype.write = function(output) { - output.writeStructBegin('GraphService_executeJson_args') - if (this.sessionId !== null && this.sessionId !== undefined) { - output.writeFieldBegin('sessionId', Thrift.Type.I64, 1) - output.writeI64(this.sessionId) - output.writeFieldEnd() - } - if (this.stmt !== null && this.stmt !== undefined) { - output.writeFieldBegin('stmt', Thrift.Type.STRING, 2) - output.writeBinary(this.stmt) - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -const GraphService_executeJson_result = function(args) { - this.success = null - if (args) { - if (args.success !== undefined && args.success !== null) { - this.success = args.success - } - } -} -GraphService_executeJson_result.prototype = {} -GraphService_executeJson_result.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 0: - if (ftype == Thrift.Type.STRING) { - this.success = input.readBinary() - } else { - input.skip(ftype) - } - break - case 0: - input.skip(ftype) - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -GraphService_executeJson_result.prototype.write = function(output) { - output.writeStructBegin('GraphService_executeJson_result') - if (this.success !== null && this.success !== undefined) { - output.writeFieldBegin('success', Thrift.Type.STRING, 0) - output.writeBinary(this.success) - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -const GraphService_executeJsonWithParameter_args = function(args) { - this.sessionId = null - this.stmt = null - this.parameterMap = null - if (args) { - if (args.sessionId !== undefined && args.sessionId !== null) { - this.sessionId = args.sessionId - } - if (args.stmt !== undefined && args.stmt !== null) { - this.stmt = args.stmt - } - if (args.parameterMap !== undefined && args.parameterMap !== null) { - this.parameterMap = Thrift.copyMap(args.parameterMap, [common_ttypes.Value]) - } - } -} -GraphService_executeJsonWithParameter_args.prototype = {} -GraphService_executeJsonWithParameter_args.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I64) { - this.sessionId = input.readI64() - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.STRING) { - this.stmt = input.readBinary() - } else { - input.skip(ftype) - } - break - case 3: - if (ftype == Thrift.Type.MAP) { - this.parameterMap = {} - const _rtmp342 = input.readMapBegin() - const _size41 = _rtmp342.size || 0 - for (let _i43 = 0; _i43 < _size41; ++_i43) { - let key44 = null - let val45 = null - key44 = input.readBinary() - val45 = new common_ttypes.Value() - val45.read(input) - this.parameterMap[key44] = val45 - } - input.readMapEnd() - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -GraphService_executeJsonWithParameter_args.prototype.write = function(output) { - output.writeStructBegin('GraphService_executeJsonWithParameter_args') - if (this.sessionId !== null && this.sessionId !== undefined) { - output.writeFieldBegin('sessionId', Thrift.Type.I64, 1) - output.writeI64(this.sessionId) - output.writeFieldEnd() - } - if (this.stmt !== null && this.stmt !== undefined) { - output.writeFieldBegin('stmt', Thrift.Type.STRING, 2) - output.writeBinary(this.stmt) - output.writeFieldEnd() - } - if (this.parameterMap !== null && this.parameterMap !== undefined) { - output.writeFieldBegin('parameterMap', Thrift.Type.MAP, 3) - output.writeMapBegin(Thrift.Type.STRING, Thrift.Type.STRUCT, Thrift.objectLength(this.parameterMap)) - for (const kiter46 in this.parameterMap) { - if (this.parameterMap.hasOwnProperty(kiter46)) { - const viter47 = this.parameterMap[kiter46] - output.writeBinary(kiter46) - viter47.write(output) - } - } - output.writeMapEnd() - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -const GraphService_executeJsonWithParameter_result = function(args) { - this.success = null - if (args) { - if (args.success !== undefined && args.success !== null) { - this.success = args.success - } - } -} -GraphService_executeJsonWithParameter_result.prototype = {} -GraphService_executeJsonWithParameter_result.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 0: - if (ftype == Thrift.Type.STRING) { - this.success = input.readBinary() - } else { - input.skip(ftype) - } - break - case 0: - input.skip(ftype) - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -GraphService_executeJsonWithParameter_result.prototype.write = function(output) { - output.writeStructBegin('GraphService_executeJsonWithParameter_result') - if (this.success !== null && this.success !== undefined) { - output.writeFieldBegin('success', Thrift.Type.STRING, 0) - output.writeBinary(this.success) - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -const GraphService_verifyClientVersion_args = function(args) { - this.req = null - if (args) { - if (args.req !== undefined && args.req !== null) { - this.req = new ttypes.VerifyClientVersionReq(args.req) - } - } -} -GraphService_verifyClientVersion_args.prototype = {} -GraphService_verifyClientVersion_args.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.STRUCT) { - this.req = new ttypes.VerifyClientVersionReq() - this.req.read(input) - } else { - input.skip(ftype) - } - break - case 0: - input.skip(ftype) - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -GraphService_verifyClientVersion_args.prototype.write = function(output) { - output.writeStructBegin('GraphService_verifyClientVersion_args') - if (this.req !== null && this.req !== undefined) { - output.writeFieldBegin('req', Thrift.Type.STRUCT, 1) - this.req.write(output) - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -const GraphService_verifyClientVersion_result = function(args) { - this.success = null - if (args) { - if (args.success !== undefined && args.success !== null) { - this.success = new ttypes.VerifyClientVersionResp(args.success) - } - } -} -GraphService_verifyClientVersion_result.prototype = {} -GraphService_verifyClientVersion_result.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 0: - if (ftype == Thrift.Type.STRUCT) { - this.success = new ttypes.VerifyClientVersionResp() - this.success.read(input) - } else { - input.skip(ftype) - } - break - case 0: - input.skip(ftype) - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -GraphService_verifyClientVersion_result.prototype.write = function(output) { - output.writeStructBegin('GraphService_verifyClientVersion_result') - if (this.success !== null && this.success !== undefined) { - output.writeFieldBegin('success', Thrift.Type.STRUCT, 0) - this.success.write(output) - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -exports.Client = GraphServiceClient -function GraphServiceClient(output, pClass) { - this.output = output - this.pClass = pClass - this._seqid = 0 - this._reqs = {} -} -GraphServiceClient.prototype = {} -GraphServiceClient.prototype.seqid = function() { return this._seqid } -GraphServiceClient.prototype.new_seqid = function() { return this._seqid += 1 } - -GraphServiceClient.prototype.authenticate = function(username, password, callback) { - this._seqid = this.new_seqid() - if (callback === undefined) { - const _defer = Q.defer() - this._reqs[this.seqid()] = function(error, result) { - if (error) { - _defer.reject(error) - } else { - _defer.resolve(result) - } - } - this.send_authenticate(username, password) - return _defer.promise - } else { - this._reqs[this.seqid()] = callback - this.send_authenticate(username, password) - } -} - -GraphServiceClient.prototype.send_authenticate = function(username, password) { - const output = new this.pClass(this.output) - const params = { - username: username, - password: password - } - const args = new GraphService_authenticate_args(params) - try { - output.writeMessageBegin('authenticate', Thrift.MessageType.CALL, this.seqid()) - args.write(output) - output.writeMessageEnd() - return this.output.flush() - } catch (e) { - delete this._reqs[this.seqid()] - if (typeof output.reset === 'function') { - output.reset() - } - throw e - } -} - -GraphServiceClient.prototype.recv_authenticate = function(input, mtype, rseqid) { - const callback = this._reqs[rseqid] || function() {} - delete this._reqs[rseqid] - if (mtype == Thrift.MessageType.EXCEPTION) { - const x = new Thrift.TApplicationException() - x.read(input) - input.readMessageEnd() - return callback(x) - } - const result = new GraphService_authenticate_result() - result.read(input) - input.readMessageEnd() - - if (result.success !== null) { - return callback(null, result.success) - } - return callback('authenticate failed: unknown result') -} - -GraphServiceClient.prototype.signout = function(sessionId, callback) { - this._seqid = this.new_seqid() - if (callback === undefined) { - const _defer = Q.defer() - this._reqs[this.seqid()] = function(error, result) { - if (error) { - _defer.reject(error) - } else { - _defer.resolve(result) - } - } - this.send_signout(sessionId) - return _defer.promise - } else { - this._reqs[this.seqid()] = callback - this.send_signout(sessionId) - } -} - -GraphServiceClient.prototype.send_signout = function(sessionId) { - const output = new this.pClass(this.output) - const params = { - sessionId: sessionId - } - const args = new GraphService_signout_args(params) - try { - output.writeMessageBegin('signout', Thrift.MessageType.ONEWAY, this.seqid()) - args.write(output) - output.writeMessageEnd() - this.output.flush() - const callback = this._reqs[this.seqid()] || function() {} - delete this._reqs[this.seqid()] - callback(null) - } catch (e) { - delete this._reqs[this.seqid()] - if (typeof output.reset === 'function') { - output.reset() - } - throw e - } -} - -GraphServiceClient.prototype.execute = function(sessionId, stmt, callback) { - this._seqid = this.new_seqid() - if (callback === undefined) { - const _defer = Q.defer() - this._reqs[this.seqid()] = function(error, result) { - if (error) { - _defer.reject(error) - } else { - _defer.resolve(result) - } - } - this.send_execute(sessionId, stmt) - return _defer.promise - } else { - this._reqs[this.seqid()] = callback - this.send_execute(sessionId, stmt) - } -} - -GraphServiceClient.prototype.send_execute = function(sessionId, stmt) { - const output = new this.pClass(this.output) - const params = { - sessionId: sessionId, - stmt: stmt - } - const args = new GraphService_execute_args(params) - try { - output.writeMessageBegin('execute', Thrift.MessageType.CALL, this.seqid()) - args.write(output) - output.writeMessageEnd() - return this.output.flush() - } catch (e) { - delete this._reqs[this.seqid()] - if (typeof output.reset === 'function') { - output.reset() - } - throw e - } -} - -GraphServiceClient.prototype.recv_execute = function(input, mtype, rseqid) { - const callback = this._reqs[rseqid] || function() {} - delete this._reqs[rseqid] - if (mtype == Thrift.MessageType.EXCEPTION) { - const x = new Thrift.TApplicationException() - x.read(input) - input.readMessageEnd() - return callback(x) - } - const result = new GraphService_execute_result() - result.read(input) - input.readMessageEnd() - - if (result.success !== null) { - return callback(null, result.success) - } - return callback('execute failed: unknown result') -} - -GraphServiceClient.prototype.executeWithParameter = function(sessionId, stmt, parameterMap, callback) { - this._seqid = this.new_seqid() - if (callback === undefined) { - const _defer = Q.defer() - this._reqs[this.seqid()] = function(error, result) { - if (error) { - _defer.reject(error) - } else { - _defer.resolve(result) - } - } - this.send_executeWithParameter(sessionId, stmt, parameterMap) - return _defer.promise - } else { - this._reqs[this.seqid()] = callback - this.send_executeWithParameter(sessionId, stmt, parameterMap) - } -} - -GraphServiceClient.prototype.send_executeWithParameter = function(sessionId, stmt, parameterMap) { - const output = new this.pClass(this.output) - const params = { - sessionId: sessionId, - stmt: stmt, - parameterMap: parameterMap - } - const args = new GraphService_executeWithParameter_args(params) - try { - output.writeMessageBegin('executeWithParameter', Thrift.MessageType.CALL, this.seqid()) - args.write(output) - output.writeMessageEnd() - return this.output.flush() - } catch (e) { - delete this._reqs[this.seqid()] - if (typeof output.reset === 'function') { - output.reset() - } - throw e - } -} - -GraphServiceClient.prototype.recv_executeWithParameter = function(input, mtype, rseqid) { - const callback = this._reqs[rseqid] || function() {} - delete this._reqs[rseqid] - if (mtype == Thrift.MessageType.EXCEPTION) { - const x = new Thrift.TApplicationException() - x.read(input) - input.readMessageEnd() - return callback(x) - } - const result = new GraphService_executeWithParameter_result() - result.read(input) - input.readMessageEnd() - - if (result.success !== null) { - return callback(null, result.success) - } - return callback('executeWithParameter failed: unknown result') -} - -GraphServiceClient.prototype.executeJson = function(sessionId, stmt, callback) { - this._seqid = this.new_seqid() - if (callback === undefined) { - const _defer = Q.defer() - this._reqs[this.seqid()] = function(error, result) { - if (error) { - _defer.reject(error) - } else { - _defer.resolve(result) - } - } - this.send_executeJson(sessionId, stmt) - return _defer.promise - } else { - this._reqs[this.seqid()] = callback - this.send_executeJson(sessionId, stmt) - } -} - -GraphServiceClient.prototype.send_executeJson = function(sessionId, stmt) { - const output = new this.pClass(this.output) - const params = { - sessionId: sessionId, - stmt: stmt - } - const args = new GraphService_executeJson_args(params) - try { - output.writeMessageBegin('executeJson', Thrift.MessageType.CALL, this.seqid()) - args.write(output) - output.writeMessageEnd() - return this.output.flush() - } catch (e) { - delete this._reqs[this.seqid()] - if (typeof output.reset === 'function') { - output.reset() - } - throw e - } -} - -GraphServiceClient.prototype.recv_executeJson = function(input, mtype, rseqid) { - const callback = this._reqs[rseqid] || function() {} - delete this._reqs[rseqid] - if (mtype == Thrift.MessageType.EXCEPTION) { - const x = new Thrift.TApplicationException() - x.read(input) - input.readMessageEnd() - return callback(x) - } - const result = new GraphService_executeJson_result() - result.read(input) - input.readMessageEnd() - - if (result.success !== null) { - return callback(null, result.success) - } - return callback('executeJson failed: unknown result') -} - -GraphServiceClient.prototype.executeJsonWithParameter = function(sessionId, stmt, parameterMap, callback) { - this._seqid = this.new_seqid() - if (callback === undefined) { - const _defer = Q.defer() - this._reqs[this.seqid()] = function(error, result) { - if (error) { - _defer.reject(error) - } else { - _defer.resolve(result) - } - } - this.send_executeJsonWithParameter(sessionId, stmt, parameterMap) - return _defer.promise - } else { - this._reqs[this.seqid()] = callback - this.send_executeJsonWithParameter(sessionId, stmt, parameterMap) - } -} - -GraphServiceClient.prototype.send_executeJsonWithParameter = function(sessionId, stmt, parameterMap) { - const output = new this.pClass(this.output) - const params = { - sessionId: sessionId, - stmt: stmt, - parameterMap: parameterMap - } - const args = new GraphService_executeJsonWithParameter_args(params) - try { - output.writeMessageBegin('executeJsonWithParameter', Thrift.MessageType.CALL, this.seqid()) - args.write(output) - output.writeMessageEnd() - return this.output.flush() - } catch (e) { - delete this._reqs[this.seqid()] - if (typeof output.reset === 'function') { - output.reset() - } - throw e - } -} - -GraphServiceClient.prototype.recv_executeJsonWithParameter = function(input, mtype, rseqid) { - const callback = this._reqs[rseqid] || function() {} - delete this._reqs[rseqid] - if (mtype == Thrift.MessageType.EXCEPTION) { - const x = new Thrift.TApplicationException() - x.read(input) - input.readMessageEnd() - return callback(x) - } - const result = new GraphService_executeJsonWithParameter_result() - result.read(input) - input.readMessageEnd() - - if (result.success !== null) { - return callback(null, result.success) - } - return callback('executeJsonWithParameter failed: unknown result') -} - -GraphServiceClient.prototype.verifyClientVersion = function(req, callback) { - this._seqid = this.new_seqid() - if (callback === undefined) { - const _defer = Q.defer() - this._reqs[this.seqid()] = function(error, result) { - if (error) { - _defer.reject(error) - } else { - _defer.resolve(result) - } - } - this.send_verifyClientVersion(req) - return _defer.promise - } else { - this._reqs[this.seqid()] = callback - this.send_verifyClientVersion(req) - } -} - -GraphServiceClient.prototype.send_verifyClientVersion = function(req) { - const output = new this.pClass(this.output) - const params = { - req: req - } - const args = new GraphService_verifyClientVersion_args(params) - try { - output.writeMessageBegin('verifyClientVersion', Thrift.MessageType.CALL, this.seqid()) - args.write(output) - output.writeMessageEnd() - return this.output.flush() - } catch (e) { - delete this._reqs[this.seqid()] - if (typeof output.reset === 'function') { - output.reset() - } - throw e - } -} - -GraphServiceClient.prototype.recv_verifyClientVersion = function(input, mtype, rseqid) { - const callback = this._reqs[rseqid] || function() {} - delete this._reqs[rseqid] - if (mtype == Thrift.MessageType.EXCEPTION) { - const x = new Thrift.TApplicationException() - x.read(input) - input.readMessageEnd() - return callback(x) - } - const result = new GraphService_verifyClientVersion_result() - result.read(input) - input.readMessageEnd() - - if (result.success !== null) { - return callback(null, result.success) - } - return callback('verifyClientVersion failed: unknown result') -} - -exports.Processor = GraphServiceProcessor - -function GraphServiceProcessor(handler) { - this._handler = handler -} - -GraphServiceProcessor.prototype.process = function(input, output) { - const r = input.readMessageBegin() - if (this['process_' + r.fname]) { - return this['process_' + r.fname].call(this, r.rseqid, input, output) - } else { - input.skip(Thrift.Type.STRUCT) - input.readMessageEnd() - const x = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN_METHOD, 'Unknown function ' + r.fname) - output.writeMessageBegin(r.fname, Thrift.MessageType.EXCEPTION, r.rseqid) - x.write(output) - output.writeMessageEnd() - output.flush() - } -} -GraphServiceProcessor.prototype.process_authenticate = function(seqid, input, output) { - const args = new GraphService_authenticate_args() - args.read(input) - input.readMessageEnd() - if (this._handler.authenticate.length === 2) { - Q.fcall(this._handler.authenticate.bind(this._handler), - args.username, - args.password - ).then(function(result) { - const result_obj = new GraphService_authenticate_result({ success: result }) - output.writeMessageBegin('authenticate', Thrift.MessageType.REPLY, seqid) - result_obj.write(output) - output.writeMessageEnd() - output.flush() - }).catch(function (err) { - let result - result = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message) - output.writeMessageBegin('authenticate', Thrift.MessageType.EXCEPTION, seqid) - result.write(output) - output.writeMessageEnd() - output.flush() - }) - } else { - this._handler.authenticate(args.username, args.password, function (err, result) { - let result_obj - if ((err === null || typeof err === 'undefined')) { - result_obj = new GraphService_authenticate_result((err !== null || typeof err === 'undefined') ? err : { success: result }) - output.writeMessageBegin('authenticate', Thrift.MessageType.REPLY, seqid) - } else { - result_obj = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message) - output.writeMessageBegin('authenticate', Thrift.MessageType.EXCEPTION, seqid) - } - result_obj.write(output) - output.writeMessageEnd() - output.flush() - }) - } -} -GraphServiceProcessor.prototype.process_signout = function(seqid, input, output) { - const args = new GraphService_signout_args() - args.read(input) - input.readMessageEnd() - this._handler.signout(args.sessionId) -} -GraphServiceProcessor.prototype.process_execute = function(seqid, input, output) { - const args = new GraphService_execute_args() - args.read(input) - input.readMessageEnd() - if (this._handler.execute.length === 2) { - Q.fcall(this._handler.execute.bind(this._handler), - args.sessionId, - args.stmt - ).then(function(result) { - const result_obj = new GraphService_execute_result({ success: result }) - output.writeMessageBegin('execute', Thrift.MessageType.REPLY, seqid) - result_obj.write(output) - output.writeMessageEnd() - output.flush() - }).catch(function (err) { - let result - result = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message) - output.writeMessageBegin('execute', Thrift.MessageType.EXCEPTION, seqid) - result.write(output) - output.writeMessageEnd() - output.flush() - }) - } else { - this._handler.execute(args.sessionId, args.stmt, function (err, result) { - let result_obj - if ((err === null || typeof err === 'undefined')) { - result_obj = new GraphService_execute_result((err !== null || typeof err === 'undefined') ? err : { success: result }) - output.writeMessageBegin('execute', Thrift.MessageType.REPLY, seqid) - } else { - result_obj = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message) - output.writeMessageBegin('execute', Thrift.MessageType.EXCEPTION, seqid) - } - result_obj.write(output) - output.writeMessageEnd() - output.flush() - }) - } -} -GraphServiceProcessor.prototype.process_executeWithParameter = function(seqid, input, output) { - const args = new GraphService_executeWithParameter_args() - args.read(input) - input.readMessageEnd() - if (this._handler.executeWithParameter.length === 3) { - Q.fcall(this._handler.executeWithParameter.bind(this._handler), - args.sessionId, - args.stmt, - args.parameterMap - ).then(function(result) { - const result_obj = new GraphService_executeWithParameter_result({ success: result }) - output.writeMessageBegin('executeWithParameter', Thrift.MessageType.REPLY, seqid) - result_obj.write(output) - output.writeMessageEnd() - output.flush() - }).catch(function (err) { - let result - result = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message) - output.writeMessageBegin('executeWithParameter', Thrift.MessageType.EXCEPTION, seqid) - result.write(output) - output.writeMessageEnd() - output.flush() - }) - } else { - this._handler.executeWithParameter(args.sessionId, args.stmt, args.parameterMap, function (err, result) { - let result_obj - if ((err === null || typeof err === 'undefined')) { - result_obj = new GraphService_executeWithParameter_result((err !== null || typeof err === 'undefined') ? err : { success: result }) - output.writeMessageBegin('executeWithParameter', Thrift.MessageType.REPLY, seqid) - } else { - result_obj = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message) - output.writeMessageBegin('executeWithParameter', Thrift.MessageType.EXCEPTION, seqid) - } - result_obj.write(output) - output.writeMessageEnd() - output.flush() - }) - } -} -GraphServiceProcessor.prototype.process_executeJson = function(seqid, input, output) { - const args = new GraphService_executeJson_args() - args.read(input) - input.readMessageEnd() - if (this._handler.executeJson.length === 2) { - Q.fcall(this._handler.executeJson.bind(this._handler), - args.sessionId, - args.stmt - ).then(function(result) { - const result_obj = new GraphService_executeJson_result({ success: result }) - output.writeMessageBegin('executeJson', Thrift.MessageType.REPLY, seqid) - result_obj.write(output) - output.writeMessageEnd() - output.flush() - }).catch(function (err) { - let result - result = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message) - output.writeMessageBegin('executeJson', Thrift.MessageType.EXCEPTION, seqid) - result.write(output) - output.writeMessageEnd() - output.flush() - }) - } else { - this._handler.executeJson(args.sessionId, args.stmt, function (err, result) { - let result_obj - if ((err === null || typeof err === 'undefined')) { - result_obj = new GraphService_executeJson_result((err !== null || typeof err === 'undefined') ? err : { success: result }) - output.writeMessageBegin('executeJson', Thrift.MessageType.REPLY, seqid) - } else { - result_obj = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message) - output.writeMessageBegin('executeJson', Thrift.MessageType.EXCEPTION, seqid) - } - result_obj.write(output) - output.writeMessageEnd() - output.flush() - }) - } -} -GraphServiceProcessor.prototype.process_executeJsonWithParameter = function(seqid, input, output) { - const args = new GraphService_executeJsonWithParameter_args() - args.read(input) - input.readMessageEnd() - if (this._handler.executeJsonWithParameter.length === 3) { - Q.fcall(this._handler.executeJsonWithParameter.bind(this._handler), - args.sessionId, - args.stmt, - args.parameterMap - ).then(function(result) { - const result_obj = new GraphService_executeJsonWithParameter_result({ success: result }) - output.writeMessageBegin('executeJsonWithParameter', Thrift.MessageType.REPLY, seqid) - result_obj.write(output) - output.writeMessageEnd() - output.flush() - }).catch(function (err) { - let result - result = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message) - output.writeMessageBegin('executeJsonWithParameter', Thrift.MessageType.EXCEPTION, seqid) - result.write(output) - output.writeMessageEnd() - output.flush() - }) - } else { - this._handler.executeJsonWithParameter(args.sessionId, args.stmt, args.parameterMap, function (err, result) { - let result_obj - if ((err === null || typeof err === 'undefined')) { - result_obj = new GraphService_executeJsonWithParameter_result((err !== null || typeof err === 'undefined') ? err : { success: result }) - output.writeMessageBegin('executeJsonWithParameter', Thrift.MessageType.REPLY, seqid) - } else { - result_obj = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message) - output.writeMessageBegin('executeJsonWithParameter', Thrift.MessageType.EXCEPTION, seqid) - } - result_obj.write(output) - output.writeMessageEnd() - output.flush() - }) - } -} -GraphServiceProcessor.prototype.process_verifyClientVersion = function(seqid, input, output) { - const args = new GraphService_verifyClientVersion_args() - args.read(input) - input.readMessageEnd() - if (this._handler.verifyClientVersion.length === 1) { - Q.fcall(this._handler.verifyClientVersion.bind(this._handler), - args.req - ).then(function(result) { - const result_obj = new GraphService_verifyClientVersion_result({ success: result }) - output.writeMessageBegin('verifyClientVersion', Thrift.MessageType.REPLY, seqid) - result_obj.write(output) - output.writeMessageEnd() - output.flush() - }).catch(function (err) { - let result - result = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message) - output.writeMessageBegin('verifyClientVersion', Thrift.MessageType.EXCEPTION, seqid) - result.write(output) - output.writeMessageEnd() - output.flush() - }) - } else { - this._handler.verifyClientVersion(args.req, function (err, result) { - let result_obj - if ((err === null || typeof err === 'undefined')) { - result_obj = new GraphService_verifyClientVersion_result((err !== null || typeof err === 'undefined') ? err : { success: result }) - output.writeMessageBegin('verifyClientVersion', Thrift.MessageType.REPLY, seqid) - } else { - result_obj = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message) - output.writeMessageBegin('verifyClientVersion', Thrift.MessageType.EXCEPTION, seqid) - } - result_obj.write(output) - output.writeMessageEnd() - output.flush() - }) - } -} diff --git a/src/nebula/interface/common_types.js b/src/nebula/interface/common_types.js deleted file mode 100644 index 265a737..0000000 --- a/src/nebula/interface/common_types.js +++ /dev/null @@ -1,2622 +0,0 @@ -// -// Autogenerated by Thrift Compiler (0.14.1) -// -// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING -// -'use strict' - -const thrift = require('../../thrift') -const Thrift = thrift.Thrift -const Q = thrift.Q -const Int64 = require('node-int64') - - -const ttypes = module.exports = {} -ttypes.NullType = { - __NULL__: 0, - NaN: 1, - BAD_DATA: 2, - BAD_TYPE: 3, - ERR_OVERFLOW: 4, - UNKNOWN_PROP: 5, - DIV_BY_ZERO: 6, - OUT_OF_RANGE: 7 -} -ttypes.PropertyType = { - UNKNOWN: 0, - BOOL: 1, - INT64: 2, - VID: 3, - FLOAT: 4, - DOUBLE: 5, - STRING: 6, - FIXED_STRING: 7, - INT8: 8, - INT16: 9, - INT32: 10, - TIMESTAMP: 21, - DURATION: 23, - DATE: 24, - DATETIME: 25, - TIME: 26, - GEOGRAPHY: 31 -} -ttypes.ErrorCode = { - SUCCEEDED: 0, - E_DISCONNECTED: -1, - E_FAIL_TO_CONNECT: -2, - E_RPC_FAILURE: -3, - E_LEADER_CHANGED: -4, - E_SPACE_NOT_FOUND: -5, - E_TAG_NOT_FOUND: -6, - E_EDGE_NOT_FOUND: -7, - E_INDEX_NOT_FOUND: -8, - E_EDGE_PROP_NOT_FOUND: -9, - E_TAG_PROP_NOT_FOUND: -10, - E_ROLE_NOT_FOUND: -11, - E_CONFIG_NOT_FOUND: -12, - E_MACHINE_NOT_FOUND: -13, - E_ZONE_NOT_FOUND: -14, - E_LISTENER_NOT_FOUND: -15, - E_PART_NOT_FOUND: -16, - E_KEY_NOT_FOUND: -17, - E_USER_NOT_FOUND: -18, - E_STATS_NOT_FOUND: -19, - E_SERVICE_NOT_FOUND: -20, - E_BACKUP_FAILED: -24, - E_BACKUP_EMPTY_TABLE: -25, - E_BACKUP_TABLE_FAILED: -26, - E_PARTIAL_RESULT: -27, - E_REBUILD_INDEX_FAILED: -28, - E_INVALID_PASSWORD: -29, - E_FAILED_GET_ABS_PATH: -30, - E_BAD_USERNAME_PASSWORD: -1001, - E_SESSION_INVALID: -1002, - E_SESSION_TIMEOUT: -1003, - E_SYNTAX_ERROR: -1004, - E_EXECUTION_ERROR: -1005, - E_STATEMENT_EMPTY: -1006, - E_BAD_PERMISSION: -1008, - E_SEMANTIC_ERROR: -1009, - E_TOO_MANY_CONNECTIONS: -1010, - E_PARTIAL_SUCCEEDED: -1011, - E_NO_HOSTS: -2001, - E_EXISTED: -2002, - E_INVALID_HOST: -2003, - E_UNSUPPORTED: -2004, - E_NOT_DROP: -2005, - E_BALANCER_RUNNING: -2006, - E_CONFIG_IMMUTABLE: -2007, - E_CONFLICT: -2008, - E_INVALID_PARM: -2009, - E_WRONGCLUSTER: -2010, - E_ZONE_NOT_ENOUGH: -2011, - E_ZONE_IS_EMPTY: -2012, - E_STORE_FAILURE: -2021, - E_STORE_SEGMENT_ILLEGAL: -2022, - E_BAD_BALANCE_PLAN: -2023, - E_BALANCED: -2024, - E_NO_RUNNING_BALANCE_PLAN: -2025, - E_NO_VALID_HOST: -2026, - E_CORRUPTED_BALANCE_PLAN: -2027, - E_NO_INVALID_BALANCE_PLAN: -2028, - E_IMPROPER_ROLE: -2030, - E_INVALID_PARTITION_NUM: -2031, - E_INVALID_REPLICA_FACTOR: -2032, - E_INVALID_CHARSET: -2033, - E_INVALID_COLLATE: -2034, - E_CHARSET_COLLATE_NOT_MATCH: -2035, - E_SNAPSHOT_FAILURE: -2040, - E_BLOCK_WRITE_FAILURE: -2041, - E_REBUILD_INDEX_FAILURE: -2042, - E_INDEX_WITH_TTL: -2043, - E_ADD_JOB_FAILURE: -2044, - E_STOP_JOB_FAILURE: -2045, - E_SAVE_JOB_FAILURE: -2046, - E_BALANCER_FAILURE: -2047, - E_JOB_NOT_FINISHED: -2048, - E_TASK_REPORT_OUT_DATE: -2049, - E_JOB_NOT_IN_SPACE: -2050, - E_JOB_NEED_RECOVER: -2051, - E_INVALID_JOB: -2065, - E_BACKUP_BUILDING_INDEX: -2066, - E_BACKUP_SPACE_NOT_FOUND: -2067, - E_RESTORE_FAILURE: -2068, - E_SESSION_NOT_FOUND: -2069, - E_LIST_CLUSTER_FAILURE: -2070, - E_LIST_CLUSTER_GET_ABS_PATH_FAILURE: -2071, - E_LIST_CLUSTER_NO_AGENT_FAILURE: -2072, - E_QUERY_NOT_FOUND: -2073, - E_AGENT_HB_FAILUE: -2074, - E_CONSENSUS_ERROR: -3001, - E_KEY_HAS_EXISTS: -3002, - E_DATA_TYPE_MISMATCH: -3003, - E_INVALID_FIELD_VALUE: -3004, - E_INVALID_OPERATION: -3005, - E_NOT_NULLABLE: -3006, - E_FIELD_UNSET: -3007, - E_OUT_OF_RANGE: -3008, - E_DATA_CONFLICT_ERROR: -3010, - E_WRITE_STALLED: -3011, - E_IMPROPER_DATA_TYPE: -3021, - E_INVALID_SPACEVIDLEN: -3022, - E_INVALID_FILTER: -3031, - E_INVALID_UPDATER: -3032, - E_INVALID_STORE: -3033, - E_INVALID_PEER: -3034, - E_RETRY_EXHAUSTED: -3035, - E_TRANSFER_LEADER_FAILED: -3036, - E_INVALID_STAT_TYPE: -3037, - E_INVALID_VID: -3038, - E_NO_TRANSFORMED: -3039, - E_LOAD_META_FAILED: -3040, - E_FAILED_TO_CHECKPOINT: -3041, - E_CHECKPOINT_BLOCKED: -3042, - E_FILTER_OUT: -3043, - E_INVALID_DATA: -3044, - E_MUTATE_EDGE_CONFLICT: -3045, - E_MUTATE_TAG_CONFLICT: -3046, - E_OUTDATED_LOCK: -3047, - E_INVALID_TASK_PARA: -3051, - E_USER_CANCEL: -3052, - E_TASK_EXECUTION_FAILED: -3053, - E_PLAN_IS_KILLED: -3060, - E_NO_TERM: -3070, - E_OUTDATED_TERM: -3071, - E_OUTDATED_EDGE: -3072, - E_WRITE_WRITE_CONFLICT: -3073, - E_CLIENT_SERVER_INCOMPATIBLE: -3061, - E_ID_FAILED: -3062, - E_RAFT_UNKNOWN_PART: -3500, - E_RAFT_LOG_GAP: -3501, - E_RAFT_LOG_STALE: -3502, - E_RAFT_TERM_OUT_OF_DATE: -3503, - E_RAFT_UNKNOWN_APPEND_LOG: -3504, - E_RAFT_WAITING_SNAPSHOT: -3511, - E_RAFT_SENDING_SNAPSHOT: -3512, - E_RAFT_INVALID_PEER: -3513, - E_RAFT_NOT_READY: -3514, - E_RAFT_STOPPED: -3515, - E_RAFT_BAD_ROLE: -3516, - E_RAFT_WAL_FAIL: -3521, - E_RAFT_HOST_STOPPED: -3522, - E_RAFT_TOO_MANY_REQUESTS: -3523, - E_RAFT_PERSIST_SNAPSHOT_FAILED: -3524, - E_RAFT_RPC_EXCEPTION: -3525, - E_RAFT_NO_WAL_FOUND: -3526, - E_RAFT_HOST_PAUSED: -3527, - E_RAFT_WRITE_BLOCKED: -3528, - E_RAFT_BUFFER_OVERFLOW: -3529, - E_RAFT_ATOMIC_OP_FAILED: -3530, - E_LEADER_LEASE_FAILED: -3531, - E_UNKNOWN: -8000 -} - -module.exports.SchemaID = SchemaID - -function SchemaID(args) { - this.tag_id = null - this.edge_type = null - if (args) { - if (args.tag_id !== undefined && args.tag_id !== null) { - this.tag_id = args.tag_id - } - if (args.edge_type !== undefined && args.edge_type !== null) { - this.edge_type = args.edge_type - } - } -} -SchemaID.prototype = {} -SchemaID.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I32) { - this.tag_id = input.readI32() - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.I32) { - this.edge_type = input.readI32() - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -SchemaID.prototype.write = function(output) { - output.writeStructBegin('SchemaID') - if (this.tag_id !== null && this.tag_id !== undefined) { - output.writeFieldBegin('tag_id', Thrift.Type.I32, 1) - output.writeI32(this.tag_id) - output.writeFieldEnd() - } - if (this.edge_type !== null && this.edge_type !== undefined) { - output.writeFieldBegin('edge_type', Thrift.Type.I32, 2) - output.writeI32(this.edge_type) - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.Date = Date - -function Date(args) { - this.year = null - this.month = null - this.day = null - if (args) { - if (args.year !== undefined && args.year !== null) { - this.year = args.year - } - if (args.month !== undefined && args.month !== null) { - this.month = args.month - } - if (args.day !== undefined && args.day !== null) { - this.day = args.day - } - } -} -Date.prototype = {} -Date.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I16) { - this.year = input.readI16() - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.BYTE) { - this.month = input.readByte() - } else { - input.skip(ftype) - } - break - case 3: - if (ftype == Thrift.Type.BYTE) { - this.day = input.readByte() - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -Date.prototype.write = function(output) { - output.writeStructBegin('Date') - if (this.year !== null && this.year !== undefined) { - output.writeFieldBegin('year', Thrift.Type.I16, 1) - output.writeI16(this.year) - output.writeFieldEnd() - } - if (this.month !== null && this.month !== undefined) { - output.writeFieldBegin('month', Thrift.Type.BYTE, 2) - output.writeByte(this.month) - output.writeFieldEnd() - } - if (this.day !== null && this.day !== undefined) { - output.writeFieldBegin('day', Thrift.Type.BYTE, 3) - output.writeByte(this.day) - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.Time = Time - -function Time(args) { - this.hour = null - this.minute = null - this.sec = null - this.microsec = null - if (args) { - if (args.hour !== undefined && args.hour !== null) { - this.hour = args.hour - } - if (args.minute !== undefined && args.minute !== null) { - this.minute = args.minute - } - if (args.sec !== undefined && args.sec !== null) { - this.sec = args.sec - } - if (args.microsec !== undefined && args.microsec !== null) { - this.microsec = args.microsec - } - } -} -Time.prototype = {} -Time.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.BYTE) { - this.hour = input.readByte() - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.BYTE) { - this.minute = input.readByte() - } else { - input.skip(ftype) - } - break - case 3: - if (ftype == Thrift.Type.BYTE) { - this.sec = input.readByte() - } else { - input.skip(ftype) - } - break - case 4: - if (ftype == Thrift.Type.I32) { - this.microsec = input.readI32() - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -Time.prototype.write = function(output) { - output.writeStructBegin('Time') - if (this.hour !== null && this.hour !== undefined) { - output.writeFieldBegin('hour', Thrift.Type.BYTE, 1) - output.writeByte(this.hour) - output.writeFieldEnd() - } - if (this.minute !== null && this.minute !== undefined) { - output.writeFieldBegin('minute', Thrift.Type.BYTE, 2) - output.writeByte(this.minute) - output.writeFieldEnd() - } - if (this.sec !== null && this.sec !== undefined) { - output.writeFieldBegin('sec', Thrift.Type.BYTE, 3) - output.writeByte(this.sec) - output.writeFieldEnd() - } - if (this.microsec !== null && this.microsec !== undefined) { - output.writeFieldBegin('microsec', Thrift.Type.I32, 4) - output.writeI32(this.microsec) - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.DateTime = DateTime - -function DateTime(args) { - this.year = null - this.month = null - this.day = null - this.hour = null - this.minute = null - this.sec = null - this.microsec = null - if (args) { - if (args.year !== undefined && args.year !== null) { - this.year = args.year - } - if (args.month !== undefined && args.month !== null) { - this.month = args.month - } - if (args.day !== undefined && args.day !== null) { - this.day = args.day - } - if (args.hour !== undefined && args.hour !== null) { - this.hour = args.hour - } - if (args.minute !== undefined && args.minute !== null) { - this.minute = args.minute - } - if (args.sec !== undefined && args.sec !== null) { - this.sec = args.sec - } - if (args.microsec !== undefined && args.microsec !== null) { - this.microsec = args.microsec - } - } -} -DateTime.prototype = {} -DateTime.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I16) { - this.year = input.readI16() - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.BYTE) { - this.month = input.readByte() - } else { - input.skip(ftype) - } - break - case 3: - if (ftype == Thrift.Type.BYTE) { - this.day = input.readByte() - } else { - input.skip(ftype) - } - break - case 4: - if (ftype == Thrift.Type.BYTE) { - this.hour = input.readByte() - } else { - input.skip(ftype) - } - break - case 5: - if (ftype == Thrift.Type.BYTE) { - this.minute = input.readByte() - } else { - input.skip(ftype) - } - break - case 6: - if (ftype == Thrift.Type.BYTE) { - this.sec = input.readByte() - } else { - input.skip(ftype) - } - break - case 7: - if (ftype == Thrift.Type.I32) { - this.microsec = input.readI32() - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -DateTime.prototype.write = function(output) { - output.writeStructBegin('DateTime') - if (this.year !== null && this.year !== undefined) { - output.writeFieldBegin('year', Thrift.Type.I16, 1) - output.writeI16(this.year) - output.writeFieldEnd() - } - if (this.month !== null && this.month !== undefined) { - output.writeFieldBegin('month', Thrift.Type.BYTE, 2) - output.writeByte(this.month) - output.writeFieldEnd() - } - if (this.day !== null && this.day !== undefined) { - output.writeFieldBegin('day', Thrift.Type.BYTE, 3) - output.writeByte(this.day) - output.writeFieldEnd() - } - if (this.hour !== null && this.hour !== undefined) { - output.writeFieldBegin('hour', Thrift.Type.BYTE, 4) - output.writeByte(this.hour) - output.writeFieldEnd() - } - if (this.minute !== null && this.minute !== undefined) { - output.writeFieldBegin('minute', Thrift.Type.BYTE, 5) - output.writeByte(this.minute) - output.writeFieldEnd() - } - if (this.sec !== null && this.sec !== undefined) { - output.writeFieldBegin('sec', Thrift.Type.BYTE, 6) - output.writeByte(this.sec) - output.writeFieldEnd() - } - if (this.microsec !== null && this.microsec !== undefined) { - output.writeFieldBegin('microsec', Thrift.Type.I32, 7) - output.writeI32(this.microsec) - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.Value = Value - -function Value(args) { - this.nVal = null - this.bVal = null - this.iVal = null - this.fVal = null - this.sVal = null - this.dVal = null - this.tVal = null - this.dtVal = null - this.vVal = null - this.eVal = null - this.pVal = null - this.lVal = null - this.mVal = null - this.uVal = null - this.gVal = null - this.ggVal = null - this.duVal = null - if (args) { - if (args.nVal !== undefined && args.nVal !== null) { - this.nVal = args.nVal - } - if (args.bVal !== undefined && args.bVal !== null) { - this.bVal = args.bVal - } - if (args.iVal !== undefined && args.iVal !== null) { - this.iVal = args.iVal - } - if (args.fVal !== undefined && args.fVal !== null) { - this.fVal = args.fVal - } - if (args.sVal !== undefined && args.sVal !== null) { - this.sVal = args.sVal - } - if (args.dVal !== undefined && args.dVal !== null) { - this.dVal = new ttypes.Date(args.dVal) - } - if (args.tVal !== undefined && args.tVal !== null) { - this.tVal = new ttypes.Time(args.tVal) - } - if (args.dtVal !== undefined && args.dtVal !== null) { - this.dtVal = new ttypes.DateTime(args.dtVal) - } - if (args.vVal !== undefined && args.vVal !== null) { - this.vVal = new ttypes.Vertex(args.vVal) - } - if (args.eVal !== undefined && args.eVal !== null) { - this.eVal = new ttypes.Edge(args.eVal) - } - if (args.pVal !== undefined && args.pVal !== null) { - this.pVal = new ttypes.Path(args.pVal) - } - if (args.lVal !== undefined && args.lVal !== null) { - this.lVal = new ttypes.NList(args.lVal) - } - if (args.mVal !== undefined && args.mVal !== null) { - this.mVal = new ttypes.NMap(args.mVal) - } - if (args.uVal !== undefined && args.uVal !== null) { - this.uVal = new ttypes.NSet(args.uVal) - } - if (args.gVal !== undefined && args.gVal !== null) { - this.gVal = new ttypes.DataSet(args.gVal) - } - if (args.ggVal !== undefined && args.ggVal !== null) { - this.ggVal = new ttypes.Geography(args.ggVal) - } - if (args.duVal !== undefined && args.duVal !== null) { - this.duVal = new ttypes.Duration(args.duVal) - } - } -} -Value.prototype = {} -Value.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I32) { - this.nVal = input.readI32() - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.BOOL) { - this.bVal = input.readBool() - } else { - input.skip(ftype) - } - break - case 3: - if (ftype == Thrift.Type.I64) { - this.iVal = input.readI64() - } else { - input.skip(ftype) - } - break - case 4: - if (ftype == Thrift.Type.DOUBLE) { - this.fVal = input.readDouble() - } else { - input.skip(ftype) - } - break - case 5: - if (ftype == Thrift.Type.STRING) { - this.sVal = input.readString() - } else { - input.skip(ftype) - } - break - case 6: - if (ftype == Thrift.Type.STRUCT) { - this.dVal = new ttypes.Date() - this.dVal.read(input) - } else { - input.skip(ftype) - } - break - case 7: - if (ftype == Thrift.Type.STRUCT) { - this.tVal = new ttypes.Time() - this.tVal.read(input) - } else { - input.skip(ftype) - } - break - case 8: - if (ftype == Thrift.Type.STRUCT) { - this.dtVal = new ttypes.DateTime() - this.dtVal.read(input) - } else { - input.skip(ftype) - } - break - case 9: - if (ftype == Thrift.Type.STRUCT) { - this.vVal = new ttypes.Vertex() - this.vVal.read(input) - } else { - input.skip(ftype) - } - break - case 10: - if (ftype == Thrift.Type.STRUCT) { - this.eVal = new ttypes.Edge() - this.eVal.read(input) - } else { - input.skip(ftype) - } - break - case 11: - if (ftype == Thrift.Type.STRUCT) { - this.pVal = new ttypes.Path() - this.pVal.read(input) - } else { - input.skip(ftype) - } - break - case 12: - if (ftype == Thrift.Type.STRUCT) { - this.lVal = new ttypes.NList() - this.lVal.read(input) - } else { - input.skip(ftype) - } - break - case 13: - if (ftype == Thrift.Type.STRUCT) { - this.mVal = new ttypes.NMap() - this.mVal.read(input) - } else { - input.skip(ftype) - } - break - case 14: - if (ftype == Thrift.Type.STRUCT) { - this.uVal = new ttypes.NSet() - this.uVal.read(input) - } else { - input.skip(ftype) - } - break - case 15: - if (ftype == Thrift.Type.STRUCT) { - this.gVal = new ttypes.DataSet() - this.gVal.read(input) - } else { - input.skip(ftype) - } - break - case 16: - if (ftype == Thrift.Type.STRUCT) { - this.ggVal = new ttypes.Geography() - this.ggVal.read(input) - } else { - input.skip(ftype) - } - break - case 17: - if (ftype == Thrift.Type.STRUCT) { - this.duVal = new ttypes.Duration() - this.duVal.read(input) - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -Value.prototype.write = function(output) { - output.writeStructBegin('Value') - if (this.nVal !== null && this.nVal !== undefined) { - output.writeFieldBegin('nVal', Thrift.Type.I32, 1) - output.writeI32(this.nVal) - output.writeFieldEnd() - } - if (this.bVal !== null && this.bVal !== undefined) { - output.writeFieldBegin('bVal', Thrift.Type.BOOL, 2) - output.writeBool(this.bVal) - output.writeFieldEnd() - } - if (this.iVal !== null && this.iVal !== undefined) { - output.writeFieldBegin('iVal', Thrift.Type.I64, 3) - output.writeI64(this.iVal) - output.writeFieldEnd() - } - if (this.fVal !== null && this.fVal !== undefined) { - output.writeFieldBegin('fVal', Thrift.Type.DOUBLE, 4) - output.writeDouble(this.fVal) - output.writeFieldEnd() - } - if (this.sVal !== null && this.sVal !== undefined) { - output.writeFieldBegin('sVal', Thrift.Type.STRING, 5) - output.writeString(this.sVal) - output.writeFieldEnd() - } - if (this.dVal !== null && this.dVal !== undefined) { - output.writeFieldBegin('dVal', Thrift.Type.STRUCT, 6) - this.dVal.write(output) - output.writeFieldEnd() - } - if (this.tVal !== null && this.tVal !== undefined) { - output.writeFieldBegin('tVal', Thrift.Type.STRUCT, 7) - this.tVal.write(output) - output.writeFieldEnd() - } - if (this.dtVal !== null && this.dtVal !== undefined) { - output.writeFieldBegin('dtVal', Thrift.Type.STRUCT, 8) - this.dtVal.write(output) - output.writeFieldEnd() - } - if (this.vVal !== null && this.vVal !== undefined) { - output.writeFieldBegin('vVal', Thrift.Type.STRUCT, 9) - this.vVal.write(output) - output.writeFieldEnd() - } - if (this.eVal !== null && this.eVal !== undefined) { - output.writeFieldBegin('eVal', Thrift.Type.STRUCT, 10) - this.eVal.write(output) - output.writeFieldEnd() - } - if (this.pVal !== null && this.pVal !== undefined) { - output.writeFieldBegin('pVal', Thrift.Type.STRUCT, 11) - this.pVal.write(output) - output.writeFieldEnd() - } - if (this.lVal !== null && this.lVal !== undefined) { - output.writeFieldBegin('lVal', Thrift.Type.STRUCT, 12) - this.lVal.write(output) - output.writeFieldEnd() - } - if (this.mVal !== null && this.mVal !== undefined) { - output.writeFieldBegin('mVal', Thrift.Type.STRUCT, 13) - this.mVal.write(output) - output.writeFieldEnd() - } - if (this.uVal !== null && this.uVal !== undefined) { - output.writeFieldBegin('uVal', Thrift.Type.STRUCT, 14) - this.uVal.write(output) - output.writeFieldEnd() - } - if (this.gVal !== null && this.gVal !== undefined) { - output.writeFieldBegin('gVal', Thrift.Type.STRUCT, 15) - this.gVal.write(output) - output.writeFieldEnd() - } - if (this.ggVal !== null && this.ggVal !== undefined) { - output.writeFieldBegin('ggVal', Thrift.Type.STRUCT, 16) - this.ggVal.write(output) - output.writeFieldEnd() - } - if (this.duVal !== null && this.duVal !== undefined) { - output.writeFieldBegin('duVal', Thrift.Type.STRUCT, 17) - this.duVal.write(output) - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.NList = NList - -function NList(args) { - this.values = null - if (args) { - if (args.values !== undefined && args.values !== null) { - this.values = Thrift.copyList(args.values, [ttypes.Value]) - } - } -} -NList.prototype = {} -NList.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.LIST) { - this.values = [] - const _rtmp31 = input.readListBegin() - const _size0 = _rtmp31.size || 0 - for (let _i2 = 0; _i2 < _size0; ++_i2) { - let elem3 = null - elem3 = new ttypes.Value() - elem3.read(input) - this.values.push(elem3) - } - input.readListEnd() - } else { - input.skip(ftype) - } - break - case 0: - input.skip(ftype) - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -NList.prototype.write = function(output) { - output.writeStructBegin('NList') - if (this.values !== null && this.values !== undefined) { - output.writeFieldBegin('values', Thrift.Type.LIST, 1) - output.writeListBegin(Thrift.Type.STRUCT, this.values.length) - for (let iter4 in this.values) { - if (this.values.hasOwnProperty(iter4)) { - iter4 = this.values[iter4] - iter4.write(output) - } - } - output.writeListEnd() - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.NMap = NMap - -function NMap(args) { - this.kvs = null - if (args) { - if (args.kvs !== undefined && args.kvs !== null) { - this.kvs = Thrift.copyMap(args.kvs, [ttypes.Value]) - } - } -} -NMap.prototype = {} -NMap.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.MAP) { - this.kvs = {} - const _rtmp36 = input.readMapBegin() - const _size5 = _rtmp36.size || 0 - for (let _i7 = 0; _i7 < _size5; ++_i7) { - let key8 = null - let val9 = null - key8 = input.readString() - val9 = new ttypes.Value() - val9.read(input) - this.kvs[key8] = val9 - } - input.readMapEnd() - } else { - input.skip(ftype) - } - break - case 0: - input.skip(ftype) - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -NMap.prototype.write = function(output) { - output.writeStructBegin('NMap') - if (this.kvs !== null && this.kvs !== undefined) { - output.writeFieldBegin('kvs', Thrift.Type.MAP, 1) - output.writeMapBegin(Thrift.Type.STRING, Thrift.Type.STRUCT, Thrift.objectLength(this.kvs)) - for (const kiter10 in this.kvs) { - if (this.kvs.hasOwnProperty(kiter10)) { - const viter11 = this.kvs[kiter10] - output.writeString(kiter10) - viter11.write(output) - } - } - output.writeMapEnd() - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.NSet = NSet - -function NSet(args) { - this.values = null - if (args) { - if (args.values !== undefined && args.values !== null) { - this.values = Thrift.copyList(args.values, [ttypes.Value]) - } - } -} -NSet.prototype = {} -NSet.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.SET) { - this.values = [] - const _rtmp313 = input.readSetBegin() - const _size12 = _rtmp313.size || 0 - for (let _i14 = 0; _i14 < _size12; ++_i14) { - let elem15 = null - elem15 = new ttypes.Value() - elem15.read(input) - this.values.push(elem15) - } - input.readSetEnd() - } else { - input.skip(ftype) - } - break - case 0: - input.skip(ftype) - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -NSet.prototype.write = function(output) { - output.writeStructBegin('NSet') - if (this.values !== null && this.values !== undefined) { - output.writeFieldBegin('values', Thrift.Type.SET, 1) - output.writeSetBegin(Thrift.Type.STRUCT, this.values.length) - for (let iter16 in this.values) { - if (this.values.hasOwnProperty(iter16)) { - iter16 = this.values[iter16] - iter16.write(output) - } - } - output.writeSetEnd() - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.Row = Row - -function Row(args) { - this.values = null - if (args) { - if (args.values !== undefined && args.values !== null) { - this.values = Thrift.copyList(args.values, [ttypes.Value]) - } - } -} -Row.prototype = {} -Row.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.LIST) { - this.values = [] - const _rtmp318 = input.readListBegin() - const _size17 = _rtmp318.size || 0 - for (let _i19 = 0; _i19 < _size17; ++_i19) { - let elem20 = null - elem20 = new ttypes.Value() - elem20.read(input) - this.values.push(elem20) - } - input.readListEnd() - } else { - input.skip(ftype) - } - break - case 0: - input.skip(ftype) - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -Row.prototype.write = function(output) { - output.writeStructBegin('Row') - if (this.values !== null && this.values !== undefined) { - output.writeFieldBegin('values', Thrift.Type.LIST, 1) - output.writeListBegin(Thrift.Type.STRUCT, this.values.length) - for (let iter21 in this.values) { - if (this.values.hasOwnProperty(iter21)) { - iter21 = this.values[iter21] - iter21.write(output) - } - } - output.writeListEnd() - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.DataSet = DataSet - -function DataSet(args) { - this.column_names = null - this.rows = null - if (args) { - if (args.column_names !== undefined && args.column_names !== null) { - this.column_names = Thrift.copyList(args.column_names, [null]) - } - if (args.rows !== undefined && args.rows !== null) { - this.rows = Thrift.copyList(args.rows, [ttypes.Row]) - } - } -} -DataSet.prototype = {} -DataSet.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.LIST) { - this.column_names = [] - const _rtmp323 = input.readListBegin() - const _size22 = _rtmp323.size || 0 - for (let _i24 = 0; _i24 < _size22; ++_i24) { - let elem25 = null - elem25 = input.readString() - this.column_names.push(elem25) - } - input.readListEnd() - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.LIST) { - this.rows = [] - const _rtmp327 = input.readListBegin() - const _size26 = _rtmp327.size || 0 - for (let _i28 = 0; _i28 < _size26; ++_i28) { - let elem29 = null - elem29 = new ttypes.Row() - elem29.read(input) - this.rows.push(elem29) - } - input.readListEnd() - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -DataSet.prototype.write = function(output) { - output.writeStructBegin('DataSet') - if (this.column_names !== null && this.column_names !== undefined) { - output.writeFieldBegin('column_names', Thrift.Type.LIST, 1) - output.writeListBegin(Thrift.Type.STRING, this.column_names.length) - for (let iter30 in this.column_names) { - if (this.column_names.hasOwnProperty(iter30)) { - iter30 = this.column_names[iter30] - output.writeString(iter30) - } - } - output.writeListEnd() - output.writeFieldEnd() - } - if (this.rows !== null && this.rows !== undefined) { - output.writeFieldBegin('rows', Thrift.Type.LIST, 2) - output.writeListBegin(Thrift.Type.STRUCT, this.rows.length) - for (let iter31 in this.rows) { - if (this.rows.hasOwnProperty(iter31)) { - iter31 = this.rows[iter31] - iter31.write(output) - } - } - output.writeListEnd() - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.Coordinate = Coordinate - -function Coordinate(args) { - this.x = null - this.y = null - if (args) { - if (args.x !== undefined && args.x !== null) { - this.x = args.x - } - if (args.y !== undefined && args.y !== null) { - this.y = args.y - } - } -} -Coordinate.prototype = {} -Coordinate.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.DOUBLE) { - this.x = input.readDouble() - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.DOUBLE) { - this.y = input.readDouble() - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -Coordinate.prototype.write = function(output) { - output.writeStructBegin('Coordinate') - if (this.x !== null && this.x !== undefined) { - output.writeFieldBegin('x', Thrift.Type.DOUBLE, 1) - output.writeDouble(this.x) - output.writeFieldEnd() - } - if (this.y !== null && this.y !== undefined) { - output.writeFieldBegin('y', Thrift.Type.DOUBLE, 2) - output.writeDouble(this.y) - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.Point = Point - -function Point(args) { - this.coord = null - if (args) { - if (args.coord !== undefined && args.coord !== null) { - this.coord = new ttypes.Coordinate(args.coord) - } - } -} -Point.prototype = {} -Point.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.STRUCT) { - this.coord = new ttypes.Coordinate() - this.coord.read(input) - } else { - input.skip(ftype) - } - break - case 0: - input.skip(ftype) - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -Point.prototype.write = function(output) { - output.writeStructBegin('Point') - if (this.coord !== null && this.coord !== undefined) { - output.writeFieldBegin('coord', Thrift.Type.STRUCT, 1) - this.coord.write(output) - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.LineString = LineString - -function LineString(args) { - this.coordList = null - if (args) { - if (args.coordList !== undefined && args.coordList !== null) { - this.coordList = Thrift.copyList(args.coordList, [ttypes.Coordinate]) - } - } -} -LineString.prototype = {} -LineString.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.LIST) { - this.coordList = [] - const _rtmp333 = input.readListBegin() - const _size32 = _rtmp333.size || 0 - for (let _i34 = 0; _i34 < _size32; ++_i34) { - let elem35 = null - elem35 = new ttypes.Coordinate() - elem35.read(input) - this.coordList.push(elem35) - } - input.readListEnd() - } else { - input.skip(ftype) - } - break - case 0: - input.skip(ftype) - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -LineString.prototype.write = function(output) { - output.writeStructBegin('LineString') - if (this.coordList !== null && this.coordList !== undefined) { - output.writeFieldBegin('coordList', Thrift.Type.LIST, 1) - output.writeListBegin(Thrift.Type.STRUCT, this.coordList.length) - for (let iter36 in this.coordList) { - if (this.coordList.hasOwnProperty(iter36)) { - iter36 = this.coordList[iter36] - iter36.write(output) - } - } - output.writeListEnd() - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.Polygon = Polygon - -function Polygon(args) { - this.coordListList = null - if (args) { - if (args.coordListList !== undefined && args.coordListList !== null) { - this.coordListList = Thrift.copyList(args.coordListList, [Thrift.copyList, ttypes.Coordinate]) - } - } -} -Polygon.prototype = {} -Polygon.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.LIST) { - this.coordListList = [] - const _rtmp338 = input.readListBegin() - const _size37 = _rtmp338.size || 0 - for (let _i39 = 0; _i39 < _size37; ++_i39) { - let elem40 = null - elem40 = [] - const _rtmp342 = input.readListBegin() - const _size41 = _rtmp342.size || 0 - for (let _i43 = 0; _i43 < _size41; ++_i43) { - let elem44 = null - elem44 = new ttypes.Coordinate() - elem44.read(input) - elem40.push(elem44) - } - input.readListEnd() - this.coordListList.push(elem40) - } - input.readListEnd() - } else { - input.skip(ftype) - } - break - case 0: - input.skip(ftype) - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -Polygon.prototype.write = function(output) { - output.writeStructBegin('Polygon') - if (this.coordListList !== null && this.coordListList !== undefined) { - output.writeFieldBegin('coordListList', Thrift.Type.LIST, 1) - output.writeListBegin(Thrift.Type.LIST, this.coordListList.length) - for (let iter45 in this.coordListList) { - if (this.coordListList.hasOwnProperty(iter45)) { - iter45 = this.coordListList[iter45] - output.writeListBegin(Thrift.Type.STRUCT, iter45.length) - for (let iter46 in iter45) { - if (iter45.hasOwnProperty(iter46)) { - iter46 = iter45[iter46] - iter46.write(output) - } - } - output.writeListEnd() - } - } - output.writeListEnd() - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.Geography = Geography - -function Geography(args) { - this.ptVal = null - this.lsVal = null - this.pgVal = null - if (args) { - if (args.ptVal !== undefined && args.ptVal !== null) { - this.ptVal = new ttypes.Point(args.ptVal) - } - if (args.lsVal !== undefined && args.lsVal !== null) { - this.lsVal = new ttypes.LineString(args.lsVal) - } - if (args.pgVal !== undefined && args.pgVal !== null) { - this.pgVal = new ttypes.Polygon(args.pgVal) - } - } -} -Geography.prototype = {} -Geography.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.STRUCT) { - this.ptVal = new ttypes.Point() - this.ptVal.read(input) - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.STRUCT) { - this.lsVal = new ttypes.LineString() - this.lsVal.read(input) - } else { - input.skip(ftype) - } - break - case 3: - if (ftype == Thrift.Type.STRUCT) { - this.pgVal = new ttypes.Polygon() - this.pgVal.read(input) - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -Geography.prototype.write = function(output) { - output.writeStructBegin('Geography') - if (this.ptVal !== null && this.ptVal !== undefined) { - output.writeFieldBegin('ptVal', Thrift.Type.STRUCT, 1) - this.ptVal.write(output) - output.writeFieldEnd() - } - if (this.lsVal !== null && this.lsVal !== undefined) { - output.writeFieldBegin('lsVal', Thrift.Type.STRUCT, 2) - this.lsVal.write(output) - output.writeFieldEnd() - } - if (this.pgVal !== null && this.pgVal !== undefined) { - output.writeFieldBegin('pgVal', Thrift.Type.STRUCT, 3) - this.pgVal.write(output) - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.Tag = Tag - -function Tag(args) { - this.name = null - this.props = null - if (args) { - if (args.name !== undefined && args.name !== null) { - this.name = args.name - } - if (args.props !== undefined && args.props !== null) { - this.props = Thrift.copyMap(args.props, [ttypes.Value]) - } - } -} -Tag.prototype = {} -Tag.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.STRING) { - this.name = input.readString() - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.MAP) { - this.props = {} - const _rtmp348 = input.readMapBegin() - const _size47 = _rtmp348.size || 0 - for (let _i49 = 0; _i49 < _size47; ++_i49) { - let key50 = null - let val51 = null - key50 = input.readString() - val51 = new ttypes.Value() - val51.read(input) - this.props[key50] = val51 - } - input.readMapEnd() - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -Tag.prototype.write = function(output) { - output.writeStructBegin('Tag') - if (this.name !== null && this.name !== undefined) { - output.writeFieldBegin('name', Thrift.Type.STRING, 1) - output.writeString(this.name) - output.writeFieldEnd() - } - if (this.props !== null && this.props !== undefined) { - output.writeFieldBegin('props', Thrift.Type.MAP, 2) - output.writeMapBegin(Thrift.Type.STRING, Thrift.Type.STRUCT, Thrift.objectLength(this.props)) - for (const kiter52 in this.props) { - if (this.props.hasOwnProperty(kiter52)) { - const viter53 = this.props[kiter52] - output.writeString(kiter52) - viter53.write(output) - } - } - output.writeMapEnd() - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.Vertex = Vertex - -function Vertex(args) { - this.vid = null - this.tags = null - if (args) { - if (args.vid !== undefined && args.vid !== null) { - this.vid = new ttypes.Value(args.vid) - } - if (args.tags !== undefined && args.tags !== null) { - this.tags = Thrift.copyList(args.tags, [ttypes.Tag]) - } - } -} -Vertex.prototype = {} -Vertex.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.STRUCT) { - this.vid = new ttypes.Value() - this.vid.read(input) - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.LIST) { - this.tags = [] - const _rtmp355 = input.readListBegin() - const _size54 = _rtmp355.size || 0 - for (let _i56 = 0; _i56 < _size54; ++_i56) { - let elem57 = null - elem57 = new ttypes.Tag() - elem57.read(input) - this.tags.push(elem57) - } - input.readListEnd() - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -Vertex.prototype.write = function(output) { - output.writeStructBegin('Vertex') - if (this.vid !== null && this.vid !== undefined) { - output.writeFieldBegin('vid', Thrift.Type.STRUCT, 1) - this.vid.write(output) - output.writeFieldEnd() - } - if (this.tags !== null && this.tags !== undefined) { - output.writeFieldBegin('tags', Thrift.Type.LIST, 2) - output.writeListBegin(Thrift.Type.STRUCT, this.tags.length) - for (let iter58 in this.tags) { - if (this.tags.hasOwnProperty(iter58)) { - iter58 = this.tags[iter58] - iter58.write(output) - } - } - output.writeListEnd() - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.Edge = Edge - -function Edge(args) { - this.src = null - this.dst = null - this.type = null - this.name = null - this.ranking = null - this.props = null - if (args) { - if (args.src !== undefined && args.src !== null) { - this.src = new ttypes.Value(args.src) - } - if (args.dst !== undefined && args.dst !== null) { - this.dst = new ttypes.Value(args.dst) - } - if (args.type !== undefined && args.type !== null) { - this.type = args.type - } - if (args.name !== undefined && args.name !== null) { - this.name = args.name - } - if (args.ranking !== undefined && args.ranking !== null) { - this.ranking = args.ranking - } - if (args.props !== undefined && args.props !== null) { - this.props = Thrift.copyMap(args.props, [ttypes.Value]) - } - } -} -Edge.prototype = {} -Edge.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.STRUCT) { - this.src = new ttypes.Value() - this.src.read(input) - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.STRUCT) { - this.dst = new ttypes.Value() - this.dst.read(input) - } else { - input.skip(ftype) - } - break - case 3: - if (ftype == Thrift.Type.I32) { - this.type = input.readI32() - } else { - input.skip(ftype) - } - break - case 4: - if (ftype == Thrift.Type.STRING) { - this.name = input.readString() - } else { - input.skip(ftype) - } - break - case 5: - if (ftype == Thrift.Type.I64) { - this.ranking = input.readI64() - } else { - input.skip(ftype) - } - break - case 6: - if (ftype == Thrift.Type.MAP) { - this.props = {} - const _rtmp360 = input.readMapBegin() - const _size59 = _rtmp360.size || 0 - for (let _i61 = 0; _i61 < _size59; ++_i61) { - let key62 = null - let val63 = null - key62 = input.readString() - val63 = new ttypes.Value() - val63.read(input) - this.props[key62] = val63 - } - input.readMapEnd() - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -Edge.prototype.write = function(output) { - output.writeStructBegin('Edge') - if (this.src !== null && this.src !== undefined) { - output.writeFieldBegin('src', Thrift.Type.STRUCT, 1) - this.src.write(output) - output.writeFieldEnd() - } - if (this.dst !== null && this.dst !== undefined) { - output.writeFieldBegin('dst', Thrift.Type.STRUCT, 2) - this.dst.write(output) - output.writeFieldEnd() - } - if (this.type !== null && this.type !== undefined) { - output.writeFieldBegin('type', Thrift.Type.I32, 3) - output.writeI32(this.type) - output.writeFieldEnd() - } - if (this.name !== null && this.name !== undefined) { - output.writeFieldBegin('name', Thrift.Type.STRING, 4) - output.writeString(this.name) - output.writeFieldEnd() - } - if (this.ranking !== null && this.ranking !== undefined) { - output.writeFieldBegin('ranking', Thrift.Type.I64, 5) - output.writeI64(this.ranking) - output.writeFieldEnd() - } - if (this.props !== null && this.props !== undefined) { - output.writeFieldBegin('props', Thrift.Type.MAP, 6) - output.writeMapBegin(Thrift.Type.STRING, Thrift.Type.STRUCT, Thrift.objectLength(this.props)) - for (const kiter64 in this.props) { - if (this.props.hasOwnProperty(kiter64)) { - const viter65 = this.props[kiter64] - output.writeString(kiter64) - viter65.write(output) - } - } - output.writeMapEnd() - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.Step = Step - -function Step(args) { - this.dst = null - this.type = null - this.name = null - this.ranking = null - this.props = null - if (args) { - if (args.dst !== undefined && args.dst !== null) { - this.dst = new ttypes.Vertex(args.dst) - } - if (args.type !== undefined && args.type !== null) { - this.type = args.type - } - if (args.name !== undefined && args.name !== null) { - this.name = args.name - } - if (args.ranking !== undefined && args.ranking !== null) { - this.ranking = args.ranking - } - if (args.props !== undefined && args.props !== null) { - this.props = Thrift.copyMap(args.props, [ttypes.Value]) - } - } -} -Step.prototype = {} -Step.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.STRUCT) { - this.dst = new ttypes.Vertex() - this.dst.read(input) - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.I32) { - this.type = input.readI32() - } else { - input.skip(ftype) - } - break - case 3: - if (ftype == Thrift.Type.STRING) { - this.name = input.readString() - } else { - input.skip(ftype) - } - break - case 4: - if (ftype == Thrift.Type.I64) { - this.ranking = input.readI64() - } else { - input.skip(ftype) - } - break - case 5: - if (ftype == Thrift.Type.MAP) { - this.props = {} - const _rtmp367 = input.readMapBegin() - const _size66 = _rtmp367.size || 0 - for (let _i68 = 0; _i68 < _size66; ++_i68) { - let key69 = null - let val70 = null - key69 = input.readString() - val70 = new ttypes.Value() - val70.read(input) - this.props[key69] = val70 - } - input.readMapEnd() - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -Step.prototype.write = function(output) { - output.writeStructBegin('Step') - if (this.dst !== null && this.dst !== undefined) { - output.writeFieldBegin('dst', Thrift.Type.STRUCT, 1) - this.dst.write(output) - output.writeFieldEnd() - } - if (this.type !== null && this.type !== undefined) { - output.writeFieldBegin('type', Thrift.Type.I32, 2) - output.writeI32(this.type) - output.writeFieldEnd() - } - if (this.name !== null && this.name !== undefined) { - output.writeFieldBegin('name', Thrift.Type.STRING, 3) - output.writeString(this.name) - output.writeFieldEnd() - } - if (this.ranking !== null && this.ranking !== undefined) { - output.writeFieldBegin('ranking', Thrift.Type.I64, 4) - output.writeI64(this.ranking) - output.writeFieldEnd() - } - if (this.props !== null && this.props !== undefined) { - output.writeFieldBegin('props', Thrift.Type.MAP, 5) - output.writeMapBegin(Thrift.Type.STRING, Thrift.Type.STRUCT, Thrift.objectLength(this.props)) - for (const kiter71 in this.props) { - if (this.props.hasOwnProperty(kiter71)) { - const viter72 = this.props[kiter71] - output.writeString(kiter71) - viter72.write(output) - } - } - output.writeMapEnd() - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.Path = Path - -function Path(args) { - this.src = null - this.steps = null - if (args) { - if (args.src !== undefined && args.src !== null) { - this.src = new ttypes.Vertex(args.src) - } - if (args.steps !== undefined && args.steps !== null) { - this.steps = Thrift.copyList(args.steps, [ttypes.Step]) - } - } -} -Path.prototype = {} -Path.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.STRUCT) { - this.src = new ttypes.Vertex() - this.src.read(input) - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.LIST) { - this.steps = [] - const _rtmp374 = input.readListBegin() - const _size73 = _rtmp374.size || 0 - for (let _i75 = 0; _i75 < _size73; ++_i75) { - let elem76 = null - elem76 = new ttypes.Step() - elem76.read(input) - this.steps.push(elem76) - } - input.readListEnd() - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -Path.prototype.write = function(output) { - output.writeStructBegin('Path') - if (this.src !== null && this.src !== undefined) { - output.writeFieldBegin('src', Thrift.Type.STRUCT, 1) - this.src.write(output) - output.writeFieldEnd() - } - if (this.steps !== null && this.steps !== undefined) { - output.writeFieldBegin('steps', Thrift.Type.LIST, 2) - output.writeListBegin(Thrift.Type.STRUCT, this.steps.length) - for (let iter77 in this.steps) { - if (this.steps.hasOwnProperty(iter77)) { - iter77 = this.steps[iter77] - iter77.write(output) - } - } - output.writeListEnd() - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.HostAddr = HostAddr - -function HostAddr(args) { - this.host = null - this.port = null - if (args) { - if (args.host !== undefined && args.host !== null) { - this.host = args.host - } - if (args.port !== undefined && args.port !== null) { - this.port = args.port - } - } -} -HostAddr.prototype = {} -HostAddr.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.STRING) { - this.host = input.readString() - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.I32) { - this.port = input.readI32() - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -HostAddr.prototype.write = function(output) { - output.writeStructBegin('HostAddr') - if (this.host !== null && this.host !== undefined) { - output.writeFieldBegin('host', Thrift.Type.STRING, 1) - output.writeString(this.host) - output.writeFieldEnd() - } - if (this.port !== null && this.port !== undefined) { - output.writeFieldBegin('port', Thrift.Type.I32, 2) - output.writeI32(this.port) - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.KeyValue = KeyValue - -function KeyValue(args) { - this.key = null - this.value = null - if (args) { - if (args.key !== undefined && args.key !== null) { - this.key = args.key - } - if (args.value !== undefined && args.value !== null) { - this.value = args.value - } - } -} -KeyValue.prototype = {} -KeyValue.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.STRING) { - this.key = input.readString() - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.STRING) { - this.value = input.readString() - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -KeyValue.prototype.write = function(output) { - output.writeStructBegin('KeyValue') - if (this.key !== null && this.key !== undefined) { - output.writeFieldBegin('key', Thrift.Type.STRING, 1) - output.writeString(this.key) - output.writeFieldEnd() - } - if (this.value !== null && this.value !== undefined) { - output.writeFieldBegin('value', Thrift.Type.STRING, 2) - output.writeString(this.value) - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.Duration = Duration - -function Duration(args) { - this.seconds = null - this.microseconds = null - this.months = null - if (args) { - if (args.seconds !== undefined && args.seconds !== null) { - this.seconds = args.seconds - } - if (args.microseconds !== undefined && args.microseconds !== null) { - this.microseconds = args.microseconds - } - if (args.months !== undefined && args.months !== null) { - this.months = args.months - } - } -} -Duration.prototype = {} -Duration.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I64) { - this.seconds = input.readI64() - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.I32) { - this.microseconds = input.readI32() - } else { - input.skip(ftype) - } - break - case 3: - if (ftype == Thrift.Type.I32) { - this.months = input.readI32() - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -Duration.prototype.write = function(output) { - output.writeStructBegin('Duration') - if (this.seconds !== null && this.seconds !== undefined) { - output.writeFieldBegin('seconds', Thrift.Type.I64, 1) - output.writeI64(this.seconds) - output.writeFieldEnd() - } - if (this.microseconds !== null && this.microseconds !== undefined) { - output.writeFieldBegin('microseconds', Thrift.Type.I32, 2) - output.writeI32(this.microseconds) - output.writeFieldEnd() - } - if (this.months !== null && this.months !== undefined) { - output.writeFieldBegin('months', Thrift.Type.I32, 3) - output.writeI32(this.months) - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.LogInfo = LogInfo - -function LogInfo(args) { - this.log_id = null - this.term_id = null - if (args) { - if (args.log_id !== undefined && args.log_id !== null) { - this.log_id = args.log_id - } - if (args.term_id !== undefined && args.term_id !== null) { - this.term_id = args.term_id - } - } -} -LogInfo.prototype = {} -LogInfo.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I64) { - this.log_id = input.readI64() - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.I64) { - this.term_id = input.readI64() - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -LogInfo.prototype.write = function(output) { - output.writeStructBegin('LogInfo') - if (this.log_id !== null && this.log_id !== undefined) { - output.writeFieldBegin('log_id', Thrift.Type.I64, 1) - output.writeI64(this.log_id) - output.writeFieldEnd() - } - if (this.term_id !== null && this.term_id !== undefined) { - output.writeFieldBegin('term_id', Thrift.Type.I64, 2) - output.writeI64(this.term_id) - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.DirInfo = DirInfo - -function DirInfo(args) { - this.root = null - this.data = null - if (args) { - if (args.root !== undefined && args.root !== null) { - this.root = args.root - } - if (args.data !== undefined && args.data !== null) { - this.data = Thrift.copyList(args.data, [null]) - } - } -} -DirInfo.prototype = {} -DirInfo.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.STRING) { - this.root = input.readString() - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.LIST) { - this.data = [] - const _rtmp379 = input.readListBegin() - const _size78 = _rtmp379.size || 0 - for (let _i80 = 0; _i80 < _size78; ++_i80) { - let elem81 = null - elem81 = input.readString() - this.data.push(elem81) - } - input.readListEnd() - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -DirInfo.prototype.write = function(output) { - output.writeStructBegin('DirInfo') - if (this.root !== null && this.root !== undefined) { - output.writeFieldBegin('root', Thrift.Type.STRING, 1) - output.writeString(this.root) - output.writeFieldEnd() - } - if (this.data !== null && this.data !== undefined) { - output.writeFieldBegin('data', Thrift.Type.LIST, 2) - output.writeListBegin(Thrift.Type.STRING, this.data.length) - for (let iter82 in this.data) { - if (this.data.hasOwnProperty(iter82)) { - iter82 = this.data[iter82] - output.writeString(iter82) - } - } - output.writeListEnd() - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.CheckpointInfo = CheckpointInfo - -function CheckpointInfo(args) { - this.space_id = null - this.parts = null - this.path = null - if (args) { - if (args.space_id !== undefined && args.space_id !== null) { - this.space_id = args.space_id - } - if (args.parts !== undefined && args.parts !== null) { - this.parts = Thrift.copyMap(args.parts, [ttypes.LogInfo]) - } - if (args.path !== undefined && args.path !== null) { - this.path = args.path - } - } -} -CheckpointInfo.prototype = {} -CheckpointInfo.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I32) { - this.space_id = input.readI32() - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.MAP) { - this.parts = {} - const _rtmp384 = input.readMapBegin() - const _size83 = _rtmp384.size || 0 - for (let _i85 = 0; _i85 < _size83; ++_i85) { - let key86 = null - let val87 = null - key86 = input.readI32() - val87 = new ttypes.LogInfo() - val87.read(input) - this.parts[key86] = val87 - } - input.readMapEnd() - } else { - input.skip(ftype) - } - break - case 3: - if (ftype == Thrift.Type.STRING) { - this.path = input.readString() - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -CheckpointInfo.prototype.write = function(output) { - output.writeStructBegin('CheckpointInfo') - if (this.space_id !== null && this.space_id !== undefined) { - output.writeFieldBegin('space_id', Thrift.Type.I32, 1) - output.writeI32(this.space_id) - output.writeFieldEnd() - } - if (this.parts !== null && this.parts !== undefined) { - output.writeFieldBegin('parts', Thrift.Type.MAP, 2) - output.writeMapBegin(Thrift.Type.I32, Thrift.Type.STRUCT, Thrift.objectLength(this.parts)) - for (const kiter88 in this.parts) { - if (this.parts.hasOwnProperty(kiter88)) { - const viter89 = this.parts[kiter88] - output.writeI32(kiter88) - viter89.write(output) - } - } - output.writeMapEnd() - output.writeFieldEnd() - } - if (this.path !== null && this.path !== undefined) { - output.writeFieldBegin('path', Thrift.Type.STRING, 3) - output.writeString(this.path) - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.LogEntry = LogEntry - -function LogEntry(args) { - this.cluster = null - this.log_str = null - if (args) { - if (args.cluster !== undefined && args.cluster !== null) { - this.cluster = args.cluster - } - if (args.log_str !== undefined && args.log_str !== null) { - this.log_str = args.log_str - } - } -} -LogEntry.prototype = {} -LogEntry.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I64) { - this.cluster = input.readI64() - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.STRING) { - this.log_str = input.readString() - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -LogEntry.prototype.write = function(output) { - output.writeStructBegin('LogEntry') - if (this.cluster !== null && this.cluster !== undefined) { - output.writeFieldBegin('cluster', Thrift.Type.I64, 1) - output.writeI64(this.cluster) - output.writeFieldEnd() - } - if (this.log_str !== null && this.log_str !== undefined) { - output.writeFieldBegin('log_str', Thrift.Type.STRING, 2) - output.writeString(this.log_str) - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -ttypes.version = '3.0.0' diff --git a/src/nebula/interface/graph_types.js b/src/nebula/interface/graph_types.js deleted file mode 100644 index 60cef6c..0000000 --- a/src/nebula/interface/graph_types.js +++ /dev/null @@ -1,983 +0,0 @@ -// -// Autogenerated by Thrift Compiler (0.14.1) -// -// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING -// -'use strict' - -const thrift = require('../../thrift') -const Thrift = thrift.Thrift -const Q = thrift.Q -const Int64 = require('node-int64') - -const common_ttypes = require('./common_types') - - -const ttypes = module.exports = {} - -module.exports.ProfilingStats = ProfilingStats - -function ProfilingStats(args) { - this.rows = null - this.exec_duration_in_us = null - this.total_duration_in_us = null - this.other_stats = null - if (args) { - if (args.rows !== undefined && args.rows !== null) { - this.rows = args.rows - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field rows is unset!') - } - if (args.exec_duration_in_us !== undefined && args.exec_duration_in_us !== null) { - this.exec_duration_in_us = args.exec_duration_in_us - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field exec_duration_in_us is unset!') - } - if (args.total_duration_in_us !== undefined && args.total_duration_in_us !== null) { - this.total_duration_in_us = args.total_duration_in_us - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field total_duration_in_us is unset!') - } - if (args.other_stats !== undefined && args.other_stats !== null) { - this.other_stats = Thrift.copyMap(args.other_stats, [null]) - } - } -} -ProfilingStats.prototype = {} -ProfilingStats.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I64) { - this.rows = input.readI64() - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.I64) { - this.exec_duration_in_us = input.readI64() - } else { - input.skip(ftype) - } - break - case 3: - if (ftype == Thrift.Type.I64) { - this.total_duration_in_us = input.readI64() - } else { - input.skip(ftype) - } - break - case 4: - if (ftype == Thrift.Type.MAP) { - this.other_stats = {} - const _rtmp31 = input.readMapBegin() - const _size0 = _rtmp31.size || 0 - for (let _i2 = 0; _i2 < _size0; ++_i2) { - let key3 = null - let val4 = null - key3 = input.readBinary() - val4 = input.readBinary() - this.other_stats[key3] = val4 - } - input.readMapEnd() - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -ProfilingStats.prototype.write = function(output) { - output.writeStructBegin('ProfilingStats') - if (this.rows !== null && this.rows !== undefined) { - output.writeFieldBegin('rows', Thrift.Type.I64, 1) - output.writeI64(this.rows) - output.writeFieldEnd() - } - if (this.exec_duration_in_us !== null && this.exec_duration_in_us !== undefined) { - output.writeFieldBegin('exec_duration_in_us', Thrift.Type.I64, 2) - output.writeI64(this.exec_duration_in_us) - output.writeFieldEnd() - } - if (this.total_duration_in_us !== null && this.total_duration_in_us !== undefined) { - output.writeFieldBegin('total_duration_in_us', Thrift.Type.I64, 3) - output.writeI64(this.total_duration_in_us) - output.writeFieldEnd() - } - if (this.other_stats !== null && this.other_stats !== undefined) { - output.writeFieldBegin('other_stats', Thrift.Type.MAP, 4) - output.writeMapBegin(Thrift.Type.STRING, Thrift.Type.STRING, Thrift.objectLength(this.other_stats)) - for (const kiter5 in this.other_stats) { - if (this.other_stats.hasOwnProperty(kiter5)) { - const viter6 = this.other_stats[kiter5] - output.writeBinary(kiter5) - output.writeBinary(viter6) - } - } - output.writeMapEnd() - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.PlanNodeBranchInfo = PlanNodeBranchInfo - -function PlanNodeBranchInfo(args) { - this.is_do_branch = null - this.condition_node_id = null - if (args) { - if (args.is_do_branch !== undefined && args.is_do_branch !== null) { - this.is_do_branch = args.is_do_branch - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field is_do_branch is unset!') - } - if (args.condition_node_id !== undefined && args.condition_node_id !== null) { - this.condition_node_id = args.condition_node_id - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field condition_node_id is unset!') - } - } -} -PlanNodeBranchInfo.prototype = {} -PlanNodeBranchInfo.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.BOOL) { - this.is_do_branch = input.readBool() - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.I64) { - this.condition_node_id = input.readI64() - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -PlanNodeBranchInfo.prototype.write = function(output) { - output.writeStructBegin('PlanNodeBranchInfo') - if (this.is_do_branch !== null && this.is_do_branch !== undefined) { - output.writeFieldBegin('is_do_branch', Thrift.Type.BOOL, 1) - output.writeBool(this.is_do_branch) - output.writeFieldEnd() - } - if (this.condition_node_id !== null && this.condition_node_id !== undefined) { - output.writeFieldBegin('condition_node_id', Thrift.Type.I64, 2) - output.writeI64(this.condition_node_id) - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.Pair = Pair - -function Pair(args) { - this.key = null - this.value = null - if (args) { - if (args.key !== undefined && args.key !== null) { - this.key = args.key - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field key is unset!') - } - if (args.value !== undefined && args.value !== null) { - this.value = args.value - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field value is unset!') - } - } -} -Pair.prototype = {} -Pair.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.STRING) { - this.key = input.readBinary() - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.STRING) { - this.value = input.readBinary() - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -Pair.prototype.write = function(output) { - output.writeStructBegin('Pair') - if (this.key !== null && this.key !== undefined) { - output.writeFieldBegin('key', Thrift.Type.STRING, 1) - output.writeBinary(this.key) - output.writeFieldEnd() - } - if (this.value !== null && this.value !== undefined) { - output.writeFieldBegin('value', Thrift.Type.STRING, 2) - output.writeBinary(this.value) - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.PlanNodeDescription = PlanNodeDescription - -function PlanNodeDescription(args) { - this.name = null - this.id = null - this.output_var = null - this.description = null - this.profiles = null - this.branch_info = null - this.dependencies = null - if (args) { - if (args.name !== undefined && args.name !== null) { - this.name = args.name - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field name is unset!') - } - if (args.id !== undefined && args.id !== null) { - this.id = args.id - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field id is unset!') - } - if (args.output_var !== undefined && args.output_var !== null) { - this.output_var = args.output_var - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field output_var is unset!') - } - if (args.description !== undefined && args.description !== null) { - this.description = Thrift.copyList(args.description, [ttypes.Pair]) - } - if (args.profiles !== undefined && args.profiles !== null) { - this.profiles = Thrift.copyList(args.profiles, [ttypes.ProfilingStats]) - } - if (args.branch_info !== undefined && args.branch_info !== null) { - this.branch_info = new ttypes.PlanNodeBranchInfo(args.branch_info) - } - if (args.dependencies !== undefined && args.dependencies !== null) { - this.dependencies = Thrift.copyList(args.dependencies, [null]) - } - } -} -PlanNodeDescription.prototype = {} -PlanNodeDescription.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.STRING) { - this.name = input.readBinary() - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.I64) { - this.id = input.readI64() - } else { - input.skip(ftype) - } - break - case 3: - if (ftype == Thrift.Type.STRING) { - this.output_var = input.readBinary() - } else { - input.skip(ftype) - } - break - case 4: - if (ftype == Thrift.Type.LIST) { - this.description = [] - const _rtmp38 = input.readListBegin() - const _size7 = _rtmp38.size || 0 - for (let _i9 = 0; _i9 < _size7; ++_i9) { - let elem10 = null - elem10 = new ttypes.Pair() - elem10.read(input) - this.description.push(elem10) - } - input.readListEnd() - } else { - input.skip(ftype) - } - break - case 5: - if (ftype == Thrift.Type.LIST) { - this.profiles = [] - const _rtmp312 = input.readListBegin() - const _size11 = _rtmp312.size || 0 - for (let _i13 = 0; _i13 < _size11; ++_i13) { - let elem14 = null - elem14 = new ttypes.ProfilingStats() - elem14.read(input) - this.profiles.push(elem14) - } - input.readListEnd() - } else { - input.skip(ftype) - } - break - case 6: - if (ftype == Thrift.Type.STRUCT) { - this.branch_info = new ttypes.PlanNodeBranchInfo() - this.branch_info.read(input) - } else { - input.skip(ftype) - } - break - case 7: - if (ftype == Thrift.Type.LIST) { - this.dependencies = [] - const _rtmp316 = input.readListBegin() - const _size15 = _rtmp316.size || 0 - for (let _i17 = 0; _i17 < _size15; ++_i17) { - let elem18 = null - elem18 = input.readI64() - this.dependencies.push(elem18) - } - input.readListEnd() - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -PlanNodeDescription.prototype.write = function(output) { - output.writeStructBegin('PlanNodeDescription') - if (this.name !== null && this.name !== undefined) { - output.writeFieldBegin('name', Thrift.Type.STRING, 1) - output.writeBinary(this.name) - output.writeFieldEnd() - } - if (this.id !== null && this.id !== undefined) { - output.writeFieldBegin('id', Thrift.Type.I64, 2) - output.writeI64(this.id) - output.writeFieldEnd() - } - if (this.output_var !== null && this.output_var !== undefined) { - output.writeFieldBegin('output_var', Thrift.Type.STRING, 3) - output.writeBinary(this.output_var) - output.writeFieldEnd() - } - if (this.description !== null && this.description !== undefined) { - output.writeFieldBegin('description', Thrift.Type.LIST, 4) - output.writeListBegin(Thrift.Type.STRUCT, this.description.length) - for (let iter19 in this.description) { - if (this.description.hasOwnProperty(iter19)) { - iter19 = this.description[iter19] - iter19.write(output) - } - } - output.writeListEnd() - output.writeFieldEnd() - } - if (this.profiles !== null && this.profiles !== undefined) { - output.writeFieldBegin('profiles', Thrift.Type.LIST, 5) - output.writeListBegin(Thrift.Type.STRUCT, this.profiles.length) - for (let iter20 in this.profiles) { - if (this.profiles.hasOwnProperty(iter20)) { - iter20 = this.profiles[iter20] - iter20.write(output) - } - } - output.writeListEnd() - output.writeFieldEnd() - } - if (this.branch_info !== null && this.branch_info !== undefined) { - output.writeFieldBegin('branch_info', Thrift.Type.STRUCT, 6) - this.branch_info.write(output) - output.writeFieldEnd() - } - if (this.dependencies !== null && this.dependencies !== undefined) { - output.writeFieldBegin('dependencies', Thrift.Type.LIST, 7) - output.writeListBegin(Thrift.Type.I64, this.dependencies.length) - for (let iter21 in this.dependencies) { - if (this.dependencies.hasOwnProperty(iter21)) { - iter21 = this.dependencies[iter21] - output.writeI64(iter21) - } - } - output.writeListEnd() - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.PlanDescription = PlanDescription - -function PlanDescription(args) { - this.plan_node_descs = null - this.node_index_map = null - this.format = null - this.optimize_time_in_us = null - if (args) { - if (args.plan_node_descs !== undefined && args.plan_node_descs !== null) { - this.plan_node_descs = Thrift.copyList(args.plan_node_descs, [ttypes.PlanNodeDescription]) - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field plan_node_descs is unset!') - } - if (args.node_index_map !== undefined && args.node_index_map !== null) { - this.node_index_map = Thrift.copyMap(args.node_index_map, [null]) - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field node_index_map is unset!') - } - if (args.format !== undefined && args.format !== null) { - this.format = args.format - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field format is unset!') - } - if (args.optimize_time_in_us !== undefined && args.optimize_time_in_us !== null) { - this.optimize_time_in_us = args.optimize_time_in_us - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field optimize_time_in_us is unset!') - } - } -} -PlanDescription.prototype = {} -PlanDescription.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.LIST) { - this.plan_node_descs = [] - const _rtmp323 = input.readListBegin() - const _size22 = _rtmp323.size || 0 - for (let _i24 = 0; _i24 < _size22; ++_i24) { - let elem25 = null - elem25 = new ttypes.PlanNodeDescription() - elem25.read(input) - this.plan_node_descs.push(elem25) - } - input.readListEnd() - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.MAP) { - this.node_index_map = {} - const _rtmp327 = input.readMapBegin() - const _size26 = _rtmp327.size || 0 - for (let _i28 = 0; _i28 < _size26; ++_i28) { - let key29 = null - let val30 = null - key29 = input.readI64() - val30 = input.readI64() - this.node_index_map[key29] = val30 - } - input.readMapEnd() - } else { - input.skip(ftype) - } - break - case 3: - if (ftype == Thrift.Type.STRING) { - this.format = input.readBinary() - } else { - input.skip(ftype) - } - break - case 4: - if (ftype == Thrift.Type.I32) { - this.optimize_time_in_us = input.readI32() - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -PlanDescription.prototype.write = function(output) { - output.writeStructBegin('PlanDescription') - if (this.plan_node_descs !== null && this.plan_node_descs !== undefined) { - output.writeFieldBegin('plan_node_descs', Thrift.Type.LIST, 1) - output.writeListBegin(Thrift.Type.STRUCT, this.plan_node_descs.length) - for (let iter31 in this.plan_node_descs) { - if (this.plan_node_descs.hasOwnProperty(iter31)) { - iter31 = this.plan_node_descs[iter31] - iter31.write(output) - } - } - output.writeListEnd() - output.writeFieldEnd() - } - if (this.node_index_map !== null && this.node_index_map !== undefined) { - output.writeFieldBegin('node_index_map', Thrift.Type.MAP, 2) - output.writeMapBegin(Thrift.Type.I64, Thrift.Type.I64, Thrift.objectLength(this.node_index_map)) - for (const kiter32 in this.node_index_map) { - if (this.node_index_map.hasOwnProperty(kiter32)) { - const viter33 = this.node_index_map[kiter32] - output.writeI64(kiter32) - output.writeI64(viter33) - } - } - output.writeMapEnd() - output.writeFieldEnd() - } - if (this.format !== null && this.format !== undefined) { - output.writeFieldBegin('format', Thrift.Type.STRING, 3) - output.writeBinary(this.format) - output.writeFieldEnd() - } - if (this.optimize_time_in_us !== null && this.optimize_time_in_us !== undefined) { - output.writeFieldBegin('optimize_time_in_us', Thrift.Type.I32, 4) - output.writeI32(this.optimize_time_in_us) - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.ExecutionResponse = ExecutionResponse - -function ExecutionResponse(args) { - this.error_code = null - this.latency_in_us = null - this.data = null - this.space_name = null - this.error_msg = null - this.plan_desc = null - this.comment = null - if (args) { - if (args.error_code !== undefined && args.error_code !== null) { - this.error_code = args.error_code - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field error_code is unset!') - } - if (args.latency_in_us !== undefined && args.latency_in_us !== null) { - this.latency_in_us = args.latency_in_us - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field latency_in_us is unset!') - } - if (args.data !== undefined && args.data !== null) { - this.data = new common_ttypes.DataSet(args.data) - } - if (args.space_name !== undefined && args.space_name !== null) { - this.space_name = args.space_name - } - if (args.error_msg !== undefined && args.error_msg !== null) { - this.error_msg = args.error_msg - } - if (args.plan_desc !== undefined && args.plan_desc !== null) { - this.plan_desc = new ttypes.PlanDescription(args.plan_desc) - } - if (args.comment !== undefined && args.comment !== null) { - this.comment = args.comment - } - } -} -ExecutionResponse.prototype = {} -ExecutionResponse.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I32) { - this.error_code = input.readI32() - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.I64) { - this.latency_in_us = input.readI64() - } else { - input.skip(ftype) - } - break - case 3: - if (ftype == Thrift.Type.STRUCT) { - this.data = new common_ttypes.DataSet() - this.data.read(input) - } else { - input.skip(ftype) - } - break - case 4: - if (ftype == Thrift.Type.STRING) { - this.space_name = input.readString() - } else { - input.skip(ftype) - } - break - case 5: - if (ftype == Thrift.Type.STRING) { - this.error_msg = input.readString() - } else { - input.skip(ftype) - } - break - case 6: - if (ftype == Thrift.Type.STRUCT) { - this.plan_desc = new ttypes.PlanDescription() - this.plan_desc.read(input) - } else { - input.skip(ftype) - } - break - case 7: - if (ftype == Thrift.Type.STRING) { - this.comment = input.readString() - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -ExecutionResponse.prototype.write = function(output) { - output.writeStructBegin('ExecutionResponse') - if (this.error_code !== null && this.error_code !== undefined) { - output.writeFieldBegin('error_code', Thrift.Type.I32, 1) - output.writeI32(this.error_code) - output.writeFieldEnd() - } - if (this.latency_in_us !== null && this.latency_in_us !== undefined) { - output.writeFieldBegin('latency_in_us', Thrift.Type.I64, 2) - output.writeI64(this.latency_in_us) - output.writeFieldEnd() - } - if (this.data !== null && this.data !== undefined) { - output.writeFieldBegin('data', Thrift.Type.STRUCT, 3) - this.data.write(output) - output.writeFieldEnd() - } - if (this.space_name !== null && this.space_name !== undefined) { - output.writeFieldBegin('space_name', Thrift.Type.STRING, 4) - output.writeString(this.space_name) - output.writeFieldEnd() - } - if (this.error_msg !== null && this.error_msg !== undefined) { - output.writeFieldBegin('error_msg', Thrift.Type.STRING, 5) - output.writeString(this.error_msg) - output.writeFieldEnd() - } - if (this.plan_desc !== null && this.plan_desc !== undefined) { - output.writeFieldBegin('plan_desc', Thrift.Type.STRUCT, 6) - this.plan_desc.write(output) - output.writeFieldEnd() - } - if (this.comment !== null && this.comment !== undefined) { - output.writeFieldBegin('comment', Thrift.Type.STRING, 7) - output.writeString(this.comment) - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.AuthResponse = AuthResponse - -function AuthResponse(args) { - this.error_code = null - this.error_msg = null - this.session_id = null - this.time_zone_offset_seconds = null - this.time_zone_name = null - if (args) { - if (args.error_code !== undefined && args.error_code !== null) { - this.error_code = args.error_code - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field error_code is unset!') - } - if (args.error_msg !== undefined && args.error_msg !== null) { - this.error_msg = args.error_msg - } - if (args.session_id !== undefined && args.session_id !== null) { - this.session_id = args.session_id - } - if (args.time_zone_offset_seconds !== undefined && args.time_zone_offset_seconds !== null) { - this.time_zone_offset_seconds = args.time_zone_offset_seconds - } - if (args.time_zone_name !== undefined && args.time_zone_name !== null) { - this.time_zone_name = args.time_zone_name - } - } -} -AuthResponse.prototype = {} -AuthResponse.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I32) { - this.error_code = input.readI32() - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.STRING) { - this.error_msg = input.readString() - } else { - input.skip(ftype) - } - break - case 3: - if (ftype == Thrift.Type.I64) { - this.session_id = input.readI64() - } else { - input.skip(ftype) - } - break - case 4: - if (ftype == Thrift.Type.I32) { - this.time_zone_offset_seconds = input.readI32() - } else { - input.skip(ftype) - } - break - case 5: - if (ftype == Thrift.Type.STRING) { - this.time_zone_name = input.readString() - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -AuthResponse.prototype.write = function(output) { - output.writeStructBegin('AuthResponse') - if (this.error_code !== null && this.error_code !== undefined) { - output.writeFieldBegin('error_code', Thrift.Type.I32, 1) - output.writeI32(this.error_code) - output.writeFieldEnd() - } - if (this.error_msg !== null && this.error_msg !== undefined) { - output.writeFieldBegin('error_msg', Thrift.Type.STRING, 2) - output.writeString(this.error_msg) - output.writeFieldEnd() - } - if (this.session_id !== null && this.session_id !== undefined) { - output.writeFieldBegin('session_id', Thrift.Type.I64, 3) - output.writeI64(this.session_id) - output.writeFieldEnd() - } - if (this.time_zone_offset_seconds !== null && this.time_zone_offset_seconds !== undefined) { - output.writeFieldBegin('time_zone_offset_seconds', Thrift.Type.I32, 4) - output.writeI32(this.time_zone_offset_seconds) - output.writeFieldEnd() - } - if (this.time_zone_name !== null && this.time_zone_name !== undefined) { - output.writeFieldBegin('time_zone_name', Thrift.Type.STRING, 5) - output.writeString(this.time_zone_name) - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.VerifyClientVersionResp = VerifyClientVersionResp - -function VerifyClientVersionResp(args) { - this.error_code = null - this.error_msg = null - if (args) { - if (args.error_code !== undefined && args.error_code !== null) { - this.error_code = args.error_code - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field error_code is unset!') - } - if (args.error_msg !== undefined && args.error_msg !== null) { - this.error_msg = args.error_msg - } - } -} -VerifyClientVersionResp.prototype = {} -VerifyClientVersionResp.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.I32) { - this.error_code = input.readI32() - } else { - input.skip(ftype) - } - break - case 2: - if (ftype == Thrift.Type.STRING) { - this.error_msg = input.readString() - } else { - input.skip(ftype) - } - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -VerifyClientVersionResp.prototype.write = function(output) { - output.writeStructBegin('VerifyClientVersionResp') - if (this.error_code !== null && this.error_code !== undefined) { - output.writeFieldBegin('error_code', Thrift.Type.I32, 1) - output.writeI32(this.error_code) - output.writeFieldEnd() - } - if (this.error_msg !== null && this.error_msg !== undefined) { - output.writeFieldBegin('error_msg', Thrift.Type.STRING, 2) - output.writeString(this.error_msg) - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - -module.exports.VerifyClientVersionReq = VerifyClientVersionReq - -function VerifyClientVersionReq(args) { - this.version = '3.0.0' - if (args) { - if (args.version !== undefined && args.version !== null) { - this.version = args.version - } else { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field version is unset!') - } - } -} -VerifyClientVersionReq.prototype = {} -VerifyClientVersionReq.prototype.read = function(input) { - input.readStructBegin() - while (true) { - const ret = input.readFieldBegin() - const ftype = ret.ftype - const fid = ret.fid - if (ftype == Thrift.Type.STOP) { - break - } - switch (fid) { - case 1: - if (ftype == Thrift.Type.STRING) { - this.version = input.readString() - } else { - input.skip(ftype) - } - break - case 0: - input.skip(ftype) - break - default: - input.skip(ftype) - } - input.readFieldEnd() - } - input.readStructEnd() -} - -VerifyClientVersionReq.prototype.write = function(output) { - output.writeStructBegin('VerifyClientVersionReq') - if (this.version !== null && this.version !== undefined) { - output.writeFieldBegin('version', Thrift.Type.STRING, 1) - output.writeString(this.version) - output.writeFieldEnd() - } - output.writeFieldStop() - output.writeStructEnd() -} - diff --git a/src/nebula/parser/dataset.ts b/src/nebula/parser/dataset.ts deleted file mode 100644 index a3dedf6..0000000 --- a/src/nebula/parser/dataset.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ - -/* - * Created by Wu Jian Ping on - 2022/06/07. - */ - -export default (obj: any, propName: string): any => { - return obj[propName] -} diff --git a/src/nebula/parser/edge.ts b/src/nebula/parser/edge.ts deleted file mode 100644 index 45384ac..0000000 --- a/src/nebula/parser/edge.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ -/** - * Created by Wu Jian Ping on - 2021/06/10. - */ - -export default (obj: any, propName: string): any => { - return obj[propName] -} diff --git a/src/nebula/parser/index.ts b/src/nebula/parser/index.ts index 2d3ac5e..fe607e9 100644 --- a/src/nebula/parser/index.ts +++ b/src/nebula/parser/index.ts @@ -6,7 +6,7 @@ import _traverse from './traverse' -const traverse = (obj: any): Promise => { +export const traverse = (obj: any): Promise => { return new Promise((resolve, reject) => { setImmediate(() => { try { @@ -18,6 +18,4 @@ const traverse = (obj: any): Promise => { }) } -export default { - traverse -} + diff --git a/src/nebula/parser/list.ts b/src/nebula/parser/list.ts deleted file mode 100644 index 23a8743..0000000 --- a/src/nebula/parser/list.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ - -/** - * Created by Wu Jian Ping on - 2021/06/10. - */ - -export default (obj: any, propName: string): any => { - return obj[propName].values || [] -} - diff --git a/src/nebula/parser/map.ts b/src/nebula/parser/map.ts deleted file mode 100644 index a7fc517..0000000 --- a/src/nebula/parser/map.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ - -/* - * Created by Wu Jian Ping on - 2022/06/07. - */ - -export default (obj: any, propName: string): any => { - return obj[propName].kvs || {} -} diff --git a/src/nebula/parser/path.ts b/src/nebula/parser/path.ts deleted file mode 100644 index 2c95e93..0000000 --- a/src/nebula/parser/path.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ - -/** - * Created by Wu Jian Ping on - 2021/06/10. - */ - -export default (obj: any, propName: string): any => { - return obj[propName] -} - diff --git a/src/nebula/parser/set.ts b/src/nebula/parser/set.ts deleted file mode 100644 index 24a9a37..0000000 --- a/src/nebula/parser/set.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ - -/* - * Created by Wu Jian Ping on - 2022/06/07. - */ - -export default (obj: any, propName: string): any => { - return obj[propName].values || [] -} diff --git a/src/nebula/parser/traverse.ts b/src/nebula/parser/traverse.ts index 66d96af..9cd85ec 100644 --- a/src/nebula/parser/traverse.ts +++ b/src/nebula/parser/traverse.ts @@ -3,118 +3,93 @@ * Created by Wu Jian Ping on - 2021/06/09. */ -import Int64 from 'node-int64' -import _ from 'lodash' -import datasetParser from './dataset' -import edgeParser from './edge' -import listParser from './list' -import mapParser from './map' -import native from '../../native' -import pathParser from './path' -import setParser from './set' -import utils from './utils' -import valueParse from './value' -import vertexParser from './vertex' +import Int64 from 'node-int64'; +import _ from 'lodash'; +import { + getNebulaValueTypeName, + isNebulaValue, + NebulaDataParserList, +} from './utils'; +import * as native from '../../native'; const getNebulaValue = (obj: any): any => { - if (utils.isNebulaValue(obj)) { - const propName = utils.getNebulaValueTypeName(obj) - if (propName) { - if (utils.isNebulaValueTypeName(propName)) { - return valueParse(obj, propName) - } else if (utils.isNebulaNListTypeName(propName)) { - return listParser(obj, propName) - } else if (utils.isNebulaVertexTypeName(propName)) { - return vertexParser(obj, propName) - } else if (utils.isNebulaEdgeTypeName(propName)) { - return edgeParser(obj, propName) - } else if (utils.isNebulaPathTypeName(propName)) { - return pathParser(obj, propName) - } else if (utils.isNebulaNMapTypeName(propName)) { - return mapParser(obj, propName) - } else if (utils.isNebulaNSetTypeName(propName)) { - return setParser(obj, propName) - } else if (utils.isNebulaNDataSetTypeName(propName)) { - return datasetParser(obj, propName) - } else { - return { - [propName]: obj[propName] - } - } - } - return null + if (!isNebulaValue(obj)) { + return obj; } - return obj -} + + const propName = getNebulaValueTypeName(obj); + const parser = NebulaDataParserList.find((parser) => parser.match(propName)); + return parser ? parser.parse(obj, propName) : null; +}; const convert = (entity: any): any => { if (_.isFunction(entity)) { - return undefined - } else if (utils.isNebulaValue(entity)) { - const obj = getNebulaValue(entity) + return undefined; + } else if (isNebulaValue(entity)) { + const obj = getNebulaValue(entity); if (_.isDate(entity)) { - return entity + return entity; } else if (_.isArray(obj) || _.isPlainObject || _.isObject(obj)) { - return convert(obj) + return convert(obj); } - return obj + return obj; } else if (_.isArray(entity)) { - const out = [] - _.forEach(entity, o => { - out.push(convert(o)) - }) - return out + const out = []; + _.forEach(entity, (o) => { + out.push(convert(o)); + }); + return out; } else if (_.isPlainObject(entity)) { - const out = {} - const keys = _.keys(entity) - _.forEach(keys, key => { - const o = entity[key] - out[key] = convert(o) - }) - return out + const out = {}; + const keys = _.keys(entity); + _.forEach(keys, (key) => { + const o = entity[key]; + out[key] = convert(o); + }); + return out; } else if (entity instanceof Int64) { if (isFinite(entity.valueOf())) { - return +entity.toString() + return +entity.toString(); } else { if (entity.buffer) { - return native.bytesToLongLongString(entity.buffer as any) + return native.bytesToLongLongString(entity.buffer as any); } - return entity.toOctetString() + return entity.toOctetString(); } } else if (_.isDate(entity)) { - return entity + return entity; } else if (_.isObject(entity)) { - return convert(_.toPlainObject(entity)) + return convert(_.toPlainObject(entity)); } else { - return entity + return entity; } -} +}; const traverse = (obj: any): any => { - const start = Date.now() - const result = convert(obj) - const columns = result?.data?.column_names - const rows = result?.data?.rows + const start = Date.now(); + const result = convert(obj); + const columns = result?.data?.column_names; + const rows = result?.data?.rows; if (columns && rows) { - const entity = {} - _.forEach(columns, c => { - entity[c] = [] - }) + const entity = {}; + _.forEach(columns, (c) => { + entity[c] = []; + }); - _.forEach(rows, row => { + _.forEach(rows, (row) => { _.forEach(columns, (c, i) => { - entity[c].push(row.values[i]) - }) - }) + entity[c].push(row.values[i]); + }); + }); - result.data = entity + result.data = entity; } - const end = Date.now() - result.metrics = result.metrics ?? { execute: 0, traverse: 0 } - result.metrics.traverse = end - start + const end = Date.now(); + result.metrics = result.metrics ?? { execute: 0, traverse: 0 }; + result.metrics.traverse = end - start; - return result -} + return result; +}; -export default traverse +export default traverse; diff --git a/src/nebula/parser/utils.ts b/src/nebula/parser/utils.ts index f061188..36f024f 100644 --- a/src/nebula/parser/utils.ts +++ b/src/nebula/parser/utils.ts @@ -3,10 +3,22 @@ * Created by Wu Jian Ping on - 2021/06/10. */ -import { NebulaValue } from '../types' -import _ from 'lodash' +import Int64 from 'node-int64'; +import { bytesToLongLongString } from '../../native'; +import { NebulaValue } from '../types'; -const NebulaValueTypeNames = [ +/** + * - nVal: NullType + * - bVal: bool + * - iVal: i64 + * - fVal: double + * - sVal: string + * - dVal: Date + * - tVal: Time + * - dtVal: DateTime + * - gVal: DataSet + */ +const NebulaValueTypeNameSet = new Set([ 'nVal', 'bVal', 'iVal', @@ -15,59 +27,71 @@ const NebulaValueTypeNames = [ 'dVal', 'tVal', 'dtVal', - 'gVal' -] - - -const getNebulaValueTypeName = (obj: NebulaValue): string => { - return _.chain(obj).keys().filter(k => obj[k] !== null).first().value() -} - -const isNebulaValue = (obj: any): boolean => { - return obj && obj.nVal !== undefined -} - -const isNebulaValueTypeName = (propName: string): boolean => { - return _.includes(NebulaValueTypeNames, propName) -} - -const isNebulaNListTypeName = (propName: string): boolean => { - return propName === 'lVal' -} - -const isNebulaVertexTypeName = (propName: string): boolean => { - return propName === 'vVal' -} - -const isNebulaEdgeTypeName = (propName: string): boolean => { - return propName === 'eVal' -} - -const isNebulaPathTypeName = (propName: string): boolean => { - return propName === 'pVal' -} + 'gVal', +]); -const isNebulaNMapTypeName = (propName: string): boolean => { - return propName === 'mVal' -} +export const getNebulaValueTypeName = (obj: NebulaValue): string => { + return Object.entries(obj).find(([, v]) => v !== null)?.[0]; +}; -const isNebulaNSetTypeName = (propName: string): boolean => { - return propName === 'uVal' -} +export const isNebulaValue = (obj: any): boolean => { + return obj?.nVal !== undefined; +}; -const isNebulaNDataSetTypeName = (propName: string): boolean => { - return propName === 'gVal' -} +const valueParser = (obj: NebulaValue, prop: string) => { + // for i64 + const v = obj[prop]; + if (!(v instanceof Int64)) { + return v; + } + if (isFinite(v.valueOf())) { + return +v.toString(); + } + if (v.buffer) { + return bytesToLongLongString(v.buffer as any); + } + return v.toOctetString(); +}; -export default { - isNebulaValueTypeName, - isNebulaNListTypeName, - isNebulaVertexTypeName, - isNebulaEdgeTypeName, - isNebulaPathTypeName, - isNebulaValue, - isNebulaNMapTypeName, - isNebulaNSetTypeName, - isNebulaNDataSetTypeName, - getNebulaValueTypeName -} +export const NebulaDataParserList = [ + { + name: 'NebulaValue', + match: (prop: string) => NebulaValueTypeNameSet.has(prop), + parse: valueParser, + }, + { + name: 'NebulaNList', + match: (prop: string) => prop === 'lVal', + parse: (obj: NebulaValue, prop: string) => obj[prop].values || [], + }, + { + name: 'NebulaVertex', + match: (prop: string) => prop === 'vVal', + parse: (obj: NebulaValue, prop: string) => obj[prop], + }, + { + name: 'NebulaEdge', + match: (prop: string) => prop === 'eVal', + parse: (obj: NebulaValue, prop: string) => obj[prop], + }, + { + name: 'NebulaPath', + match: (prop: string) => prop === 'pVal', + parse: (obj: NebulaValue, prop: string) => obj[prop], + }, + { + name: 'NebulaNMap', + match: (prop: string) => prop === 'mVal', + parse: (obj: NebulaValue, prop: string) => obj[prop].kvs || {}, + }, + { + name: 'NebulaNSet', + match: (prop: string) => prop === 'uVal', + parse: (obj: NebulaValue, prop: string) => obj[prop].values || [], + }, + { + name: 'NebulaNDataSet', + match: (prop: string) => prop === 'gVal', + parse: (obj: NebulaValue, prop: string) => obj[prop], + }, +]; diff --git a/src/nebula/parser/value.ts b/src/nebula/parser/value.ts deleted file mode 100644 index 24a03e4..0000000 --- a/src/nebula/parser/value.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ -/** - * Created by Wu Jian Ping on - 2021/06/10. - */ - -import Int64 from 'node-int64' -import native from '../../native' - -export default (obj: any, propName: string): any => { - // for i64 - const v = obj[propName] - if (v instanceof Int64) { - if (isFinite(v.valueOf())) { - return +v.toString() - } else { - if (v.buffer) { - return native.bytesToLongLongString(v.buffer as any) - } - return v.toOctetString() - } - } - return v -} diff --git a/src/nebula/parser/vertex.ts b/src/nebula/parser/vertex.ts deleted file mode 100644 index 2c95e93..0000000 --- a/src/nebula/parser/vertex.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ - -/** - * Created by Wu Jian Ping on - 2021/06/10. - */ - -export default (obj: any, propName: string): any => { - return obj[propName] -} - diff --git a/src/nebula/services/GraphService.d.ts b/src/nebula/services/GraphService.d.ts new file mode 100644 index 0000000..119e07d --- /dev/null +++ b/src/nebula/services/GraphService.d.ts @@ -0,0 +1,73 @@ +// +// Autogenerated by Thrift Compiler (0.19.0) +// +// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING +// + +import thrift = require('thrift'); +import Thrift = thrift.Thrift; +import Q = thrift.Q; +import Int64 = require('node-int64'); +import common_ttypes = require('./common_types'); + + +import ttypes = require('./graph_types'); +import ProfilingStats = ttypes.ProfilingStats +import PlanNodeBranchInfo = ttypes.PlanNodeBranchInfo +import Pair = ttypes.Pair +import PlanNodeDescription = ttypes.PlanNodeDescription +import PlanDescription = ttypes.PlanDescription +import ExecutionResponse = ttypes.ExecutionResponse +import AuthResponse = ttypes.AuthResponse +import VerifyClientVersionResp = ttypes.VerifyClientVersionResp +import VerifyClientVersionReq = ttypes.VerifyClientVersionReq + +declare class Client { + private output: thrift.TTransport; + private pClass: thrift.TProtocol; + private _seqid: number; + + constructor(output: thrift.TTransport, pClass: { new(trans: thrift.TTransport): thrift.TProtocol }); + + authenticate(username: string, password: string): Promise; + + authenticate(username: string, password: string, callback?: (error: void, response: AuthResponse)=>void): void; + + signout(sessionId: Int64): Promise; + + signout(sessionId: Int64, callback?: (error: void, response: void)=>void): void; + + execute(sessionId: Int64, stmt: Buffer): Promise; + + execute(sessionId: Int64, stmt: Buffer, callback?: (error: void, response: ExecutionResponse)=>void): void; + + executeWithParameter(sessionId: Int64, stmt: Buffer, parameterMap: { [k: string]: common_ttypes.Value; }): Promise; + + executeWithParameter(sessionId: Int64, stmt: Buffer, parameterMap: { [k: string]: common_ttypes.Value; }, callback?: (error: void, response: ExecutionResponse)=>void): void; + + executeJson(sessionId: Int64, stmt: Buffer): Promise; + + executeJson(sessionId: Int64, stmt: Buffer, callback?: (error: void, response: Buffer)=>void): void; + + executeJsonWithParameter(sessionId: Int64, stmt: Buffer, parameterMap: any): Promise; + + executeJsonWithParameter(sessionId: Int64, stmt: Buffer, parameterMap: any, callback?: (error: void, response: Buffer)=>void): void; + + verifyClientVersion(req: VerifyClientVersionReq): Promise; + + verifyClientVersion(req: VerifyClientVersionReq, callback?: (error: void, response: VerifyClientVersionResp)=>void): void; + } + +declare class Processor { + private _handler: object; + + constructor(handler: object); + process(input: thrift.TProtocol, output: thrift.TProtocol): void; + process_authenticate(seqid: number, input: thrift.TProtocol, output: thrift.TProtocol): void; + process_signout(seqid: number, input: thrift.TProtocol, output: thrift.TProtocol): void; + process_execute(seqid: number, input: thrift.TProtocol, output: thrift.TProtocol): void; + process_executeWithParameter(seqid: number, input: thrift.TProtocol, output: thrift.TProtocol): void; + process_executeJson(seqid: number, input: thrift.TProtocol, output: thrift.TProtocol): void; + process_executeJsonWithParameter(seqid: number, input: thrift.TProtocol, output: thrift.TProtocol): void; + process_verifyClientVersion(seqid: number, input: thrift.TProtocol, output: thrift.TProtocol): void; +} diff --git a/src/nebula/services/GraphService.js b/src/nebula/services/GraphService.js new file mode 100644 index 0000000..9def4d1 --- /dev/null +++ b/src/nebula/services/GraphService.js @@ -0,0 +1,1470 @@ +// +// Autogenerated by Thrift Compiler (0.19.0) +// +// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING +// +const thrift = require('thrift'); +const Thrift = thrift.Thrift; +const Int64 = require('node-int64'); + +const common_ttypes = require('./common_types'); + + +const ttypes = require('./graph_types'); +//HELPER FUNCTIONS AND STRUCTURES + +const GraphService_authenticate_args = class { + constructor(args) { + this.username = null; + this.password = null; + if (args) { + if (args.username !== undefined && args.username !== null) { + this.username = args.username; + } + if (args.password !== undefined && args.password !== null) { + this.password = args.password; + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.STRING) { + this.username = input.readString(); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.STRING) { + this.password = input.readString(); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('GraphService_authenticate_args'); + if (this.username !== null && this.username !== undefined) { + output.writeFieldBegin('username', Thrift.Type.STRING, 1); + output.writeString(this.username); + output.writeFieldEnd(); + } + if (this.password !== null && this.password !== undefined) { + output.writeFieldBegin('password', Thrift.Type.STRING, 2); + output.writeString(this.password); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const GraphService_authenticate_result = class { + constructor(args) { + this.success = null; + if (args) { + if (args.success !== undefined && args.success !== null) { + this.success = new ttypes.AuthResponse(args.success); + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 0: + if (ftype == Thrift.Type.STRUCT) { + this.success = new ttypes.AuthResponse(); + this.success.read(input); + } else { + input.skip(ftype); + } + break; + case 0: + input.skip(ftype); + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('GraphService_authenticate_result'); + if (this.success !== null && this.success !== undefined) { + output.writeFieldBegin('success', Thrift.Type.STRUCT, 0); + this.success.write(output); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const GraphService_signout_args = class { + constructor(args) { + this.sessionId = null; + if (args) { + if (args.sessionId !== undefined && args.sessionId !== null) { + this.sessionId = args.sessionId; + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.I64) { + this.sessionId = input.readI64(); + } else { + input.skip(ftype); + } + break; + case 0: + input.skip(ftype); + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('GraphService_signout_args'); + if (this.sessionId !== null && this.sessionId !== undefined) { + output.writeFieldBegin('sessionId', Thrift.Type.I64, 1); + output.writeI64(this.sessionId); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const GraphService_signout_result = class { + constructor(args) { + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + if (ftype == Thrift.Type.STOP) { + break; + } + input.skip(ftype); + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('GraphService_signout_result'); + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const GraphService_execute_args = class { + constructor(args) { + this.sessionId = null; + this.stmt = null; + if (args) { + if (args.sessionId !== undefined && args.sessionId !== null) { + this.sessionId = args.sessionId; + } + if (args.stmt !== undefined && args.stmt !== null) { + this.stmt = args.stmt; + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.I64) { + this.sessionId = input.readI64(); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.STRING) { + this.stmt = input.readBinary(); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('GraphService_execute_args'); + if (this.sessionId !== null && this.sessionId !== undefined) { + output.writeFieldBegin('sessionId', Thrift.Type.I64, 1); + output.writeI64(this.sessionId); + output.writeFieldEnd(); + } + if (this.stmt !== null && this.stmt !== undefined) { + output.writeFieldBegin('stmt', Thrift.Type.STRING, 2); + output.writeBinary(this.stmt); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const GraphService_execute_result = class { + constructor(args) { + this.success = null; + if (args) { + if (args.success !== undefined && args.success !== null) { + this.success = new ttypes.ExecutionResponse(args.success); + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 0: + if (ftype == Thrift.Type.STRUCT) { + this.success = new ttypes.ExecutionResponse(); + this.success.read(input); + } else { + input.skip(ftype); + } + break; + case 0: + input.skip(ftype); + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('GraphService_execute_result'); + if (this.success !== null && this.success !== undefined) { + output.writeFieldBegin('success', Thrift.Type.STRUCT, 0); + this.success.write(output); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const GraphService_executeWithParameter_args = class { + constructor(args) { + this.sessionId = null; + this.stmt = null; + this.parameterMap = null; + if (args) { + if (args.sessionId !== undefined && args.sessionId !== null) { + this.sessionId = args.sessionId; + } + if (args.stmt !== undefined && args.stmt !== null) { + this.stmt = args.stmt; + } + if (args.parameterMap !== undefined && args.parameterMap !== null) { + this.parameterMap = Thrift.copyMap(args.parameterMap, [common_ttypes.Value]); + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.I64) { + this.sessionId = input.readI64(); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.STRING) { + this.stmt = input.readBinary(); + } else { + input.skip(ftype); + } + break; + case 3: + if (ftype == Thrift.Type.MAP) { + this.parameterMap = {}; + const _rtmp335 = input.readMapBegin(); + const _size34 = _rtmp335.size || 0; + for (let _i36 = 0; _i36 < _size34; ++_i36) { + let key37 = null; + let val38 = null; + key37 = input.readString(); + val38 = new common_ttypes.Value(); + val38.read(input); + this.parameterMap[key37] = val38; + } + input.readMapEnd(); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('GraphService_executeWithParameter_args'); + if (this.sessionId !== null && this.sessionId !== undefined) { + output.writeFieldBegin('sessionId', Thrift.Type.I64, 1); + output.writeI64(this.sessionId); + output.writeFieldEnd(); + } + if (this.stmt !== null && this.stmt !== undefined) { + output.writeFieldBegin('stmt', Thrift.Type.STRING, 2); + output.writeBinary(this.stmt); + output.writeFieldEnd(); + } + if (this.parameterMap !== null && this.parameterMap !== undefined) { + output.writeFieldBegin('parameterMap', Thrift.Type.MAP, 3); + output.writeMapBegin(Thrift.Type.STRING, Thrift.Type.STRUCT, Thrift.objectLength(this.parameterMap)); + for (let kiter39 in this.parameterMap) { + if (this.parameterMap.hasOwnProperty(kiter39)) { + let viter40 = this.parameterMap[kiter39]; + output.writeString(kiter39); + viter40.write(output); + } + } + output.writeMapEnd(); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const GraphService_executeWithParameter_result = class { + constructor(args) { + this.success = null; + if (args) { + if (args.success !== undefined && args.success !== null) { + this.success = new ttypes.ExecutionResponse(args.success); + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 0: + if (ftype == Thrift.Type.STRUCT) { + this.success = new ttypes.ExecutionResponse(); + this.success.read(input); + } else { + input.skip(ftype); + } + break; + case 0: + input.skip(ftype); + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('GraphService_executeWithParameter_result'); + if (this.success !== null && this.success !== undefined) { + output.writeFieldBegin('success', Thrift.Type.STRUCT, 0); + this.success.write(output); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const GraphService_executeJson_args = class { + constructor(args) { + this.sessionId = null; + this.stmt = null; + if (args) { + if (args.sessionId !== undefined && args.sessionId !== null) { + this.sessionId = args.sessionId; + } + if (args.stmt !== undefined && args.stmt !== null) { + this.stmt = args.stmt; + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.I64) { + this.sessionId = input.readI64(); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.STRING) { + this.stmt = input.readBinary(); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('GraphService_executeJson_args'); + if (this.sessionId !== null && this.sessionId !== undefined) { + output.writeFieldBegin('sessionId', Thrift.Type.I64, 1); + output.writeI64(this.sessionId); + output.writeFieldEnd(); + } + if (this.stmt !== null && this.stmt !== undefined) { + output.writeFieldBegin('stmt', Thrift.Type.STRING, 2); + output.writeBinary(this.stmt); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const GraphService_executeJson_result = class { + constructor(args) { + this.success = null; + if (args) { + if (args.success !== undefined && args.success !== null) { + this.success = args.success; + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 0: + if (ftype == Thrift.Type.STRING) { + this.success = input.readBinary(); + } else { + input.skip(ftype); + } + break; + case 0: + input.skip(ftype); + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('GraphService_executeJson_result'); + if (this.success !== null && this.success !== undefined) { + output.writeFieldBegin('success', Thrift.Type.STRING, 0); + output.writeBinary(this.success); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const GraphService_executeJsonWithParameter_args = class { + constructor(args) { + this.sessionId = null; + this.stmt = null; + this.parameterMap = null; + if (args) { + if (args.sessionId !== undefined && args.sessionId !== null) { + this.sessionId = args.sessionId; + } + if (args.stmt !== undefined && args.stmt !== null) { + this.stmt = args.stmt; + } + if (args.parameterMap !== undefined && args.parameterMap !== null) { + this.parameterMap = Thrift.copyMap(args.parameterMap, [common_ttypes.Value]); + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.I64) { + this.sessionId = input.readI64(); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.STRING) { + this.stmt = input.readBinary(); + } else { + input.skip(ftype); + } + break; + case 3: + if (ftype == Thrift.Type.MAP) { + this.parameterMap = {}; + const _rtmp342 = input.readMapBegin(); + const _size41 = _rtmp342.size || 0; + for (let _i43 = 0; _i43 < _size41; ++_i43) { + let key44 = null; + let val45 = null; + key44 = input.readBinary(); + val45 = new common_ttypes.Value(); + val45.read(input); + this.parameterMap[key44] = val45; + } + input.readMapEnd(); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('GraphService_executeJsonWithParameter_args'); + if (this.sessionId !== null && this.sessionId !== undefined) { + output.writeFieldBegin('sessionId', Thrift.Type.I64, 1); + output.writeI64(this.sessionId); + output.writeFieldEnd(); + } + if (this.stmt !== null && this.stmt !== undefined) { + output.writeFieldBegin('stmt', Thrift.Type.STRING, 2); + output.writeBinary(this.stmt); + output.writeFieldEnd(); + } + if (this.parameterMap !== null && this.parameterMap !== undefined) { + output.writeFieldBegin('parameterMap', Thrift.Type.MAP, 3); + output.writeMapBegin(Thrift.Type.STRING, Thrift.Type.STRUCT, Thrift.objectLength(this.parameterMap)); + for (let kiter46 in this.parameterMap) { + if (this.parameterMap.hasOwnProperty(kiter46)) { + let viter47 = this.parameterMap[kiter46]; + output.writeBinary(kiter46); + viter47.write(output); + } + } + output.writeMapEnd(); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const GraphService_executeJsonWithParameter_result = class { + constructor(args) { + this.success = null; + if (args) { + if (args.success !== undefined && args.success !== null) { + this.success = args.success; + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 0: + if (ftype == Thrift.Type.STRING) { + this.success = input.readBinary(); + } else { + input.skip(ftype); + } + break; + case 0: + input.skip(ftype); + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('GraphService_executeJsonWithParameter_result'); + if (this.success !== null && this.success !== undefined) { + output.writeFieldBegin('success', Thrift.Type.STRING, 0); + output.writeBinary(this.success); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const GraphService_verifyClientVersion_args = class { + constructor(args) { + this.req = null; + if (args) { + if (args.req !== undefined && args.req !== null) { + this.req = new ttypes.VerifyClientVersionReq(args.req); + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.STRUCT) { + this.req = new ttypes.VerifyClientVersionReq(); + this.req.read(input); + } else { + input.skip(ftype); + } + break; + case 0: + input.skip(ftype); + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('GraphService_verifyClientVersion_args'); + if (this.req !== null && this.req !== undefined) { + output.writeFieldBegin('req', Thrift.Type.STRUCT, 1); + this.req.write(output); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const GraphService_verifyClientVersion_result = class { + constructor(args) { + this.success = null; + if (args) { + if (args.success !== undefined && args.success !== null) { + this.success = new ttypes.VerifyClientVersionResp(args.success); + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 0: + if (ftype == Thrift.Type.STRUCT) { + this.success = new ttypes.VerifyClientVersionResp(); + this.success.read(input); + } else { + input.skip(ftype); + } + break; + case 0: + input.skip(ftype); + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('GraphService_verifyClientVersion_result'); + if (this.success !== null && this.success !== undefined) { + output.writeFieldBegin('success', Thrift.Type.STRUCT, 0); + this.success.write(output); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const GraphServiceClient = exports.Client = class GraphServiceClient { + constructor(output, pClass) { + this.output = output; + this.pClass = pClass; + this._seqid = 0; + this._reqs = {}; + } + seqid () { return this._seqid; } + new_seqid () { return this._seqid += 1; } + + authenticate (username, password) { + this._seqid = this.new_seqid(); + const self = this; + return new Promise((resolve, reject) => { + self._reqs[self.seqid()] = (error, result) => { + return error ? reject(error) : resolve(result); + }; + self.send_authenticate(username, password); + }); + } + + send_authenticate (username, password) { + const output = new this.pClass(this.output); + const params = { + username: username, + password: password + }; + const args = new GraphService_authenticate_args(params); + try { + output.writeMessageBegin('authenticate', Thrift.MessageType.CALL, this.seqid()); + args.write(output); + output.writeMessageEnd(); + return this.output.flush(); + } + catch (e) { + delete this._reqs[this.seqid()]; + if (typeof output.reset === 'function') { + output.reset(); + } + throw e; + } + } + + recv_authenticate (input, mtype, rseqid) { + const callback = this._reqs[rseqid] || function() {}; + delete this._reqs[rseqid]; + if (mtype == Thrift.MessageType.EXCEPTION) { + const x = new Thrift.TApplicationException(); + x.read(input); + input.readMessageEnd(); + return callback(x); + } + const result = new GraphService_authenticate_result(); + result.read(input); + input.readMessageEnd(); + + if (null !== result.success) { + return callback(null, result.success); + } + return callback('authenticate failed: unknown result'); + } + + signout (sessionId) { + this._seqid = this.new_seqid(); + const self = this; + return new Promise((resolve, reject) => { + self._reqs[self.seqid()] = (error, result) => { + return error ? reject(error) : resolve(result); + }; + self.send_signout(sessionId); + }); + } + + send_signout (sessionId) { + const output = new this.pClass(this.output); + const params = { + sessionId: sessionId + }; + const args = new GraphService_signout_args(params); + try { + output.writeMessageBegin('signout', Thrift.MessageType.ONEWAY, this.seqid()); + args.write(output); + output.writeMessageEnd(); + this.output.flush(); + const callback = this._reqs[this.seqid()] || function() {}; + delete this._reqs[this.seqid()]; + callback(null); + } + catch (e) { + delete this._reqs[this.seqid()]; + if (typeof output.reset === 'function') { + output.reset(); + } + throw e; + } + } + + execute (sessionId, stmt) { + this._seqid = this.new_seqid(); + const self = this; + return new Promise((resolve, reject) => { + self._reqs[self.seqid()] = (error, result) => { + return error ? reject(error) : resolve(result); + }; + self.send_execute(sessionId, stmt); + }); + } + + send_execute (sessionId, stmt) { + const output = new this.pClass(this.output); + const params = { + sessionId: sessionId, + stmt: stmt + }; + const args = new GraphService_execute_args(params); + try { + output.writeMessageBegin('execute', Thrift.MessageType.CALL, this.seqid()); + args.write(output); + output.writeMessageEnd(); + return this.output.flush(); + } + catch (e) { + delete this._reqs[this.seqid()]; + if (typeof output.reset === 'function') { + output.reset(); + } + throw e; + } + } + + recv_execute (input, mtype, rseqid) { + const callback = this._reqs[rseqid] || function() {}; + delete this._reqs[rseqid]; + if (mtype == Thrift.MessageType.EXCEPTION) { + const x = new Thrift.TApplicationException(); + x.read(input); + input.readMessageEnd(); + return callback(x); + } + const result = new GraphService_execute_result(); + result.read(input); + input.readMessageEnd(); + + if (null !== result.success) { + return callback(null, result.success); + } + return callback('execute failed: unknown result'); + } + + executeWithParameter (sessionId, stmt, parameterMap) { + this._seqid = this.new_seqid(); + const self = this; + return new Promise((resolve, reject) => { + self._reqs[self.seqid()] = (error, result) => { + return error ? reject(error) : resolve(result); + }; + self.send_executeWithParameter(sessionId, stmt, parameterMap); + }); + } + + send_executeWithParameter (sessionId, stmt, parameterMap) { + const output = new this.pClass(this.output); + const params = { + sessionId: sessionId, + stmt: stmt, + parameterMap: parameterMap + }; + const args = new GraphService_executeWithParameter_args(params); + try { + output.writeMessageBegin('executeWithParameter', Thrift.MessageType.CALL, this.seqid()); + args.write(output); + output.writeMessageEnd(); + return this.output.flush(); + } + catch (e) { + delete this._reqs[this.seqid()]; + if (typeof output.reset === 'function') { + output.reset(); + } + throw e; + } + } + + recv_executeWithParameter (input, mtype, rseqid) { + const callback = this._reqs[rseqid] || function() {}; + delete this._reqs[rseqid]; + if (mtype == Thrift.MessageType.EXCEPTION) { + const x = new Thrift.TApplicationException(); + x.read(input); + input.readMessageEnd(); + return callback(x); + } + const result = new GraphService_executeWithParameter_result(); + result.read(input); + input.readMessageEnd(); + + if (null !== result.success) { + return callback(null, result.success); + } + return callback('executeWithParameter failed: unknown result'); + } + + executeJson (sessionId, stmt) { + this._seqid = this.new_seqid(); + const self = this; + return new Promise((resolve, reject) => { + self._reqs[self.seqid()] = (error, result) => { + return error ? reject(error) : resolve(result); + }; + self.send_executeJson(sessionId, stmt); + }); + } + + send_executeJson (sessionId, stmt) { + const output = new this.pClass(this.output); + const params = { + sessionId: sessionId, + stmt: stmt + }; + const args = new GraphService_executeJson_args(params); + try { + output.writeMessageBegin('executeJson', Thrift.MessageType.CALL, this.seqid()); + args.write(output); + output.writeMessageEnd(); + return this.output.flush(); + } + catch (e) { + delete this._reqs[this.seqid()]; + if (typeof output.reset === 'function') { + output.reset(); + } + throw e; + } + } + + recv_executeJson (input, mtype, rseqid) { + const callback = this._reqs[rseqid] || function() {}; + delete this._reqs[rseqid]; + if (mtype == Thrift.MessageType.EXCEPTION) { + const x = new Thrift.TApplicationException(); + x.read(input); + input.readMessageEnd(); + return callback(x); + } + const result = new GraphService_executeJson_result(); + result.read(input); + input.readMessageEnd(); + + if (null !== result.success) { + return callback(null, result.success); + } + return callback('executeJson failed: unknown result'); + } + + executeJsonWithParameter (sessionId, stmt, parameterMap) { + this._seqid = this.new_seqid(); + const self = this; + return new Promise((resolve, reject) => { + self._reqs[self.seqid()] = (error, result) => { + return error ? reject(error) : resolve(result); + }; + self.send_executeJsonWithParameter(sessionId, stmt, parameterMap); + }); + } + + send_executeJsonWithParameter (sessionId, stmt, parameterMap) { + const output = new this.pClass(this.output); + const params = { + sessionId: sessionId, + stmt: stmt, + parameterMap: parameterMap + }; + const args = new GraphService_executeJsonWithParameter_args(params); + try { + output.writeMessageBegin('executeJsonWithParameter', Thrift.MessageType.CALL, this.seqid()); + args.write(output); + output.writeMessageEnd(); + return this.output.flush(); + } + catch (e) { + delete this._reqs[this.seqid()]; + if (typeof output.reset === 'function') { + output.reset(); + } + throw e; + } + } + + recv_executeJsonWithParameter (input, mtype, rseqid) { + const callback = this._reqs[rseqid] || function() {}; + delete this._reqs[rseqid]; + if (mtype == Thrift.MessageType.EXCEPTION) { + const x = new Thrift.TApplicationException(); + x.read(input); + input.readMessageEnd(); + return callback(x); + } + const result = new GraphService_executeJsonWithParameter_result(); + result.read(input); + input.readMessageEnd(); + + if (null !== result.success) { + return callback(null, result.success); + } + return callback('executeJsonWithParameter failed: unknown result'); + } + + verifyClientVersion (req) { + this._seqid = this.new_seqid(); + const self = this; + return new Promise((resolve, reject) => { + self._reqs[self.seqid()] = (error, result) => { + return error ? reject(error) : resolve(result); + }; + self.send_verifyClientVersion(req); + }); + } + + send_verifyClientVersion (req) { + const output = new this.pClass(this.output); + const params = { + req: req + }; + const args = new GraphService_verifyClientVersion_args(params); + try { + output.writeMessageBegin('verifyClientVersion', Thrift.MessageType.CALL, this.seqid()); + args.write(output); + output.writeMessageEnd(); + return this.output.flush(); + } + catch (e) { + delete this._reqs[this.seqid()]; + if (typeof output.reset === 'function') { + output.reset(); + } + throw e; + } + } + + recv_verifyClientVersion (input, mtype, rseqid) { + const callback = this._reqs[rseqid] || function() {}; + delete this._reqs[rseqid]; + if (mtype == Thrift.MessageType.EXCEPTION) { + const x = new Thrift.TApplicationException(); + x.read(input); + input.readMessageEnd(); + return callback(x); + } + const result = new GraphService_verifyClientVersion_result(); + result.read(input); + input.readMessageEnd(); + + if (null !== result.success) { + return callback(null, result.success); + } + return callback('verifyClientVersion failed: unknown result'); + } +}; +const GraphServiceProcessor = exports.Processor = class GraphServiceProcessor { + constructor(handler) { + this._handler = handler; + } + process (input, output) { + const r = input.readMessageBegin(); + if (this['process_' + r.fname]) { + return this['process_' + r.fname].call(this, r.rseqid, input, output); + } else { + input.skip(Thrift.Type.STRUCT); + input.readMessageEnd(); + const x = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN_METHOD, 'Unknown function ' + r.fname); + output.writeMessageBegin(r.fname, Thrift.MessageType.EXCEPTION, r.rseqid); + x.write(output); + output.writeMessageEnd(); + output.flush(); + } + } + process_authenticate (seqid, input, output) { + const args = new GraphService_authenticate_args(); + args.read(input); + input.readMessageEnd(); + if (this._handler.authenticate.length === 2) { + new Promise((resolve) => resolve(this._handler.authenticate.bind(this._handler)( + args.username, + args.password + ))).then(result => { + const result_obj = new GraphService_authenticate_result({success: result}); + output.writeMessageBegin("authenticate", Thrift.MessageType.REPLY, seqid); + result_obj.write(output); + output.writeMessageEnd(); + output.flush(); + }).catch(err => { + let result; + result = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message); + output.writeMessageBegin("authenticate", Thrift.MessageType.EXCEPTION, seqid); + result.write(output); + output.writeMessageEnd(); + output.flush(); + }); + } else { + this._handler.authenticate(args.username, args.password, (err, result) => { + let result_obj; + if ((err === null || typeof err === 'undefined')) { + result_obj = new GraphService_authenticate_result((err !== null || typeof err === 'undefined') ? err : {success: result}); + output.writeMessageBegin("authenticate", Thrift.MessageType.REPLY, seqid); + } else { + result_obj = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message); + output.writeMessageBegin("authenticate", Thrift.MessageType.EXCEPTION, seqid); + } + result_obj.write(output); + output.writeMessageEnd(); + output.flush(); + }); + } + } + process_signout (seqid, input, output) { + const args = new GraphService_signout_args(); + args.read(input); + input.readMessageEnd(); + this._handler.signout(args.sessionId); + } + process_execute (seqid, input, output) { + const args = new GraphService_execute_args(); + args.read(input); + input.readMessageEnd(); + if (this._handler.execute.length === 2) { + new Promise((resolve) => resolve(this._handler.execute.bind(this._handler)( + args.sessionId, + args.stmt + ))).then(result => { + const result_obj = new GraphService_execute_result({success: result}); + output.writeMessageBegin("execute", Thrift.MessageType.REPLY, seqid); + result_obj.write(output); + output.writeMessageEnd(); + output.flush(); + }).catch(err => { + let result; + result = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message); + output.writeMessageBegin("execute", Thrift.MessageType.EXCEPTION, seqid); + result.write(output); + output.writeMessageEnd(); + output.flush(); + }); + } else { + this._handler.execute(args.sessionId, args.stmt, (err, result) => { + let result_obj; + if ((err === null || typeof err === 'undefined')) { + result_obj = new GraphService_execute_result((err !== null || typeof err === 'undefined') ? err : {success: result}); + output.writeMessageBegin("execute", Thrift.MessageType.REPLY, seqid); + } else { + result_obj = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message); + output.writeMessageBegin("execute", Thrift.MessageType.EXCEPTION, seqid); + } + result_obj.write(output); + output.writeMessageEnd(); + output.flush(); + }); + } + } + process_executeWithParameter (seqid, input, output) { + const args = new GraphService_executeWithParameter_args(); + args.read(input); + input.readMessageEnd(); + if (this._handler.executeWithParameter.length === 3) { + new Promise((resolve) => resolve(this._handler.executeWithParameter.bind(this._handler)( + args.sessionId, + args.stmt, + args.parameterMap + ))).then(result => { + const result_obj = new GraphService_executeWithParameter_result({success: result}); + output.writeMessageBegin("executeWithParameter", Thrift.MessageType.REPLY, seqid); + result_obj.write(output); + output.writeMessageEnd(); + output.flush(); + }).catch(err => { + let result; + result = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message); + output.writeMessageBegin("executeWithParameter", Thrift.MessageType.EXCEPTION, seqid); + result.write(output); + output.writeMessageEnd(); + output.flush(); + }); + } else { + this._handler.executeWithParameter(args.sessionId, args.stmt, args.parameterMap, (err, result) => { + let result_obj; + if ((err === null || typeof err === 'undefined')) { + result_obj = new GraphService_executeWithParameter_result((err !== null || typeof err === 'undefined') ? err : {success: result}); + output.writeMessageBegin("executeWithParameter", Thrift.MessageType.REPLY, seqid); + } else { + result_obj = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message); + output.writeMessageBegin("executeWithParameter", Thrift.MessageType.EXCEPTION, seqid); + } + result_obj.write(output); + output.writeMessageEnd(); + output.flush(); + }); + } + } + process_executeJson (seqid, input, output) { + const args = new GraphService_executeJson_args(); + args.read(input); + input.readMessageEnd(); + if (this._handler.executeJson.length === 2) { + new Promise((resolve) => resolve(this._handler.executeJson.bind(this._handler)( + args.sessionId, + args.stmt + ))).then(result => { + const result_obj = new GraphService_executeJson_result({success: result}); + output.writeMessageBegin("executeJson", Thrift.MessageType.REPLY, seqid); + result_obj.write(output); + output.writeMessageEnd(); + output.flush(); + }).catch(err => { + let result; + result = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message); + output.writeMessageBegin("executeJson", Thrift.MessageType.EXCEPTION, seqid); + result.write(output); + output.writeMessageEnd(); + output.flush(); + }); + } else { + this._handler.executeJson(args.sessionId, args.stmt, (err, result) => { + let result_obj; + if ((err === null || typeof err === 'undefined')) { + result_obj = new GraphService_executeJson_result((err !== null || typeof err === 'undefined') ? err : {success: result}); + output.writeMessageBegin("executeJson", Thrift.MessageType.REPLY, seqid); + } else { + result_obj = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message); + output.writeMessageBegin("executeJson", Thrift.MessageType.EXCEPTION, seqid); + } + result_obj.write(output); + output.writeMessageEnd(); + output.flush(); + }); + } + } + process_executeJsonWithParameter (seqid, input, output) { + const args = new GraphService_executeJsonWithParameter_args(); + args.read(input); + input.readMessageEnd(); + if (this._handler.executeJsonWithParameter.length === 3) { + new Promise((resolve) => resolve(this._handler.executeJsonWithParameter.bind(this._handler)( + args.sessionId, + args.stmt, + args.parameterMap + ))).then(result => { + const result_obj = new GraphService_executeJsonWithParameter_result({success: result}); + output.writeMessageBegin("executeJsonWithParameter", Thrift.MessageType.REPLY, seqid); + result_obj.write(output); + output.writeMessageEnd(); + output.flush(); + }).catch(err => { + let result; + result = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message); + output.writeMessageBegin("executeJsonWithParameter", Thrift.MessageType.EXCEPTION, seqid); + result.write(output); + output.writeMessageEnd(); + output.flush(); + }); + } else { + this._handler.executeJsonWithParameter(args.sessionId, args.stmt, args.parameterMap, (err, result) => { + let result_obj; + if ((err === null || typeof err === 'undefined')) { + result_obj = new GraphService_executeJsonWithParameter_result((err !== null || typeof err === 'undefined') ? err : {success: result}); + output.writeMessageBegin("executeJsonWithParameter", Thrift.MessageType.REPLY, seqid); + } else { + result_obj = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message); + output.writeMessageBegin("executeJsonWithParameter", Thrift.MessageType.EXCEPTION, seqid); + } + result_obj.write(output); + output.writeMessageEnd(); + output.flush(); + }); + } + } + process_verifyClientVersion (seqid, input, output) { + const args = new GraphService_verifyClientVersion_args(); + args.read(input); + input.readMessageEnd(); + if (this._handler.verifyClientVersion.length === 1) { + new Promise((resolve) => resolve(this._handler.verifyClientVersion.bind(this._handler)( + args.req + ))).then(result => { + const result_obj = new GraphService_verifyClientVersion_result({success: result}); + output.writeMessageBegin("verifyClientVersion", Thrift.MessageType.REPLY, seqid); + result_obj.write(output); + output.writeMessageEnd(); + output.flush(); + }).catch(err => { + let result; + result = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message); + output.writeMessageBegin("verifyClientVersion", Thrift.MessageType.EXCEPTION, seqid); + result.write(output); + output.writeMessageEnd(); + output.flush(); + }); + } else { + this._handler.verifyClientVersion(args.req, (err, result) => { + let result_obj; + if ((err === null || typeof err === 'undefined')) { + result_obj = new GraphService_verifyClientVersion_result((err !== null || typeof err === 'undefined') ? err : {success: result}); + output.writeMessageBegin("verifyClientVersion", Thrift.MessageType.REPLY, seqid); + } else { + result_obj = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN, err.message); + output.writeMessageBegin("verifyClientVersion", Thrift.MessageType.EXCEPTION, seqid); + } + result_obj.write(output); + output.writeMessageEnd(); + output.flush(); + }); + } + } +}; diff --git a/src/nebula/services/common_types.d.ts b/src/nebula/services/common_types.d.ts new file mode 100644 index 0000000..dfd6871 --- /dev/null +++ b/src/nebula/services/common_types.d.ts @@ -0,0 +1,409 @@ +// +// Autogenerated by Thrift Compiler (0.19.0) +// +// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING +// +import thrift = require('thrift'); +import Thrift = thrift.Thrift; +import Q = thrift.Q; +import Int64 = require('node-int64'); + + +declare enum NullType { + __NULL__ = 0, + NaN = 1, + BAD_DATA = 2, + BAD_TYPE = 3, + ERR_OVERFLOW = 4, + UNKNOWN_PROP = 5, + DIV_BY_ZERO = 6, + OUT_OF_RANGE = 7, +} + +declare enum PropertyType { + UNKNOWN = 0, + BOOL = 1, + INT64 = 2, + VID = 3, + FLOAT = 4, + DOUBLE = 5, + STRING = 6, + FIXED_STRING = 7, + INT8 = 8, + INT16 = 9, + INT32 = 10, + TIMESTAMP = 21, + DURATION = 23, + DATE = 24, + DATETIME = 25, + TIME = 26, + GEOGRAPHY = 31, +} + +declare enum ErrorCode { + SUCCEEDED = 0, + E_DISCONNECTED = -1, + E_FAIL_TO_CONNECT = -2, + E_RPC_FAILURE = -3, + E_LEADER_CHANGED = -4, + E_SPACE_NOT_FOUND = -5, + E_TAG_NOT_FOUND = -6, + E_EDGE_NOT_FOUND = -7, + E_INDEX_NOT_FOUND = -8, + E_EDGE_PROP_NOT_FOUND = -9, + E_TAG_PROP_NOT_FOUND = -10, + E_ROLE_NOT_FOUND = -11, + E_CONFIG_NOT_FOUND = -12, + E_MACHINE_NOT_FOUND = -13, + E_ZONE_NOT_FOUND = -14, + E_LISTENER_NOT_FOUND = -15, + E_PART_NOT_FOUND = -16, + E_KEY_NOT_FOUND = -17, + E_USER_NOT_FOUND = -18, + E_STATS_NOT_FOUND = -19, + E_SERVICE_NOT_FOUND = -20, + E_BACKUP_FAILED = -24, + E_BACKUP_EMPTY_TABLE = -25, + E_BACKUP_TABLE_FAILED = -26, + E_PARTIAL_RESULT = -27, + E_REBUILD_INDEX_FAILED = -28, + E_INVALID_PASSWORD = -29, + E_FAILED_GET_ABS_PATH = -30, + E_BAD_USERNAME_PASSWORD = -1001, + E_SESSION_INVALID = -1002, + E_SESSION_TIMEOUT = -1003, + E_SYNTAX_ERROR = -1004, + E_EXECUTION_ERROR = -1005, + E_STATEMENT_EMPTY = -1006, + E_BAD_PERMISSION = -1008, + E_SEMANTIC_ERROR = -1009, + E_TOO_MANY_CONNECTIONS = -1010, + E_PARTIAL_SUCCEEDED = -1011, + E_NO_HOSTS = -2001, + E_EXISTED = -2002, + E_INVALID_HOST = -2003, + E_UNSUPPORTED = -2004, + E_NOT_DROP = -2005, + E_BALANCER_RUNNING = -2006, + E_CONFIG_IMMUTABLE = -2007, + E_CONFLICT = -2008, + E_INVALID_PARM = -2009, + E_WRONGCLUSTER = -2010, + E_ZONE_NOT_ENOUGH = -2011, + E_ZONE_IS_EMPTY = -2012, + E_STORE_FAILURE = -2021, + E_STORE_SEGMENT_ILLEGAL = -2022, + E_BAD_BALANCE_PLAN = -2023, + E_BALANCED = -2024, + E_NO_RUNNING_BALANCE_PLAN = -2025, + E_NO_VALID_HOST = -2026, + E_CORRUPTED_BALANCE_PLAN = -2027, + E_NO_INVALID_BALANCE_PLAN = -2028, + E_IMPROPER_ROLE = -2030, + E_INVALID_PARTITION_NUM = -2031, + E_INVALID_REPLICA_FACTOR = -2032, + E_INVALID_CHARSET = -2033, + E_INVALID_COLLATE = -2034, + E_CHARSET_COLLATE_NOT_MATCH = -2035, + E_SNAPSHOT_FAILURE = -2040, + E_BLOCK_WRITE_FAILURE = -2041, + E_REBUILD_INDEX_FAILURE = -2042, + E_INDEX_WITH_TTL = -2043, + E_ADD_JOB_FAILURE = -2044, + E_STOP_JOB_FAILURE = -2045, + E_SAVE_JOB_FAILURE = -2046, + E_BALANCER_FAILURE = -2047, + E_JOB_NOT_FINISHED = -2048, + E_TASK_REPORT_OUT_DATE = -2049, + E_JOB_NOT_IN_SPACE = -2050, + E_JOB_NEED_RECOVER = -2051, + E_INVALID_JOB = -2065, + E_BACKUP_BUILDING_INDEX = -2066, + E_BACKUP_SPACE_NOT_FOUND = -2067, + E_RESTORE_FAILURE = -2068, + E_SESSION_NOT_FOUND = -2069, + E_LIST_CLUSTER_FAILURE = -2070, + E_LIST_CLUSTER_GET_ABS_PATH_FAILURE = -2071, + E_LIST_CLUSTER_NO_AGENT_FAILURE = -2072, + E_QUERY_NOT_FOUND = -2073, + E_AGENT_HB_FAILUE = -2074, + E_CONSENSUS_ERROR = -3001, + E_KEY_HAS_EXISTS = -3002, + E_DATA_TYPE_MISMATCH = -3003, + E_INVALID_FIELD_VALUE = -3004, + E_INVALID_OPERATION = -3005, + E_NOT_NULLABLE = -3006, + E_FIELD_UNSET = -3007, + E_OUT_OF_RANGE = -3008, + E_DATA_CONFLICT_ERROR = -3010, + E_WRITE_STALLED = -3011, + E_IMPROPER_DATA_TYPE = -3021, + E_INVALID_SPACEVIDLEN = -3022, + E_INVALID_FILTER = -3031, + E_INVALID_UPDATER = -3032, + E_INVALID_STORE = -3033, + E_INVALID_PEER = -3034, + E_RETRY_EXHAUSTED = -3035, + E_TRANSFER_LEADER_FAILED = -3036, + E_INVALID_STAT_TYPE = -3037, + E_INVALID_VID = -3038, + E_NO_TRANSFORMED = -3039, + E_LOAD_META_FAILED = -3040, + E_FAILED_TO_CHECKPOINT = -3041, + E_CHECKPOINT_BLOCKED = -3042, + E_FILTER_OUT = -3043, + E_INVALID_DATA = -3044, + E_MUTATE_EDGE_CONFLICT = -3045, + E_MUTATE_TAG_CONFLICT = -3046, + E_OUTDATED_LOCK = -3047, + E_INVALID_TASK_PARA = -3051, + E_USER_CANCEL = -3052, + E_TASK_EXECUTION_FAILED = -3053, + E_PLAN_IS_KILLED = -3060, + E_NO_TERM = -3070, + E_OUTDATED_TERM = -3071, + E_OUTDATED_EDGE = -3072, + E_WRITE_WRITE_CONFLICT = -3073, + E_CLIENT_SERVER_INCOMPATIBLE = -3061, + E_ID_FAILED = -3062, + E_RAFT_UNKNOWN_PART = -3500, + E_RAFT_LOG_GAP = -3501, + E_RAFT_LOG_STALE = -3502, + E_RAFT_TERM_OUT_OF_DATE = -3503, + E_RAFT_UNKNOWN_APPEND_LOG = -3504, + E_RAFT_WAITING_SNAPSHOT = -3511, + E_RAFT_SENDING_SNAPSHOT = -3512, + E_RAFT_INVALID_PEER = -3513, + E_RAFT_NOT_READY = -3514, + E_RAFT_STOPPED = -3515, + E_RAFT_BAD_ROLE = -3516, + E_RAFT_WAL_FAIL = -3521, + E_RAFT_HOST_STOPPED = -3522, + E_RAFT_TOO_MANY_REQUESTS = -3523, + E_RAFT_PERSIST_SNAPSHOT_FAILED = -3524, + E_RAFT_RPC_EXCEPTION = -3525, + E_RAFT_NO_WAL_FOUND = -3526, + E_RAFT_HOST_PAUSED = -3527, + E_RAFT_WRITE_BLOCKED = -3528, + E_RAFT_BUFFER_OVERFLOW = -3529, + E_RAFT_ATOMIC_OP_FAILED = -3530, + E_LEADER_LEASE_FAILED = -3531, + E_UNKNOWN = -8000, +} + +declare class SchemaID { + public tag_id?: number; + public edge_type?: number; + + constructor(args?: { tag_id?: number; edge_type?: number; }); + } + +declare class Date { + public year: number; + public month: any; + public day: any; + + constructor(args?: { year: number; month: any; day: any; }); + } + +declare class Time { + public hour: any; + public minute: any; + public sec: any; + public microsec: number; + + constructor(args?: { hour: any; minute: any; sec: any; microsec: number; }); + } + +declare class DateTime { + public year: number; + public month: any; + public day: any; + public hour: any; + public minute: any; + public sec: any; + public microsec: number; + + constructor(args?: { year: number; month: any; day: any; hour: any; minute: any; sec: any; microsec: number; }); + } + +declare class Value { + public nVal?: NullType; + public bVal?: boolean; + public iVal?: Int64; + public fVal?: number; + public sVal?: string; + public dVal?: Date; + public tVal?: Time; + public dtVal?: DateTime; + public vVal?: Vertex; + public eVal?: Edge; + public pVal?: Path; + public lVal?: NList; + public mVal?: NMap; + public uVal?: NSet; + public gVal?: DataSet; + public ggVal?: Geography; + public duVal?: Duration; + + constructor(args?: { nVal?: NullType; bVal?: boolean; iVal?: Int64; fVal?: number; sVal?: string; dVal?: Date; tVal?: Time; dtVal?: DateTime; vVal?: Vertex; eVal?: Edge; pVal?: Path; lVal?: NList; mVal?: NMap; uVal?: NSet; gVal?: DataSet; ggVal?: Geography; duVal?: Duration; }); + } + +declare class NList { + public values: Value[]; + + constructor(args?: { values: Value[]; }); + } + +declare class NMap { + public kvs: { [k: string]: Value; }; + + constructor(args?: { kvs: { [k: string]: Value; }; }); + } + +declare class NSet { + public values: Value[]; + + constructor(args?: { values: Value[]; }); + } + +declare class Row { + public values: Value[]; + + constructor(args?: { values: Value[]; }); + } + +declare class DataSet { + public column_names: string[]; + public rows: Row[]; + + constructor(args?: { column_names: string[]; rows: Row[]; }); + } + +declare class Coordinate { + public x: number; + public y: number; + + constructor(args?: { x: number; y: number; }); + } + +declare class Point { + public coord: Coordinate; + + constructor(args?: { coord: Coordinate; }); + } + +declare class LineString { + public coordList: Coordinate[]; + + constructor(args?: { coordList: Coordinate[]; }); + } + +declare class Polygon { + public coordListList: Coordinate[][]; + + constructor(args?: { coordListList: Coordinate[][]; }); + } + +declare class Geography { + public ptVal?: Point; + public lsVal?: LineString; + public pgVal?: Polygon; + + constructor(args?: { ptVal?: Point; lsVal?: LineString; pgVal?: Polygon; }); + } + +declare class Tag { + public name: string; + public props: { [k: string]: Value; }; + + constructor(args?: { name: string; props: { [k: string]: Value; }; }); + } + +declare class Vertex { + public vid: Value; + public tags: Tag[]; + + constructor(args?: { vid: Value; tags: Tag[]; }); + } + +declare class Edge { + public src: Value; + public dst: Value; + public type: number; + public name: string; + public ranking: Int64; + public props: { [k: string]: Value; }; + + constructor(args?: { src: Value; dst: Value; type: number; name: string; ranking: Int64; props: { [k: string]: Value; }; }); + } + +declare class Step { + public dst: Vertex; + public type: number; + public name: string; + public ranking: Int64; + public props: { [k: string]: Value; }; + + constructor(args?: { dst: Vertex; type: number; name: string; ranking: Int64; props: { [k: string]: Value; }; }); + } + +declare class Path { + public src: Vertex; + public steps: Step[]; + + constructor(args?: { src: Vertex; steps: Step[]; }); + } + +declare class HostAddr { + public host: string; + public port: number; + + constructor(args?: { host: string; port: number; }); + } + +declare class KeyValue { + public key: string; + public value: string; + + constructor(args?: { key: string; value: string; }); + } + +declare class Duration { + public seconds: Int64; + public microseconds: number; + public months: number; + + constructor(args?: { seconds: Int64; microseconds: number; months: number; }); + } + +declare class LogInfo { + public log_id: Int64; + public term_id: Int64; + + constructor(args?: { log_id: Int64; term_id: Int64; }); + } + +declare class DirInfo { + public root: string; + public data: string[]; + + constructor(args?: { root: string; data: string[]; }); + } + +declare class CheckpointInfo { + public space_id: number; + public parts: { [k: number]: LogInfo; }; + public path: string; + + constructor(args?: { space_id: number; parts: { [k: number]: LogInfo; }; path: string; }); + } + +declare class LogEntry { + public cluster: Int64; + public log_str: string; + + constructor(args?: { cluster: Int64; log_str: string; }); + } + +declare const version: string; diff --git a/src/nebula/services/common_types.js b/src/nebula/services/common_types.js new file mode 100644 index 0000000..44883e7 --- /dev/null +++ b/src/nebula/services/common_types.js @@ -0,0 +1,2845 @@ +// +// Autogenerated by Thrift Compiler (0.19.0) +// +// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING +// +const thrift = require('thrift'); +const Thrift = thrift.Thrift; +const Int64 = require('node-int64'); + + +const ttypes = module.exports = {}; +ttypes.NullType = { + '0' : '__NULL__', + '__NULL__' : 0, + '1' : 'NaN', + 'NaN' : 1, + '2' : 'BAD_DATA', + 'BAD_DATA' : 2, + '3' : 'BAD_TYPE', + 'BAD_TYPE' : 3, + '4' : 'ERR_OVERFLOW', + 'ERR_OVERFLOW' : 4, + '5' : 'UNKNOWN_PROP', + 'UNKNOWN_PROP' : 5, + '6' : 'DIV_BY_ZERO', + 'DIV_BY_ZERO' : 6, + '7' : 'OUT_OF_RANGE', + 'OUT_OF_RANGE' : 7 +}; +ttypes.PropertyType = { + '0' : 'UNKNOWN', + 'UNKNOWN' : 0, + '1' : 'BOOL', + 'BOOL' : 1, + '2' : 'INT64', + 'INT64' : 2, + '3' : 'VID', + 'VID' : 3, + '4' : 'FLOAT', + 'FLOAT' : 4, + '5' : 'DOUBLE', + 'DOUBLE' : 5, + '6' : 'STRING', + 'STRING' : 6, + '7' : 'FIXED_STRING', + 'FIXED_STRING' : 7, + '8' : 'INT8', + 'INT8' : 8, + '9' : 'INT16', + 'INT16' : 9, + '10' : 'INT32', + 'INT32' : 10, + '21' : 'TIMESTAMP', + 'TIMESTAMP' : 21, + '23' : 'DURATION', + 'DURATION' : 23, + '24' : 'DATE', + 'DATE' : 24, + '25' : 'DATETIME', + 'DATETIME' : 25, + '26' : 'TIME', + 'TIME' : 26, + '31' : 'GEOGRAPHY', + 'GEOGRAPHY' : 31 +}; +ttypes.ErrorCode = { + '0' : 'SUCCEEDED', + 'SUCCEEDED' : 0, + '-1' : 'E_DISCONNECTED', + 'E_DISCONNECTED' : -1, + '-2' : 'E_FAIL_TO_CONNECT', + 'E_FAIL_TO_CONNECT' : -2, + '-3' : 'E_RPC_FAILURE', + 'E_RPC_FAILURE' : -3, + '-4' : 'E_LEADER_CHANGED', + 'E_LEADER_CHANGED' : -4, + '-5' : 'E_SPACE_NOT_FOUND', + 'E_SPACE_NOT_FOUND' : -5, + '-6' : 'E_TAG_NOT_FOUND', + 'E_TAG_NOT_FOUND' : -6, + '-7' : 'E_EDGE_NOT_FOUND', + 'E_EDGE_NOT_FOUND' : -7, + '-8' : 'E_INDEX_NOT_FOUND', + 'E_INDEX_NOT_FOUND' : -8, + '-9' : 'E_EDGE_PROP_NOT_FOUND', + 'E_EDGE_PROP_NOT_FOUND' : -9, + '-10' : 'E_TAG_PROP_NOT_FOUND', + 'E_TAG_PROP_NOT_FOUND' : -10, + '-11' : 'E_ROLE_NOT_FOUND', + 'E_ROLE_NOT_FOUND' : -11, + '-12' : 'E_CONFIG_NOT_FOUND', + 'E_CONFIG_NOT_FOUND' : -12, + '-13' : 'E_MACHINE_NOT_FOUND', + 'E_MACHINE_NOT_FOUND' : -13, + '-14' : 'E_ZONE_NOT_FOUND', + 'E_ZONE_NOT_FOUND' : -14, + '-15' : 'E_LISTENER_NOT_FOUND', + 'E_LISTENER_NOT_FOUND' : -15, + '-16' : 'E_PART_NOT_FOUND', + 'E_PART_NOT_FOUND' : -16, + '-17' : 'E_KEY_NOT_FOUND', + 'E_KEY_NOT_FOUND' : -17, + '-18' : 'E_USER_NOT_FOUND', + 'E_USER_NOT_FOUND' : -18, + '-19' : 'E_STATS_NOT_FOUND', + 'E_STATS_NOT_FOUND' : -19, + '-20' : 'E_SERVICE_NOT_FOUND', + 'E_SERVICE_NOT_FOUND' : -20, + '-24' : 'E_BACKUP_FAILED', + 'E_BACKUP_FAILED' : -24, + '-25' : 'E_BACKUP_EMPTY_TABLE', + 'E_BACKUP_EMPTY_TABLE' : -25, + '-26' : 'E_BACKUP_TABLE_FAILED', + 'E_BACKUP_TABLE_FAILED' : -26, + '-27' : 'E_PARTIAL_RESULT', + 'E_PARTIAL_RESULT' : -27, + '-28' : 'E_REBUILD_INDEX_FAILED', + 'E_REBUILD_INDEX_FAILED' : -28, + '-29' : 'E_INVALID_PASSWORD', + 'E_INVALID_PASSWORD' : -29, + '-30' : 'E_FAILED_GET_ABS_PATH', + 'E_FAILED_GET_ABS_PATH' : -30, + '-1001' : 'E_BAD_USERNAME_PASSWORD', + 'E_BAD_USERNAME_PASSWORD' : -1001, + '-1002' : 'E_SESSION_INVALID', + 'E_SESSION_INVALID' : -1002, + '-1003' : 'E_SESSION_TIMEOUT', + 'E_SESSION_TIMEOUT' : -1003, + '-1004' : 'E_SYNTAX_ERROR', + 'E_SYNTAX_ERROR' : -1004, + '-1005' : 'E_EXECUTION_ERROR', + 'E_EXECUTION_ERROR' : -1005, + '-1006' : 'E_STATEMENT_EMPTY', + 'E_STATEMENT_EMPTY' : -1006, + '-1008' : 'E_BAD_PERMISSION', + 'E_BAD_PERMISSION' : -1008, + '-1009' : 'E_SEMANTIC_ERROR', + 'E_SEMANTIC_ERROR' : -1009, + '-1010' : 'E_TOO_MANY_CONNECTIONS', + 'E_TOO_MANY_CONNECTIONS' : -1010, + '-1011' : 'E_PARTIAL_SUCCEEDED', + 'E_PARTIAL_SUCCEEDED' : -1011, + '-2001' : 'E_NO_HOSTS', + 'E_NO_HOSTS' : -2001, + '-2002' : 'E_EXISTED', + 'E_EXISTED' : -2002, + '-2003' : 'E_INVALID_HOST', + 'E_INVALID_HOST' : -2003, + '-2004' : 'E_UNSUPPORTED', + 'E_UNSUPPORTED' : -2004, + '-2005' : 'E_NOT_DROP', + 'E_NOT_DROP' : -2005, + '-2006' : 'E_BALANCER_RUNNING', + 'E_BALANCER_RUNNING' : -2006, + '-2007' : 'E_CONFIG_IMMUTABLE', + 'E_CONFIG_IMMUTABLE' : -2007, + '-2008' : 'E_CONFLICT', + 'E_CONFLICT' : -2008, + '-2009' : 'E_INVALID_PARM', + 'E_INVALID_PARM' : -2009, + '-2010' : 'E_WRONGCLUSTER', + 'E_WRONGCLUSTER' : -2010, + '-2011' : 'E_ZONE_NOT_ENOUGH', + 'E_ZONE_NOT_ENOUGH' : -2011, + '-2012' : 'E_ZONE_IS_EMPTY', + 'E_ZONE_IS_EMPTY' : -2012, + '-2021' : 'E_STORE_FAILURE', + 'E_STORE_FAILURE' : -2021, + '-2022' : 'E_STORE_SEGMENT_ILLEGAL', + 'E_STORE_SEGMENT_ILLEGAL' : -2022, + '-2023' : 'E_BAD_BALANCE_PLAN', + 'E_BAD_BALANCE_PLAN' : -2023, + '-2024' : 'E_BALANCED', + 'E_BALANCED' : -2024, + '-2025' : 'E_NO_RUNNING_BALANCE_PLAN', + 'E_NO_RUNNING_BALANCE_PLAN' : -2025, + '-2026' : 'E_NO_VALID_HOST', + 'E_NO_VALID_HOST' : -2026, + '-2027' : 'E_CORRUPTED_BALANCE_PLAN', + 'E_CORRUPTED_BALANCE_PLAN' : -2027, + '-2028' : 'E_NO_INVALID_BALANCE_PLAN', + 'E_NO_INVALID_BALANCE_PLAN' : -2028, + '-2030' : 'E_IMPROPER_ROLE', + 'E_IMPROPER_ROLE' : -2030, + '-2031' : 'E_INVALID_PARTITION_NUM', + 'E_INVALID_PARTITION_NUM' : -2031, + '-2032' : 'E_INVALID_REPLICA_FACTOR', + 'E_INVALID_REPLICA_FACTOR' : -2032, + '-2033' : 'E_INVALID_CHARSET', + 'E_INVALID_CHARSET' : -2033, + '-2034' : 'E_INVALID_COLLATE', + 'E_INVALID_COLLATE' : -2034, + '-2035' : 'E_CHARSET_COLLATE_NOT_MATCH', + 'E_CHARSET_COLLATE_NOT_MATCH' : -2035, + '-2040' : 'E_SNAPSHOT_FAILURE', + 'E_SNAPSHOT_FAILURE' : -2040, + '-2041' : 'E_BLOCK_WRITE_FAILURE', + 'E_BLOCK_WRITE_FAILURE' : -2041, + '-2042' : 'E_REBUILD_INDEX_FAILURE', + 'E_REBUILD_INDEX_FAILURE' : -2042, + '-2043' : 'E_INDEX_WITH_TTL', + 'E_INDEX_WITH_TTL' : -2043, + '-2044' : 'E_ADD_JOB_FAILURE', + 'E_ADD_JOB_FAILURE' : -2044, + '-2045' : 'E_STOP_JOB_FAILURE', + 'E_STOP_JOB_FAILURE' : -2045, + '-2046' : 'E_SAVE_JOB_FAILURE', + 'E_SAVE_JOB_FAILURE' : -2046, + '-2047' : 'E_BALANCER_FAILURE', + 'E_BALANCER_FAILURE' : -2047, + '-2048' : 'E_JOB_NOT_FINISHED', + 'E_JOB_NOT_FINISHED' : -2048, + '-2049' : 'E_TASK_REPORT_OUT_DATE', + 'E_TASK_REPORT_OUT_DATE' : -2049, + '-2050' : 'E_JOB_NOT_IN_SPACE', + 'E_JOB_NOT_IN_SPACE' : -2050, + '-2051' : 'E_JOB_NEED_RECOVER', + 'E_JOB_NEED_RECOVER' : -2051, + '-2065' : 'E_INVALID_JOB', + 'E_INVALID_JOB' : -2065, + '-2066' : 'E_BACKUP_BUILDING_INDEX', + 'E_BACKUP_BUILDING_INDEX' : -2066, + '-2067' : 'E_BACKUP_SPACE_NOT_FOUND', + 'E_BACKUP_SPACE_NOT_FOUND' : -2067, + '-2068' : 'E_RESTORE_FAILURE', + 'E_RESTORE_FAILURE' : -2068, + '-2069' : 'E_SESSION_NOT_FOUND', + 'E_SESSION_NOT_FOUND' : -2069, + '-2070' : 'E_LIST_CLUSTER_FAILURE', + 'E_LIST_CLUSTER_FAILURE' : -2070, + '-2071' : 'E_LIST_CLUSTER_GET_ABS_PATH_FAILURE', + 'E_LIST_CLUSTER_GET_ABS_PATH_FAILURE' : -2071, + '-2072' : 'E_LIST_CLUSTER_NO_AGENT_FAILURE', + 'E_LIST_CLUSTER_NO_AGENT_FAILURE' : -2072, + '-2073' : 'E_QUERY_NOT_FOUND', + 'E_QUERY_NOT_FOUND' : -2073, + '-2074' : 'E_AGENT_HB_FAILUE', + 'E_AGENT_HB_FAILUE' : -2074, + '-3001' : 'E_CONSENSUS_ERROR', + 'E_CONSENSUS_ERROR' : -3001, + '-3002' : 'E_KEY_HAS_EXISTS', + 'E_KEY_HAS_EXISTS' : -3002, + '-3003' : 'E_DATA_TYPE_MISMATCH', + 'E_DATA_TYPE_MISMATCH' : -3003, + '-3004' : 'E_INVALID_FIELD_VALUE', + 'E_INVALID_FIELD_VALUE' : -3004, + '-3005' : 'E_INVALID_OPERATION', + 'E_INVALID_OPERATION' : -3005, + '-3006' : 'E_NOT_NULLABLE', + 'E_NOT_NULLABLE' : -3006, + '-3007' : 'E_FIELD_UNSET', + 'E_FIELD_UNSET' : -3007, + '-3008' : 'E_OUT_OF_RANGE', + 'E_OUT_OF_RANGE' : -3008, + '-3010' : 'E_DATA_CONFLICT_ERROR', + 'E_DATA_CONFLICT_ERROR' : -3010, + '-3011' : 'E_WRITE_STALLED', + 'E_WRITE_STALLED' : -3011, + '-3021' : 'E_IMPROPER_DATA_TYPE', + 'E_IMPROPER_DATA_TYPE' : -3021, + '-3022' : 'E_INVALID_SPACEVIDLEN', + 'E_INVALID_SPACEVIDLEN' : -3022, + '-3031' : 'E_INVALID_FILTER', + 'E_INVALID_FILTER' : -3031, + '-3032' : 'E_INVALID_UPDATER', + 'E_INVALID_UPDATER' : -3032, + '-3033' : 'E_INVALID_STORE', + 'E_INVALID_STORE' : -3033, + '-3034' : 'E_INVALID_PEER', + 'E_INVALID_PEER' : -3034, + '-3035' : 'E_RETRY_EXHAUSTED', + 'E_RETRY_EXHAUSTED' : -3035, + '-3036' : 'E_TRANSFER_LEADER_FAILED', + 'E_TRANSFER_LEADER_FAILED' : -3036, + '-3037' : 'E_INVALID_STAT_TYPE', + 'E_INVALID_STAT_TYPE' : -3037, + '-3038' : 'E_INVALID_VID', + 'E_INVALID_VID' : -3038, + '-3039' : 'E_NO_TRANSFORMED', + 'E_NO_TRANSFORMED' : -3039, + '-3040' : 'E_LOAD_META_FAILED', + 'E_LOAD_META_FAILED' : -3040, + '-3041' : 'E_FAILED_TO_CHECKPOINT', + 'E_FAILED_TO_CHECKPOINT' : -3041, + '-3042' : 'E_CHECKPOINT_BLOCKED', + 'E_CHECKPOINT_BLOCKED' : -3042, + '-3043' : 'E_FILTER_OUT', + 'E_FILTER_OUT' : -3043, + '-3044' : 'E_INVALID_DATA', + 'E_INVALID_DATA' : -3044, + '-3045' : 'E_MUTATE_EDGE_CONFLICT', + 'E_MUTATE_EDGE_CONFLICT' : -3045, + '-3046' : 'E_MUTATE_TAG_CONFLICT', + 'E_MUTATE_TAG_CONFLICT' : -3046, + '-3047' : 'E_OUTDATED_LOCK', + 'E_OUTDATED_LOCK' : -3047, + '-3051' : 'E_INVALID_TASK_PARA', + 'E_INVALID_TASK_PARA' : -3051, + '-3052' : 'E_USER_CANCEL', + 'E_USER_CANCEL' : -3052, + '-3053' : 'E_TASK_EXECUTION_FAILED', + 'E_TASK_EXECUTION_FAILED' : -3053, + '-3060' : 'E_PLAN_IS_KILLED', + 'E_PLAN_IS_KILLED' : -3060, + '-3070' : 'E_NO_TERM', + 'E_NO_TERM' : -3070, + '-3071' : 'E_OUTDATED_TERM', + 'E_OUTDATED_TERM' : -3071, + '-3072' : 'E_OUTDATED_EDGE', + 'E_OUTDATED_EDGE' : -3072, + '-3073' : 'E_WRITE_WRITE_CONFLICT', + 'E_WRITE_WRITE_CONFLICT' : -3073, + '-3061' : 'E_CLIENT_SERVER_INCOMPATIBLE', + 'E_CLIENT_SERVER_INCOMPATIBLE' : -3061, + '-3062' : 'E_ID_FAILED', + 'E_ID_FAILED' : -3062, + '-3500' : 'E_RAFT_UNKNOWN_PART', + 'E_RAFT_UNKNOWN_PART' : -3500, + '-3501' : 'E_RAFT_LOG_GAP', + 'E_RAFT_LOG_GAP' : -3501, + '-3502' : 'E_RAFT_LOG_STALE', + 'E_RAFT_LOG_STALE' : -3502, + '-3503' : 'E_RAFT_TERM_OUT_OF_DATE', + 'E_RAFT_TERM_OUT_OF_DATE' : -3503, + '-3504' : 'E_RAFT_UNKNOWN_APPEND_LOG', + 'E_RAFT_UNKNOWN_APPEND_LOG' : -3504, + '-3511' : 'E_RAFT_WAITING_SNAPSHOT', + 'E_RAFT_WAITING_SNAPSHOT' : -3511, + '-3512' : 'E_RAFT_SENDING_SNAPSHOT', + 'E_RAFT_SENDING_SNAPSHOT' : -3512, + '-3513' : 'E_RAFT_INVALID_PEER', + 'E_RAFT_INVALID_PEER' : -3513, + '-3514' : 'E_RAFT_NOT_READY', + 'E_RAFT_NOT_READY' : -3514, + '-3515' : 'E_RAFT_STOPPED', + 'E_RAFT_STOPPED' : -3515, + '-3516' : 'E_RAFT_BAD_ROLE', + 'E_RAFT_BAD_ROLE' : -3516, + '-3521' : 'E_RAFT_WAL_FAIL', + 'E_RAFT_WAL_FAIL' : -3521, + '-3522' : 'E_RAFT_HOST_STOPPED', + 'E_RAFT_HOST_STOPPED' : -3522, + '-3523' : 'E_RAFT_TOO_MANY_REQUESTS', + 'E_RAFT_TOO_MANY_REQUESTS' : -3523, + '-3524' : 'E_RAFT_PERSIST_SNAPSHOT_FAILED', + 'E_RAFT_PERSIST_SNAPSHOT_FAILED' : -3524, + '-3525' : 'E_RAFT_RPC_EXCEPTION', + 'E_RAFT_RPC_EXCEPTION' : -3525, + '-3526' : 'E_RAFT_NO_WAL_FOUND', + 'E_RAFT_NO_WAL_FOUND' : -3526, + '-3527' : 'E_RAFT_HOST_PAUSED', + 'E_RAFT_HOST_PAUSED' : -3527, + '-3528' : 'E_RAFT_WRITE_BLOCKED', + 'E_RAFT_WRITE_BLOCKED' : -3528, + '-3529' : 'E_RAFT_BUFFER_OVERFLOW', + 'E_RAFT_BUFFER_OVERFLOW' : -3529, + '-3530' : 'E_RAFT_ATOMIC_OP_FAILED', + 'E_RAFT_ATOMIC_OP_FAILED' : -3530, + '-3531' : 'E_LEADER_LEASE_FAILED', + 'E_LEADER_LEASE_FAILED' : -3531, + '-8000' : 'E_UNKNOWN', + 'E_UNKNOWN' : -8000 +}; +const SchemaID = module.exports.SchemaID = class { + constructor(args) { + this.tag_id = null; + this.edge_type = null; + if (args) { + if (args.tag_id !== undefined && args.tag_id !== null) { + this.tag_id = args.tag_id; + } + if (args.edge_type !== undefined && args.edge_type !== null) { + this.edge_type = args.edge_type; + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.I32) { + this.tag_id = input.readI32(); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.I32) { + this.edge_type = input.readI32(); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('SchemaID'); + if (this.tag_id !== null && this.tag_id !== undefined) { + output.writeFieldBegin('tag_id', Thrift.Type.I32, 1); + output.writeI32(this.tag_id); + output.writeFieldEnd(); + } + if (this.edge_type !== null && this.edge_type !== undefined) { + output.writeFieldBegin('edge_type', Thrift.Type.I32, 2); + output.writeI32(this.edge_type); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const Date = module.exports.Date = class { + constructor(args) { + this.year = null; + this.month = null; + this.day = null; + if (args) { + if (args.year !== undefined && args.year !== null) { + this.year = args.year; + } + if (args.month !== undefined && args.month !== null) { + this.month = args.month; + } + if (args.day !== undefined && args.day !== null) { + this.day = args.day; + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.I16) { + this.year = input.readI16(); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.BYTE) { + this.month = input.readByte(); + } else { + input.skip(ftype); + } + break; + case 3: + if (ftype == Thrift.Type.BYTE) { + this.day = input.readByte(); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('Date'); + if (this.year !== null && this.year !== undefined) { + output.writeFieldBegin('year', Thrift.Type.I16, 1); + output.writeI16(this.year); + output.writeFieldEnd(); + } + if (this.month !== null && this.month !== undefined) { + output.writeFieldBegin('month', Thrift.Type.BYTE, 2); + output.writeByte(this.month); + output.writeFieldEnd(); + } + if (this.day !== null && this.day !== undefined) { + output.writeFieldBegin('day', Thrift.Type.BYTE, 3); + output.writeByte(this.day); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const Time = module.exports.Time = class { + constructor(args) { + this.hour = null; + this.minute = null; + this.sec = null; + this.microsec = null; + if (args) { + if (args.hour !== undefined && args.hour !== null) { + this.hour = args.hour; + } + if (args.minute !== undefined && args.minute !== null) { + this.minute = args.minute; + } + if (args.sec !== undefined && args.sec !== null) { + this.sec = args.sec; + } + if (args.microsec !== undefined && args.microsec !== null) { + this.microsec = args.microsec; + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.BYTE) { + this.hour = input.readByte(); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.BYTE) { + this.minute = input.readByte(); + } else { + input.skip(ftype); + } + break; + case 3: + if (ftype == Thrift.Type.BYTE) { + this.sec = input.readByte(); + } else { + input.skip(ftype); + } + break; + case 4: + if (ftype == Thrift.Type.I32) { + this.microsec = input.readI32(); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('Time'); + if (this.hour !== null && this.hour !== undefined) { + output.writeFieldBegin('hour', Thrift.Type.BYTE, 1); + output.writeByte(this.hour); + output.writeFieldEnd(); + } + if (this.minute !== null && this.minute !== undefined) { + output.writeFieldBegin('minute', Thrift.Type.BYTE, 2); + output.writeByte(this.minute); + output.writeFieldEnd(); + } + if (this.sec !== null && this.sec !== undefined) { + output.writeFieldBegin('sec', Thrift.Type.BYTE, 3); + output.writeByte(this.sec); + output.writeFieldEnd(); + } + if (this.microsec !== null && this.microsec !== undefined) { + output.writeFieldBegin('microsec', Thrift.Type.I32, 4); + output.writeI32(this.microsec); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const DateTime = module.exports.DateTime = class { + constructor(args) { + this.year = null; + this.month = null; + this.day = null; + this.hour = null; + this.minute = null; + this.sec = null; + this.microsec = null; + if (args) { + if (args.year !== undefined && args.year !== null) { + this.year = args.year; + } + if (args.month !== undefined && args.month !== null) { + this.month = args.month; + } + if (args.day !== undefined && args.day !== null) { + this.day = args.day; + } + if (args.hour !== undefined && args.hour !== null) { + this.hour = args.hour; + } + if (args.minute !== undefined && args.minute !== null) { + this.minute = args.minute; + } + if (args.sec !== undefined && args.sec !== null) { + this.sec = args.sec; + } + if (args.microsec !== undefined && args.microsec !== null) { + this.microsec = args.microsec; + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.I16) { + this.year = input.readI16(); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.BYTE) { + this.month = input.readByte(); + } else { + input.skip(ftype); + } + break; + case 3: + if (ftype == Thrift.Type.BYTE) { + this.day = input.readByte(); + } else { + input.skip(ftype); + } + break; + case 4: + if (ftype == Thrift.Type.BYTE) { + this.hour = input.readByte(); + } else { + input.skip(ftype); + } + break; + case 5: + if (ftype == Thrift.Type.BYTE) { + this.minute = input.readByte(); + } else { + input.skip(ftype); + } + break; + case 6: + if (ftype == Thrift.Type.BYTE) { + this.sec = input.readByte(); + } else { + input.skip(ftype); + } + break; + case 7: + if (ftype == Thrift.Type.I32) { + this.microsec = input.readI32(); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('DateTime'); + if (this.year !== null && this.year !== undefined) { + output.writeFieldBegin('year', Thrift.Type.I16, 1); + output.writeI16(this.year); + output.writeFieldEnd(); + } + if (this.month !== null && this.month !== undefined) { + output.writeFieldBegin('month', Thrift.Type.BYTE, 2); + output.writeByte(this.month); + output.writeFieldEnd(); + } + if (this.day !== null && this.day !== undefined) { + output.writeFieldBegin('day', Thrift.Type.BYTE, 3); + output.writeByte(this.day); + output.writeFieldEnd(); + } + if (this.hour !== null && this.hour !== undefined) { + output.writeFieldBegin('hour', Thrift.Type.BYTE, 4); + output.writeByte(this.hour); + output.writeFieldEnd(); + } + if (this.minute !== null && this.minute !== undefined) { + output.writeFieldBegin('minute', Thrift.Type.BYTE, 5); + output.writeByte(this.minute); + output.writeFieldEnd(); + } + if (this.sec !== null && this.sec !== undefined) { + output.writeFieldBegin('sec', Thrift.Type.BYTE, 6); + output.writeByte(this.sec); + output.writeFieldEnd(); + } + if (this.microsec !== null && this.microsec !== undefined) { + output.writeFieldBegin('microsec', Thrift.Type.I32, 7); + output.writeI32(this.microsec); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const Value = module.exports.Value = class { + constructor(args) { + this.nVal = null; + this.bVal = null; + this.iVal = null; + this.fVal = null; + this.sVal = null; + this.dVal = null; + this.tVal = null; + this.dtVal = null; + this.vVal = null; + this.eVal = null; + this.pVal = null; + this.lVal = null; + this.mVal = null; + this.uVal = null; + this.gVal = null; + this.ggVal = null; + this.duVal = null; + if (args) { + if (args.nVal !== undefined && args.nVal !== null) { + this.nVal = args.nVal; + } + if (args.bVal !== undefined && args.bVal !== null) { + this.bVal = args.bVal; + } + if (args.iVal !== undefined && args.iVal !== null) { + this.iVal = args.iVal; + } + if (args.fVal !== undefined && args.fVal !== null) { + this.fVal = args.fVal; + } + if (args.sVal !== undefined && args.sVal !== null) { + this.sVal = args.sVal; + } + if (args.dVal !== undefined && args.dVal !== null) { + this.dVal = new ttypes.Date(args.dVal); + } + if (args.tVal !== undefined && args.tVal !== null) { + this.tVal = new ttypes.Time(args.tVal); + } + if (args.dtVal !== undefined && args.dtVal !== null) { + this.dtVal = new ttypes.DateTime(args.dtVal); + } + if (args.vVal !== undefined && args.vVal !== null) { + this.vVal = new ttypes.Vertex(args.vVal); + } + if (args.eVal !== undefined && args.eVal !== null) { + this.eVal = new ttypes.Edge(args.eVal); + } + if (args.pVal !== undefined && args.pVal !== null) { + this.pVal = new ttypes.Path(args.pVal); + } + if (args.lVal !== undefined && args.lVal !== null) { + this.lVal = new ttypes.NList(args.lVal); + } + if (args.mVal !== undefined && args.mVal !== null) { + this.mVal = new ttypes.NMap(args.mVal); + } + if (args.uVal !== undefined && args.uVal !== null) { + this.uVal = new ttypes.NSet(args.uVal); + } + if (args.gVal !== undefined && args.gVal !== null) { + this.gVal = new ttypes.DataSet(args.gVal); + } + if (args.ggVal !== undefined && args.ggVal !== null) { + this.ggVal = new ttypes.Geography(args.ggVal); + } + if (args.duVal !== undefined && args.duVal !== null) { + this.duVal = new ttypes.Duration(args.duVal); + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.I32) { + this.nVal = input.readI32(); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.BOOL) { + this.bVal = input.readBool(); + } else { + input.skip(ftype); + } + break; + case 3: + if (ftype == Thrift.Type.I64) { + this.iVal = input.readI64(); + } else { + input.skip(ftype); + } + break; + case 4: + if (ftype == Thrift.Type.DOUBLE) { + this.fVal = input.readDouble(); + } else { + input.skip(ftype); + } + break; + case 5: + if (ftype == Thrift.Type.STRING) { + this.sVal = input.readString(); + } else { + input.skip(ftype); + } + break; + case 6: + if (ftype == Thrift.Type.STRUCT) { + this.dVal = new ttypes.Date(); + this.dVal.read(input); + } else { + input.skip(ftype); + } + break; + case 7: + if (ftype == Thrift.Type.STRUCT) { + this.tVal = new ttypes.Time(); + this.tVal.read(input); + } else { + input.skip(ftype); + } + break; + case 8: + if (ftype == Thrift.Type.STRUCT) { + this.dtVal = new ttypes.DateTime(); + this.dtVal.read(input); + } else { + input.skip(ftype); + } + break; + case 9: + if (ftype == Thrift.Type.STRUCT) { + this.vVal = new ttypes.Vertex(); + this.vVal.read(input); + } else { + input.skip(ftype); + } + break; + case 10: + if (ftype == Thrift.Type.STRUCT) { + this.eVal = new ttypes.Edge(); + this.eVal.read(input); + } else { + input.skip(ftype); + } + break; + case 11: + if (ftype == Thrift.Type.STRUCT) { + this.pVal = new ttypes.Path(); + this.pVal.read(input); + } else { + input.skip(ftype); + } + break; + case 12: + if (ftype == Thrift.Type.STRUCT) { + this.lVal = new ttypes.NList(); + this.lVal.read(input); + } else { + input.skip(ftype); + } + break; + case 13: + if (ftype == Thrift.Type.STRUCT) { + this.mVal = new ttypes.NMap(); + this.mVal.read(input); + } else { + input.skip(ftype); + } + break; + case 14: + if (ftype == Thrift.Type.STRUCT) { + this.uVal = new ttypes.NSet(); + this.uVal.read(input); + } else { + input.skip(ftype); + } + break; + case 15: + if (ftype == Thrift.Type.STRUCT) { + this.gVal = new ttypes.DataSet(); + this.gVal.read(input); + } else { + input.skip(ftype); + } + break; + case 16: + if (ftype == Thrift.Type.STRUCT) { + this.ggVal = new ttypes.Geography(); + this.ggVal.read(input); + } else { + input.skip(ftype); + } + break; + case 17: + if (ftype == Thrift.Type.STRUCT) { + this.duVal = new ttypes.Duration(); + this.duVal.read(input); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('Value'); + if (this.nVal !== null && this.nVal !== undefined) { + output.writeFieldBegin('nVal', Thrift.Type.I32, 1); + output.writeI32(this.nVal); + output.writeFieldEnd(); + } + if (this.bVal !== null && this.bVal !== undefined) { + output.writeFieldBegin('bVal', Thrift.Type.BOOL, 2); + output.writeBool(this.bVal); + output.writeFieldEnd(); + } + if (this.iVal !== null && this.iVal !== undefined) { + output.writeFieldBegin('iVal', Thrift.Type.I64, 3); + output.writeI64(this.iVal); + output.writeFieldEnd(); + } + if (this.fVal !== null && this.fVal !== undefined) { + output.writeFieldBegin('fVal', Thrift.Type.DOUBLE, 4); + output.writeDouble(this.fVal); + output.writeFieldEnd(); + } + if (this.sVal !== null && this.sVal !== undefined) { + output.writeFieldBegin('sVal', Thrift.Type.STRING, 5); + output.writeString(this.sVal); + output.writeFieldEnd(); + } + if (this.dVal !== null && this.dVal !== undefined) { + output.writeFieldBegin('dVal', Thrift.Type.STRUCT, 6); + this.dVal.write(output); + output.writeFieldEnd(); + } + if (this.tVal !== null && this.tVal !== undefined) { + output.writeFieldBegin('tVal', Thrift.Type.STRUCT, 7); + this.tVal.write(output); + output.writeFieldEnd(); + } + if (this.dtVal !== null && this.dtVal !== undefined) { + output.writeFieldBegin('dtVal', Thrift.Type.STRUCT, 8); + this.dtVal.write(output); + output.writeFieldEnd(); + } + if (this.vVal !== null && this.vVal !== undefined) { + output.writeFieldBegin('vVal', Thrift.Type.STRUCT, 9); + this.vVal.write(output); + output.writeFieldEnd(); + } + if (this.eVal !== null && this.eVal !== undefined) { + output.writeFieldBegin('eVal', Thrift.Type.STRUCT, 10); + this.eVal.write(output); + output.writeFieldEnd(); + } + if (this.pVal !== null && this.pVal !== undefined) { + output.writeFieldBegin('pVal', Thrift.Type.STRUCT, 11); + this.pVal.write(output); + output.writeFieldEnd(); + } + if (this.lVal !== null && this.lVal !== undefined) { + output.writeFieldBegin('lVal', Thrift.Type.STRUCT, 12); + this.lVal.write(output); + output.writeFieldEnd(); + } + if (this.mVal !== null && this.mVal !== undefined) { + output.writeFieldBegin('mVal', Thrift.Type.STRUCT, 13); + this.mVal.write(output); + output.writeFieldEnd(); + } + if (this.uVal !== null && this.uVal !== undefined) { + output.writeFieldBegin('uVal', Thrift.Type.STRUCT, 14); + this.uVal.write(output); + output.writeFieldEnd(); + } + if (this.gVal !== null && this.gVal !== undefined) { + output.writeFieldBegin('gVal', Thrift.Type.STRUCT, 15); + this.gVal.write(output); + output.writeFieldEnd(); + } + if (this.ggVal !== null && this.ggVal !== undefined) { + output.writeFieldBegin('ggVal', Thrift.Type.STRUCT, 16); + this.ggVal.write(output); + output.writeFieldEnd(); + } + if (this.duVal !== null && this.duVal !== undefined) { + output.writeFieldBegin('duVal', Thrift.Type.STRUCT, 17); + this.duVal.write(output); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const NList = module.exports.NList = class { + constructor(args) { + this.values = null; + if (args) { + if (args.values !== undefined && args.values !== null) { + this.values = Thrift.copyList(args.values, [ttypes.Value]); + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.LIST) { + this.values = []; + const _rtmp31 = input.readListBegin(); + const _size0 = _rtmp31.size || 0; + for (let _i2 = 0; _i2 < _size0; ++_i2) { + let elem3 = null; + elem3 = new ttypes.Value(); + elem3.read(input); + this.values.push(elem3); + } + input.readListEnd(); + } else { + input.skip(ftype); + } + break; + case 0: + input.skip(ftype); + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('NList'); + if (this.values !== null && this.values !== undefined) { + output.writeFieldBegin('values', Thrift.Type.LIST, 1); + output.writeListBegin(Thrift.Type.STRUCT, this.values.length); + for (let iter4 in this.values) { + if (this.values.hasOwnProperty(iter4)) { + iter4 = this.values[iter4]; + iter4.write(output); + } + } + output.writeListEnd(); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const NMap = module.exports.NMap = class { + constructor(args) { + this.kvs = null; + if (args) { + if (args.kvs !== undefined && args.kvs !== null) { + this.kvs = Thrift.copyMap(args.kvs, [ttypes.Value]); + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.MAP) { + this.kvs = {}; + const _rtmp36 = input.readMapBegin(); + const _size5 = _rtmp36.size || 0; + for (let _i7 = 0; _i7 < _size5; ++_i7) { + let key8 = null; + let val9 = null; + key8 = input.readString(); + val9 = new ttypes.Value(); + val9.read(input); + this.kvs[key8] = val9; + } + input.readMapEnd(); + } else { + input.skip(ftype); + } + break; + case 0: + input.skip(ftype); + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('NMap'); + if (this.kvs !== null && this.kvs !== undefined) { + output.writeFieldBegin('kvs', Thrift.Type.MAP, 1); + output.writeMapBegin(Thrift.Type.STRING, Thrift.Type.STRUCT, Thrift.objectLength(this.kvs)); + for (let kiter10 in this.kvs) { + if (this.kvs.hasOwnProperty(kiter10)) { + let viter11 = this.kvs[kiter10]; + output.writeString(kiter10); + viter11.write(output); + } + } + output.writeMapEnd(); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const NSet = module.exports.NSet = class { + constructor(args) { + this.values = null; + if (args) { + if (args.values !== undefined && args.values !== null) { + this.values = Thrift.copyList(args.values, [ttypes.Value]); + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.SET) { + this.values = []; + const _rtmp313 = input.readSetBegin(); + const _size12 = _rtmp313.size || 0; + for (let _i14 = 0; _i14 < _size12; ++_i14) { + let elem15 = null; + elem15 = new ttypes.Value(); + elem15.read(input); + this.values.push(elem15); + } + input.readSetEnd(); + } else { + input.skip(ftype); + } + break; + case 0: + input.skip(ftype); + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('NSet'); + if (this.values !== null && this.values !== undefined) { + output.writeFieldBegin('values', Thrift.Type.SET, 1); + output.writeSetBegin(Thrift.Type.STRUCT, this.values.length); + for (let iter16 in this.values) { + if (this.values.hasOwnProperty(iter16)) { + iter16 = this.values[iter16]; + iter16.write(output); + } + } + output.writeSetEnd(); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const Row = module.exports.Row = class { + constructor(args) { + this.values = null; + if (args) { + if (args.values !== undefined && args.values !== null) { + this.values = Thrift.copyList(args.values, [ttypes.Value]); + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.LIST) { + this.values = []; + const _rtmp318 = input.readListBegin(); + const _size17 = _rtmp318.size || 0; + for (let _i19 = 0; _i19 < _size17; ++_i19) { + let elem20 = null; + elem20 = new ttypes.Value(); + elem20.read(input); + this.values.push(elem20); + } + input.readListEnd(); + } else { + input.skip(ftype); + } + break; + case 0: + input.skip(ftype); + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('Row'); + if (this.values !== null && this.values !== undefined) { + output.writeFieldBegin('values', Thrift.Type.LIST, 1); + output.writeListBegin(Thrift.Type.STRUCT, this.values.length); + for (let iter21 in this.values) { + if (this.values.hasOwnProperty(iter21)) { + iter21 = this.values[iter21]; + iter21.write(output); + } + } + output.writeListEnd(); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const DataSet = module.exports.DataSet = class { + constructor(args) { + this.column_names = null; + this.rows = null; + if (args) { + if (args.column_names !== undefined && args.column_names !== null) { + this.column_names = Thrift.copyList(args.column_names, [null]); + } + if (args.rows !== undefined && args.rows !== null) { + this.rows = Thrift.copyList(args.rows, [ttypes.Row]); + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.LIST) { + this.column_names = []; + const _rtmp323 = input.readListBegin(); + const _size22 = _rtmp323.size || 0; + for (let _i24 = 0; _i24 < _size22; ++_i24) { + let elem25 = null; + elem25 = input.readString(); + this.column_names.push(elem25); + } + input.readListEnd(); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.LIST) { + this.rows = []; + const _rtmp327 = input.readListBegin(); + const _size26 = _rtmp327.size || 0; + for (let _i28 = 0; _i28 < _size26; ++_i28) { + let elem29 = null; + elem29 = new ttypes.Row(); + elem29.read(input); + this.rows.push(elem29); + } + input.readListEnd(); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('DataSet'); + if (this.column_names !== null && this.column_names !== undefined) { + output.writeFieldBegin('column_names', Thrift.Type.LIST, 1); + output.writeListBegin(Thrift.Type.STRING, this.column_names.length); + for (let iter30 in this.column_names) { + if (this.column_names.hasOwnProperty(iter30)) { + iter30 = this.column_names[iter30]; + output.writeString(iter30); + } + } + output.writeListEnd(); + output.writeFieldEnd(); + } + if (this.rows !== null && this.rows !== undefined) { + output.writeFieldBegin('rows', Thrift.Type.LIST, 2); + output.writeListBegin(Thrift.Type.STRUCT, this.rows.length); + for (let iter31 in this.rows) { + if (this.rows.hasOwnProperty(iter31)) { + iter31 = this.rows[iter31]; + iter31.write(output); + } + } + output.writeListEnd(); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const Coordinate = module.exports.Coordinate = class { + constructor(args) { + this.x = null; + this.y = null; + if (args) { + if (args.x !== undefined && args.x !== null) { + this.x = args.x; + } + if (args.y !== undefined && args.y !== null) { + this.y = args.y; + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.DOUBLE) { + this.x = input.readDouble(); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.DOUBLE) { + this.y = input.readDouble(); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('Coordinate'); + if (this.x !== null && this.x !== undefined) { + output.writeFieldBegin('x', Thrift.Type.DOUBLE, 1); + output.writeDouble(this.x); + output.writeFieldEnd(); + } + if (this.y !== null && this.y !== undefined) { + output.writeFieldBegin('y', Thrift.Type.DOUBLE, 2); + output.writeDouble(this.y); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const Point = module.exports.Point = class { + constructor(args) { + this.coord = null; + if (args) { + if (args.coord !== undefined && args.coord !== null) { + this.coord = new ttypes.Coordinate(args.coord); + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.STRUCT) { + this.coord = new ttypes.Coordinate(); + this.coord.read(input); + } else { + input.skip(ftype); + } + break; + case 0: + input.skip(ftype); + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('Point'); + if (this.coord !== null && this.coord !== undefined) { + output.writeFieldBegin('coord', Thrift.Type.STRUCT, 1); + this.coord.write(output); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const LineString = module.exports.LineString = class { + constructor(args) { + this.coordList = null; + if (args) { + if (args.coordList !== undefined && args.coordList !== null) { + this.coordList = Thrift.copyList(args.coordList, [ttypes.Coordinate]); + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.LIST) { + this.coordList = []; + const _rtmp333 = input.readListBegin(); + const _size32 = _rtmp333.size || 0; + for (let _i34 = 0; _i34 < _size32; ++_i34) { + let elem35 = null; + elem35 = new ttypes.Coordinate(); + elem35.read(input); + this.coordList.push(elem35); + } + input.readListEnd(); + } else { + input.skip(ftype); + } + break; + case 0: + input.skip(ftype); + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('LineString'); + if (this.coordList !== null && this.coordList !== undefined) { + output.writeFieldBegin('coordList', Thrift.Type.LIST, 1); + output.writeListBegin(Thrift.Type.STRUCT, this.coordList.length); + for (let iter36 in this.coordList) { + if (this.coordList.hasOwnProperty(iter36)) { + iter36 = this.coordList[iter36]; + iter36.write(output); + } + } + output.writeListEnd(); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const Polygon = module.exports.Polygon = class { + constructor(args) { + this.coordListList = null; + if (args) { + if (args.coordListList !== undefined && args.coordListList !== null) { + this.coordListList = Thrift.copyList(args.coordListList, [Thrift.copyList, ttypes.Coordinate]); + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.LIST) { + this.coordListList = []; + const _rtmp338 = input.readListBegin(); + const _size37 = _rtmp338.size || 0; + for (let _i39 = 0; _i39 < _size37; ++_i39) { + let elem40 = null; + elem40 = []; + const _rtmp342 = input.readListBegin(); + const _size41 = _rtmp342.size || 0; + for (let _i43 = 0; _i43 < _size41; ++_i43) { + let elem44 = null; + elem44 = new ttypes.Coordinate(); + elem44.read(input); + elem40.push(elem44); + } + input.readListEnd(); + this.coordListList.push(elem40); + } + input.readListEnd(); + } else { + input.skip(ftype); + } + break; + case 0: + input.skip(ftype); + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('Polygon'); + if (this.coordListList !== null && this.coordListList !== undefined) { + output.writeFieldBegin('coordListList', Thrift.Type.LIST, 1); + output.writeListBegin(Thrift.Type.LIST, this.coordListList.length); + for (let iter45 in this.coordListList) { + if (this.coordListList.hasOwnProperty(iter45)) { + iter45 = this.coordListList[iter45]; + output.writeListBegin(Thrift.Type.STRUCT, iter45.length); + for (let iter46 in iter45) { + if (iter45.hasOwnProperty(iter46)) { + iter46 = iter45[iter46]; + iter46.write(output); + } + } + output.writeListEnd(); + } + } + output.writeListEnd(); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const Geography = module.exports.Geography = class { + constructor(args) { + this.ptVal = null; + this.lsVal = null; + this.pgVal = null; + if (args) { + if (args.ptVal !== undefined && args.ptVal !== null) { + this.ptVal = new ttypes.Point(args.ptVal); + } + if (args.lsVal !== undefined && args.lsVal !== null) { + this.lsVal = new ttypes.LineString(args.lsVal); + } + if (args.pgVal !== undefined && args.pgVal !== null) { + this.pgVal = new ttypes.Polygon(args.pgVal); + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.STRUCT) { + this.ptVal = new ttypes.Point(); + this.ptVal.read(input); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.STRUCT) { + this.lsVal = new ttypes.LineString(); + this.lsVal.read(input); + } else { + input.skip(ftype); + } + break; + case 3: + if (ftype == Thrift.Type.STRUCT) { + this.pgVal = new ttypes.Polygon(); + this.pgVal.read(input); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('Geography'); + if (this.ptVal !== null && this.ptVal !== undefined) { + output.writeFieldBegin('ptVal', Thrift.Type.STRUCT, 1); + this.ptVal.write(output); + output.writeFieldEnd(); + } + if (this.lsVal !== null && this.lsVal !== undefined) { + output.writeFieldBegin('lsVal', Thrift.Type.STRUCT, 2); + this.lsVal.write(output); + output.writeFieldEnd(); + } + if (this.pgVal !== null && this.pgVal !== undefined) { + output.writeFieldBegin('pgVal', Thrift.Type.STRUCT, 3); + this.pgVal.write(output); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const Tag = module.exports.Tag = class { + constructor(args) { + this.name = null; + this.props = null; + if (args) { + if (args.name !== undefined && args.name !== null) { + this.name = args.name; + } + if (args.props !== undefined && args.props !== null) { + this.props = Thrift.copyMap(args.props, [ttypes.Value]); + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.STRING) { + this.name = input.readString(); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.MAP) { + this.props = {}; + const _rtmp348 = input.readMapBegin(); + const _size47 = _rtmp348.size || 0; + for (let _i49 = 0; _i49 < _size47; ++_i49) { + let key50 = null; + let val51 = null; + key50 = input.readString(); + val51 = new ttypes.Value(); + val51.read(input); + this.props[key50] = val51; + } + input.readMapEnd(); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('Tag'); + if (this.name !== null && this.name !== undefined) { + output.writeFieldBegin('name', Thrift.Type.STRING, 1); + output.writeString(this.name); + output.writeFieldEnd(); + } + if (this.props !== null && this.props !== undefined) { + output.writeFieldBegin('props', Thrift.Type.MAP, 2); + output.writeMapBegin(Thrift.Type.STRING, Thrift.Type.STRUCT, Thrift.objectLength(this.props)); + for (let kiter52 in this.props) { + if (this.props.hasOwnProperty(kiter52)) { + let viter53 = this.props[kiter52]; + output.writeString(kiter52); + viter53.write(output); + } + } + output.writeMapEnd(); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const Vertex = module.exports.Vertex = class { + constructor(args) { + this.vid = null; + this.tags = null; + if (args) { + if (args.vid !== undefined && args.vid !== null) { + this.vid = new ttypes.Value(args.vid); + } + if (args.tags !== undefined && args.tags !== null) { + this.tags = Thrift.copyList(args.tags, [ttypes.Tag]); + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.STRUCT) { + this.vid = new ttypes.Value(); + this.vid.read(input); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.LIST) { + this.tags = []; + const _rtmp355 = input.readListBegin(); + const _size54 = _rtmp355.size || 0; + for (let _i56 = 0; _i56 < _size54; ++_i56) { + let elem57 = null; + elem57 = new ttypes.Tag(); + elem57.read(input); + this.tags.push(elem57); + } + input.readListEnd(); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('Vertex'); + if (this.vid !== null && this.vid !== undefined) { + output.writeFieldBegin('vid', Thrift.Type.STRUCT, 1); + this.vid.write(output); + output.writeFieldEnd(); + } + if (this.tags !== null && this.tags !== undefined) { + output.writeFieldBegin('tags', Thrift.Type.LIST, 2); + output.writeListBegin(Thrift.Type.STRUCT, this.tags.length); + for (let iter58 in this.tags) { + if (this.tags.hasOwnProperty(iter58)) { + iter58 = this.tags[iter58]; + iter58.write(output); + } + } + output.writeListEnd(); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const Edge = module.exports.Edge = class { + constructor(args) { + this.src = null; + this.dst = null; + this.type = null; + this.name = null; + this.ranking = null; + this.props = null; + if (args) { + if (args.src !== undefined && args.src !== null) { + this.src = new ttypes.Value(args.src); + } + if (args.dst !== undefined && args.dst !== null) { + this.dst = new ttypes.Value(args.dst); + } + if (args.type !== undefined && args.type !== null) { + this.type = args.type; + } + if (args.name !== undefined && args.name !== null) { + this.name = args.name; + } + if (args.ranking !== undefined && args.ranking !== null) { + this.ranking = args.ranking; + } + if (args.props !== undefined && args.props !== null) { + this.props = Thrift.copyMap(args.props, [ttypes.Value]); + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.STRUCT) { + this.src = new ttypes.Value(); + this.src.read(input); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.STRUCT) { + this.dst = new ttypes.Value(); + this.dst.read(input); + } else { + input.skip(ftype); + } + break; + case 3: + if (ftype == Thrift.Type.I32) { + this.type = input.readI32(); + } else { + input.skip(ftype); + } + break; + case 4: + if (ftype == Thrift.Type.STRING) { + this.name = input.readString(); + } else { + input.skip(ftype); + } + break; + case 5: + if (ftype == Thrift.Type.I64) { + this.ranking = input.readI64(); + } else { + input.skip(ftype); + } + break; + case 6: + if (ftype == Thrift.Type.MAP) { + this.props = {}; + const _rtmp360 = input.readMapBegin(); + const _size59 = _rtmp360.size || 0; + for (let _i61 = 0; _i61 < _size59; ++_i61) { + let key62 = null; + let val63 = null; + key62 = input.readString(); + val63 = new ttypes.Value(); + val63.read(input); + this.props[key62] = val63; + } + input.readMapEnd(); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('Edge'); + if (this.src !== null && this.src !== undefined) { + output.writeFieldBegin('src', Thrift.Type.STRUCT, 1); + this.src.write(output); + output.writeFieldEnd(); + } + if (this.dst !== null && this.dst !== undefined) { + output.writeFieldBegin('dst', Thrift.Type.STRUCT, 2); + this.dst.write(output); + output.writeFieldEnd(); + } + if (this.type !== null && this.type !== undefined) { + output.writeFieldBegin('type', Thrift.Type.I32, 3); + output.writeI32(this.type); + output.writeFieldEnd(); + } + if (this.name !== null && this.name !== undefined) { + output.writeFieldBegin('name', Thrift.Type.STRING, 4); + output.writeString(this.name); + output.writeFieldEnd(); + } + if (this.ranking !== null && this.ranking !== undefined) { + output.writeFieldBegin('ranking', Thrift.Type.I64, 5); + output.writeI64(this.ranking); + output.writeFieldEnd(); + } + if (this.props !== null && this.props !== undefined) { + output.writeFieldBegin('props', Thrift.Type.MAP, 6); + output.writeMapBegin(Thrift.Type.STRING, Thrift.Type.STRUCT, Thrift.objectLength(this.props)); + for (let kiter64 in this.props) { + if (this.props.hasOwnProperty(kiter64)) { + let viter65 = this.props[kiter64]; + output.writeString(kiter64); + viter65.write(output); + } + } + output.writeMapEnd(); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const Step = module.exports.Step = class { + constructor(args) { + this.dst = null; + this.type = null; + this.name = null; + this.ranking = null; + this.props = null; + if (args) { + if (args.dst !== undefined && args.dst !== null) { + this.dst = new ttypes.Vertex(args.dst); + } + if (args.type !== undefined && args.type !== null) { + this.type = args.type; + } + if (args.name !== undefined && args.name !== null) { + this.name = args.name; + } + if (args.ranking !== undefined && args.ranking !== null) { + this.ranking = args.ranking; + } + if (args.props !== undefined && args.props !== null) { + this.props = Thrift.copyMap(args.props, [ttypes.Value]); + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.STRUCT) { + this.dst = new ttypes.Vertex(); + this.dst.read(input); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.I32) { + this.type = input.readI32(); + } else { + input.skip(ftype); + } + break; + case 3: + if (ftype == Thrift.Type.STRING) { + this.name = input.readString(); + } else { + input.skip(ftype); + } + break; + case 4: + if (ftype == Thrift.Type.I64) { + this.ranking = input.readI64(); + } else { + input.skip(ftype); + } + break; + case 5: + if (ftype == Thrift.Type.MAP) { + this.props = {}; + const _rtmp367 = input.readMapBegin(); + const _size66 = _rtmp367.size || 0; + for (let _i68 = 0; _i68 < _size66; ++_i68) { + let key69 = null; + let val70 = null; + key69 = input.readString(); + val70 = new ttypes.Value(); + val70.read(input); + this.props[key69] = val70; + } + input.readMapEnd(); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('Step'); + if (this.dst !== null && this.dst !== undefined) { + output.writeFieldBegin('dst', Thrift.Type.STRUCT, 1); + this.dst.write(output); + output.writeFieldEnd(); + } + if (this.type !== null && this.type !== undefined) { + output.writeFieldBegin('type', Thrift.Type.I32, 2); + output.writeI32(this.type); + output.writeFieldEnd(); + } + if (this.name !== null && this.name !== undefined) { + output.writeFieldBegin('name', Thrift.Type.STRING, 3); + output.writeString(this.name); + output.writeFieldEnd(); + } + if (this.ranking !== null && this.ranking !== undefined) { + output.writeFieldBegin('ranking', Thrift.Type.I64, 4); + output.writeI64(this.ranking); + output.writeFieldEnd(); + } + if (this.props !== null && this.props !== undefined) { + output.writeFieldBegin('props', Thrift.Type.MAP, 5); + output.writeMapBegin(Thrift.Type.STRING, Thrift.Type.STRUCT, Thrift.objectLength(this.props)); + for (let kiter71 in this.props) { + if (this.props.hasOwnProperty(kiter71)) { + let viter72 = this.props[kiter71]; + output.writeString(kiter71); + viter72.write(output); + } + } + output.writeMapEnd(); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const Path = module.exports.Path = class { + constructor(args) { + this.src = null; + this.steps = null; + if (args) { + if (args.src !== undefined && args.src !== null) { + this.src = new ttypes.Vertex(args.src); + } + if (args.steps !== undefined && args.steps !== null) { + this.steps = Thrift.copyList(args.steps, [ttypes.Step]); + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.STRUCT) { + this.src = new ttypes.Vertex(); + this.src.read(input); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.LIST) { + this.steps = []; + const _rtmp374 = input.readListBegin(); + const _size73 = _rtmp374.size || 0; + for (let _i75 = 0; _i75 < _size73; ++_i75) { + let elem76 = null; + elem76 = new ttypes.Step(); + elem76.read(input); + this.steps.push(elem76); + } + input.readListEnd(); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('Path'); + if (this.src !== null && this.src !== undefined) { + output.writeFieldBegin('src', Thrift.Type.STRUCT, 1); + this.src.write(output); + output.writeFieldEnd(); + } + if (this.steps !== null && this.steps !== undefined) { + output.writeFieldBegin('steps', Thrift.Type.LIST, 2); + output.writeListBegin(Thrift.Type.STRUCT, this.steps.length); + for (let iter77 in this.steps) { + if (this.steps.hasOwnProperty(iter77)) { + iter77 = this.steps[iter77]; + iter77.write(output); + } + } + output.writeListEnd(); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const HostAddr = module.exports.HostAddr = class { + constructor(args) { + this.host = null; + this.port = null; + if (args) { + if (args.host !== undefined && args.host !== null) { + this.host = args.host; + } + if (args.port !== undefined && args.port !== null) { + this.port = args.port; + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.STRING) { + this.host = input.readString(); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.I32) { + this.port = input.readI32(); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('HostAddr'); + if (this.host !== null && this.host !== undefined) { + output.writeFieldBegin('host', Thrift.Type.STRING, 1); + output.writeString(this.host); + output.writeFieldEnd(); + } + if (this.port !== null && this.port !== undefined) { + output.writeFieldBegin('port', Thrift.Type.I32, 2); + output.writeI32(this.port); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const KeyValue = module.exports.KeyValue = class { + constructor(args) { + this.key = null; + this.value = null; + if (args) { + if (args.key !== undefined && args.key !== null) { + this.key = args.key; + } + if (args.value !== undefined && args.value !== null) { + this.value = args.value; + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.STRING) { + this.key = input.readString(); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.STRING) { + this.value = input.readString(); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('KeyValue'); + if (this.key !== null && this.key !== undefined) { + output.writeFieldBegin('key', Thrift.Type.STRING, 1); + output.writeString(this.key); + output.writeFieldEnd(); + } + if (this.value !== null && this.value !== undefined) { + output.writeFieldBegin('value', Thrift.Type.STRING, 2); + output.writeString(this.value); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const Duration = module.exports.Duration = class { + constructor(args) { + this.seconds = null; + this.microseconds = null; + this.months = null; + if (args) { + if (args.seconds !== undefined && args.seconds !== null) { + this.seconds = args.seconds; + } + if (args.microseconds !== undefined && args.microseconds !== null) { + this.microseconds = args.microseconds; + } + if (args.months !== undefined && args.months !== null) { + this.months = args.months; + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.I64) { + this.seconds = input.readI64(); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.I32) { + this.microseconds = input.readI32(); + } else { + input.skip(ftype); + } + break; + case 3: + if (ftype == Thrift.Type.I32) { + this.months = input.readI32(); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('Duration'); + if (this.seconds !== null && this.seconds !== undefined) { + output.writeFieldBegin('seconds', Thrift.Type.I64, 1); + output.writeI64(this.seconds); + output.writeFieldEnd(); + } + if (this.microseconds !== null && this.microseconds !== undefined) { + output.writeFieldBegin('microseconds', Thrift.Type.I32, 2); + output.writeI32(this.microseconds); + output.writeFieldEnd(); + } + if (this.months !== null && this.months !== undefined) { + output.writeFieldBegin('months', Thrift.Type.I32, 3); + output.writeI32(this.months); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const LogInfo = module.exports.LogInfo = class { + constructor(args) { + this.log_id = null; + this.term_id = null; + if (args) { + if (args.log_id !== undefined && args.log_id !== null) { + this.log_id = args.log_id; + } + if (args.term_id !== undefined && args.term_id !== null) { + this.term_id = args.term_id; + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.I64) { + this.log_id = input.readI64(); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.I64) { + this.term_id = input.readI64(); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('LogInfo'); + if (this.log_id !== null && this.log_id !== undefined) { + output.writeFieldBegin('log_id', Thrift.Type.I64, 1); + output.writeI64(this.log_id); + output.writeFieldEnd(); + } + if (this.term_id !== null && this.term_id !== undefined) { + output.writeFieldBegin('term_id', Thrift.Type.I64, 2); + output.writeI64(this.term_id); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const DirInfo = module.exports.DirInfo = class { + constructor(args) { + this.root = null; + this.data = null; + if (args) { + if (args.root !== undefined && args.root !== null) { + this.root = args.root; + } + if (args.data !== undefined && args.data !== null) { + this.data = Thrift.copyList(args.data, [null]); + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.STRING) { + this.root = input.readString(); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.LIST) { + this.data = []; + const _rtmp379 = input.readListBegin(); + const _size78 = _rtmp379.size || 0; + for (let _i80 = 0; _i80 < _size78; ++_i80) { + let elem81 = null; + elem81 = input.readString(); + this.data.push(elem81); + } + input.readListEnd(); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('DirInfo'); + if (this.root !== null && this.root !== undefined) { + output.writeFieldBegin('root', Thrift.Type.STRING, 1); + output.writeString(this.root); + output.writeFieldEnd(); + } + if (this.data !== null && this.data !== undefined) { + output.writeFieldBegin('data', Thrift.Type.LIST, 2); + output.writeListBegin(Thrift.Type.STRING, this.data.length); + for (let iter82 in this.data) { + if (this.data.hasOwnProperty(iter82)) { + iter82 = this.data[iter82]; + output.writeString(iter82); + } + } + output.writeListEnd(); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const CheckpointInfo = module.exports.CheckpointInfo = class { + constructor(args) { + this.space_id = null; + this.parts = null; + this.path = null; + if (args) { + if (args.space_id !== undefined && args.space_id !== null) { + this.space_id = args.space_id; + } + if (args.parts !== undefined && args.parts !== null) { + this.parts = Thrift.copyMap(args.parts, [ttypes.LogInfo]); + } + if (args.path !== undefined && args.path !== null) { + this.path = args.path; + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.I32) { + this.space_id = input.readI32(); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.MAP) { + this.parts = {}; + const _rtmp384 = input.readMapBegin(); + const _size83 = _rtmp384.size || 0; + for (let _i85 = 0; _i85 < _size83; ++_i85) { + let key86 = null; + let val87 = null; + key86 = input.readI32(); + val87 = new ttypes.LogInfo(); + val87.read(input); + this.parts[key86] = val87; + } + input.readMapEnd(); + } else { + input.skip(ftype); + } + break; + case 3: + if (ftype == Thrift.Type.STRING) { + this.path = input.readString(); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('CheckpointInfo'); + if (this.space_id !== null && this.space_id !== undefined) { + output.writeFieldBegin('space_id', Thrift.Type.I32, 1); + output.writeI32(this.space_id); + output.writeFieldEnd(); + } + if (this.parts !== null && this.parts !== undefined) { + output.writeFieldBegin('parts', Thrift.Type.MAP, 2); + output.writeMapBegin(Thrift.Type.I32, Thrift.Type.STRUCT, Thrift.objectLength(this.parts)); + for (let kiter88 in this.parts) { + if (this.parts.hasOwnProperty(kiter88)) { + let viter89 = this.parts[kiter88]; + output.writeI32(kiter88); + viter89.write(output); + } + } + output.writeMapEnd(); + output.writeFieldEnd(); + } + if (this.path !== null && this.path !== undefined) { + output.writeFieldBegin('path', Thrift.Type.STRING, 3); + output.writeString(this.path); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const LogEntry = module.exports.LogEntry = class { + constructor(args) { + this.cluster = null; + this.log_str = null; + if (args) { + if (args.cluster !== undefined && args.cluster !== null) { + this.cluster = args.cluster; + } + if (args.log_str !== undefined && args.log_str !== null) { + this.log_str = args.log_str; + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.I64) { + this.cluster = input.readI64(); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.STRING) { + this.log_str = input.readString(); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('LogEntry'); + if (this.cluster !== null && this.cluster !== undefined) { + output.writeFieldBegin('cluster', Thrift.Type.I64, 1); + output.writeI64(this.cluster); + output.writeFieldEnd(); + } + if (this.log_str !== null && this.log_str !== undefined) { + output.writeFieldBegin('log_str', Thrift.Type.STRING, 2); + output.writeString(this.log_str); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +ttypes.version = '3.0.0'; diff --git a/src/nebula/services/graph_types.d.ts b/src/nebula/services/graph_types.d.ts new file mode 100644 index 0000000..0140482 --- /dev/null +++ b/src/nebula/services/graph_types.d.ts @@ -0,0 +1,91 @@ +// +// Autogenerated by Thrift Compiler (0.19.0) +// +// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING +// +import thrift = require('thrift'); +import Thrift = thrift.Thrift; +import Q = thrift.Q; +import Int64 = require('node-int64'); +import common_ttypes = require('./common_types'); + + + +declare class ProfilingStats { + public rows: Int64; + public exec_duration_in_us: Int64; + public total_duration_in_us: Int64; + public other_stats?: any; + + constructor(args?: { rows: Int64; exec_duration_in_us: Int64; total_duration_in_us: Int64; other_stats?: any; }); + } + +declare class PlanNodeBranchInfo { + public is_do_branch: boolean; + public condition_node_id: Int64; + + constructor(args?: { is_do_branch: boolean; condition_node_id: Int64; }); + } + +declare class Pair { + public key: Buffer; + public value: Buffer; + + constructor(args?: { key: Buffer; value: Buffer; }); + } + +declare class PlanNodeDescription { + public name: Buffer; + public id: Int64; + public output_var: Buffer; + public description?: Pair[]; + public profiles?: ProfilingStats[]; + public branch_info?: PlanNodeBranchInfo; + public dependencies?: Int64[]; + + constructor(args?: { name: Buffer; id: Int64; output_var: Buffer; description?: Pair[]; profiles?: ProfilingStats[]; branch_info?: PlanNodeBranchInfo; dependencies?: Int64[]; }); + } + +declare class PlanDescription { + public plan_node_descs: PlanNodeDescription[]; + public node_index_map: any; + public format: Buffer; + public optimize_time_in_us: number; + + constructor(args?: { plan_node_descs: PlanNodeDescription[]; node_index_map: any; format: Buffer; optimize_time_in_us: number; }); + } + +declare class ExecutionResponse { + public error_code: common_ttypes.ErrorCode; + public latency_in_us: Int64; + public data?: common_ttypes.DataSet; + public space_name?: string; + public error_msg?: string; + public plan_desc?: PlanDescription; + public comment?: string; + + constructor(args?: { error_code: common_ttypes.ErrorCode; latency_in_us: Int64; data?: common_ttypes.DataSet; space_name?: string; error_msg?: string; plan_desc?: PlanDescription; comment?: string; }); + } + +declare class AuthResponse { + public error_code: common_ttypes.ErrorCode; + public error_msg?: string; + public session_id?: Int64; + public time_zone_offset_seconds?: number; + public time_zone_name?: string; + + constructor(args?: { error_code: common_ttypes.ErrorCode; error_msg?: string; session_id?: Int64; time_zone_offset_seconds?: number; time_zone_name?: string; }); + } + +declare class VerifyClientVersionResp { + public error_code: common_ttypes.ErrorCode; + public error_msg?: string; + + constructor(args?: { error_code: common_ttypes.ErrorCode; error_msg?: string; }); + } + +declare class VerifyClientVersionReq { + public version?: string; + + constructor(args?: { version?: string; }); + } diff --git a/src/nebula/services/graph_types.js b/src/nebula/services/graph_types.js new file mode 100644 index 0000000..6ab180e --- /dev/null +++ b/src/nebula/services/graph_types.js @@ -0,0 +1,997 @@ +// +// Autogenerated by Thrift Compiler (0.19.0) +// +// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING +// +const thrift = require('thrift'); +const Thrift = thrift.Thrift; +const Int64 = require('node-int64'); + +const common_ttypes = require('./common_types'); + + +const ttypes = module.exports = {}; +const ProfilingStats = module.exports.ProfilingStats = class { + constructor(args) { + this.rows = null; + this.exec_duration_in_us = null; + this.total_duration_in_us = null; + this.other_stats = null; + if (args) { + if (args.rows !== undefined && args.rows !== null) { + this.rows = args.rows; + } else { + throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field rows is unset!'); + } + if (args.exec_duration_in_us !== undefined && args.exec_duration_in_us !== null) { + this.exec_duration_in_us = args.exec_duration_in_us; + } else { + throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field exec_duration_in_us is unset!'); + } + if (args.total_duration_in_us !== undefined && args.total_duration_in_us !== null) { + this.total_duration_in_us = args.total_duration_in_us; + } else { + throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field total_duration_in_us is unset!'); + } + if (args.other_stats !== undefined && args.other_stats !== null) { + this.other_stats = Thrift.copyMap(args.other_stats, [null]); + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.I64) { + this.rows = input.readI64(); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.I64) { + this.exec_duration_in_us = input.readI64(); + } else { + input.skip(ftype); + } + break; + case 3: + if (ftype == Thrift.Type.I64) { + this.total_duration_in_us = input.readI64(); + } else { + input.skip(ftype); + } + break; + case 4: + if (ftype == Thrift.Type.MAP) { + this.other_stats = {}; + const _rtmp31 = input.readMapBegin(); + const _size0 = _rtmp31.size || 0; + for (let _i2 = 0; _i2 < _size0; ++_i2) { + let key3 = null; + let val4 = null; + key3 = input.readBinary(); + val4 = input.readBinary(); + this.other_stats[key3] = val4; + } + input.readMapEnd(); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('ProfilingStats'); + if (this.rows !== null && this.rows !== undefined) { + output.writeFieldBegin('rows', Thrift.Type.I64, 1); + output.writeI64(this.rows); + output.writeFieldEnd(); + } + if (this.exec_duration_in_us !== null && this.exec_duration_in_us !== undefined) { + output.writeFieldBegin('exec_duration_in_us', Thrift.Type.I64, 2); + output.writeI64(this.exec_duration_in_us); + output.writeFieldEnd(); + } + if (this.total_duration_in_us !== null && this.total_duration_in_us !== undefined) { + output.writeFieldBegin('total_duration_in_us', Thrift.Type.I64, 3); + output.writeI64(this.total_duration_in_us); + output.writeFieldEnd(); + } + if (this.other_stats !== null && this.other_stats !== undefined) { + output.writeFieldBegin('other_stats', Thrift.Type.MAP, 4); + output.writeMapBegin(Thrift.Type.STRING, Thrift.Type.STRING, Thrift.objectLength(this.other_stats)); + for (let kiter5 in this.other_stats) { + if (this.other_stats.hasOwnProperty(kiter5)) { + let viter6 = this.other_stats[kiter5]; + output.writeBinary(kiter5); + output.writeBinary(viter6); + } + } + output.writeMapEnd(); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const PlanNodeBranchInfo = module.exports.PlanNodeBranchInfo = class { + constructor(args) { + this.is_do_branch = null; + this.condition_node_id = null; + if (args) { + if (args.is_do_branch !== undefined && args.is_do_branch !== null) { + this.is_do_branch = args.is_do_branch; + } else { + throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field is_do_branch is unset!'); + } + if (args.condition_node_id !== undefined && args.condition_node_id !== null) { + this.condition_node_id = args.condition_node_id; + } else { + throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field condition_node_id is unset!'); + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.BOOL) { + this.is_do_branch = input.readBool(); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.I64) { + this.condition_node_id = input.readI64(); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('PlanNodeBranchInfo'); + if (this.is_do_branch !== null && this.is_do_branch !== undefined) { + output.writeFieldBegin('is_do_branch', Thrift.Type.BOOL, 1); + output.writeBool(this.is_do_branch); + output.writeFieldEnd(); + } + if (this.condition_node_id !== null && this.condition_node_id !== undefined) { + output.writeFieldBegin('condition_node_id', Thrift.Type.I64, 2); + output.writeI64(this.condition_node_id); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const Pair = module.exports.Pair = class { + constructor(args) { + this.key = null; + this.value = null; + if (args) { + if (args.key !== undefined && args.key !== null) { + this.key = args.key; + } else { + throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field key is unset!'); + } + if (args.value !== undefined && args.value !== null) { + this.value = args.value; + } else { + throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field value is unset!'); + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.STRING) { + this.key = input.readBinary(); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.STRING) { + this.value = input.readBinary(); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('Pair'); + if (this.key !== null && this.key !== undefined) { + output.writeFieldBegin('key', Thrift.Type.STRING, 1); + output.writeBinary(this.key); + output.writeFieldEnd(); + } + if (this.value !== null && this.value !== undefined) { + output.writeFieldBegin('value', Thrift.Type.STRING, 2); + output.writeBinary(this.value); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const PlanNodeDescription = module.exports.PlanNodeDescription = class { + constructor(args) { + this.name = null; + this.id = null; + this.output_var = null; + this.description = null; + this.profiles = null; + this.branch_info = null; + this.dependencies = null; + if (args) { + if (args.name !== undefined && args.name !== null) { + this.name = args.name; + } else { + throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field name is unset!'); + } + if (args.id !== undefined && args.id !== null) { + this.id = args.id; + } else { + throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field id is unset!'); + } + if (args.output_var !== undefined && args.output_var !== null) { + this.output_var = args.output_var; + } else { + throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field output_var is unset!'); + } + if (args.description !== undefined && args.description !== null) { + this.description = Thrift.copyList(args.description, [ttypes.Pair]); + } + if (args.profiles !== undefined && args.profiles !== null) { + this.profiles = Thrift.copyList(args.profiles, [ttypes.ProfilingStats]); + } + if (args.branch_info !== undefined && args.branch_info !== null) { + this.branch_info = new ttypes.PlanNodeBranchInfo(args.branch_info); + } + if (args.dependencies !== undefined && args.dependencies !== null) { + this.dependencies = Thrift.copyList(args.dependencies, [null]); + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.STRING) { + this.name = input.readBinary(); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.I64) { + this.id = input.readI64(); + } else { + input.skip(ftype); + } + break; + case 3: + if (ftype == Thrift.Type.STRING) { + this.output_var = input.readBinary(); + } else { + input.skip(ftype); + } + break; + case 4: + if (ftype == Thrift.Type.LIST) { + this.description = []; + const _rtmp38 = input.readListBegin(); + const _size7 = _rtmp38.size || 0; + for (let _i9 = 0; _i9 < _size7; ++_i9) { + let elem10 = null; + elem10 = new ttypes.Pair(); + elem10.read(input); + this.description.push(elem10); + } + input.readListEnd(); + } else { + input.skip(ftype); + } + break; + case 5: + if (ftype == Thrift.Type.LIST) { + this.profiles = []; + const _rtmp312 = input.readListBegin(); + const _size11 = _rtmp312.size || 0; + for (let _i13 = 0; _i13 < _size11; ++_i13) { + let elem14 = null; + elem14 = new ttypes.ProfilingStats(); + elem14.read(input); + this.profiles.push(elem14); + } + input.readListEnd(); + } else { + input.skip(ftype); + } + break; + case 6: + if (ftype == Thrift.Type.STRUCT) { + this.branch_info = new ttypes.PlanNodeBranchInfo(); + this.branch_info.read(input); + } else { + input.skip(ftype); + } + break; + case 7: + if (ftype == Thrift.Type.LIST) { + this.dependencies = []; + const _rtmp316 = input.readListBegin(); + const _size15 = _rtmp316.size || 0; + for (let _i17 = 0; _i17 < _size15; ++_i17) { + let elem18 = null; + elem18 = input.readI64(); + this.dependencies.push(elem18); + } + input.readListEnd(); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('PlanNodeDescription'); + if (this.name !== null && this.name !== undefined) { + output.writeFieldBegin('name', Thrift.Type.STRING, 1); + output.writeBinary(this.name); + output.writeFieldEnd(); + } + if (this.id !== null && this.id !== undefined) { + output.writeFieldBegin('id', Thrift.Type.I64, 2); + output.writeI64(this.id); + output.writeFieldEnd(); + } + if (this.output_var !== null && this.output_var !== undefined) { + output.writeFieldBegin('output_var', Thrift.Type.STRING, 3); + output.writeBinary(this.output_var); + output.writeFieldEnd(); + } + if (this.description !== null && this.description !== undefined) { + output.writeFieldBegin('description', Thrift.Type.LIST, 4); + output.writeListBegin(Thrift.Type.STRUCT, this.description.length); + for (let iter19 in this.description) { + if (this.description.hasOwnProperty(iter19)) { + iter19 = this.description[iter19]; + iter19.write(output); + } + } + output.writeListEnd(); + output.writeFieldEnd(); + } + if (this.profiles !== null && this.profiles !== undefined) { + output.writeFieldBegin('profiles', Thrift.Type.LIST, 5); + output.writeListBegin(Thrift.Type.STRUCT, this.profiles.length); + for (let iter20 in this.profiles) { + if (this.profiles.hasOwnProperty(iter20)) { + iter20 = this.profiles[iter20]; + iter20.write(output); + } + } + output.writeListEnd(); + output.writeFieldEnd(); + } + if (this.branch_info !== null && this.branch_info !== undefined) { + output.writeFieldBegin('branch_info', Thrift.Type.STRUCT, 6); + this.branch_info.write(output); + output.writeFieldEnd(); + } + if (this.dependencies !== null && this.dependencies !== undefined) { + output.writeFieldBegin('dependencies', Thrift.Type.LIST, 7); + output.writeListBegin(Thrift.Type.I64, this.dependencies.length); + for (let iter21 in this.dependencies) { + if (this.dependencies.hasOwnProperty(iter21)) { + iter21 = this.dependencies[iter21]; + output.writeI64(iter21); + } + } + output.writeListEnd(); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const PlanDescription = module.exports.PlanDescription = class { + constructor(args) { + this.plan_node_descs = null; + this.node_index_map = null; + this.format = null; + this.optimize_time_in_us = null; + if (args) { + if (args.plan_node_descs !== undefined && args.plan_node_descs !== null) { + this.plan_node_descs = Thrift.copyList(args.plan_node_descs, [ttypes.PlanNodeDescription]); + } else { + throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field plan_node_descs is unset!'); + } + if (args.node_index_map !== undefined && args.node_index_map !== null) { + this.node_index_map = Thrift.copyMap(args.node_index_map, [null]); + } else { + throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field node_index_map is unset!'); + } + if (args.format !== undefined && args.format !== null) { + this.format = args.format; + } else { + throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field format is unset!'); + } + if (args.optimize_time_in_us !== undefined && args.optimize_time_in_us !== null) { + this.optimize_time_in_us = args.optimize_time_in_us; + } else { + throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field optimize_time_in_us is unset!'); + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.LIST) { + this.plan_node_descs = []; + const _rtmp323 = input.readListBegin(); + const _size22 = _rtmp323.size || 0; + for (let _i24 = 0; _i24 < _size22; ++_i24) { + let elem25 = null; + elem25 = new ttypes.PlanNodeDescription(); + elem25.read(input); + this.plan_node_descs.push(elem25); + } + input.readListEnd(); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.MAP) { + this.node_index_map = {}; + const _rtmp327 = input.readMapBegin(); + const _size26 = _rtmp327.size || 0; + for (let _i28 = 0; _i28 < _size26; ++_i28) { + let key29 = null; + let val30 = null; + key29 = input.readI64(); + val30 = input.readI64(); + this.node_index_map[key29] = val30; + } + input.readMapEnd(); + } else { + input.skip(ftype); + } + break; + case 3: + if (ftype == Thrift.Type.STRING) { + this.format = input.readBinary(); + } else { + input.skip(ftype); + } + break; + case 4: + if (ftype == Thrift.Type.I32) { + this.optimize_time_in_us = input.readI32(); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('PlanDescription'); + if (this.plan_node_descs !== null && this.plan_node_descs !== undefined) { + output.writeFieldBegin('plan_node_descs', Thrift.Type.LIST, 1); + output.writeListBegin(Thrift.Type.STRUCT, this.plan_node_descs.length); + for (let iter31 in this.plan_node_descs) { + if (this.plan_node_descs.hasOwnProperty(iter31)) { + iter31 = this.plan_node_descs[iter31]; + iter31.write(output); + } + } + output.writeListEnd(); + output.writeFieldEnd(); + } + if (this.node_index_map !== null && this.node_index_map !== undefined) { + output.writeFieldBegin('node_index_map', Thrift.Type.MAP, 2); + output.writeMapBegin(Thrift.Type.I64, Thrift.Type.I64, Thrift.objectLength(this.node_index_map)); + for (let kiter32 in this.node_index_map) { + if (this.node_index_map.hasOwnProperty(kiter32)) { + let viter33 = this.node_index_map[kiter32]; + output.writeI64(kiter32); + output.writeI64(viter33); + } + } + output.writeMapEnd(); + output.writeFieldEnd(); + } + if (this.format !== null && this.format !== undefined) { + output.writeFieldBegin('format', Thrift.Type.STRING, 3); + output.writeBinary(this.format); + output.writeFieldEnd(); + } + if (this.optimize_time_in_us !== null && this.optimize_time_in_us !== undefined) { + output.writeFieldBegin('optimize_time_in_us', Thrift.Type.I32, 4); + output.writeI32(this.optimize_time_in_us); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const ExecutionResponse = module.exports.ExecutionResponse = class { + constructor(args) { + this.error_code = null; + this.latency_in_us = null; + this.data = null; + this.space_name = null; + this.error_msg = null; + this.plan_desc = null; + this.comment = null; + if (args) { + if (args.error_code !== undefined && args.error_code !== null) { + this.error_code = args.error_code; + } else { + throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field error_code is unset!'); + } + if (args.latency_in_us !== undefined && args.latency_in_us !== null) { + this.latency_in_us = args.latency_in_us; + } else { + throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field latency_in_us is unset!'); + } + if (args.data !== undefined && args.data !== null) { + this.data = new common_ttypes.DataSet(args.data); + } + if (args.space_name !== undefined && args.space_name !== null) { + this.space_name = args.space_name; + } + if (args.error_msg !== undefined && args.error_msg !== null) { + this.error_msg = args.error_msg; + } + if (args.plan_desc !== undefined && args.plan_desc !== null) { + this.plan_desc = new ttypes.PlanDescription(args.plan_desc); + } + if (args.comment !== undefined && args.comment !== null) { + this.comment = args.comment; + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.I32) { + this.error_code = input.readI32(); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.I64) { + this.latency_in_us = input.readI64(); + } else { + input.skip(ftype); + } + break; + case 3: + if (ftype == Thrift.Type.STRUCT) { + this.data = new common_ttypes.DataSet(); + this.data.read(input); + } else { + input.skip(ftype); + } + break; + case 4: + if (ftype == Thrift.Type.STRING) { + this.space_name = input.readString(); + } else { + input.skip(ftype); + } + break; + case 5: + if (ftype == Thrift.Type.STRING) { + this.error_msg = input.readString(); + } else { + input.skip(ftype); + } + break; + case 6: + if (ftype == Thrift.Type.STRUCT) { + this.plan_desc = new ttypes.PlanDescription(); + this.plan_desc.read(input); + } else { + input.skip(ftype); + } + break; + case 7: + if (ftype == Thrift.Type.STRING) { + this.comment = input.readString(); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('ExecutionResponse'); + if (this.error_code !== null && this.error_code !== undefined) { + output.writeFieldBegin('error_code', Thrift.Type.I32, 1); + output.writeI32(this.error_code); + output.writeFieldEnd(); + } + if (this.latency_in_us !== null && this.latency_in_us !== undefined) { + output.writeFieldBegin('latency_in_us', Thrift.Type.I64, 2); + output.writeI64(this.latency_in_us); + output.writeFieldEnd(); + } + if (this.data !== null && this.data !== undefined) { + output.writeFieldBegin('data', Thrift.Type.STRUCT, 3); + this.data.write(output); + output.writeFieldEnd(); + } + if (this.space_name !== null && this.space_name !== undefined) { + output.writeFieldBegin('space_name', Thrift.Type.STRING, 4); + output.writeString(this.space_name); + output.writeFieldEnd(); + } + if (this.error_msg !== null && this.error_msg !== undefined) { + output.writeFieldBegin('error_msg', Thrift.Type.STRING, 5); + output.writeString(this.error_msg); + output.writeFieldEnd(); + } + if (this.plan_desc !== null && this.plan_desc !== undefined) { + output.writeFieldBegin('plan_desc', Thrift.Type.STRUCT, 6); + this.plan_desc.write(output); + output.writeFieldEnd(); + } + if (this.comment !== null && this.comment !== undefined) { + output.writeFieldBegin('comment', Thrift.Type.STRING, 7); + output.writeString(this.comment); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const AuthResponse = module.exports.AuthResponse = class { + constructor(args) { + this.error_code = null; + this.error_msg = null; + this.session_id = null; + this.time_zone_offset_seconds = null; + this.time_zone_name = null; + if (args) { + if (args.error_code !== undefined && args.error_code !== null) { + this.error_code = args.error_code; + } else { + throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field error_code is unset!'); + } + if (args.error_msg !== undefined && args.error_msg !== null) { + this.error_msg = args.error_msg; + } + if (args.session_id !== undefined && args.session_id !== null) { + this.session_id = args.session_id; + } + if (args.time_zone_offset_seconds !== undefined && args.time_zone_offset_seconds !== null) { + this.time_zone_offset_seconds = args.time_zone_offset_seconds; + } + if (args.time_zone_name !== undefined && args.time_zone_name !== null) { + this.time_zone_name = args.time_zone_name; + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.I32) { + this.error_code = input.readI32(); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.STRING) { + this.error_msg = input.readString(); + } else { + input.skip(ftype); + } + break; + case 3: + if (ftype == Thrift.Type.I64) { + this.session_id = input.readI64(); + } else { + input.skip(ftype); + } + break; + case 4: + if (ftype == Thrift.Type.I32) { + this.time_zone_offset_seconds = input.readI32(); + } else { + input.skip(ftype); + } + break; + case 5: + if (ftype == Thrift.Type.STRING) { + this.time_zone_name = input.readString(); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('AuthResponse'); + if (this.error_code !== null && this.error_code !== undefined) { + output.writeFieldBegin('error_code', Thrift.Type.I32, 1); + output.writeI32(this.error_code); + output.writeFieldEnd(); + } + if (this.error_msg !== null && this.error_msg !== undefined) { + output.writeFieldBegin('error_msg', Thrift.Type.STRING, 2); + output.writeString(this.error_msg); + output.writeFieldEnd(); + } + if (this.session_id !== null && this.session_id !== undefined) { + output.writeFieldBegin('session_id', Thrift.Type.I64, 3); + output.writeI64(this.session_id); + output.writeFieldEnd(); + } + if (this.time_zone_offset_seconds !== null && this.time_zone_offset_seconds !== undefined) { + output.writeFieldBegin('time_zone_offset_seconds', Thrift.Type.I32, 4); + output.writeI32(this.time_zone_offset_seconds); + output.writeFieldEnd(); + } + if (this.time_zone_name !== null && this.time_zone_name !== undefined) { + output.writeFieldBegin('time_zone_name', Thrift.Type.STRING, 5); + output.writeString(this.time_zone_name); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const VerifyClientVersionResp = module.exports.VerifyClientVersionResp = class { + constructor(args) { + this.error_code = null; + this.error_msg = null; + if (args) { + if (args.error_code !== undefined && args.error_code !== null) { + this.error_code = args.error_code; + } else { + throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field error_code is unset!'); + } + if (args.error_msg !== undefined && args.error_msg !== null) { + this.error_msg = args.error_msg; + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.I32) { + this.error_code = input.readI32(); + } else { + input.skip(ftype); + } + break; + case 2: + if (ftype == Thrift.Type.STRING) { + this.error_msg = input.readString(); + } else { + input.skip(ftype); + } + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('VerifyClientVersionResp'); + if (this.error_code !== null && this.error_code !== undefined) { + output.writeFieldBegin('error_code', Thrift.Type.I32, 1); + output.writeI32(this.error_code); + output.writeFieldEnd(); + } + if (this.error_msg !== null && this.error_msg !== undefined) { + output.writeFieldBegin('error_msg', Thrift.Type.STRING, 2); + output.writeString(this.error_msg); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; +const VerifyClientVersionReq = module.exports.VerifyClientVersionReq = class { + constructor(args) { + this.version = '3.0.0'; + if (args) { + if (args.version !== undefined && args.version !== null) { + this.version = args.version; + } else { + throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.UNKNOWN, 'Required field version is unset!'); + } + } + } + + read (input) { + input.readStructBegin(); + while (true) { + const ret = input.readFieldBegin(); + const ftype = ret.ftype; + const fid = ret.fid; + if (ftype == Thrift.Type.STOP) { + break; + } + switch (fid) { + case 1: + if (ftype == Thrift.Type.STRING) { + this.version = input.readString(); + } else { + input.skip(ftype); + } + break; + case 0: + input.skip(ftype); + break; + default: + input.skip(ftype); + } + input.readFieldEnd(); + } + input.readStructEnd(); + return; + } + + write (output) { + output.writeStructBegin('VerifyClientVersionReq'); + if (this.version !== null && this.version !== undefined) { + output.writeFieldBegin('version', Thrift.Type.STRING, 1); + output.writeString(this.version); + output.writeFieldEnd(); + } + output.writeFieldStop(); + output.writeStructEnd(); + return; + } + +}; diff --git a/src/nebula/types.ts b/src/nebula/types.ts index 5b80574..dd81576 100644 --- a/src/nebula/types.ts +++ b/src/nebula/types.ts @@ -4,7 +4,7 @@ import { AsyncResource } from 'async_hooks' -interface ConnectionOption { +export interface ConnectionOption { host: string; port: number; userName: string; @@ -12,12 +12,12 @@ interface ConnectionOption { space: string; } -interface Endpoint { +export interface Endpoint { host: string; port: number } -interface ClientOption { +export interface ClientOption { // nebula服务器列表 servers: string[] | Endpoint[]; // 用户名 @@ -36,7 +36,7 @@ interface ClientOption { pingInterval?: number; } -interface ConnectionInfo { +export interface ConnectionInfo { connectionId: string; host: string; port: number; @@ -44,7 +44,27 @@ interface ConnectionInfo { isReady: boolean; } -interface NebulaValue { + +/** + * - nVal: NullType + * - bVal: bool + * - iVal: i64 + * - fVal: double + * - sVal: string + * - dVal: Date + * - tVal: Time + * - dtVal: DateTime + * - vVal: Vertex + * - eVal: Edge + * - pVal: Path + * - lVal: NList + * - mVal: NMap + * - uVal: NSet + * - gVal: DataSet + * - ggVal: Geography + * - duVal: Duration + */ +export interface NebulaValue { nVal: any; bVal: any; iVal: any; @@ -63,12 +83,12 @@ interface NebulaValue { uVal: any; gVal: any; } -interface Metrics { +export interface Metrics { execute: number; traverse: number; } -interface Task { +export interface Task { command: string; returnOriginalData: boolean; resolve: (value: any) => void; @@ -76,13 +96,3 @@ interface Task { asyncResource?: AsyncResource; executingTimer?: NodeJS.Timeout; } - -export { - Endpoint, - ClientOption, - ConnectionOption, - NebulaValue, - Metrics, - Task, - ConnectionInfo -} diff --git a/src/thrift/binary.js b/src/thrift/binary.js deleted file mode 100644 index 9813ffd..0000000 --- a/src/thrift/binary.js +++ /dev/null @@ -1,168 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -var POW_8 = Math.pow(2, 8); -var POW_16 = Math.pow(2, 16); -var POW_24 = Math.pow(2, 24); -var POW_32 = Math.pow(2, 32); -var POW_40 = Math.pow(2, 40); -var POW_48 = Math.pow(2, 48); -var POW_52 = Math.pow(2, 52); -var POW_1022 = Math.pow(2, 1022); - -exports.readByte = function(b){ - return b > 127 ? b-256 : b; -}; - -exports.readI16 = function(buff, off) { - off = off || 0; - var v = buff[off + 1]; - v += buff[off] << 8; - if (buff[off] & 128) { - v -= POW_16; - } - return v; -}; - -exports.readI32 = function(buff, off) { - off = off || 0; - var v = buff[off + 3]; - v += buff[off + 2] << 8; - v += buff[off + 1] << 16; - v += buff[off] * POW_24; - if (buff[off] & 0x80) { - v -= POW_32; - } - return v; -}; - -exports.writeI16 = function(buff, v) { - buff[1] = v & 0xff; - v >>= 8; - buff[0] = v & 0xff; - return buff; -}; - -exports.writeI32 = function(buff, v) { - buff[3] = v & 0xff; - v >>= 8; - buff[2] = v & 0xff; - v >>= 8; - buff[1] = v & 0xff; - v >>= 8; - buff[0] = v & 0xff; - return buff; -}; - -exports.readDouble = function(buff, off) { - off = off || 0; - var signed = buff[off] & 0x80; - var e = (buff[off+1] & 0xF0) >> 4; - e += (buff[off] & 0x7F) << 4; - - var m = buff[off+7]; - m += buff[off+6] << 8; - m += buff[off+5] << 16; - m += buff[off+4] * POW_24; - m += buff[off+3] * POW_32; - m += buff[off+2] * POW_40; - m += (buff[off+1] & 0x0F) * POW_48; - - switch (e) { - case 0: - e = -1022; - break; - case 2047: - return m ? NaN : (signed ? -Infinity : Infinity); - default: - m += POW_52; - e -= 1023; - } - - if (signed) { - m *= -1; - } - - return m * Math.pow(2, e - 52); -}; - -/* - * Based on code from the jspack module: - * http://code.google.com/p/jspack/ - */ -exports.writeDouble = function(buff, v) { - var m, e, c; - - buff[0] = (v < 0 ? 0x80 : 0x00); - - v = Math.abs(v); - if (v !== v) { - // NaN, use QNaN IEEE format - m = 2251799813685248; - e = 2047; - } else if (v === Infinity) { - m = 0; - e = 2047; - } else { - e = Math.floor(Math.log(v) / Math.LN2); - c = Math.pow(2, -e); - if (v * c < 1) { - e--; - c *= 2; - } - - if (e + 1023 >= 2047) - { - // Overflow - m = 0; - e = 2047; - } - else if (e + 1023 >= 1) - { - // Normalized - term order matters, as Math.pow(2, 52-e) and v*Math.pow(2, 52) can overflow - m = (v*c-1) * POW_52; - e += 1023; - } - else - { - // Denormalized - also catches the '0' case, somewhat by chance - m = (v * POW_1022) * POW_52; - e = 0; - } - } - - buff[1] = (e << 4) & 0xf0; - buff[0] |= (e >> 4) & 0x7f; - - buff[7] = m & 0xff; - m = Math.floor(m / POW_8); - buff[6] = m & 0xff; - m = Math.floor(m / POW_8); - buff[5] = m & 0xff; - m = Math.floor(m / POW_8); - buff[4] = m & 0xff; - m >>= 8; - buff[3] = m & 0xff; - m >>= 8; - buff[2] = m & 0xff; - m >>= 8; - buff[1] |= m & 0x0f; - - return buff; -}; diff --git a/src/thrift/binary_protocol.js b/src/thrift/binary_protocol.js deleted file mode 100644 index af8836c..0000000 --- a/src/thrift/binary_protocol.js +++ /dev/null @@ -1,367 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -var log = require('./log'); -var binary = require('./binary'); -var Int64 = require('node-int64'); -var Thrift = require('./thrift'); -var Type = Thrift.Type; - -module.exports = TBinaryProtocol; - -// JavaScript supports only numeric doubles, therefore even hex values are always signed. -// The largest integer value which can be represented in JavaScript is +/-2^53. -// Bitwise operations convert numbers to 32 bit integers but perform sign extension -// upon assigning values back to variables. -var VERSION_MASK = -65536, // 0xffff0000 - VERSION_1 = -2147418112, // 0x80010000 - TYPE_MASK = 0x000000ff; - -TBinaryProtocol.VERSION_MASK = VERSION_MASK; -TBinaryProtocol.VERSION_1 = VERSION_1; -TBinaryProtocol.TYPE_MASK = TYPE_MASK - -function TBinaryProtocol(trans, strictRead, strictWrite) { - this.trans = trans; - this.strictRead = (strictRead !== undefined ? strictRead : false); - this.strictWrite = (strictWrite !== undefined ? strictWrite : true); - this._seqid = null; -}; - -TBinaryProtocol.prototype.flush = function() { - return this.trans.flush(); -}; - -TBinaryProtocol.prototype.writeMessageBegin = function(name, type, seqid) { - if (this.strictWrite) { - this.writeI32(VERSION_1 | type); - this.writeString(name); - this.writeI32(seqid); - } else { - this.writeString(name); - this.writeByte(type); - this.writeI32(seqid); - } - // Record client seqid to find callback again - if (this._seqid !== null) { - log.warning('SeqId already set', { 'name': name }); - } else { - this._seqid = seqid; - this.trans.setCurrSeqId(seqid); - } -}; - -TBinaryProtocol.prototype.writeMessageEnd = function() { - if (this._seqid !== null) { - this._seqid = null; - } else { - log.warning('No seqid to unset'); - } -}; - -TBinaryProtocol.prototype.writeStructBegin = function(name) { -}; - -TBinaryProtocol.prototype.writeStructEnd = function() { -}; - -TBinaryProtocol.prototype.writeFieldBegin = function(name, type, id) { - this.writeByte(type); - this.writeI16(id); -}; - -TBinaryProtocol.prototype.writeFieldEnd = function() { -}; - -TBinaryProtocol.prototype.writeFieldStop = function() { - this.writeByte(Type.STOP); -}; - -TBinaryProtocol.prototype.writeMapBegin = function(ktype, vtype, size) { - this.writeByte(ktype); - this.writeByte(vtype); - this.writeI32(size); -}; - -TBinaryProtocol.prototype.writeMapEnd = function() { -}; - -TBinaryProtocol.prototype.writeListBegin = function(etype, size) { - this.writeByte(etype); - this.writeI32(size); -}; - -TBinaryProtocol.prototype.writeListEnd = function() { -}; - -TBinaryProtocol.prototype.writeSetBegin = function(etype, size) { - this.writeByte(etype); - this.writeI32(size); -}; - -TBinaryProtocol.prototype.writeSetEnd = function() { -}; - -TBinaryProtocol.prototype.writeBool = function(bool) { - if (bool) { - this.writeByte(1); - } else { - this.writeByte(0); - } -}; - -TBinaryProtocol.prototype.writeByte = function(b) { - this.trans.write(new Buffer([b])); -}; - -TBinaryProtocol.prototype.writeI16 = function(i16) { - this.trans.write(binary.writeI16(new Buffer(2), i16)); -}; - -TBinaryProtocol.prototype.writeI32 = function(i32) { - this.trans.write(binary.writeI32(new Buffer(4), i32)); -}; - -TBinaryProtocol.prototype.writeI64 = function(i64) { - if (i64.buffer) { - this.trans.write(i64.buffer); - } else { - this.trans.write(new Int64(i64).buffer); - } -}; - -TBinaryProtocol.prototype.writeDouble = function(dub) { - this.trans.write(binary.writeDouble(new Buffer(8), dub)); -}; - -TBinaryProtocol.prototype.writeStringOrBinary = function(name, encoding, arg) { - if (typeof(arg) === 'string') { - this.writeI32(Buffer.byteLength(arg, encoding)); - this.trans.write(new Buffer(arg, encoding)); - } else if ((arg instanceof Buffer) || - (Object.prototype.toString.call(arg) == '[object Uint8Array]')) { - // Buffers in Node.js under Browserify may extend UInt8Array instead of - // defining a new object. We detect them here so we can write them - // correctly - this.writeI32(arg.length); - this.trans.write(arg); - } else { - throw new Error(name + ' called without a string/Buffer argument: ' + arg); - } -}; - -TBinaryProtocol.prototype.writeString = function(arg) { - this.writeStringOrBinary('writeString', 'utf8', arg); -}; - -TBinaryProtocol.prototype.writeBinary = function(arg) { - this.writeStringOrBinary('writeBinary', 'binary', arg); -}; - -TBinaryProtocol.prototype.readMessageBegin = function() { - var sz = this.readI32(); - var type, name, seqid; - - if (sz < 0) { - var version = sz & VERSION_MASK; - if (version != VERSION_1) { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.BAD_VERSION, "Bad version in readMessageBegin: " + sz); - } - type = sz & TYPE_MASK; - name = this.readString(); - seqid = this.readI32(); - } else { - if (this.strictRead) { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.BAD_VERSION, "No protocol version header"); - } - name = this.trans.read(sz); - type = this.readByte(); - seqid = this.readI32(); - } - return {fname: name, mtype: type, rseqid: seqid}; -}; - -TBinaryProtocol.prototype.readMessageEnd = function() { -}; - -TBinaryProtocol.prototype.readStructBegin = function() { - return {fname: ''}; -}; - -TBinaryProtocol.prototype.readStructEnd = function() { -}; - -TBinaryProtocol.prototype.readFieldBegin = function() { - var type = this.readByte(); - if (type == Type.STOP) { - return {fname: null, ftype: type, fid: 0}; - } - var id = this.readI16(); - return {fname: null, ftype: type, fid: id}; -}; - -TBinaryProtocol.prototype.readFieldEnd = function() { -}; - -TBinaryProtocol.prototype.readMapBegin = function() { - var ktype = this.readByte(); - var vtype = this.readByte(); - var size = this.readI32(); - return {ktype: ktype, vtype: vtype, size: size}; -}; - -TBinaryProtocol.prototype.readMapEnd = function() { -}; - -TBinaryProtocol.prototype.readListBegin = function() { - var etype = this.readByte(); - var size = this.readI32(); - return {etype: etype, size: size}; -}; - -TBinaryProtocol.prototype.readListEnd = function() { -}; - -TBinaryProtocol.prototype.readSetBegin = function() { - var etype = this.readByte(); - var size = this.readI32(); - return {etype: etype, size: size}; -}; - -TBinaryProtocol.prototype.readSetEnd = function() { -}; - -TBinaryProtocol.prototype.readBool = function() { - var b = this.readByte(); - if (b === 0) { - return false; - } - return true; -}; - -TBinaryProtocol.prototype.readByte = function() { - return this.trans.readByte(); -}; - -TBinaryProtocol.prototype.readI16 = function() { - return this.trans.readI16(); -}; - -TBinaryProtocol.prototype.readI32 = function() { - return this.trans.readI32(); -}; - -TBinaryProtocol.prototype.readI64 = function() { - var buff = this.trans.read(8); - return new Int64(buff); -}; - -TBinaryProtocol.prototype.readDouble = function() { - return this.trans.readDouble(); -}; - -TBinaryProtocol.prototype.readBinary = function() { - var len = this.readI32(); - if (len === 0) { - return new Buffer(0); - } - - if (len < 0) { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.NEGATIVE_SIZE, "Negative binary size"); - } - return this.trans.read(len); -}; - -TBinaryProtocol.prototype.readString = function() { - var len = this.readI32(); - if (len === 0) { - return ""; - } - - if (len < 0) { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.NEGATIVE_SIZE, "Negative string size"); - } - return this.trans.readString(len); -}; - -TBinaryProtocol.prototype.getTransport = function() { - return this.trans; -}; - -TBinaryProtocol.prototype.skip = function(type) { - switch (type) { - case Type.BOOL: - this.readBool(); - break; - case Type.BYTE: - this.readByte(); - break; - case Type.I16: - this.readI16(); - break; - case Type.I32: - this.readI32(); - break; - case Type.I64: - this.readI64(); - break; - case Type.DOUBLE: - this.readDouble(); - break; - case Type.STRING: - this.readString(); - break; - case Type.STRUCT: - this.readStructBegin(); - while (true) { - var r = this.readFieldBegin(); - if (r.ftype === Type.STOP) { - break; - } - this.skip(r.ftype); - this.readFieldEnd(); - } - this.readStructEnd(); - break; - case Type.MAP: - var mapBegin = this.readMapBegin(); - for (var i = 0; i < mapBegin.size; ++i) { - this.skip(mapBegin.ktype); - this.skip(mapBegin.vtype); - } - this.readMapEnd(); - break; - case Type.SET: - var setBegin = this.readSetBegin(); - for (var i2 = 0; i2 < setBegin.size; ++i2) { - this.skip(setBegin.etype); - } - this.readSetEnd(); - break; - case Type.LIST: - var listBegin = this.readListBegin(); - for (var i3 = 0; i3 < listBegin.size; ++i3) { - this.skip(listBegin.etype); - } - this.readListEnd(); - break; - default: - throw new Error("Invalid type: " + type); - } -}; diff --git a/src/thrift/browser.js b/src/thrift/browser.js deleted file mode 100644 index 0b06f0f..0000000 --- a/src/thrift/browser.js +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -exports.Thrift = require('./thrift'); - -var wsConnection = require('./ws_connection'); -exports.WSConnection = wsConnection.WSConnection; -exports.createWSConnection = wsConnection.createWSConnection; -exports.createWSClient = wsConnection.createWSClient; - -var xhrConnection = require('./xhr_connection'); -exports.XHRConnection = xhrConnection.XHRConnection; -exports.createXHRConnection = xhrConnection.createXHRConnection; -exports.createXHRClient = xhrConnection.createXHRClient; - - -exports.Int64 = require('node-int64'); -exports.Q = require('q'); - -var mpxProtocol = require('./multiplexed_protocol'); -exports.Multiplexer = mpxProtocol.Multiplexer; - -/* - * Export transport and protocol so they can be used outside of a - * cassandra/server context - */ -exports.TBufferedTransport = require('./buffered_transport'); -exports.TFramedTransport = require('./framed_transport'); -exports.TWebSocketTransport = require('./ws_transport'); - -exports.Protocol = require('./json_protocol'); -exports.TJSONProtocol = require('./json_protocol'); -exports.TBinaryProtocol = require('./binary_protocol'); -exports.TCompactProtocol = require('./compact_protocol'); diff --git a/src/thrift/buffered_transport.js b/src/thrift/buffered_transport.js deleted file mode 100644 index 113e216..0000000 --- a/src/thrift/buffered_transport.js +++ /dev/null @@ -1,186 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -var binary = require('./binary'); -var InputBufferUnderrunError = require('./input_buffer_underrun_error'); -var THeaderTransport = require('./header_transport'); - -module.exports = TBufferedTransport; - -function TBufferedTransport(buffer, callback) { - this.defaultReadBufferSize = 1024; - this.writeBufferSize = 512; // Soft Limit - this.inBuf = new Buffer(this.defaultReadBufferSize); - this.readCursor = 0; - this.writeCursor = 0; // for input buffer - this.outBuffers = []; - this.outCount = 0; - this.onFlush = callback; -}; - -TBufferedTransport.prototype = new THeaderTransport(); - -TBufferedTransport.prototype.reset = function() { - this.inBuf = new Buffer(this.defaultReadBufferSize); - this.readCursor = 0; - this.writeCursor = 0; - this.outBuffers = []; - this.outCount = 0; -} - -TBufferedTransport.receiver = function(callback, seqid) { - var reader = new TBufferedTransport(); - - return function(data) { - if (reader.writeCursor + data.length > reader.inBuf.length) { - var buf = new Buffer(reader.writeCursor + data.length); - reader.inBuf.copy(buf, 0, 0, reader.writeCursor); - reader.inBuf = buf; - } - data.copy(reader.inBuf, reader.writeCursor, 0); - reader.writeCursor += data.length; - - callback(reader, seqid); - }; -}; - - -TBufferedTransport.prototype.commitPosition = function(){ - var unreadSize = this.writeCursor - this.readCursor; - var bufSize = (unreadSize * 2 > this.defaultReadBufferSize) ? - unreadSize * 2 : this.defaultReadBufferSize; - var buf = new Buffer(bufSize); - if (unreadSize > 0) { - this.inBuf.copy(buf, 0, this.readCursor, this.writeCursor); - } - this.readCursor = 0; - this.writeCursor = unreadSize; - this.inBuf = buf; -}; - -TBufferedTransport.prototype.rollbackPosition = function(){ - this.readCursor = 0; -} - - // TODO: Implement open/close support -TBufferedTransport.prototype.isOpen = function() { - return true; -}; - -TBufferedTransport.prototype.open = function() { -}; - -TBufferedTransport.prototype.close = function() { -}; - - // Set the seqid of the message in the client - // So that callbacks can be found -TBufferedTransport.prototype.setCurrSeqId = function(seqid) { - this._seqid = seqid; -}; - -TBufferedTransport.prototype.ensureAvailable = function(len) { - if (this.readCursor + len > this.writeCursor) { - throw new InputBufferUnderrunError(); - } -}; - -TBufferedTransport.prototype.read = function(len) { - this.ensureAvailable(len); - var buf = new Buffer(len); - this.inBuf.copy(buf, 0, this.readCursor, this.readCursor + len); - this.readCursor += len; - return buf; -}; - -TBufferedTransport.prototype.readByte = function() { - this.ensureAvailable(1); - return binary.readByte(this.inBuf[this.readCursor++]); -}; - -TBufferedTransport.prototype.readI16 = function() { - this.ensureAvailable(2); - var i16 = binary.readI16(this.inBuf, this.readCursor); - this.readCursor += 2; - return i16; -}; - -TBufferedTransport.prototype.readI32 = function() { - this.ensureAvailable(4); - var i32 = binary.readI32(this.inBuf, this.readCursor); - this.readCursor += 4; - return i32; -}; - -TBufferedTransport.prototype.readDouble = function() { - this.ensureAvailable(8); - var d = binary.readDouble(this.inBuf, this.readCursor); - this.readCursor += 8; - return d; -}; - -TBufferedTransport.prototype.readString = function(len) { - this.ensureAvailable(len); - var str = this.inBuf.toString('utf8', this.readCursor, this.readCursor + len); - this.readCursor += len; - return str; -}; - -TBufferedTransport.prototype.borrow = function() { - var obj = {buf: this.inBuf, readIndex: this.readCursor, writeIndex: this.writeCursor}; - return obj; -}; - -TBufferedTransport.prototype.consume = function(bytesConsumed) { - this.readCursor += bytesConsumed; -}; - -TBufferedTransport.prototype.write = function(buf) { - if (typeof(buf) === "string") { - buf = new Buffer(buf, 'utf8'); - } - this.outBuffers.push(buf); - this.outCount += buf.length; -}; - -TBufferedTransport.prototype.flush = function() { - // If the seqid of the callback is available pass it to the onFlush - // Then remove the current seqid - var seqid = this._seqid; - this._seqid = null; - - if (this.outCount < 1) { - return; - } - - var msg = new Buffer(this.outCount), - pos = 0; - this.outBuffers.forEach(function(buf) { - buf.copy(msg, pos, 0); - pos += buf.length; - }); - - if (this.onFlush) { - // Passing seqid through this call to get it to the connection - this.onFlush(msg, seqid); - } - - this.outBuffers = []; - this.outCount = 0; -} diff --git a/src/thrift/compact_protocol.js b/src/thrift/compact_protocol.js deleted file mode 100644 index 302a88d..0000000 --- a/src/thrift/compact_protocol.js +++ /dev/null @@ -1,915 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -var log = require('./log'); -var Int64 = require('node-int64'); -var Thrift = require('./thrift'); -var Type = Thrift.Type; - -module.exports = TCompactProtocol; - -var POW_8 = Math.pow(2, 8); -var POW_24 = Math.pow(2, 24); -var POW_32 = Math.pow(2, 32); -var POW_40 = Math.pow(2, 40); -var POW_48 = Math.pow(2, 48); -var POW_52 = Math.pow(2, 52); -var POW_1022 = Math.pow(2, 1022); - -/** - * Constructor Function for the Compact Protocol. - * @constructor - * @param {object} [trans] - The underlying transport to read/write. - * @classdesc The Apache Thrift Protocol layer performs serialization - * of base types, the compact protocol serializes data in binary - * form with minimal space used for scalar values. - */ -function TCompactProtocol(trans) { - this.trans = trans; - this.lastField_ = []; - this.lastFieldId_ = 0; - this.string_limit_ = 0; - this.string_buf_ = null; - this.string_buf_size_ = 0; - this.container_limit_ = 0; - this.booleanField_ = { - name: null, - hasBoolValue: false - }; - this.boolValue_ = { - hasBoolValue: false, - boolValue: false - }; -}; - - -// -// Compact Protocol Constants -// - -/** - * Compact Protocol ID number. - * @readonly - * @const {number} PROTOCOL_ID - */ -TCompactProtocol.PROTOCOL_ID = -126; //1000 0010 - -/** - * Compact Protocol version number. - * @readonly - * @const {number} VERSION_N - */ -TCompactProtocol.VERSION_N = 1; - -/** - * Compact Protocol version mask for combining protocol version and message type in one byte. - * @readonly - * @const {number} VERSION_MASK - */ -TCompactProtocol.VERSION_MASK = 0x1f; //0001 1111 - -/** - * Compact Protocol message type mask for combining protocol version and message type in one byte. - * @readonly - * @const {number} TYPE_MASK - */ -TCompactProtocol.TYPE_MASK = -32; //1110 0000 - -/** - * Compact Protocol message type bits for ensuring message type bit size. - * @readonly - * @const {number} TYPE_BITS - */ -TCompactProtocol.TYPE_BITS = 7; //0000 0111 - -/** - * Compact Protocol message type shift amount for combining protocol version and message type in one byte. - * @readonly - * @const {number} TYPE_SHIFT_AMOUNT - */ -TCompactProtocol.TYPE_SHIFT_AMOUNT = 5; - -/** - * Compact Protocol type IDs used to keep type data within one nibble. - * @readonly - * @property {number} CT_STOP - End of a set of fields. - * @property {number} CT_BOOLEAN_TRUE - Flag for Boolean field with true value (packed field and value). - * @property {number} CT_BOOLEAN_FALSE - Flag for Boolean field with false value (packed field and value). - * @property {number} CT_BYTE - Signed 8 bit integer. - * @property {number} CT_I16 - Signed 16 bit integer. - * @property {number} CT_I32 - Signed 32 bit integer. - * @property {number} CT_I64 - Signed 64 bit integer (2^53 max in JavaScript). - * @property {number} CT_DOUBLE - 64 bit IEEE 854 floating point. - * @property {number} CT_BINARY - Array of bytes (used for strings also). - * @property {number} CT_LIST - A collection type (unordered). - * @property {number} CT_SET - A collection type (unordered and without repeated values). - * @property {number} CT_MAP - A collection type (map/associative-array/dictionary). - * @property {number} CT_STRUCT - A multifield type. - */ -TCompactProtocol.Types = { - CT_STOP: 0x00, - CT_BOOLEAN_TRUE: 0x01, - CT_BOOLEAN_FALSE: 0x02, - CT_BYTE: 0x03, - CT_I16: 0x04, - CT_I32: 0x05, - CT_I64: 0x06, - CT_DOUBLE: 0x07, - CT_BINARY: 0x08, - CT_LIST: 0x09, - CT_SET: 0x0A, - CT_MAP: 0x0B, - CT_STRUCT: 0x0C -}; - -/** - * Array mapping Compact type IDs to standard Thrift type IDs. - * @readonly - */ -TCompactProtocol.TTypeToCType = [ - TCompactProtocol.Types.CT_STOP, // T_STOP - 0, // unused - TCompactProtocol.Types.CT_BOOLEAN_TRUE, // T_BOOL - TCompactProtocol.Types.CT_BYTE, // T_BYTE - TCompactProtocol.Types.CT_DOUBLE, // T_DOUBLE - 0, // unused - TCompactProtocol.Types.CT_I16, // T_I16 - 0, // unused - TCompactProtocol.Types.CT_I32, // T_I32 - 0, // unused - TCompactProtocol.Types.CT_I64, // T_I64 - TCompactProtocol.Types.CT_BINARY, // T_STRING - TCompactProtocol.Types.CT_STRUCT, // T_STRUCT - TCompactProtocol.Types.CT_MAP, // T_MAP - TCompactProtocol.Types.CT_SET, // T_SET - TCompactProtocol.Types.CT_LIST, // T_LIST -]; - - -// -// Compact Protocol Utilities -// - -/** - * Returns the underlying transport layer. - * @return {object} The underlying transport layer. - */TCompactProtocol.prototype.getTransport = function() { - return this.trans; -}; - -/** - * Lookup a Compact Protocol Type value for a given Thrift Type value. - * N.B. Used only internally. - * @param {number} ttype - Thrift type value - * @returns {number} Compact protocol type value - */ -TCompactProtocol.prototype.getCompactType = function(ttype) { - return TCompactProtocol.TTypeToCType[ttype]; -}; - -/** - * Lookup a Thrift Type value for a given Compact Protocol Type value. - * N.B. Used only internally. - * @param {number} type - Compact Protocol type value - * @returns {number} Thrift Type value - */ -TCompactProtocol.prototype.getTType = function(type) { - switch (type) { - case Type.STOP: - return Type.STOP; - case TCompactProtocol.Types.CT_BOOLEAN_FALSE: - case TCompactProtocol.Types.CT_BOOLEAN_TRUE: - return Type.BOOL; - case TCompactProtocol.Types.CT_BYTE: - return Type.BYTE; - case TCompactProtocol.Types.CT_I16: - return Type.I16; - case TCompactProtocol.Types.CT_I32: - return Type.I32; - case TCompactProtocol.Types.CT_I64: - return Type.I64; - case TCompactProtocol.Types.CT_DOUBLE: - return Type.DOUBLE; - case TCompactProtocol.Types.CT_BINARY: - return Type.STRING; - case TCompactProtocol.Types.CT_LIST: - return Type.LIST; - case TCompactProtocol.Types.CT_SET: - return Type.SET; - case TCompactProtocol.Types.CT_MAP: - return Type.MAP; - case TCompactProtocol.Types.CT_STRUCT: - return Type.STRUCT; - default: - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.INVALID_DATA, "Unknown type: " + type); - } - return Type.STOP; -}; - - -// -// Compact Protocol write operations -// - -/** - * Send any buffered bytes to the end point. - */ -TCompactProtocol.prototype.flush = function() { - return this.trans.flush(); -}; - -/** - * Writes an RPC message header - * @param {string} name - The method name for the message. - * @param {number} type - The type of message (CALL, REPLY, EXCEPTION, ONEWAY). - * @param {number} seqid - The call sequence number (if any). - */ -TCompactProtocol.prototype.writeMessageBegin = function(name, type, seqid) { - this.writeByte(TCompactProtocol.PROTOCOL_ID); - this.writeByte((TCompactProtocol.VERSION_N & TCompactProtocol.VERSION_MASK) | - ((type << TCompactProtocol.TYPE_SHIFT_AMOUNT) & TCompactProtocol.TYPE_MASK)); - this.writeVarint32(seqid); - this.writeString(name); - - // Record client seqid to find callback again - if (this._seqid) { - log.warning('SeqId already set', { 'name': name }); - } else { - this._seqid = seqid; - this.trans.setCurrSeqId(seqid); - } -}; - -TCompactProtocol.prototype.writeMessageEnd = function() { -}; - -TCompactProtocol.prototype.writeStructBegin = function(name) { - this.lastField_.push(this.lastFieldId_); - this.lastFieldId_ = 0; -}; - -TCompactProtocol.prototype.writeStructEnd = function() { - this.lastFieldId_ = this.lastField_.pop(); -}; - -/** - * Writes a struct field header - * @param {string} name - The field name (not written with the compact protocol). - * @param {number} type - The field data type (a normal Thrift field Type). - * @param {number} id - The IDL field Id. - */ -TCompactProtocol.prototype.writeFieldBegin = function(name, type, id) { - if (type != Type.BOOL) { - return this.writeFieldBeginInternal(name, type, id, -1); - } - - this.booleanField_.name = name; - this.booleanField_.fieldType = type; - this.booleanField_.fieldId = id; -}; - -TCompactProtocol.prototype.writeFieldEnd = function() { -}; - -TCompactProtocol.prototype.writeFieldStop = function() { - this.writeByte(TCompactProtocol.Types.CT_STOP); -}; - -/** - * Writes a map collection header - * @param {number} keyType - The Thrift type of the map keys. - * @param {number} valType - The Thrift type of the map values. - * @param {number} size - The number of k/v pairs in the map. - */ -TCompactProtocol.prototype.writeMapBegin = function(keyType, valType, size) { - if (size === 0) { - this.writeByte(0); - } else { - this.writeVarint32(size); - this.writeByte(this.getCompactType(keyType) << 4 | this.getCompactType(valType)); - } -}; - -TCompactProtocol.prototype.writeMapEnd = function() { -}; - -/** - * Writes a list collection header - * @param {number} elemType - The Thrift type of the list elements. - * @param {number} size - The number of elements in the list. - */ -TCompactProtocol.prototype.writeListBegin = function(elemType, size) { - this.writeCollectionBegin(elemType, size); -}; - -TCompactProtocol.prototype.writeListEnd = function() { -}; - -/** - * Writes a set collection header - * @param {number} elemType - The Thrift type of the set elements. - * @param {number} size - The number of elements in the set. - */ -TCompactProtocol.prototype.writeSetBegin = function(elemType, size) { - this.writeCollectionBegin(elemType, size); -}; - -TCompactProtocol.prototype.writeSetEnd = function() { -}; - -TCompactProtocol.prototype.writeBool = function(value) { - if (this.booleanField_.name !== null) { - // we haven't written the field header yet - this.writeFieldBeginInternal(this.booleanField_.name, - this.booleanField_.fieldType, - this.booleanField_.fieldId, - (value ? TCompactProtocol.Types.CT_BOOLEAN_TRUE - : TCompactProtocol.Types.CT_BOOLEAN_FALSE)); - this.booleanField_.name = null; - } else { - // we're not part of a field, so just write the value - this.writeByte((value ? TCompactProtocol.Types.CT_BOOLEAN_TRUE - : TCompactProtocol.Types.CT_BOOLEAN_FALSE)); - } -}; - -TCompactProtocol.prototype.writeByte = function(b) { - this.trans.write(new Buffer([b])); -}; - -TCompactProtocol.prototype.writeI16 = function(i16) { - this.writeVarint32(this.i32ToZigzag(i16)); -}; - -TCompactProtocol.prototype.writeI32 = function(i32) { - this.writeVarint32(this.i32ToZigzag(i32)); -}; - -TCompactProtocol.prototype.writeI64 = function(i64) { - this.writeVarint64(this.i64ToZigzag(i64)); -}; - -// Little-endian, unlike TBinaryProtocol -TCompactProtocol.prototype.writeDouble = function(v) { - var buff = new Buffer(8); - var m, e, c; - - buff[7] = (v < 0 ? 0x80 : 0x00); - - v = Math.abs(v); - if (v !== v) { - // NaN, use QNaN IEEE format - m = 2251799813685248; - e = 2047; - } else if (v === Infinity) { - m = 0; - e = 2047; - } else { - e = Math.floor(Math.log(v) / Math.LN2); - c = Math.pow(2, -e); - if (v * c < 1) { - e--; - c *= 2; - } - - if (e + 1023 >= 2047) - { - // Overflow - m = 0; - e = 2047; - } - else if (e + 1023 >= 1) - { - // Normalized - term order matters, as Math.pow(2, 52-e) and v*Math.pow(2, 52) can overflow - m = (v*c-1) * POW_52; - e += 1023; - } - else - { - // Denormalized - also catches the '0' case, somewhat by chance - m = (v * POW_1022) * POW_52; - e = 0; - } - } - - buff[6] = (e << 4) & 0xf0; - buff[7] |= (e >> 4) & 0x7f; - - buff[0] = m & 0xff; - m = Math.floor(m / POW_8); - buff[1] = m & 0xff; - m = Math.floor(m / POW_8); - buff[2] = m & 0xff; - m = Math.floor(m / POW_8); - buff[3] = m & 0xff; - m >>= 8; - buff[4] = m & 0xff; - m >>= 8; - buff[5] = m & 0xff; - m >>= 8; - buff[6] |= m & 0x0f; - - this.trans.write(buff); -}; - -TCompactProtocol.prototype.writeStringOrBinary = function(name, encoding, arg) { - if (typeof arg === 'string') { - this.writeVarint32(Buffer.byteLength(arg, encoding)) ; - this.trans.write(new Buffer(arg, encoding)); - } else if (arg instanceof Buffer || - Object.prototype.toString.call(arg) == '[object Uint8Array]') { - // Buffers in Node.js under Browserify may extend UInt8Array instead of - // defining a new object. We detect them here so we can write them - // correctly - this.writeVarint32(arg.length); - this.trans.write(arg); - } else { - throw new Error(name + ' called without a string/Buffer argument: ' + arg); - } -}; - -TCompactProtocol.prototype.writeString = function(arg) { - this.writeStringOrBinary('writeString', 'utf8', arg); -}; - -TCompactProtocol.prototype.writeBinary = function(arg) { - this.writeStringOrBinary('writeBinary', 'binary', arg); -}; - - -// -// Compact Protocol internal write methods -// - -TCompactProtocol.prototype.writeFieldBeginInternal = function(name, - fieldType, - fieldId, - typeOverride) { - //If there's a type override, use that. - var typeToWrite = (typeOverride == -1 ? this.getCompactType(fieldType) : typeOverride); - //Check if we can delta encode the field id - if (fieldId > this.lastFieldId_ && fieldId - this.lastFieldId_ <= 15) { - //Include the type delta with the field ID - this.writeByte((fieldId - this.lastFieldId_) << 4 | typeToWrite); - } else { - //Write separate type and ID values - this.writeByte(typeToWrite); - this.writeI16(fieldId); - } - this.lastFieldId_ = fieldId; -}; - -TCompactProtocol.prototype.writeCollectionBegin = function(elemType, size) { - if (size <= 14) { - //Combine size and type in one byte if possible - this.writeByte(size << 4 | this.getCompactType(elemType)); - } else { - this.writeByte(0xf0 | this.getCompactType(elemType)); - this.writeVarint32(size); - } -}; - -/** - * Write an i32 as a varint. Results in 1-5 bytes on the wire. - */ -TCompactProtocol.prototype.writeVarint32 = function(n) { - var buf = new Buffer(5); - var wsize = 0; - while (true) { - if ((n & ~0x7F) === 0) { - buf[wsize++] = n; - break; - } else { - buf[wsize++] = ((n & 0x7F) | 0x80); - n = n >>> 7; - } - } - var wbuf = new Buffer(wsize); - buf.copy(wbuf,0,0,wsize); - this.trans.write(wbuf); -}; - -/** - * Write an i64 as a varint. Results in 1-10 bytes on the wire. - * N.B. node-int64 is always big endian - */ -TCompactProtocol.prototype.writeVarint64 = function(n) { - if (typeof n === "number"){ - n = new Int64(n); - } - if (! (n instanceof Int64)) { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.INVALID_DATA, "Expected Int64 or Number, found: " + n); - } - - var buf = new Buffer(10); - var wsize = 0; - var hi = n.buffer.readUInt32BE(0, true); - var lo = n.buffer.readUInt32BE(4, true); - var mask = 0; - while (true) { - if (((lo & ~0x7F) === 0) && (hi === 0)) { - buf[wsize++] = lo; - break; - } else { - buf[wsize++] = ((lo & 0x7F) | 0x80); - mask = hi << 25; - lo = lo >>> 7; - hi = hi >>> 7; - lo = lo | mask; - } - } - var wbuf = new Buffer(wsize); - buf.copy(wbuf,0,0,wsize); - this.trans.write(wbuf); -}; - -/** - * Convert l into a zigzag long. This allows negative numbers to be - * represented compactly as a varint. - */ -TCompactProtocol.prototype.i64ToZigzag = function(l) { - if (typeof l === 'string') { - l = new Int64(parseInt(l, 10)); - } else if (typeof l === 'number') { - l = new Int64(l); - } - if (! (l instanceof Int64)) { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.INVALID_DATA, "Expected Int64 or Number, found: " + l); - } - var hi = l.buffer.readUInt32BE(0, true); - var lo = l.buffer.readUInt32BE(4, true); - var sign = hi >>> 31; - hi = ((hi << 1) | (lo >>> 31)) ^ ((!!sign) ? 0xFFFFFFFF : 0); - lo = (lo << 1) ^ ((!!sign) ? 0xFFFFFFFF : 0); - return new Int64(hi, lo); -}; - -/** - * Convert n into a zigzag int. This allows negative numbers to be - * represented compactly as a varint. - */ -TCompactProtocol.prototype.i32ToZigzag = function(n) { - return (n << 1) ^ ((n & 0x80000000) ? 0xFFFFFFFF : 0); -}; - - -// -// Compact Protocol read operations -// - -TCompactProtocol.prototype.readMessageBegin = function() { - //Read protocol ID - var protocolId = this.trans.readByte(); - if (protocolId != TCompactProtocol.PROTOCOL_ID) { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.BAD_VERSION, "Bad protocol identifier " + protocolId); - } - - //Read Version and Type - var versionAndType = this.trans.readByte(); - var version = (versionAndType & TCompactProtocol.VERSION_MASK); - if (version != TCompactProtocol.VERSION_N) { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.BAD_VERSION, "Bad protocol version " + version); - } - var type = ((versionAndType >> TCompactProtocol.TYPE_SHIFT_AMOUNT) & TCompactProtocol.TYPE_BITS); - - //Read SeqId - var seqid = this.readVarint32(); - - //Read name - var name = this.readString(); - - return {fname: name, mtype: type, rseqid: seqid}; -}; - -TCompactProtocol.prototype.readMessageEnd = function() { -}; - -TCompactProtocol.prototype.readStructBegin = function() { - this.lastField_.push(this.lastFieldId_); - this.lastFieldId_ = 0; - return {fname: ''}; -}; - -TCompactProtocol.prototype.readStructEnd = function() { - this.lastFieldId_ = this.lastField_.pop(); -}; - -TCompactProtocol.prototype.readFieldBegin = function() { - var fieldId = 0; - var b = this.trans.readByte(b); - var type = (b & 0x0f); - - if (type == TCompactProtocol.Types.CT_STOP) { - return {fname: null, ftype: Thrift.Type.STOP, fid: 0}; - } - - //Mask off the 4 MSB of the type header to check for field id delta. - var modifier = ((b & 0x000000f0) >>> 4); - if (modifier === 0) { - //If not a delta read the field id. - fieldId = this.readI16(); - } else { - //Recover the field id from the delta - fieldId = (this.lastFieldId_ + modifier); - } - var fieldType = this.getTType(type); - - //Boolean are encoded with the type - if (type == TCompactProtocol.Types.CT_BOOLEAN_TRUE || - type == TCompactProtocol.Types.CT_BOOLEAN_FALSE) { - this.boolValue_.hasBoolValue = true; - this.boolValue_.boolValue = - (type == TCompactProtocol.Types.CT_BOOLEAN_TRUE ? true : false); - } - - //Save the new field for the next delta computation. - this.lastFieldId_ = fieldId; - return {fname: null, ftype: fieldType, fid: fieldId}; -}; - -TCompactProtocol.prototype.readFieldEnd = function() { -}; - -TCompactProtocol.prototype.readMapBegin = function() { - var msize = this.readVarint32(); - if (msize < 0) { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.NEGATIVE_SIZE, "Negative map size"); - } - - var kvType = 0; - if (msize !== 0) { - kvType = this.trans.readByte(); - } - - var keyType = this.getTType((kvType & 0xf0) >>> 4); - var valType = this.getTType(kvType & 0xf); - return {ktype: keyType, vtype: valType, size: msize}; -}; - -TCompactProtocol.prototype.readMapEnd = function() { -}; - -TCompactProtocol.prototype.readListBegin = function() { - var size_and_type = this.trans.readByte(); - - var lsize = (size_and_type >>> 4) & 0x0000000f; - if (lsize == 15) { - lsize = this.readVarint32(); - } - - if (lsize < 0) { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.NEGATIVE_SIZE, "Negative list size"); - } - - var elemType = this.getTType(size_and_type & 0x0000000f); - - return {etype: elemType, size: lsize}; -}; - -TCompactProtocol.prototype.readListEnd = function() { -}; - -TCompactProtocol.prototype.readSetBegin = function() { - return this.readListBegin(); -}; - -TCompactProtocol.prototype.readSetEnd = function() { -}; - -TCompactProtocol.prototype.readBool = function() { - var value = false; - var rsize = 0; - if (this.boolValue_.hasBoolValue === true) { - value = this.boolValue_.boolValue; - this.boolValue_.hasBoolValue = false; - } else { - var res = this.trans.readByte(); - rsize = res.rsize; - value = (res.value == TCompactProtocol.Types.CT_BOOLEAN_TRUE); - } - return value; -}; - -TCompactProtocol.prototype.readByte = function() { - return this.trans.readByte(); -}; - -TCompactProtocol.prototype.readI16 = function() { - return this.readI32(); -}; - -TCompactProtocol.prototype.readI32 = function() { - return this.zigzagToI32(this.readVarint32()); -}; - -TCompactProtocol.prototype.readI64 = function() { - return this.zigzagToI64(this.readVarint64()); -}; - -// Little-endian, unlike TBinaryProtocol -TCompactProtocol.prototype.readDouble = function() { - var buff = this.trans.read(8); - var off = 0; - - var signed = buff[off + 7] & 0x80; - var e = (buff[off+6] & 0xF0) >> 4; - e += (buff[off+7] & 0x7F) << 4; - - var m = buff[off]; - m += buff[off+1] << 8; - m += buff[off+2] << 16; - m += buff[off+3] * POW_24; - m += buff[off+4] * POW_32; - m += buff[off+5] * POW_40; - m += (buff[off+6] & 0x0F) * POW_48; - - switch (e) { - case 0: - e = -1022; - break; - case 2047: - return m ? NaN : (signed ? -Infinity : Infinity); - default: - m += POW_52; - e -= 1023; - } - - if (signed) { - m *= -1; - } - - return m * Math.pow(2, e - 52); -}; - -TCompactProtocol.prototype.readBinary = function() { - var size = this.readVarint32(); - if (size === 0) { - return new Buffer(0); - } - - if (size < 0) { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.NEGATIVE_SIZE, "Negative binary size"); - } - return this.trans.read(size); -}; - -TCompactProtocol.prototype.readString = function() { - var size = this.readVarint32(); - // Catch empty string case - if (size === 0) { - return ""; - } - - // Catch error cases - if (size < 0) { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.NEGATIVE_SIZE, "Negative string size"); - } - return this.trans.readString(size); -}; - - -// -// Compact Protocol internal read operations -// - -/** - * Read an i32 from the wire as a varint. The MSB of each byte is set - * if there is another byte to follow. This can read up to 5 bytes. - */ -TCompactProtocol.prototype.readVarint32 = function() { - return this.readVarint64().toNumber(); -}; - -/** - * Read an i64 from the wire as a proper varint. The MSB of each byte is set - * if there is another byte to follow. This can read up to 10 bytes. - */ -TCompactProtocol.prototype.readVarint64 = function() { - var rsize = 0; - var lo = 0; - var hi = 0; - var shift = 0; - while (true) { - var b = this.trans.readByte(); - rsize ++; - if (shift <= 25) { - lo = lo | ((b & 0x7f) << shift); - } else if (25 < shift && shift < 32) { - lo = lo | ((b & 0x7f) << shift); - hi = hi | ((b & 0x7f) >>> (32-shift)); - } else { - hi = hi | ((b & 0x7f) << (shift-32)); - } - shift += 7; - if (!(b & 0x80)) { - break; - } - if (rsize >= 10) { - throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.INVALID_DATA, "Variable-length int over 10 bytes."); - } - } - return new Int64(hi, lo); -}; - -/** - * Convert from zigzag int to int. - */ -TCompactProtocol.prototype.zigzagToI32 = function(n) { - return (n >>> 1) ^ (-1 * (n & 1)); -}; - -/** - * Convert from zigzag long to long. - */ -TCompactProtocol.prototype.zigzagToI64 = function(n) { - var hi = n.buffer.readUInt32BE(0, true); - var lo = n.buffer.readUInt32BE(4, true); - - var neg = new Int64(hi & 0, lo & 1); - neg._2scomp(); - var hi_neg = neg.buffer.readUInt32BE(0, true); - var lo_neg = neg.buffer.readUInt32BE(4, true); - - var hi_lo = (hi << 31); - hi = (hi >>> 1) ^ (hi_neg); - lo = ((lo >>> 1) | hi_lo) ^ (lo_neg); - return new Int64(hi, lo); -}; - -TCompactProtocol.prototype.skip = function(type) { - switch (type) { - case Type.BOOL: - this.readBool(); - break; - case Type.BYTE: - this.readByte(); - break; - case Type.I16: - this.readI16(); - break; - case Type.I32: - this.readI32(); - break; - case Type.I64: - this.readI64(); - break; - case Type.DOUBLE: - this.readDouble(); - break; - case Type.STRING: - this.readString(); - break; - case Type.STRUCT: - this.readStructBegin(); - while (true) { - var r = this.readFieldBegin(); - if (r.ftype === Type.STOP) { - break; - } - this.skip(r.ftype); - this.readFieldEnd(); - } - this.readStructEnd(); - break; - case Type.MAP: - var mapBegin = this.readMapBegin(); - for (var i = 0; i < mapBegin.size; ++i) { - this.skip(mapBegin.ktype); - this.skip(mapBegin.vtype); - } - this.readMapEnd(); - break; - case Type.SET: - var setBegin = this.readSetBegin(); - for (var i2 = 0; i2 < setBegin.size; ++i2) { - this.skip(setBegin.etype); - } - this.readSetEnd(); - break; - case Type.LIST: - var listBegin = this.readListBegin(); - for (var i3 = 0; i3 < listBegin.size; ++i3) { - this.skip(listBegin.etype); - } - this.readListEnd(); - break; - default: - throw new Error("Invalid type: " + type); - } -}; diff --git a/src/thrift/connection.js b/src/thrift/connection.js deleted file mode 100644 index 561ee10..0000000 --- a/src/thrift/connection.js +++ /dev/null @@ -1,407 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -var util = require('util'); -var EventEmitter = require('events').EventEmitter; -var constants = require('constants'); -var net = require('net'); -var tls = require('tls'); -var thrift = require('./thrift'); -var log = require('./log'); - -var TBufferedTransport = require('./buffered_transport'); -var TBinaryProtocol = require('./binary_protocol'); -var InputBufferUnderrunError = require('./input_buffer_underrun_error'); - -var createClient = require('./create_client'); - -var binary = require('./binary'); - -var Connection = exports.Connection = function(stream, options) { - var self = this; - EventEmitter.call(this); - - this.seqId2Service = {}; - this.connection = stream; - this.ssl = (stream.encrypted); - this.options = options || {}; - this.transport = this.options.transport || TBufferedTransport; - this.protocol = this.options.protocol || TBinaryProtocol; - this.offline_queue = []; - this.connected = false; - this.forceClose = false; - this.initialize_retry_vars(); - - this._debug = this.options.debug || false; - if (this.options.max_attempts && - !isNaN(this.options.max_attempts) && - this.options.max_attempts > 0) { - this.max_attempts = +this.options.max_attempts; - } - this.retry_max_delay = null; - if (this.options.retry_max_delay !== undefined && - !isNaN(this.options.retry_max_delay) && - this.options.retry_max_delay > 0) { - this.retry_max_delay = this.options.retry_max_delay; - } - this.connect_timeout = false; - if (this.options.connect_timeout && - !isNaN(this.options.connect_timeout) && - this.options.connect_timeout > 0) { - this.connect_timeout = +this.options.connect_timeout; - } - - this.connection.addListener(this.ssl ? "secureConnect" : "connect", function() { - self.connected = true; - - this.setTimeout(self.options.timeout || 0); - this.setNoDelay(); - this.frameLeft = 0; - this.framePos = 0; - this.frame = null; - self.initialize_retry_vars(); - self.flush_offline_queue(); - - self.emit("connect"); - }); - - this.connection.addListener("error", function(err) { - // Only emit the error if no-one else is listening on the connection - // or if someone is listening on us, because Node turns unhandled - // 'error' events into exceptions. - if (self.connection.listeners('error').length === 1 || - self.listeners('error').length > 0) { - self.emit("error", err); - } - }); - - // Add a close listener - this.connection.addListener("close", function() { - self.connection_gone(); // handle close event. try to reconnect - }); - - this.connection.addListener("timeout", function() { - self.emit("timeout"); - }); - - this.connection.addListener("data", self.transport.receiver(function(transport_with_data) { - var message = new self.protocol(transport_with_data); - try { - while (true) { - var header = message.readMessageBegin(); - var dummy_seqid = header.rseqid * -1; - var client = self.client; - //The Multiplexed Protocol stores a hash of seqid to service names - // in seqId2Service. If the SeqId is found in the hash we need to - // lookup the appropriate client for this call. - // The connection.client object is a single client object when not - // multiplexing, when using multiplexing it is a service name keyed - // hash of client objects. - //NOTE: The 2 way interdependencies between protocols, transports, - // connections and clients in the Node.js implementation are irregular - // and make the implementation difficult to extend and maintain. We - // should bring this stuff inline with typical thrift I/O stack - // operation soon. - // --ra - var service_name = self.seqId2Service[header.rseqid]; - if (service_name) { - client = self.client[service_name]; - } - /*jshint -W083 */ - client._reqs[dummy_seqid] = function(err, success){ - transport_with_data.commitPosition(); - - var callback = client._reqs[header.rseqid]; - delete client._reqs[header.rseqid]; - if (service_name) { - delete self.seqId2Service[header.rseqid]; - } - if (callback) { - callback(err, success); - } - }; - /*jshint +W083 */ - - if(client['recv_' + header.fname]) { - client['recv_' + header.fname](message, header.mtype, dummy_seqid); - } else { - delete client._reqs[dummy_seqid]; - self.emit("error", - new thrift.TApplicationException(thrift.TApplicationExceptionType.WRONG_METHOD_NAME, - "Received a response to an unknown RPC function")); - } - } - } - catch (e) { - if (e instanceof InputBufferUnderrunError) { - transport_with_data.rollbackPosition(); - } - else { - self.emit('error', e); - } - } - })); -}; -util.inherits(Connection, EventEmitter); - -Connection.prototype.end = function() { - this.forceClose = true - this.connection.end(); -}; - -Connection.prototype.destroy = function() { - this.connection.destroy(); -}; - -Connection.prototype.initialize_retry_vars = function () { - this.retry_timer = null; - this.retry_totaltime = 0; - this.retry_delay = 150; - this.retry_backoff = 1.7; - this.attempts = 0; -}; - -Connection.prototype.flush_offline_queue = function () { - var self = this; - var offline_queue = this.offline_queue; - - // Reset offline queue - this.offline_queue = []; - // Attempt to write queued items - offline_queue.forEach(function(data) { - self.write(data); - }); -}; - -Connection.prototype.write = function(data) { - if (!this.connected) { - this.offline_queue.push(data); - return; - } - this.connection.write(data); -}; - -Connection.prototype.connection_gone = function () { - var self = this; - this.connected = false; - - if(this.forceClose){ - if (this.retry_timer) { - clearTimeout(this.retry_timer); - this.retry_timer = null; - } - self.emit("close"); - return; - } - - // If a retry is already in progress, just let that happen - if (this.retry_timer) { - return; - } - // We cannot reconnect a secure socket. - if (!this.max_attempts || this.ssl) { - self.emit("close"); - return; - } - - if (this.retry_max_delay !== null && this.retry_delay >= this.retry_max_delay) { - this.retry_delay = this.retry_max_delay; - } else { - this.retry_delay = Math.floor(this.retry_delay * this.retry_backoff); - } - - log.debug("Retry connection in " + this.retry_delay + " ms"); - - if (this.max_attempts && this.attempts >= this.max_attempts) { - this.retry_timer = null; - console.error("thrift: Couldn't get thrift connection after " + this.max_attempts + " attempts."); - self.emit("close"); - return; - } - - this.attempts += 1; - this.emit("reconnecting", { - delay: self.retry_delay, - attempt: self.attempts - }); - - this.retry_timer = setTimeout(function () { - // if (self.connection.destroyed) { - // self.retry_timer = null; - // return; - // } - - log.debug("Retrying connection..."); - - self.retry_totaltime += self.retry_delay; - - if (self.connect_timeout && self.retry_totaltime >= self.connect_timeout) { - self.retry_timer = null; - console.error("thrift: Couldn't get thrift connection after " + self.retry_totaltime + "ms."); - self.emit("close"); - return; - } - - if (self.path !== undefined) { - self.connection.connect(self.path); - } else { - self.connection.connect(self.port, self.host); - } - self.retry_timer = null; - }, this.retry_delay); -}; - -exports.createConnection = function(host, port, options) { - var stream = net.createConnection( { - port: port, - host: host, - timeout: options.connect_timeout || options.timeout || 0 - }); - var connection = new Connection(stream, options); - connection.host = host; - connection.port = port; - - return connection; -}; - -exports.createUDSConnection = function(path, options) { - var stream = net.createConnection(path); - var connection = new Connection(stream, options); - connection.path = path; - - return connection; -}; - -exports.createSSLConnection = function(host, port, options) { - if (!('secureProtocol' in options) && !('secureOptions' in options)) { - options.secureProtocol = "SSLv23_method"; - options.secureOptions = constants.SSL_OP_NO_SSLv2 | constants.SSL_OP_NO_SSLv3; - } - - var stream = tls.connect(port, host, options); - var connection = new Connection(stream, options); - connection.host = host; - connection.port = port; - - return connection; -}; - - -exports.createClient = createClient; - -var child_process = require('child_process'); -var StdIOConnection = exports.StdIOConnection = function(command, options) { - var command_parts = command.split(' '); - command = command_parts[0]; - var args = command_parts.splice(1,command_parts.length -1); - var child = this.child = child_process.spawn(command,args); - - var self = this; - EventEmitter.call(this); - - this.connection = child.stdin; - this.options = options || {}; - this.transport = this.options.transport || TBufferedTransport; - this.protocol = this.options.protocol || TBinaryProtocol; - this.offline_queue = []; - - if (log.getLogLevel() === 'debug') { - this.child.stderr.on('data', function (err) { - log.debug(err.toString(), 'CHILD ERROR'); - }); - - this.child.on('exit', function (code,signal) { - log.debug(code + ':' + signal, 'CHILD EXITED'); - }); - } - - this.frameLeft = 0; - this.framePos = 0; - this.frame = null; - this.connected = true; - - self.flush_offline_queue(); - - this.connection.addListener("error", function(err) { - self.emit("error", err); - }); - - // Add a close listener - this.connection.addListener("close", function() { - self.emit("close"); - }); - - child.stdout.addListener("data", self.transport.receiver(function(transport_with_data) { - var message = new self.protocol(transport_with_data); - try { - var header = message.readMessageBegin(); - var dummy_seqid = header.rseqid * -1; - var client = self.client; - client._reqs[dummy_seqid] = function(err, success){ - transport_with_data.commitPosition(); - - var callback = client._reqs[header.rseqid]; - delete client._reqs[header.rseqid]; - if (callback) { - callback(err, success); - } - }; - client['recv_' + header.fname](message, header.mtype, dummy_seqid); - } - catch (e) { - if (e instanceof InputBufferUnderrunError) { - transport_with_data.rollbackPosition(); - } - else { - throw e; - } - } - })); -}; - -util.inherits(StdIOConnection, EventEmitter); - -StdIOConnection.prototype.end = function() { - this.connection.end(); -}; - -StdIOConnection.prototype.flush_offline_queue = function () { - var self = this; - var offline_queue = this.offline_queue; - - // Reset offline queue - this.offline_queue = []; - // Attempt to write queued items - offline_queue.forEach(function(data) { - self.write(data); - }); -}; - -StdIOConnection.prototype.write = function(data) { - if (!this.connected) { - this.offline_queue.push(data); - return; - } - this.connection.write(data); -}; - -exports.createStdIOConnection = function(command,options){ - return new StdIOConnection(command,options); -}; - -exports.createStdIOClient = createClient; diff --git a/src/thrift/create_client.js b/src/thrift/create_client.js deleted file mode 100644 index d6b77a8..0000000 --- a/src/thrift/create_client.js +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -module.exports = createClient; - -/** - * Creates a new client object for the specified Thrift service. - * @param {object} ServiceClient - The module containing the generated service client - * @param {Connection} Connection - The connection to use. - * @returns {object} The client object. - */ -function createClient(ServiceClient, connection) { - // TODO validate required options and throw otherwise - if (ServiceClient.Client) { - ServiceClient = ServiceClient.Client; - } - // TODO detangle these initialization calls - // creating "client" requires - // - new service client instance - // - // New service client instance requires - // - new transport instance - // - protocol class reference - // - // New transport instance requires - // - Buffer to use (or none) - // - Callback to call on flush - - // Wrap the write method - var writeCb = function(buf, seqid) { - connection.write(buf, seqid); - }; - var transport = new connection.transport(undefined, writeCb); - var client = new ServiceClient(transport, connection.protocol); - transport.client = client; - connection.client = client; - return client; -}; diff --git a/src/thrift/framed_transport.js b/src/thrift/framed_transport.js deleted file mode 100644 index 4dbd615..0000000 --- a/src/thrift/framed_transport.js +++ /dev/null @@ -1,216 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -var binary = require('./binary'); -var InputBufferUnderrunError = require('./input_buffer_underrun_error'); -var THeaderTransport = require('./header_transport'); - -module.exports = TFramedTransport; - -function TFramedTransport(buffer, callback) { - this.inBuf = buffer || new Buffer(0); - this.outBuffers = []; - this.outCount = 0; - this.readPos = 0; - this.onFlush = callback; -}; - -TFramedTransport.prototype = new THeaderTransport(); - -// TFramedTransport.receiver = function(callback, seqid) { -// var residual = null; - -// return function(data) { -// // Prepend any residual data from our previous read -// if (residual) { -// data = Buffer.concat([residual, data]); -// residual = null; -// } - -// // framed transport -// while (data.length) { -// if (data.length < 4) { -// // Not enough bytes to continue, save and resume on next packet -// residual = data; -// return; -// } -// var frameSize = binary.readI32(data, 0); -// if (data.length < 4 + frameSize) { -// // Not enough bytes to continue, save and resume on next packet -// residual = data; -// return; -// } - -// var frame = data.slice(4, 4 + frameSize); -// residual = data.slice(4 + frameSize); - -// callback(new TFramedTransport(frame), seqid); - -// data = residual; -// residual = null; -// } -// }; -// }; - -TFramedTransport.receiver = function(callback, seqid) { - var residual = []; - - return function(data) { - // 将接受到的数据存入缓冲区 - for(var i = 0; i < data.length; ++i) { - residual.push(data[i]) - } - - while (residual.length > 0) { - // 标识包大小的数据块尚未接收完成,没有的情况下跳出循环等待数据 - if (residual.length < 4) { - return; - } - // 获取单个数据包大小 - var frameSize = binary.readI32(Buffer.from(residual.slice(0, 4)), 0); - // 看一下缓冲区是否包含完整数据包,没有的情况下跳出循环等待数据 - if (residual.length < 4 + frameSize) { - return; - } - - // 移除前面4个字节:这部分数据是用来标识是标识数据包长度的 - residual.splice(0, 4) - // 根据数据包大小,从缓冲区读取对应大小的数据 - var frame = Buffer.from(residual.splice(0, frameSize)); - // 控制权交给协议层 - callback(new TFramedTransport(frame), seqid); - } - }; -}; - -TFramedTransport.prototype.commitPosition = function(){}, -TFramedTransport.prototype.rollbackPosition = function(){}, - - // TODO: Implement open/close support -TFramedTransport.prototype.isOpen = function() { - return true; -}; -TFramedTransport.prototype.open = function() {}; -TFramedTransport.prototype.close = function() {}; - - // Set the seqid of the message in the client - // So that callbacks can be found -TFramedTransport.prototype.setCurrSeqId = function(seqid) { - this._seqid = seqid; -}; - -TFramedTransport.prototype.ensureAvailable = function(len) { - if (this.readPos + len > this.inBuf.length) { - throw new InputBufferUnderrunError(); - } -}; - -TFramedTransport.prototype.read = function(len) { // this function will be used for each frames. - this.ensureAvailable(len); - var end = this.readPos + len; - - if (this.inBuf.length < end) { - throw new Error('read(' + len + ') failed - not enough data'); - } - - var buf = this.inBuf.slice(this.readPos, end); - this.readPos = end; - return buf; -}; - -TFramedTransport.prototype.readByte = function() { - this.ensureAvailable(1); - return binary.readByte(this.inBuf[this.readPos++]); -}; - -TFramedTransport.prototype.readI16 = function() { - this.ensureAvailable(2); - var i16 = binary.readI16(this.inBuf, this.readPos); - this.readPos += 2; - return i16; -}; - -TFramedTransport.prototype.readI32 = function() { - this.ensureAvailable(4); - var i32 = binary.readI32(this.inBuf, this.readPos); - this.readPos += 4; - return i32; -}; - -TFramedTransport.prototype.readDouble = function() { - this.ensureAvailable(8); - var d = binary.readDouble(this.inBuf, this.readPos); - this.readPos += 8; - return d; -}; - -TFramedTransport.prototype.readString = function(len) { - this.ensureAvailable(len); - var str = this.inBuf.toString('utf8', this.readPos, this.readPos + len); - this.readPos += len; - return str; -}; - -TFramedTransport.prototype.borrow = function() { - return { - buf: this.inBuf, - readIndex: this.readPos, - writeIndex: this.inBuf.length - }; -}; - -TFramedTransport.prototype.consume = function(bytesConsumed) { - this.readPos += bytesConsumed; -}; - -TFramedTransport.prototype.write = function(buf, encoding) { - if (typeof(buf) === "string") { - buf = new Buffer(buf, encoding || 'utf8'); - } - this.outBuffers.push(buf); - this.outCount += buf.length; -}; - -TFramedTransport.prototype.flush = function() { - // If the seqid of the callback is available pass it to the onFlush - // Then remove the current seqid - var seqid = this._seqid; - this._seqid = null; - - var out = new Buffer(this.outCount), - pos = 0; - this.outBuffers.forEach(function(buf) { - buf.copy(out, pos, 0); - pos += buf.length; - }); - - if (this.onFlush) { - // TODO: optimize this better, allocate one buffer instead of both: - var msg = new Buffer(out.length + 4); - binary.writeI32(msg, out.length); - out.copy(msg, 4, 0, out.length); - if (this.onFlush) { - // Passing seqid through this call to get it to the connection - this.onFlush(msg, seqid); - } - } - - this.outBuffers = []; - this.outCount = 0; -}; diff --git a/src/thrift/header_protocol.js b/src/thrift/header_protocol.js deleted file mode 100644 index 8971751..0000000 --- a/src/thrift/header_protocol.js +++ /dev/null @@ -1,258 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -var util = require('util'); -var TBinaryProtocol = require('./binary_protocol'); -var TCompactProtocol = require('./compact_protocol'); -var THeaderTransport = require('./header_transport'); - -var ProtocolMap = {}; -ProtocolMap[THeaderTransport.SubprotocolId.BINARY] = TBinaryProtocol; -ProtocolMap[THeaderTransport.SubprotocolId.COMPACT] = TCompactProtocol; - -module.exports = THeaderProtocol; - -function THeaderProtocolError(message) { - Error.call(this); - if (Error.captureStackTrace !== undefined) { - Error.captureStackTrace(this, this.constructor); - } - this.name = this.constructor.name; - this.message = message; -} - -util.inherits(THeaderProtocolError, Error); - -/** - * A framed protocol with headers. - * - * THeaderProtocol frames other Thrift protocols and adds support for - * optional out-of-band headers. The currently supported subprotocols are - * TBinaryProtocol and TCompactProtocol. It can currently only be used with - * transports that inherit THeaderTransport. - * - * THeaderProtocol does not currently support THTTPServer, TNonblockingServer, - * or TProcessPoolServer. - * - * See doc/specs/HeaderFormat.md for details of the wire format. - */ -function THeaderProtocol(trans) { - if (!(trans instanceof THeaderTransport)) { - throw new THeaderProtocolError( - 'Only transports that inherit THeaderTransport can be' + - ' used with THeaderProtocol' - ); - } - this.trans = trans; - this.setProtocol(); -}; - -THeaderProtocol.prototype.flush = function() { - // Headers must be written prior to flushing because because - // you need to calculate the length of the payload for the length - // field of the header - this.trans.writeHeaders(); - return this.trans.flush(); -}; - -THeaderProtocol.prototype.writeMessageBegin = function(name, type, seqid) { - return this.protocol.writeMessageBegin(name, type, seqid); -}; - -THeaderProtocol.prototype.writeMessageEnd = function() { - return this.protocol.writeMessageEnd(); -}; - -THeaderProtocol.prototype.writeStructBegin = function(name) { - return this.protocol.writeStructBegin(name); -}; - -THeaderProtocol.prototype.writeStructEnd = function() { - return this.protocol.writeStructEnd(); -}; - -THeaderProtocol.prototype.writeFieldBegin = function(name, type, id) { - return this.protocol.writeFieldBegin(name, type, id); -} - -THeaderProtocol.prototype.writeFieldEnd = function() { - return this.protocol.writeFieldEnd(); -}; - -THeaderProtocol.prototype.writeFieldStop = function() { - return this.protocol.writeFieldStop(); -}; - -THeaderProtocol.prototype.writeMapBegin = function(ktype, vtype, size) { - return this.protocol.writeMapBegin(ktype, vtype, size); -}; - -THeaderProtocol.prototype.writeMapEnd = function() { - return this.protocol.writeMapEnd(); -}; - -THeaderProtocol.prototype.writeListBegin = function(etype, size) { - return this.protocol.writeListBegin(etype, size); -}; - -THeaderProtocol.prototype.writeListEnd = function() { - return this.protocol.writeListEnd(); -}; - -THeaderProtocol.prototype.writeSetBegin = function(etype, size) { - return this.protocol.writeSetBegin(etype, size); -}; - -THeaderProtocol.prototype.writeSetEnd = function() { - return this.protocol.writeSetEnd(); -}; - -THeaderProtocol.prototype.writeBool = function(b) { - return this.protocol.writeBool(b); -}; - -THeaderProtocol.prototype.writeByte = function(b) { - return this.protocol.writeByte(b); -}; - -THeaderProtocol.prototype.writeI16 = function(i16) { - return this.protocol.writeI16(i16); -}; - -THeaderProtocol.prototype.writeI32 = function(i32) { - return this.protocol.writeI32(i32); -}; - -THeaderProtocol.prototype.writeI64 = function(i64) { - return this.protocol.writeI64(i64); -}; - -THeaderProtocol.prototype.writeDouble = function(dub) { - return this.protocol.writeDouble(dub); -}; - -THeaderProtocol.prototype.writeStringOrBinary = function(name, encoding, arg) { - return this.protocol.writeStringOrBinary(name, encoding, arg); -}; - -THeaderProtocol.prototype.writeString = function(arg) { - return this.protocol.writeString(arg); -}; - -THeaderProtocol.prototype.writeBinary = function(arg) { - return this.protocol.writeBinary(arg); -}; - -THeaderProtocol.prototype.readMessageBegin = function() { - this.trans.readHeaders(); - this.setProtocol(); - return this.protocol.readMessageBegin(); -}; - -THeaderProtocol.prototype.readMessageEnd = function() { - return this.protocol.readMessageEnd(); -}; - -THeaderProtocol.prototype.readStructBegin = function() { - return this.protocol.readStructBegin(); -}; - -THeaderProtocol.prototype.readStructEnd = function() { - return this.protocol.readStructEnd(); -}; - -THeaderProtocol.prototype.readFieldBegin = function() { - return this.protocol.readFieldBegin(); -}; - -THeaderProtocol.prototype.readFieldEnd = function() { - return this.protocol.readFieldEnd(); -}; - -THeaderProtocol.prototype.readMapBegin = function() { - return this.protocol.readMapBegin(); -}; - -THeaderProtocol.prototype.readMapEnd = function() { - return this.protocol.readMapEnd(); -}; - -THeaderProtocol.prototype.readListBegin = function() { - return this.protocol.readListBegin(); -}; - -THeaderProtocol.prototype.readListEnd = function() { - return this.protocol.readListEnd(); -}; - -THeaderProtocol.prototype.readSetBegin = function() { - return this.protocol.readSetBegin(); -}; - -THeaderProtocol.prototype.readSetEnd = function() { - return this.protocol.readSetEnd(); -}; - -THeaderProtocol.prototype.readBool = function() { - return this.protocol.readBool(); -}; - -THeaderProtocol.prototype.readByte = function() { - return this.protocol.readByte(); -}; - -THeaderProtocol.prototype.readI16 = function() { - return this.protocol.readI16(); -}; - -THeaderProtocol.prototype.readI32 = function() { - return this.protocol.readI32(); -}; - -THeaderProtocol.prototype.readI64 = function() { - return this.protocol.readI64(); -}; - -THeaderProtocol.prototype.readDouble = function() { - return this.protocol.readDouble(); -}; - -THeaderProtocol.prototype.readBinary = function() { - return this.protocol.readBinary(); -}; - -THeaderProtocol.prototype.readString = function() { - return this.protocol.readString(); -}; - -THeaderProtocol.prototype.getTransport = function() { - return this.trans; -}; - -THeaderProtocol.prototype.skip = function(type) { - return this.protocol.skip(type); -}; - -THeaderProtocol.prototype.setProtocol = function(subProtocolId) { - var subProtocolId = this.trans.getProtocolId(); - if (!ProtocolMap[subProtocolId]) { - throw new THeaderProtocolError('Headers not supported for protocol ' + subProtocolId); - } - - this.protocol = new ProtocolMap[subProtocolId](this.trans); -}; diff --git a/src/thrift/header_transport.js b/src/thrift/header_transport.js deleted file mode 100644 index ec8624b..0000000 --- a/src/thrift/header_transport.js +++ /dev/null @@ -1,341 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -var util = require('util'); -var TCompactProtocol = require('./compact_protocol'); -var TBinaryProtocol = require('./binary_protocol'); -var InputBufferUnderrunError = require('./input_buffer_underrun_error'); - -function THeaderTransportError(message) { - Error.call(this); - if (Error.captureStackTrace !== undefined) { - Error.captureStackTrace(this, this.constructor); - } - this.name = this.constructor.name; - this.message = message; -} - -util.inherits(THeaderTransportError, Error); - -module.exports = THeaderTransport; - -// from HeaderFormat.md -var COMPACT_PROTOCOL_OFFSET = 0; -var COMPACT_PROTOCOL_VERSION_OFFSET = 1; -var FRAME_SIZE_OFFSET = 0; -var HEADER_MAGIC_OFFSET = 32 / 8; -var FLAGS_OFFSET = 48 / 8; -var SEQID_OFFSET = 64 / 8; -var HEADER_SIZE_OFFSET = 96 / 8; -var HEADER_START_OFFSET = 112 / 8; - -var HEADER_MAGIC = 0x0FFF; - -var TINFO_HEADER_KEY_VALUE_TYPE = 0x01; -var MAX_FRAME_SIZE = 0x3FFFFFFF; - - // A helper class for reading/writing varints. Uses - // TCompactProtocol under the hood -function VarintHelper(readBuffer) { - var TBufferedTransport = require('./buffered_transport'); - this.outputBuffer = null; - var _this = this; - this.transport = new TBufferedTransport(null, function(output) { - _this.outputBuffer = output; - }); - - this.transport.inBuf = readBuffer || Buffer.alloc(0); - this.transport.writeCursor = this.transport.inBuf.length; - this.protocol = new TCompactProtocol(this.transport); -}; - -VarintHelper.prototype.readVarint32 = function() { - return this.protocol.readVarint32(); -}; - -VarintHelper.prototype.writeVarint32 = function(i) { - this.protocol.writeVarint32(i); -}; - -VarintHelper.prototype.readString = function() { - return this.protocol.readString(); -}; - -VarintHelper.prototype.writeString = function(str) { - this.protocol.writeString(str); -} - -VarintHelper.prototype.getOutCount = function() { - return this.transport.outCount; -}; - -VarintHelper.prototype.write = function(str) { - this.transport.write(str); -}; - -VarintHelper.prototype.toBuffer = function() { - this.transport.flush(); - return this.outputBuffer; -}; - -// from lib/cpp/src/thrift/protocol/TProtocolTypes.h -THeaderTransport.SubprotocolId = { - BINARY: 0, - JSON: 1, - COMPACT: 2, -}; - -/** - An abstract transport used as a prototype for other transports - to enable reading/writing theaders. This should NOT be used as a standalone transport - The methods in this transport are called by THeaderProtocol, which will call readHeaders/writeHeaders - in the read/writeMessageBegin methods and parse/write headers to/from a request - prior to reading/writing. - - The reason this is not a standalone transport type is because different transport types - have their own individual static receiver methods that are called prior to instantiation. - There doesn't seem to be a way for THeaderTransport to know which receiver method to use - without reworking the server API. - - For reading headers from a request, the parsed headers can be retrieved via - getReadHeader. Similarly, you can set headers to be written on the client via - setWriteHeader. - */ -function THeaderTransport() { - this.maxFrameSize = MAX_FRAME_SIZE; - this.protocolId = THeaderTransport.SubprotocolId.BINARY; - this.rheaders = {}; - this.wheaders = {}; - this.inBuf = Buffer.alloc(0); - this.outCount = 0; - this.flags = null; - this.seqid = 0; - this.shouldWriteHeaders = true; -}; - -var validateHeaders = function(key, value) { - if (typeof key !== 'string' || typeof value !== 'string') { - throw new THeaderTransportError('Header key and values must be strings'); - } -}; - -var validateProtocolId = function(protocolId) { - var protocols = Object.keys(THeaderTransport.SubprotocolId); - for (var i = 0; i < protocols.length; i++) { - if (protocolId === THeaderTransport.SubprotocolId[protocols[i]]) return true; - } - - throw new Error(protocolId + ' is not a valid protocol id'); -}; - -THeaderTransport.prototype.setSeqId = function(seqid) { - this.seqid = seqid; -}; - -THeaderTransport.prototype.getSeqId = function(seqid) { - return this.seqid; -}; - -THeaderTransport.prototype.setFlags = function(flags) { - this.flags = flags; -}; - -THeaderTransport.prototype.getReadHeaders = function() { - return this.rheaders; -}; - -THeaderTransport.prototype.setReadHeader = function(key, value) { - validateHeaders(key, value); - this.rheaders[key] = value; -}; - -THeaderTransport.prototype.clearReadHeaders = function() { - this.rheaders = {}; -}; - -THeaderTransport.prototype.getWriteHeaders = function() { - return this.wheaders; -}; - -THeaderTransport.prototype.setWriteHeader = function(key, value) { - validateHeaders(key, value); - this.wheaders[key] = value; -}; - -THeaderTransport.prototype.clearWriteHeaders = function() { - this.wheaders = {}; -}; - -THeaderTransport.prototype.setMaxFrameSize = function(frameSize) { - this.maxFrameSize = frameSize; -}; - -THeaderTransport.prototype.setProtocolId = function(protocolId) { - validateProtocolId(protocolId); - this.protocolId = protocolId; -}; - -THeaderTransport.prototype.getProtocolId = function() { - return this.protocolId; -}; - -var isUnframedBinary = function(readBuffer) { - var version = readBuffer.readInt32BE(); - return (version & TBinaryProtocol.VERSION_MASK) === TBinaryProtocol.VERSION_1; -} - -var isUnframedCompact = function(readBuffer) { - var protocolId = readBuffer.readInt8(COMPACT_PROTOCOL_OFFSET); - var version = readBuffer.readInt8(COMPACT_PROTOCOL_VERSION_OFFSET); - return protocolId === TCompactProtocol.PROTOCOL_ID && - (version & TCompactProtocol.VERSION_MASK) === TCompactProtocol.VERSION_N; -} - -THeaderTransport.prototype.readHeaders = function() { - var readBuffer = this.inBuf; - - var isUnframed = false; - if (isUnframedBinary(readBuffer)) { - this.setProtocolId(THeaderTransport.SubprotocolId.BINARY); - isUnframed = true; - } - - if (isUnframedCompact(readBuffer)) { - this.setProtocolId(THeaderTransport.SubprotocolId.COMPACT); - isUnframed = true; - } - - if (isUnframed) { - this.shouldWriteHeaders = false; - return; - } - - var frameSize = readBuffer.readInt32BE(FRAME_SIZE_OFFSET); - if (frameSize > this.maxFrameSize) { - throw new THeaderTransportError('Frame exceeds maximum frame size'); - } - - var headerMagic = readBuffer.readInt16BE(HEADER_MAGIC_OFFSET); - this.shouldWriteHeaders = headerMagic === HEADER_MAGIC; - if (!this.shouldWriteHeaders) { - return; - } - - this.setFlags(readBuffer.readInt16BE(FLAGS_OFFSET)); - this.setSeqId(readBuffer.readInt32BE(SEQID_OFFSET)); - var headerSize = readBuffer.readInt16BE(HEADER_SIZE_OFFSET) * 4; - var endOfHeaders = HEADER_START_OFFSET + headerSize; - if (endOfHeaders > readBuffer.length) { - throw new THeaderTransportError('Header size is greater than frame size'); - } - - var headerBuffer = Buffer.alloc(headerSize); - readBuffer.copy(headerBuffer, 0, HEADER_START_OFFSET, endOfHeaders); - - var varintHelper = new VarintHelper(headerBuffer); - this.setProtocolId(varintHelper.readVarint32()); - var transformCount = varintHelper.readVarint32(); - if (transformCount > 0) { - throw new THeaderTransportError('Transforms are not yet supported'); - } - - while (true) { - try { - var headerType = varintHelper.readVarint32(); - if (headerType !== TINFO_HEADER_KEY_VALUE_TYPE) { - break; - } - - var numberOfHeaders = varintHelper.readVarint32(); - for (var i = 0; i < numberOfHeaders; i++) { - var key = varintHelper.readString(); - var value = varintHelper.readString(); - this.setReadHeader(key, value); - } - } catch (e) { - if (e instanceof InputBufferUnderrunError) { - break; - } - throw e; - } - } - - // moves the read cursor past the headers - this.read(endOfHeaders); - return this.getReadHeaders(); -}; - -THeaderTransport.prototype.writeHeaders = function() { - // only write headers on the server if the client contained headers - if (!this.shouldWriteHeaders) { - return; - } - var headers = this.getWriteHeaders(); - - var varintWriter = new VarintHelper(); - varintWriter.writeVarint32(this.protocolId); - varintWriter.writeVarint32(0); // transforms not supported - - // writing info header key values - var headerKeys = Object.keys(headers); - if (headerKeys.length > 0) { - varintWriter.writeVarint32(TINFO_HEADER_KEY_VALUE_TYPE); - varintWriter.writeVarint32(headerKeys.length); - for (var i = 0; i < headerKeys.length; i++) { - var key = headerKeys[i]; - var value = headers[key]; - - varintWriter.writeString(key); - varintWriter.writeString(value); - } - } - var headerSizeWithoutPadding = varintWriter.getOutCount(); - var paddingNeeded = (4 - (headerSizeWithoutPadding % 4)) % 4; - - var headerSize = Buffer.alloc(2); - headerSize.writeInt16BE(Math.floor((headerSizeWithoutPadding + paddingNeeded) / 4)); - - var paddingBuffer = Buffer.alloc(paddingNeeded); - paddingBuffer.fill(0x00); - varintWriter.write(paddingBuffer); - var headerContentBuffer = varintWriter.toBuffer(); - var frameSize = Buffer.alloc(4); - frameSize.writeInt32BE(10 + this.outCount + headerContentBuffer.length); - var headerMagic = Buffer.alloc(2); - headerMagic.writeInt16BE(HEADER_MAGIC); - - // flags are not yet supported, so write a zero - var flags = Buffer.alloc(2); - flags.writeInt16BE(0); - - var seqid = Buffer.alloc(4); - seqid.writeInt32BE(this.getSeqId()); - - var headerBuffer = Buffer.concat([ - frameSize, - headerMagic, - flags, - seqid, - headerSize, - headerContentBuffer, - ]); - - this.outBuffers.unshift(headerBuffer); - this.outCount += headerBuffer.length; -}; diff --git a/src/thrift/http_connection.js b/src/thrift/http_connection.js deleted file mode 100644 index 17e0d0c..0000000 --- a/src/thrift/http_connection.js +++ /dev/null @@ -1,266 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -var util = require('util'); -var http = require('http'); -var https = require('https'); -var EventEmitter = require('events').EventEmitter; -var thrift = require('./thrift'); - -var TBufferedTransport = require('./buffered_transport'); -var TBinaryProtocol = require('./binary_protocol'); -var InputBufferUnderrunError = require('./input_buffer_underrun_error'); - -var createClient = require('./create_client'); - -/** - * @class - * @name ConnectOptions - * @property {string} transport - The Thrift layered transport to use (TBufferedTransport, etc). - * @property {string} protocol - The Thrift serialization protocol to use (TBinaryProtocol, etc.). - * @property {string} path - The URL path to POST to (e.g. "/", "/mySvc", "/thrift/quoteSvc", etc.). - * @property {object} headers - A standard Node.js header hash, an object hash containing key/value - * pairs where the key is the header name string and the value is the header value string. - * @property {boolean} https - True causes the connection to use https, otherwise http is used. - * @property {object} nodeOptions - Options passed on to node. - * @example - * //Use a connection that requires ssl/tls, closes the connection after each request, - * // uses the buffered transport layer, uses the JSON protocol and directs RPC traffic - * // to https://thrift.example.com:9090/hello - * var thrift = require('thrift'); - * var options = { - * transport: thrift.TBufferedTransport, - * protocol: thrift.TJSONProtocol, - * path: "/hello", - * headers: {"Connection": "close"}, - * https: true - * }; - * var con = thrift.createHttpConnection("thrift.example.com", 9090, options); - * var client = thrift.createHttpClient(myService, connection); - * client.myServiceFunction(); - */ - -/** - * Initializes a Thrift HttpConnection instance (use createHttpConnection() rather than - * instantiating directly). - * @constructor - * @param {ConnectOptions} options - The configuration options to use. - * @throws {error} Exceptions other than InputBufferUnderrunError are rethrown - * @event {error} The "error" event is fired when a Node.js error event occurs during - * request or response processing, in which case the node error is passed on. An "error" - * event may also be fired when the connection can not map a response back to the - * appropriate client (an internal error), generating a TApplicationException. - * @classdesc HttpConnection objects provide Thrift end point transport - * semantics implemented over the Node.js http.request() method. - * @see {@link createHttpConnection} - */ -var HttpConnection = exports.HttpConnection = function(options) { - //Initialize the emitter base object - EventEmitter.call(this); - - //Set configuration - var self = this; - this.options = options || {}; - this.host = this.options.host; - this.port = this.options.port; - this.socketPath = this.options.socketPath; - this.https = this.options.https || false; - this.transport = this.options.transport || TBufferedTransport; - this.protocol = this.options.protocol || TBinaryProtocol; - - //Prepare Node.js options - this.nodeOptions = { - host: this.host, - port: this.port, - socketPath: this.socketPath, - path: this.options.path || '/', - method: 'POST', - headers: this.options.headers || {}, - responseType: this.options.responseType || null - }; - for (var attrname in this.options.nodeOptions) { - this.nodeOptions[attrname] = this.options.nodeOptions[attrname]; - } - /*jshint -W069 */ - if (! this.nodeOptions.headers['Connection']) { - this.nodeOptions.headers['Connection'] = 'keep-alive'; - } - /*jshint +W069 */ - - //The sequence map is used to map seqIDs back to the - // calling client in multiplexed scenarios - this.seqId2Service = {}; - - function decodeCallback(transport_with_data) { - var proto = new self.protocol(transport_with_data); - try { - while (true) { - var header = proto.readMessageBegin(); - var dummy_seqid = header.rseqid * -1; - var client = self.client; - //The Multiplexed Protocol stores a hash of seqid to service names - // in seqId2Service. If the SeqId is found in the hash we need to - // lookup the appropriate client for this call. - // The client var is a single client object when not multiplexing, - // when using multiplexing it is a service name keyed hash of client - // objects. - //NOTE: The 2 way interdependencies between protocols, transports, - // connections and clients in the Node.js implementation are irregular - // and make the implementation difficult to extend and maintain. We - // should bring this stuff inline with typical thrift I/O stack - // operation soon. - // --ra - var service_name = self.seqId2Service[header.rseqid]; - if (service_name) { - client = self.client[service_name]; - delete self.seqId2Service[header.rseqid]; - } - /*jshint -W083 */ - client._reqs[dummy_seqid] = function(err, success){ - transport_with_data.commitPosition(); - var clientCallback = client._reqs[header.rseqid]; - delete client._reqs[header.rseqid]; - if (clientCallback) { - process.nextTick(function() { - clientCallback(err, success); - }); - } - }; - /*jshint +W083 */ - if(client['recv_' + header.fname]) { - client['recv_' + header.fname](proto, header.mtype, dummy_seqid); - } else { - delete client._reqs[dummy_seqid]; - self.emit("error", - new thrift.TApplicationException( - thrift.TApplicationExceptionType.WRONG_METHOD_NAME, - "Received a response to an unknown RPC function")); - } - } - } - catch (e) { - if (e instanceof InputBufferUnderrunError) { - transport_with_data.rollbackPosition(); - } else { - self.emit('error', e); - } - } - } - - - //Response handler - ////////////////////////////////////////////////// - this.responseCallback = function(response) { - var data = []; - var dataLen = 0; - - if (response.statusCode !== 200) { - this.emit("error", new THTTPException(response)); - } - - response.on('error', function (e) { - self.emit("error", e); - }); - - // When running directly under node, chunk will be a buffer, - // however, when running in a Browser (e.g. Browserify), chunk - // will be a string or an ArrayBuffer. - response.on('data', function (chunk) { - if ((typeof chunk == 'string') || - (Object.prototype.toString.call(chunk) == '[object Uint8Array]')) { - // Wrap ArrayBuffer/string in a Buffer so data[i].copy will work - data.push(new Buffer(chunk)); - } else { - data.push(chunk); - } - dataLen += chunk.length; - }); - - response.on('end', function(){ - var buf = new Buffer(dataLen); - for (var i=0, len=data.length, pos=0; i -// Kevin Greene -// Jesse Zhang -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 - -/// - -import * as net from 'net'; -import * as http from 'http'; -import * as https from 'https'; -import * as tls from 'tls'; -import { EventEmitter } from 'events'; - -// Thrift re-exports node-int64 and Q -import Int64 = require('node-int64'); -export { Int64 as Int64 }; -import Q = require('q'); -export { Q as Q }; - -export interface TMap { - ktype: Thrift.Type; - vtype: Thrift.Type; - size: number; -} - -export interface TMessage { - fname: string; - mtype: Thrift.MessageType; - rseqid: number; -} - -export interface TField { - fname: string; - ftype: Thrift.Type; - fid: number; -} - -export interface TList { - etype: Thrift.Type; - size: number; -} - -export interface TSet { - etype: Thrift.Type; - size: number; -} - -export interface TStruct { - fname: string; -} - -export interface TStructLike { - read(input: TProtocol): void; - write(output: TProtocol): void; -} - -export interface TTransport { - commitPosition(): void; - rollbackPosition(): void; - isOpen(): boolean; - open(): boolean; - close(): boolean; - setCurrSeqId(seqId: number): void; - ensureAvailable(len: number): void; - read(len: number): Buffer; - readByte(): number; - readI16(): number; - readI32(): number; - readDouble(): number; - readString(): string; - write(buf: Buffer | string): void; - flush(): void; -} - -export interface TProtocol { - flush(): void; - writeMessageBegin(name: string, type: Thrift.MessageType, seqid: number): void; - writeMessageEnd(): void; - writeStructBegin(name: string): void; - writeStructEnd(): void; - writeFieldBegin(name: string, type: Thrift.Type, id: number): void; - writeFieldEnd(): void; - writeFieldStop(): void; - writeMapBegin(ktype: Thrift.Type, vtype: Thrift.Type, size: number): void; - writeMapEnd(): void; - writeListBegin(etype: Thrift.Type, size: number): void; - writeListEnd(): void; - writeSetBegin(etype: Thrift.Type, size: number): void; - writeSetEnd(): void; - writeBool(bool: boolean): void; - writeByte(b: number): void; - writeI16(i16: number): void; - writeI32(i32: number): void; - writeI64(i64: number | Int64): void; - writeDouble(dbl: number): void; - writeString(arg: string | Buffer): void; - writeBinary(arg: string | Buffer): void; - readMessageBegin(): TMessage; - readMessageEnd(): void; - readStructBegin(): TStruct; - readStructEnd(): void; - readFieldBegin(): TField; - readFieldEnd(): void; - readMapBegin(): TMap; - readMapEnd(): void; - readListBegin(): TList; - readListEnd(): void; - readSetBegin(): TSet; - readSetEnd(): void; - readBool(): boolean; - readByte(): number; - readI16(): number; - readI32(): number; - readI64(): Int64; - readDouble(): number; - readBinary(): Buffer; - readString(): string; - getTransport(): TTransport; - skip(type: Thrift.Type): void; -} - -export interface HttpHeaders { - [name: string]: number | string | string[] | undefined; -} - -export interface SeqId2Service { - [seqid: number]: string; -} - -export class Connection extends EventEmitter { - seqId2Service: SeqId2Service; - connection: net.Socket; - ssl: boolean; - options: ConnectOptions; - transport: TTransport; - protocol: TProtocol; - offline_queue: Buffer[]; - connected: boolean; - constructor(stream: net.Socket, options?: ConnectOptions); - end(): void; - destroy(): void; - initialize_retry_vars(): void; - write(data: Buffer): void; - connection_gone(): void; -} - -export class HttpConnection extends EventEmitter { - options: ConnectOptions; - host: string; - port: number; - https: boolean; - transport: TTransport; - protocol: TProtocol; - constructor(host: string, port: number, options?: ConnectOptions); - responseCallback(response: http.IncomingMessage): void; - write(data: Buffer): void; -} - -export class XHRConnection extends EventEmitter { - seqId2Service: SeqId2Service; - options: ConnectOptions; - wpos: number; - rpos: number; - useCORS: boolean; - send_buf: string; - recv_buf: string; - transport: TTransport; - protocol: TProtocol; - headers: HttpHeaders; - constructor(host: string, port: number, options?: ConnectOptions); - getXmlHttpRequestObject(): XMLHttpRequest; - flush(): void; - setRecvBuffer(buf: string): void; - isOpen(): boolean; - open(): void; - close(): void; - read(len: number): string; - readAll(): string; - write(buf: string): void; - getSendBuffer(): string; -} - -export interface WSOptions { - host: string; - port: number; - path: string; - headers: HttpHeaders; -} - -export class WSConnection extends EventEmitter { - seqId2Service: SeqId2Service; - options: ConnectOptions; - host: string; - port: number; - secure: boolean; - transport: TTransport; - protocol: TProtocol; - path: string; - send_pending: Buffer[]; - wsOptions: WSOptions; - constructor(host: string, port: number, options?: ConnectOptions); - isOpen(): boolean; - open(): void; - close(): void; - uri(): string; - write(data: Buffer): void; -} - -export class Multiplexer { - createClient(serviceName: string, client: TClientConstructor, connection: Connection): TClient; -} - -export class MultiplexedProcessor { - constructor(stream?: any, options?: any); - process(input: TProtocol, output: TProtocol): void; -} - -export type TTransportCallback = - (msg?: Buffer, seqid?: number) => void; - -export interface ServiceMap { - [uri: string]: ServerOptions; -} - -export interface ServiceOptions { - transport?: TTransportConstructor; - protocol?: TProtocolConstructor; - processor?: { new(handler: THandler): TProcessor }; - handler?: THandler; -} - -export interface ServerOptions extends ServiceOptions { - cors?: string[]; - files?: string; - headers?: HttpHeaders; - services?: ServiceMap; - tls?: tls.TlsOptions; -} - -export interface ConnectOptions { - transport?: TTransportConstructor; - protocol?: TProtocolConstructor; - path?: string; - headers?: HttpHeaders; - https?: boolean; - debug?: boolean; - max_attempts?: number; - retry_max_delay?: number; - connect_timeout?: number; - timeout?: number; - nodeOptions?: http.RequestOptions | https.RequestOptions; -} - -export interface WSConnectOptions { - transport?: TTransportConstructor; - protocol?: TProtocolConstructor; - path?: string; - headers?: HttpHeaders; - secure?: boolean; - wsOptions?: WSOptions; -} - -export type TClientConstructor = - { new(output: TTransport, pClass: { new(trans: TTransport): TProtocol }): TClient; } | - { Client: { new(output: TTransport, pClass: { new(trans: TTransport): TProtocol }): TClient; } }; - -export type TProcessorConstructor = - { new(handler: THandler): TProcessor } | - { Processor: { new(handler: THandler): TProcessor } }; - -export interface WebServerOptions { - services: { - [path: string]: { - processor: TProcessorConstructor; - handler: THandler; - } - }; -} - -export function createConnection(host: string | undefined, port: number, options?: ConnectOptions): Connection; -export function createSSLConnection(host: string | undefined, port: number, options?: ConnectOptions): Connection; -export function createHttpConnection(host: string | undefined, port: number, options?: ConnectOptions): HttpConnection; -export function createXHRConnection(host: string | undefined, port: number, options?: ConnectOptions): XHRConnection; -export function createWSConnection(host: string | undefined, port: number, options?: WSConnectOptions): WSConnection; - -export function createXHRClient( - client: TClientConstructor, - connection: XHRConnection -): TClient; - -export function createHttpClient( - client: TClientConstructor, - connection: HttpConnection -): TClient; - -export function createWSClient( - client: TClientConstructor, - connection: WSConnection -): TClient; - -export function createStdIOClient( - client: TClientConstructor, - connection: Connection -): TClient; - -export function createClient( - client: TClientConstructor, - connection: Connection -): TClient; - -// THandler is going to be a hash of user-defined functions for prcessing RPC calls -export function createServer( - processor: TProcessorConstructor, - handler: THandler, - options?: ServerOptions -): http.Server | tls.Server; - -// tslint:disable-next-line no-unnecessary-generics -export function createWebServer(options: WebServerOptions): http.Server | tls.Server; - -export class TBufferedTransport implements TTransport { - constructor(buffer?: Buffer, callback?: TTransportCallback); - static receiver(callback: (trans: TBufferedTransport, seqid: number) => void, seqid: number): (data: Buffer) => void; - commitPosition(): void; - rollbackPosition(): void; - isOpen(): boolean; - open(): boolean; - close(): boolean; - setCurrSeqId(seqId: number): void; - ensureAvailable(len: number): void; - read(len: number): Buffer; - readByte(): number; - readI16(): number; - readI32(): number; - readDouble(): number; - readString(): string; - write(buf: Buffer | string): void; - flush(): void; -} - -export class TFramedTransport implements TTransport { - constructor(buffer?: Buffer, callback?: TTransportCallback); - static receiver(callback: (trans: TFramedTransport, seqid: number) => void, seqid: number): (data: Buffer) => void; - commitPosition(): void; - rollbackPosition(): void; - isOpen(): boolean; - open(): boolean; - close(): boolean; - setCurrSeqId(seqId: number): void; - ensureAvailable(len: number): void; - read(len: number): Buffer; - readByte(): number; - readI16(): number; - readI32(): number; - readDouble(): number; - readString(): string; - write(buf: Buffer | string): void; - flush(): void; -} - -export interface TTransportConstructor { - new(buffer?: Buffer, callback?: TTransportCallback): TTransport; -} - -export class TBinaryProtocol implements TProtocol { - constructor(trans: TTransport, strictRead?: boolean, strictWrite?: boolean); - flush(): void; - writeMessageBegin(name: string, type: Thrift.MessageType, seqid: number): void; - writeMessageEnd(): void; - writeStructBegin(name: string): void; - writeStructEnd(): void; - writeFieldBegin(name: string, type: Thrift.Type, id: number): void; - writeFieldEnd(): void; - writeFieldStop(): void; - writeMapBegin(ktype: Thrift.Type, vtype: Thrift.Type, size: number): void; - writeMapEnd(): void; - writeListBegin(etype: Thrift.Type, size: number): void; - writeListEnd(): void; - writeSetBegin(etype: Thrift.Type, size: number): void; - writeSetEnd(): void; - writeBool(bool: boolean): void; - writeByte(b: number): void; - writeI16(i16: number): void; - writeI32(i32: number): void; - writeI64(i64: number | Int64): void; - writeDouble(dbl: number): void; - writeString(arg: string | Buffer): void; - writeBinary(arg: string | Buffer): void; - readMessageBegin(): TMessage; - readMessageEnd(): void; - readStructBegin(): TStruct; - readStructEnd(): void; - readFieldBegin(): TField; - readFieldEnd(): void; - readMapBegin(): TMap; - readMapEnd(): void; - readListBegin(): TList; - readListEnd(): void; - readSetBegin(): TSet; - readSetEnd(): void; - readBool(): boolean; - readByte(): number; - readI16(): number; - readI32(): number; - readI64(): Int64; - readDouble(): number; - readBinary(): Buffer; - readString(): string; - getTransport(): TTransport; - skip(type: Thrift.Type): void; -} - -export class TJSONProtocol implements TProtocol { - constructor(trans: TTransport); - flush(): void; - writeMessageBegin(name: string, type: Thrift.MessageType, seqid: number): void; - writeMessageEnd(): void; - writeStructBegin(name: string): void; - writeStructEnd(): void; - writeFieldBegin(name: string, type: Thrift.Type, id: number): void; - writeFieldEnd(): void; - writeFieldStop(): void; - writeMapBegin(ktype: Thrift.Type, vtype: Thrift.Type, size: number): void; - writeMapEnd(): void; - writeListBegin(etype: Thrift.Type, size: number): void; - writeListEnd(): void; - writeSetBegin(etype: Thrift.Type, size: number): void; - writeSetEnd(): void; - writeBool(bool: boolean): void; - writeByte(b: number): void; - writeI16(i16: number): void; - writeI32(i32: number): void; - writeI64(i64: number | Int64): void; - writeDouble(dbl: number): void; - writeString(arg: string | Buffer): void; - writeBinary(arg: string | Buffer): void; - readMessageBegin(): TMessage; - readMessageEnd(): void; - readStructBegin(): TStruct; - readStructEnd(): void; - readFieldBegin(): TField; - readFieldEnd(): void; - readMapBegin(): TMap; - readMapEnd(): void; - readListBegin(): TList; - readListEnd(): void; - readSetBegin(): TSet; - readSetEnd(): void; - readBool(): boolean; - readByte(): number; - readI16(): number; - readI32(): number; - readI64(): Int64; - readDouble(): number; - readBinary(): Buffer; - readString(): string; - getTransport(): TTransport; - skip(type: Thrift.Type): void; -} - -export class TCompactProtocol implements TProtocol { - constructor(trans: TTransport); - flush(): void; - writeMessageBegin(name: string, type: Thrift.MessageType, seqid: number): void; - writeMessageEnd(): void; - writeStructBegin(name: string): void; - writeStructEnd(): void; - writeFieldBegin(name: string, type: Thrift.Type, id: number): void; - writeFieldEnd(): void; - writeFieldStop(): void; - writeMapBegin(ktype: Thrift.Type, vtype: Thrift.Type, size: number): void; - writeMapEnd(): void; - writeListBegin(etype: Thrift.Type, size: number): void; - writeListEnd(): void; - writeSetBegin(etype: Thrift.Type, size: number): void; - writeSetEnd(): void; - writeBool(bool: boolean): void; - writeByte(b: number): void; - writeI16(i16: number): void; - writeI32(i32: number): void; - writeI64(i64: number | Int64): void; - writeDouble(dbl: number): void; - writeString(arg: string | Buffer): void; - writeBinary(arg: string | Buffer): void; - readMessageBegin(): TMessage; - readMessageEnd(): void; - readStructBegin(): TStruct; - readStructEnd(): void; - readFieldBegin(): TField; - readFieldEnd(): void; - readMapBegin(): TMap; - readMapEnd(): void; - readListBegin(): TList; - readListEnd(): void; - readSetBegin(): TSet; - readSetEnd(): void; - readBool(): boolean; - readByte(): number; - readI16(): number; - readI32(): number; - readI64(): Int64; - readDouble(): number; - readBinary(): Buffer; - readString(): string; - getTransport(): TTransport; - skip(type: Thrift.Type): void; -} - -export interface TProtocolConstructor { - new(trans: TTransport, strictRead?: boolean, strictWrite?: boolean): TProtocol; -} - -// thrift.js -export namespace Thrift { - enum Type { - STOP = 0, - VOID = 1, - BOOL = 2, - BYTE = 3, - I08 = 3, - DOUBLE = 4, - I16 = 6, - I32 = 8, - I64 = 10, - STRING = 11, - UTF7 = 11, - STRUCT = 12, - MAP = 13, - SET = 14, - LIST = 15, - UTF8 = 16, - UTF16 = 17 - } - - enum MessageType { - CALL = 1, - REPLY = 2, - EXCEPTION = 3, - ONEWAY = 4 - } - - class TException extends Error { - name: string; - message: string; - - constructor(message: string); - - getMessage(): string; - } - - enum TApplicationExceptionType { - UNKNOWN = 0, - UNKNOWN_METHOD = 1, - INVALID_MESSAGE_TYPE = 2, - WRONG_METHOD_NAME = 3, - BAD_SEQUENCE_ID = 4, - MISSING_RESULT = 5, - INTERNAL_ERROR = 6, - PROTOCOL_ERROR = 7, - INVALID_TRANSFORM = 8, - INVALID_PROTOCOL = 9, - UNSUPPORTED_CLIENT_TYPE = 10 - } - - class TApplicationException extends TException { - message: string; - code: number; - - constructor(type?: TApplicationExceptionType, message?: string); - read(input: TProtocol): void; - write(output: TProtocol): void; - getCode(): number; - } - - enum TProtocolExceptionType { - UNKNOWN = 0, - INVALID_DATA = 1, - NEGATIVE_SIZE = 2, - SIZE_LIMIT = 3, - BAD_VERSION = 4, - NOT_IMPLEMENTED = 5, - DEPTH_LIMIT = 6 - } - - class TProtocolException implements Error { - name: string; - message: string; - type: TProtocolExceptionType; - - constructor(type: TProtocolExceptionType, message: string); - } - - function objectLength(obj: any): number; -} diff --git a/src/thrift/index.js b/src/thrift/index.js deleted file mode 100644 index 00f2174..0000000 --- a/src/thrift/index.js +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -exports.Thrift = require('./thrift'); - -var log = require('./log'); -exports.setLogFunc = log.setLogFunc; -exports.setLogLevel = log.setLogLevel; -exports.getLogLevel = log.getLogLevel; - -var connection = require('./connection'); -exports.Connection = connection.Connection; -exports.createClient = connection.createClient; -exports.createConnection = connection.createConnection; -exports.createUDSConnection = connection.createUDSConnection; -exports.createSSLConnection = connection.createSSLConnection; -exports.createStdIOClient = connection.createStdIOClient; -exports.createStdIOConnection = connection.createStdIOConnection; - -var httpConnection = require('./http_connection'); -exports.HttpConnection = httpConnection.HttpConnection; -exports.createHttpConnection = httpConnection.createHttpConnection; -exports.createHttpUDSConnection = httpConnection.createHttpUDSConnection; -exports.createHttpClient = httpConnection.createHttpClient; - -var wsConnection = require('./ws_connection'); -exports.WSConnection = wsConnection.WSConnection; -exports.createWSConnection = wsConnection.createWSConnection; -exports.createWSClient = wsConnection.createWSClient; - -var xhrConnection = require('./xhr_connection'); -exports.XHRConnection = xhrConnection.XHRConnection; -exports.createXHRConnection = xhrConnection.createXHRConnection; -exports.createXHRClient = xhrConnection.createXHRClient; - -var server = require('./server'); -exports.createServer = server.createServer; -exports.createMultiplexServer = server.createMultiplexServer; - -var web_server = require('./web_server'); -exports.createWebServer = web_server.createWebServer; - -exports.Int64 = require('node-int64'); -exports.Q = require('q'); - -var mpxProcessor = require('./multiplexed_processor'); -var mpxProtocol = require('./multiplexed_protocol'); -exports.MultiplexedProcessor = mpxProcessor.MultiplexedProcessor; -exports.Multiplexer = mpxProtocol.Multiplexer; - -/* - * Export transport and protocol so they can be used outside of a - * cassandra/server context - */ -exports.TBufferedTransport = require('./buffered_transport'); -exports.TFramedTransport = require('./framed_transport'); - -exports.TJSONProtocol = require('./json_protocol'); -exports.TBinaryProtocol = require('./binary_protocol'); -exports.TCompactProtocol = require('./compact_protocol'); -exports.THeaderProtocol = require('./header_protocol'); diff --git a/src/thrift/input_buffer_underrun_error.js b/src/thrift/input_buffer_underrun_error.js deleted file mode 100644 index e424540..0000000 --- a/src/thrift/input_buffer_underrun_error.js +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -var util = require("util"); - -module.exports = InputBufferUnderrunError; - -function InputBufferUnderrunError(message) { - Error.call(this); - if (Error.captureStackTrace !== undefined) { - Error.captureStackTrace(this, this.constructor); - } - this.name = this.constructor.name; - this.message = message; -}; - -util.inherits(InputBufferUnderrunError, Error); diff --git a/src/thrift/int64_util.js b/src/thrift/int64_util.js deleted file mode 100644 index e8d707d..0000000 --- a/src/thrift/int64_util.js +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -var Int64 = require('node-int64'); - -var Int64Util = module.exports = {}; - -var POW2_24 = Math.pow(2, 24); -var POW2_31 = Math.pow(2, 31); -var POW2_32 = Math.pow(2, 32); -var POW10_11 = Math.pow(10, 11); - -Int64Util.toDecimalString = function(i64) { - var b = i64.buffer; - var o = i64.offset; - if ((!b[o] && !(b[o + 1] & 0xe0)) || - (!~b[o] && !~(b[o + 1] & 0xe0))) { - // The magnitude is small enough. - return i64.toString(); - } else { - var negative = b[o] & 0x80; - if (negative) { - // 2's complement - var incremented = false; - var buffer = new Buffer(8); - for (var i = 7; i >= 0; --i) { - buffer[i] = (~b[o + i] + (incremented ? 0 : 1)) & 0xff; - incremented |= b[o + i]; - } - b = buffer; - } - var high2 = b[o + 1] + (b[o] << 8); - // Lesser 11 digits with exceeding values but is under 53 bits capacity. - var low = b[o + 7] + (b[o + 6] << 8) + (b[o + 5] << 16) - + b[o + 4] * POW2_24 // Bit shift renders 32th bit as sign, so use multiplication - + (b[o + 3] + (b[o + 2] << 8)) * POW2_32 + high2 * 74976710656; // The literal is 2^48 % 10^11 - // 12th digit and greater. - var high = Math.floor(low / POW10_11) + high2 * 2814; // The literal is 2^48 / 10^11 - // Make it exactly 11 with leading zeros. - low = ('00000000000' + String(low % POW10_11)).slice(-11); - return (negative ? '-' : '') + String(high) + low; - } -}; - -Int64Util.fromDecimalString = function(text) { - var negative = text.charAt(0) === '-'; - if (text.length < (negative ? 17 : 16)) { - // The magnitude is smaller than 2^53. - return new Int64(+text); - } else if (text.length > (negative ? 20 : 19)) { - throw new RangeError('Too many digits for Int64: ' + text); - } else { - // Most significant (up to 5) digits - var high5 = +text.slice(negative ? 1 : 0, -15); - var low = +text.slice(-15) + high5 * 2764472320; // The literal is 10^15 % 2^32 - var high = Math.floor(low / POW2_32) + high5 * 232830; // The literal is 10^15 / 2^&32 - low = low % POW2_32; - if (high >= POW2_31 && - !(negative && high == POW2_31 && low == 0) // Allow minimum Int64 - ) { - throw new RangeError('The magnitude is too large for Int64.'); - } - if (negative) { - // 2's complement - high = ~high; - if (low === 0) { - high = (high + 1) & 0xffffffff; - } else { - low = ~low + 1; - } - high = 0x80000000 | high; - } - return new Int64(high, low); - } -}; diff --git a/src/thrift/json_parse.js b/src/thrift/json_parse.js deleted file mode 100644 index 93b0bf2..0000000 --- a/src/thrift/json_parse.js +++ /dev/null @@ -1,299 +0,0 @@ -/* - * Imported from Douglas Crockford's reference implementation with minimum modification - * to handle Int64. - * - * https://github.com/douglascrockford/JSON-js/blob/c98948ae1944a28e2e8ebc3717894e580aeaaa05/json_parse.js - * - * Original license header: - * - * json_parse.js - * 2015-05-02 - * Public Domain. - * NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. - */ - - -/*jslint for */ - -/*property - at, b, call, charAt, f, fromCharCode, hasOwnProperty, message, n, name, - prototype, push, r, t, text -*/ - -var Int64 = require('node-int64'); -var Int64Util = require('./int64_util'); - -var json_parse = module.exports = (function () { - "use strict"; - -// This is a function that can parse a JSON text, producing a JavaScript -// data structure. It is a simple, recursive descent parser. It does not use -// eval or regular expressions, so it can be used as a model for implementing -// a JSON parser in other languages. - -// We are defining the function inside of another function to avoid creating -// global variables. - - var at, // The index of the current character - ch, // The current character - escapee = { - '"': '"', - '\\': '\\', - '/': '/', - b: '\b', - f: '\f', - n: '\n', - r: '\r', - t: '\t' - }, - text, - - error = function (m) { - -// Call error when something is wrong. - - throw new SyntaxError(m); - }, - - next = function (c) { - -// If a c parameter is provided, verify that it matches the current character. - - if (c && c !== ch) { - error("Expected '" + c + "' instead of '" + ch + "'"); - } - -// Get the next character. When there are no more characters, -// return the empty string. - - ch = text.charAt(at); - at += 1; - return ch; - }, - - number = function () { - -// Parse a number value. - - var number, - string = ''; - - if (ch === '-') { - string = '-'; - next('-'); - } - while (ch >= '0' && ch <= '9') { - string += ch; - next(); - } - if (ch === '.') { - string += '.'; - while (next() && ch >= '0' && ch <= '9') { - string += ch; - } - } - if (ch === 'e' || ch === 'E') { - string += ch; - next(); - if (ch === '-' || ch === '+') { - string += ch; - next(); - } - while (ch >= '0' && ch <= '9') { - string += ch; - next(); - } - } - number = +string; - if (!isFinite(number)) { - error("Bad number"); - } else if (number >= Int64.MAX_INT || number <= Int64.MIN_INT) { - // Return raw string for further process in TJSONProtocol - return string; - } else { - return number; - } - }, - - string = function () { - -// Parse a string value. - - var hex, - i, - string = '', - uffff; - -// When parsing for string values, we must look for " and \ characters. - - if (ch === '"') { - while (next()) { - if (ch === '"') { - next(); - return string; - } - if (ch === '\\') { - next(); - if (ch === 'u') { - uffff = 0; - for (i = 0; i < 4; i += 1) { - hex = parseInt(next(), 16); - if (!isFinite(hex)) { - break; - } - uffff = uffff * 16 + hex; - } - string += String.fromCharCode(uffff); - } else if (typeof escapee[ch] === 'string') { - string += escapee[ch]; - } else { - break; - } - } else { - string += ch; - } - } - } - error("Bad string"); - }, - - white = function () { - -// Skip whitespace. - - while (ch && ch <= ' ') { - next(); - } - }, - - word = function () { - -// true, false, or null. - - switch (ch) { - case 't': - next('t'); - next('r'); - next('u'); - next('e'); - return true; - case 'f': - next('f'); - next('a'); - next('l'); - next('s'); - next('e'); - return false; - case 'n': - next('n'); - next('u'); - next('l'); - next('l'); - return null; - } - error("Unexpected '" + ch + "'"); - }, - - value, // Place holder for the value function. - - array = function () { - -// Parse an array value. - - var array = []; - - if (ch === '[') { - next('['); - white(); - if (ch === ']') { - next(']'); - return array; // empty array - } - while (ch) { - array.push(value()); - white(); - if (ch === ']') { - next(']'); - return array; - } - next(','); - white(); - } - } - error("Bad array"); - }, - - object = function () { - -// Parse an object value. - - var key, - object = {}; - - if (ch === '{') { - next('{'); - white(); - if (ch === '}') { - next('}'); - return object; // empty object - } - while (ch) { - key = string(); - white(); - next(':'); - if (Object.hasOwnProperty.call(object, key)) { - error('Duplicate key "' + key + '"'); - } - object[key] = value(); - white(); - if (ch === '}') { - next('}'); - return object; - } - next(','); - white(); - } - } - error("Bad object"); - }; - - value = function () { - -// Parse a JSON value. It could be an object, an array, a string, a number, -// or a word. - - white(); - switch (ch) { - case '{': - return object(); - case '[': - return array(); - case '"': - return string(); - case '-': - return number(); - default: - return ch >= '0' && ch <= '9' - ? number() - : word(); - } - }; - -// Return the json_parse function. It will have access to all of the above -// functions and variables. - - return function (source) { - var result; - - text = source; - at = 0; - ch = ' '; - result = value(); - white(); - if (ch) { - error("Syntax error"); - } - - return result; - }; -}()); diff --git a/src/thrift/json_protocol.js b/src/thrift/json_protocol.js deleted file mode 100644 index 7e2b7c9..0000000 --- a/src/thrift/json_protocol.js +++ /dev/null @@ -1,799 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -var Int64 = require('node-int64'); -var Thrift = require('./thrift'); -var Type = Thrift.Type; -var util = require("util"); - -var Int64Util = require('./int64_util'); -var json_parse = require('./json_parse'); - -var InputBufferUnderrunError = require('./input_buffer_underrun_error'); - -module.exports = TJSONProtocol; - -/** - * Initializes a Thrift JSON protocol instance. - * @constructor - * @param {Thrift.Transport} trans - The transport to serialize to/from. - * @classdesc Apache Thrift Protocols perform serialization which enables cross - * language RPC. The Protocol type is the JavaScript browser implementation - * of the Apache Thrift TJSONProtocol. - * @example - * var protocol = new Thrift.Protocol(transport); - */ -function TJSONProtocol(trans) { - this.tstack = []; - this.tpos = []; - this.trans = trans; -}; - -/** - * Thrift IDL type Id to string mapping. - * @readonly - * @see {@link Thrift.Type} - */ -TJSONProtocol.Type = {}; -TJSONProtocol.Type[Type.BOOL] = '"tf"'; -TJSONProtocol.Type[Type.BYTE] = '"i8"'; -TJSONProtocol.Type[Type.I16] = '"i16"'; -TJSONProtocol.Type[Type.I32] = '"i32"'; -TJSONProtocol.Type[Type.I64] = '"i64"'; -TJSONProtocol.Type[Type.DOUBLE] = '"dbl"'; -TJSONProtocol.Type[Type.STRUCT] = '"rec"'; -TJSONProtocol.Type[Type.STRING] = '"str"'; -TJSONProtocol.Type[Type.MAP] = '"map"'; -TJSONProtocol.Type[Type.LIST] = '"lst"'; -TJSONProtocol.Type[Type.SET] = '"set"'; - -/** - * Thrift IDL type string to Id mapping. - * @readonly - * @see {@link Thrift.Type} - */ -TJSONProtocol.RType = {}; -TJSONProtocol.RType.tf = Type.BOOL; -TJSONProtocol.RType.i8 = Type.BYTE; -TJSONProtocol.RType.i16 = Type.I16; -TJSONProtocol.RType.i32 = Type.I32; -TJSONProtocol.RType.i64 = Type.I64; -TJSONProtocol.RType.dbl = Type.DOUBLE; -TJSONProtocol.RType.rec = Type.STRUCT; -TJSONProtocol.RType.str = Type.STRING; -TJSONProtocol.RType.map = Type.MAP; -TJSONProtocol.RType.lst = Type.LIST; -TJSONProtocol.RType.set = Type.SET; - -/** - * The TJSONProtocol version number. - * @readonly - * @const {number} Version - * @memberof Thrift.Protocol - */ -TJSONProtocol.Version = 1; - -TJSONProtocol.prototype.flush = function() { - this.writeToTransportIfStackIsFlushable(); - return this.trans.flush(); -}; - -TJSONProtocol.prototype.writeToTransportIfStackIsFlushable = function() { - if (this.tstack.length === 1) { - this.trans.write(this.tstack.pop()); - } -}; - -/** - * Serializes the beginning of a Thrift RPC message. - * @param {string} name - The service method to call. - * @param {Thrift.MessageType} messageType - The type of method call. - * @param {number} seqid - The sequence number of this call (always 0 in Apache Thrift). - */ -TJSONProtocol.prototype.writeMessageBegin = function(name, messageType, seqid) { - this.tstack.push([TJSONProtocol.Version, '"' + name + '"', messageType, seqid]); -}; - -/** - * Serializes the end of a Thrift RPC message. - */ -TJSONProtocol.prototype.writeMessageEnd = function() { - var obj = this.tstack.pop(); - - this.wobj = this.tstack.pop(); - this.wobj.push(obj); - - this.wbuf = '[' + this.wobj.join(',') + ']'; - - // we assume there is nothing more to come so we write - this.trans.write(this.wbuf); -}; - -/** - * Serializes the beginning of a struct. - * @param {string} name - The name of the struct. - */ -TJSONProtocol.prototype.writeStructBegin = function(name) { - this.tpos.push(this.tstack.length); - this.tstack.push({}); -}; - -/** - * Serializes the end of a struct. - */ -TJSONProtocol.prototype.writeStructEnd = function() { - var p = this.tpos.pop(); - var struct = this.tstack[p]; - var str = '{'; - var first = true; - for (var key in struct) { - if (first) { - first = false; - } else { - str += ','; - } - - str += key + ':' + struct[key]; - } - - str += '}'; - this.tstack[p] = str; - - this.writeToTransportIfStackIsFlushable(); -}; - -/** - * Serializes the beginning of a struct field. - * @param {string} name - The name of the field. - * @param {Thrift.Protocol.Type} fieldType - The data type of the field. - * @param {number} fieldId - The field's unique identifier. - */ -TJSONProtocol.prototype.writeFieldBegin = function(name, fieldType, fieldId) { - this.tpos.push(this.tstack.length); - this.tstack.push({ 'fieldId': '"' + - fieldId + '"', 'fieldType': TJSONProtocol.Type[fieldType] - }); -}; - -/** - * Serializes the end of a field. - */ -TJSONProtocol.prototype.writeFieldEnd = function() { - var value = this.tstack.pop(); - var fieldInfo = this.tstack.pop(); - - if (':' + value === ":[object Object]") { - this.tstack[this.tstack.length - 1][fieldInfo.fieldId] = '{' + - fieldInfo.fieldType + ':' + JSON.stringify(value) + '}'; - } else { - this.tstack[this.tstack.length - 1][fieldInfo.fieldId] = '{' + - fieldInfo.fieldType + ':' + value + '}'; - } - this.tpos.pop(); - - this.writeToTransportIfStackIsFlushable(); -}; - -/** - * Serializes the end of the set of fields for a struct. - */ -TJSONProtocol.prototype.writeFieldStop = function() { -}; - -/** - * Serializes the beginning of a map collection. - * @param {Thrift.Type} keyType - The data type of the key. - * @param {Thrift.Type} valType - The data type of the value. - * @param {number} [size] - The number of elements in the map (ignored). - */ -TJSONProtocol.prototype.writeMapBegin = function(keyType, valType, size) { - //size is invalid, we'll set it on end. - this.tpos.push(this.tstack.length); - this.tstack.push([TJSONProtocol.Type[keyType], TJSONProtocol.Type[valType], 0]); -}; - -/** - * Serializes the end of a map. - */ -TJSONProtocol.prototype.writeMapEnd = function() { - var p = this.tpos.pop(); - - if (p == this.tstack.length) { - return; - } - - if ((this.tstack.length - p - 1) % 2 !== 0) { - this.tstack.push(''); - } - - var size = (this.tstack.length - p - 1) / 2; - - this.tstack[p][this.tstack[p].length - 1] = size; - - var map = '}'; - var first = true; - while (this.tstack.length > p + 1) { - var v = this.tstack.pop(); - var k = this.tstack.pop(); - if (first) { - first = false; - } else { - map = ',' + map; - } - - if (! isNaN(k)) { k = '"' + k + '"'; } //json "keys" need to be strings - map = k + ':' + v + map; - } - map = '{' + map; - - this.tstack[p].push(map); - this.tstack[p] = '[' + this.tstack[p].join(',') + ']'; - - this.writeToTransportIfStackIsFlushable(); -}; - -/** - * Serializes the beginning of a list collection. - * @param {Thrift.Type} elemType - The data type of the elements. - * @param {number} size - The number of elements in the list. - */ -TJSONProtocol.prototype.writeListBegin = function(elemType, size) { - this.tpos.push(this.tstack.length); - this.tstack.push([TJSONProtocol.Type[elemType], size]); -}; - -/** - * Serializes the end of a list. - */ -TJSONProtocol.prototype.writeListEnd = function() { - var p = this.tpos.pop(); - - while (this.tstack.length > p + 1) { - var tmpVal = this.tstack[p + 1]; - this.tstack.splice(p + 1, 1); - this.tstack[p].push(tmpVal); - } - - this.tstack[p] = '[' + this.tstack[p].join(',') + ']'; - - this.writeToTransportIfStackIsFlushable(); -}; - -/** - * Serializes the beginning of a set collection. - * @param {Thrift.Type} elemType - The data type of the elements. - * @param {number} size - The number of elements in the list. - */ -TJSONProtocol.prototype.writeSetBegin = function(elemType, size) { - this.tpos.push(this.tstack.length); - this.tstack.push([TJSONProtocol.Type[elemType], size]); -}; - -/** - * Serializes the end of a set. - */ -TJSONProtocol.prototype.writeSetEnd = function() { - var p = this.tpos.pop(); - - while (this.tstack.length > p + 1) { - var tmpVal = this.tstack[p + 1]; - this.tstack.splice(p + 1, 1); - this.tstack[p].push(tmpVal); - } - - this.tstack[p] = '[' + this.tstack[p].join(',') + ']'; - - this.writeToTransportIfStackIsFlushable(); -}; - -/** Serializes a boolean */ -TJSONProtocol.prototype.writeBool = function(bool) { - this.tstack.push(bool ? 1 : 0); -}; - -/** Serializes a number */ -TJSONProtocol.prototype.writeByte = function(byte) { - this.tstack.push(byte); -}; - -/** Serializes a number */ -TJSONProtocol.prototype.writeI16 = function(i16) { - this.tstack.push(i16); -}; - -/** Serializes a number */ -TJSONProtocol.prototype.writeI32 = function(i32) { - this.tstack.push(i32); -}; - -/** Serializes a number */ -TJSONProtocol.prototype.writeI64 = function(i64) { - if (i64 instanceof Int64) { - this.tstack.push(Int64Util.toDecimalString(i64)); - } else { - this.tstack.push(i64); - } -}; - -/** Serializes a number */ -TJSONProtocol.prototype.writeDouble = function(dub) { - this.tstack.push(dub); -}; - -/** Serializes a string */ -TJSONProtocol.prototype.writeString = function(arg) { - // We do not encode uri components for wire transfer: - if (arg === null) { - this.tstack.push(null); - } else { - if (typeof arg === 'string') { - var str = arg; - } else if (arg instanceof Buffer) { - var str = arg.toString('utf8'); - } else { - throw new Error('writeString called without a string/Buffer argument: ' + arg); - } - - // concat may be slower than building a byte buffer - var escapedString = ''; - for (var i = 0; i < str.length; i++) { - var ch = str.charAt(i); // a single double quote: " - if (ch === '\"') { - escapedString += '\\\"'; // write out as: \" - } else if (ch === '\\') { // a single backslash: \ - escapedString += '\\\\'; // write out as: \\ - /* Currently escaped forward slashes break TJSONProtocol. - * As it stands, we can simply pass forward slashes into - * our strings across the wire without being escaped. - * I think this is the protocol's bug, not thrift.js - * } else if(ch === '/') { // a single forward slash: / - * escapedString += '\\/'; // write out as \/ - * } - */ - } else if (ch === '\b') { // a single backspace: invisible - escapedString += '\\b'; // write out as: \b" - } else if (ch === '\f') { // a single formfeed: invisible - escapedString += '\\f'; // write out as: \f" - } else if (ch === '\n') { // a single newline: invisible - escapedString += '\\n'; // write out as: \n" - } else if (ch === '\r') { // a single return: invisible - escapedString += '\\r'; // write out as: \r" - } else if (ch === '\t') { // a single tab: invisible - escapedString += '\\t'; // write out as: \t" - } else { - escapedString += ch; // Else it need not be escaped - } - } - this.tstack.push('"' + escapedString + '"'); - } -}; - -/** Serializes a string */ -TJSONProtocol.prototype.writeBinary = function(arg) { - if (typeof arg === 'string') { - var buf = new Buffer(arg, 'binary'); - } else if (arg instanceof Buffer || - Object.prototype.toString.call(arg) == '[object Uint8Array]') { - var buf = arg; - } else { - throw new Error('writeBinary called without a string/Buffer argument: ' + arg); - } - this.tstack.push('"' + buf.toString('base64') + '"'); -}; - -/** - * @class - * @name AnonReadMessageBeginReturn - * @property {string} fname - The name of the service method. - * @property {Thrift.MessageType} mtype - The type of message call. - * @property {number} rseqid - The sequence number of the message (0 in Thrift RPC). - */ -/** - * Deserializes the beginning of a message. - * @returns {AnonReadMessageBeginReturn} - */ -TJSONProtocol.prototype.readMessageBegin = function() { - this.rstack = []; - this.rpos = []; - - //Borrow the inbound transport buffer and ensure data is present/consistent - var transBuf = this.trans.borrow(); - if (transBuf.readIndex >= transBuf.writeIndex) { - throw new InputBufferUnderrunError(); - } - var cursor = transBuf.readIndex; - - if (transBuf.buf[cursor] !== 0x5B) { //[ - throw new Error("Malformed JSON input, no opening bracket"); - } - - //Parse a single message (there may be several in the buffer) - // TODO: Handle characters using multiple code units - cursor++; - var openBracketCount = 1; - var inString = false; - for (; cursor < transBuf.writeIndex; cursor++) { - var chr = transBuf.buf[cursor]; - //we use hexa charcode here because data[i] returns an int and not a char - if (inString) { - if (chr === 0x22) { //" - inString = false; - } else if (chr === 0x5C) { //\ - //escaped character, skip - cursor += 1; - } - } else { - if (chr === 0x5B) { //[ - openBracketCount += 1; - } else if (chr === 0x5D) { //] - openBracketCount -= 1; - if (openBracketCount === 0) { - //end of json message detected - break; - } - } else if (chr === 0x22) { //" - inString = true; - } - } - } - - if (openBracketCount !== 0) { - // Missing closing bracket. Can be buffer underrun. - throw new InputBufferUnderrunError(); - } - - //Reconstitute the JSON object and conume the necessary bytes - this.robj = json_parse(transBuf.buf.slice(transBuf.readIndex, cursor+1).toString()); - this.trans.consume(cursor + 1 - transBuf.readIndex); - - //Verify the protocol version - var version = this.robj.shift(); - if (version != TJSONProtocol.Version) { - throw new Error('Wrong thrift protocol version: ' + version); - } - - //Objectify the thrift message {name/type/sequence-number} for return - // and then save the JSON object in rstack - var r = {}; - r.fname = this.robj.shift(); - r.mtype = this.robj.shift(); - r.rseqid = this.robj.shift(); - this.rstack.push(this.robj.shift()); - return r; -}; - -/** Deserializes the end of a message. */ -TJSONProtocol.prototype.readMessageEnd = function() { -}; - -/** - * Deserializes the beginning of a struct. - * @param {string} [name] - The name of the struct (ignored) - * @returns {object} - An object with an empty string fname property - */ -TJSONProtocol.prototype.readStructBegin = function() { - var r = {}; - r.fname = ''; - - //incase this is an array of structs - if (this.rstack[this.rstack.length - 1] instanceof Array) { - this.rstack.push(this.rstack[this.rstack.length - 1].shift()); - } - - return r; -}; - -/** Deserializes the end of a struct. */ -TJSONProtocol.prototype.readStructEnd = function() { - this.rstack.pop(); -}; - -/** - * @class - * @name AnonReadFieldBeginReturn - * @property {string} fname - The name of the field (always ''). - * @property {Thrift.Type} ftype - The data type of the field. - * @property {number} fid - The unique identifier of the field. - */ -/** - * Deserializes the beginning of a field. - * @returns {AnonReadFieldBeginReturn} - */ -TJSONProtocol.prototype.readFieldBegin = function() { - var r = {}; - - var fid = -1; - var ftype = Type.STOP; - - //get a fieldId - for (var f in (this.rstack[this.rstack.length - 1])) { - if (f === null) { - continue; - } - - fid = parseInt(f, 10); - this.rpos.push(this.rstack.length); - - var field = this.rstack[this.rstack.length - 1][fid]; - - //remove so we don't see it again - delete this.rstack[this.rstack.length - 1][fid]; - - this.rstack.push(field); - - break; - } - - if (fid != -1) { - //should only be 1 of these but this is the only - //way to match a key - for (var i in (this.rstack[this.rstack.length - 1])) { - if (TJSONProtocol.RType[i] === null) { - continue; - } - - ftype = TJSONProtocol.RType[i]; - this.rstack[this.rstack.length - 1] = this.rstack[this.rstack.length - 1][i]; - } - } - - r.fname = ''; - r.ftype = ftype; - r.fid = fid; - - return r; -}; - -/** Deserializes the end of a field. */ -TJSONProtocol.prototype.readFieldEnd = function() { - var pos = this.rpos.pop(); - - //get back to the right place in the stack - while (this.rstack.length > pos) { - this.rstack.pop(); - } -}; - -/** - * @class - * @name AnonReadMapBeginReturn - * @property {Thrift.Type} ktype - The data type of the key. - * @property {Thrift.Type} vtype - The data type of the value. - * @property {number} size - The number of elements in the map. - */ -/** - * Deserializes the beginning of a map. - * @returns {AnonReadMapBeginReturn} - */ -TJSONProtocol.prototype.readMapBegin = function() { - var map = this.rstack.pop(); - var first = map.shift(); - if (first instanceof Array) { - this.rstack.push(map); - map = first; - first = map.shift(); - } - - var r = {}; - r.ktype = TJSONProtocol.RType[first]; - r.vtype = TJSONProtocol.RType[map.shift()]; - r.size = map.shift(); - - - this.rpos.push(this.rstack.length); - this.rstack.push(map.shift()); - - return r; -}; - -/** Deserializes the end of a map. */ -TJSONProtocol.prototype.readMapEnd = function() { - this.readFieldEnd(); -}; - -/** - * @class - * @name AnonReadColBeginReturn - * @property {Thrift.Type} etype - The data type of the element. - * @property {number} size - The number of elements in the collection. - */ -/** - * Deserializes the beginning of a list. - * @returns {AnonReadColBeginReturn} - */ -TJSONProtocol.prototype.readListBegin = function() { - var list = this.rstack[this.rstack.length - 1]; - - var r = {}; - r.etype = TJSONProtocol.RType[list.shift()]; - r.size = list.shift(); - - this.rpos.push(this.rstack.length); - this.rstack.push(list.shift()); - - return r; -}; - -/** Deserializes the end of a list. */ -TJSONProtocol.prototype.readListEnd = function() { - var pos = this.rpos.pop() - 2; - var st = this.rstack; - st.pop(); - if (st instanceof Array && st.length > pos && st[pos].length > 0) { - st.push(st[pos].shift()); - } -}; - -/** - * Deserializes the beginning of a set. - * @returns {AnonReadColBeginReturn} - */ -TJSONProtocol.prototype.readSetBegin = function() { - return this.readListBegin(); -}; - -/** Deserializes the end of a set. */ -TJSONProtocol.prototype.readSetEnd = function() { - return this.readListEnd(); -}; - -TJSONProtocol.prototype.readBool = function() { - return this.readValue() == '1'; -}; - -TJSONProtocol.prototype.readByte = function() { - return this.readI32(); -}; - -TJSONProtocol.prototype.readI16 = function() { - return this.readI32(); -}; - -TJSONProtocol.prototype.readI32 = function(f) { - return +this.readValue(); -} - -/** Returns the next value found in the protocol buffer */ -TJSONProtocol.prototype.readValue = function(f) { - if (f === undefined) { - f = this.rstack[this.rstack.length - 1]; - } - - var r = {}; - - if (f instanceof Array) { - if (f.length === 0) { - r.value = undefined; - } else { - r.value = f.shift(); - } - } else if (!(f instanceof Int64) && f instanceof Object) { - for (var i in f) { - if (i === null) { - continue; - } - this.rstack.push(f[i]); - delete f[i]; - - r.value = i; - break; - } - } else { - r.value = f; - this.rstack.pop(); - } - - return r.value; -}; - -TJSONProtocol.prototype.readI64 = function() { - var n = this.readValue() - if (typeof n === 'string') { - // Assuming no one is sending in 1.11111e+33 format - return Int64Util.fromDecimalString(n); - } else { - return new Int64(n); - } -}; - -TJSONProtocol.prototype.readDouble = function() { - return this.readI32(); -}; - -TJSONProtocol.prototype.readBinary = function() { - return new Buffer(this.readValue(), 'base64'); -}; - -TJSONProtocol.prototype.readString = function() { - return this.readValue(); -}; - -/** - * Returns the underlying transport. - * @readonly - * @returns {Thrift.Transport} The underlying transport. - */ -TJSONProtocol.prototype.getTransport = function() { - return this.trans; -}; - -/** - * Method to arbitrarily skip over data - */ -TJSONProtocol.prototype.skip = function(type) { - switch (type) { - case Type.BOOL: - this.readBool(); - break; - case Type.BYTE: - this.readByte(); - break; - case Type.I16: - this.readI16(); - break; - case Type.I32: - this.readI32(); - break; - case Type.I64: - this.readI64(); - break; - case Type.DOUBLE: - this.readDouble(); - break; - case Type.STRING: - this.readString(); - break; - case Type.STRUCT: - this.readStructBegin(); - while (true) { - var r = this.readFieldBegin(); - if (r.ftype === Type.STOP) { - break; - } - this.skip(r.ftype); - this.readFieldEnd(); - } - this.readStructEnd(); - break; - case Type.MAP: - var mapBegin = this.readMapBegin(); - for (var i = 0; i < mapBegin.size; ++i) { - this.skip(mapBegin.ktype); - this.skip(mapBegin.vtype); - } - this.readMapEnd(); - break; - case Type.SET: - var setBegin = this.readSetBegin(); - for (var i2 = 0; i2 < setBegin.size; ++i2) { - this.skip(setBegin.etype); - } - this.readSetEnd(); - break; - case Type.LIST: - var listBegin = this.readListBegin(); - for (var i3 = 0; i3 < listBegin.size; ++i3) { - this.skip(listBegin.etype); - } - this.readListEnd(); - break; - default: - throw new Error("Invalid type: " + type); - } -}; diff --git a/src/thrift/log.js b/src/thrift/log.js deleted file mode 100644 index 053e813..0000000 --- a/src/thrift/log.js +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -var util = require('util'); - -var disabled = function () {}; -var logFunc = console.log; -var logLevel = 'error'; // default level - -function factory(level) { - return function () { - // better use spread syntax, but due to compatibility, - // use legacy method here. - var args = ['thrift: [' + level + '] '].concat(Array.from(arguments)); - return logFunc(util.format.apply(null, args)); - }; -} - -var trace = disabled; -var debug = disabled; -var error = disabled; -var warning = disabled; -var info = disabled; - -exports.setLogFunc = function (func) { - logFunc = func; -}; - -var setLogLevel = exports.setLogLevel = function (level) { - trace = debug = error = warning = info = disabled; - logLevel = level; - switch (logLevel) { - case 'trace': - trace = factory('TRACE'); - case 'debug': - debug = factory('DEBUG'); - case 'error': - error = factory('ERROR'); - case 'warning': - warning = factory('WARN'); - case 'info': - info = factory('INFO'); - } -}; - -// set default -setLogLevel(logLevel); - -exports.getLogLevel = function () { - return logLevel; -}; - -exports.trace = function () { - return trace.apply(null, arguments); -}; - -exports.debug = function () { - return debug.apply(null, arguments); -}; - -exports.error = function () { - return error.apply(null, arguments); -}; - -exports.warning = function () { - return warning.apply(null, arguments); -}; - -exports.info = function () { - return info.apply(null, arguments); -}; diff --git a/src/thrift/multiplexed_processor.js b/src/thrift/multiplexed_processor.js deleted file mode 100644 index 67b62f7..0000000 --- a/src/thrift/multiplexed_processor.js +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -var Thrift = require('./thrift'); - -exports.MultiplexedProcessor = MultiplexedProcessor; - -function MultiplexedProcessor(stream, options) { - this.services = {}; -}; - -MultiplexedProcessor.prototype.registerProcessor = function(name, handler) { - this.services[name] = handler; -}; - -MultiplexedProcessor.prototype.process = function(inp, out) { - var begin = inp.readMessageBegin(); - - if (begin.mtype != Thrift.MessageType.CALL && begin.mtype != Thrift.MessageType.ONEWAY) { - throw new Thrift.TException('TMultiplexedProcessor: Unexpected message type'); - } - - var p = begin.fname.split(':'); - var sname = p[0]; - var fname = p[1]; - - if (! (sname in this.services)) { - throw new Thrift.TException('TMultiplexedProcessor: Unknown service: ' + sname); - } - - //construct a proxy object which stubs the readMessageBegin - //for the service - var inpProxy = {}; - - for (var attr in inp) { - inpProxy[attr] = inp[attr]; - } - - inpProxy.readMessageBegin = function() { - return { - fname: fname, - mtype: begin.mtype, - rseqid: begin.rseqid - }; - }; - - this.services[sname].process(inpProxy, out); -}; diff --git a/src/thrift/multiplexed_protocol.js b/src/thrift/multiplexed_protocol.js deleted file mode 100644 index d078aa2..0000000 --- a/src/thrift/multiplexed_protocol.js +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -var util = require('util'); -var Thrift = require('./thrift'); - -exports.Multiplexer = Multiplexer; - -function Wrapper(serviceName, protocol, connection) { - - function MultiplexProtocol(trans, strictRead, strictWrite) { - protocol.call(this, trans, strictRead, strictWrite); - }; - - util.inherits(MultiplexProtocol, protocol); - - MultiplexProtocol.prototype.writeMessageBegin = function(name, type, seqid) { - if (type == Thrift.MessageType.CALL || type == Thrift.MessageType.ONEWAY) { - connection.seqId2Service[seqid] = serviceName; - MultiplexProtocol.super_.prototype.writeMessageBegin.call(this, - serviceName + ":" + name, - type, - seqid); - } else { - MultiplexProtocol.super_.prototype.writeMessageBegin.call(this, name, type, seqid); - } - }; - - return MultiplexProtocol; -}; - -function Multiplexer() { - this.seqid = 0; -}; - -Multiplexer.prototype.createClient = function(serviceName, ServiceClient, connection) { - if (ServiceClient.Client) { - ServiceClient = ServiceClient.Client; - } - var writeCb = function(buf, seqid) { - connection.write(buf,seqid); - }; - var transport = new connection.transport(undefined, writeCb); - var protocolWrapper = new Wrapper(serviceName, connection.protocol, connection); - var client = new ServiceClient(transport, protocolWrapper); - var self = this; - client.new_seqid = function() { - self.seqid += 1; - return self.seqid; - }; - - if (typeof connection.client !== 'object') { - connection.client = {}; - } - connection.client[serviceName] = client; - - return client; -}; diff --git a/src/thrift/protocol.js b/src/thrift/protocol.js deleted file mode 100644 index a70ebe2..0000000 --- a/src/thrift/protocol.js +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -module.exports.TBinaryProtocol = require('./binary_protocol'); -module.exports.TCompactProtocol = require('./compact_protocol'); -module.exports.TJSONProtocol = require('./json_protocol'); diff --git a/src/thrift/server.js b/src/thrift/server.js deleted file mode 100644 index 16b74ea..0000000 --- a/src/thrift/server.js +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -var constants = require('constants'); -var net = require('net'); -var tls = require('tls'); - -var TBufferedTransport = require('./buffered_transport'); -var TBinaryProtocol = require('./binary_protocol'); -var THeaderProtocol = require('./header_protocol'); -var InputBufferUnderrunError = require('./input_buffer_underrun_error'); - -/** - * Create a Thrift server which can serve one or multiple services. - * @param {object} processor - A normal or multiplexedProcessor (must - * be preconstructed with the desired handler). - * @param {ServerOptions} options - Optional additional server configuration. - * @returns {object} - The Apache Thrift Multiplex Server. - */ -exports.createMultiplexServer = function(processor, options) { - var transport = (options && options.transport) ? options.transport : TBufferedTransport; - var protocol = (options && options.protocol) ? options.protocol : TBinaryProtocol; - - function serverImpl(stream) { - var self = this; - stream.on('error', function(err) { - self.emit('error', err); - }); - stream.on('data', transport.receiver(function(transportWithData) { - var input = new protocol(transportWithData); - var outputCb = function(buf) { - try { - stream.write(buf); - } catch (err) { - self.emit('error', err); - stream.end(); - } - }; - - var output = new protocol(new transport(undefined, outputCb)); - // Read and write need to be performed on the same transport - // for THeaderProtocol because we should only respond with - // headers if the request contains headers - if (protocol === THeaderProtocol) { - output = input; - output.trans.onFlush = outputCb; - } - - try { - do { - processor.process(input, output); - transportWithData.commitPosition(); - } while (true); - } catch (err) { - if (err instanceof InputBufferUnderrunError) { - //The last data in the buffer was not a complete message, wait for the rest - transportWithData.rollbackPosition(); - } - else if (err.message === "Invalid type: undefined") { - //No more data in the buffer - //This trap is a bit hackish - //The next step to improve the node behavior here is to have - // the compiler generated process method throw a more explicit - // error when the network buffer is empty (regardles of the - // protocol/transport stack in use) and replace this heuristic. - // Also transports should probably not force upper layers to - // manage their buffer positions (i.e. rollbackPosition() and - // commitPosition() should be eliminated in lieu of a transport - // encapsulated buffer management strategy.) - transportWithData.rollbackPosition(); - } - else { - //Unexpected error - self.emit('error', err); - stream.end(); - } - } - })); - - stream.on('end', function() { - stream.end(); - }); - } - - if (options && options.tls) { - if (!('secureProtocol' in options.tls) && !('secureOptions' in options.tls)) { - options.tls.secureProtocol = "SSLv23_method"; - options.tls.secureOptions = constants.SSL_OP_NO_SSLv2 | constants.SSL_OP_NO_SSLv3; - } - return tls.createServer(options.tls, serverImpl); - } else { - return net.createServer(serverImpl); - } -}; - -/** - * Create a single service Apache Thrift server. - * @param {object} processor - A service class or processor function. - * @param {ServerOptions} options - Optional additional server configuration. - * @returns {object} - The Apache Thrift Multiplex Server. - */ -exports.createServer = function(processor, handler, options) { - if (processor.Processor) { - processor = processor.Processor; - } - return exports.createMultiplexServer(new processor(handler), options); -}; diff --git a/src/thrift/thrift.js b/src/thrift/thrift.js deleted file mode 100644 index f728eac..0000000 --- a/src/thrift/thrift.js +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -var util = require('util'); - -var Type = exports.Type = { - STOP: 0, - VOID: 1, - BOOL: 2, - BYTE: 3, - I08: 3, - DOUBLE: 4, - I16: 6, - I32: 8, - I64: 10, - STRING: 11, - UTF7: 11, - STRUCT: 12, - MAP: 13, - SET: 14, - LIST: 15, - UTF8: 16, - UTF16: 17 -}; - -exports.MessageType = { - CALL: 1, - REPLY: 2, - EXCEPTION: 3, - ONEWAY: 4 -}; - -exports.TException = TException; - -function TException(message) { - Error.call(this); - if (Error.captureStackTrace !== undefined) { - Error.captureStackTrace(this, this.constructor); - } - - this.name = this.constructor.name; - this.message = message; -}; -util.inherits(TException, Error); - -var TApplicationExceptionType = exports.TApplicationExceptionType = { - UNKNOWN: 0, - UNKNOWN_METHOD: 1, - INVALID_MESSAGE_TYPE: 2, - WRONG_METHOD_NAME: 3, - BAD_SEQUENCE_ID: 4, - MISSING_RESULT: 5, - INTERNAL_ERROR: 6, - PROTOCOL_ERROR: 7, - INVALID_TRANSFORM: 8, - INVALID_PROTOCOL: 9, - UNSUPPORTED_CLIENT_TYPE: 10 -}; - -exports.TApplicationException = TApplicationException; - -function TApplicationException(type, message) { - TException.call(this); - if (Error.captureStackTrace !== undefined) { - Error.captureStackTrace(this, this.constructor); - } - - this.type = type || TApplicationExceptionType.UNKNOWN; - this.name = this.constructor.name; - this.message = message; -}; -util.inherits(TApplicationException, TException); - -TApplicationException.prototype.read = function(input) { - var ftype; - var ret = input.readStructBegin('TApplicationException'); - - while(1){ - ret = input.readFieldBegin(); - if(ret.ftype == Type.STOP) - break; - - switch(ret.fid){ - case 1: - if( ret.ftype == Type.STRING ){ - ret = input.readString(); - this.message = ret; - } else { - ret = input.skip(ret.ftype); - } - break; - case 2: - if( ret.ftype == Type.I32 ){ - ret = input.readI32(); - this.type = ret; - } else { - ret = input.skip(ret.ftype); - } - break; - default: - ret = input.skip(ret.ftype); - break; - } - input.readFieldEnd(); - } - input.readStructEnd(); -}; - -TApplicationException.prototype.write = function(output){ - output.writeStructBegin('TApplicationException'); - - if (this.message) { - output.writeFieldBegin('message', Type.STRING, 1); - output.writeString(this.message); - output.writeFieldEnd(); - } - - if (this.code) { - output.writeFieldBegin('type', Type.I32, 2); - output.writeI32(this.code); - output.writeFieldEnd(); - } - - output.writeFieldStop(); - output.writeStructEnd(); -}; - -var TProtocolExceptionType = exports.TProtocolExceptionType = { - UNKNOWN: 0, - INVALID_DATA: 1, - NEGATIVE_SIZE: 2, - SIZE_LIMIT: 3, - BAD_VERSION: 4, - NOT_IMPLEMENTED: 5, - DEPTH_LIMIT: 6 -}; - - -exports.TProtocolException = TProtocolException; - -function TProtocolException(type, message) { - Error.call(this); - if (Error.captureStackTrace !== undefined) { - Error.captureStackTrace(this, this.constructor); - } - - this.name = this.constructor.name; - this.type = type; - this.message = message; -}; -util.inherits(TProtocolException, Error); - -exports.objectLength = function(obj) { - return Object.keys(obj).length; -}; - -exports.inherits = function(constructor, superConstructor) { - util.inherits(constructor, superConstructor); -}; - -var copyList, copyMap; - -copyList = function(lst, types) { - - if (!lst) {return lst; } - - var type; - - if (types.shift === undefined) { - type = types; - } - else { - type = types[0]; - } - var Type = type; - - var len = lst.length, result = [], i, val; - for (i = 0; i < len; i++) { - val = lst[i]; - if (type === null) { - result.push(val); - } - else if (type === copyMap || type === copyList) { - result.push(type(val, types.slice(1))); - } - else { - result.push(new Type(val)); - } - } - return result; -}; - -copyMap = function(obj, types){ - - if (!obj) {return obj; } - - var type; - - if (types.shift === undefined) { - type = types; - } - else { - type = types[0]; - } - var Type = type; - - var result = {}, val; - for(var prop in obj) { - if(obj.hasOwnProperty(prop)) { - val = obj[prop]; - if (type === null) { - result[prop] = val; - } - else if (type === copyMap || type === copyList) { - result[prop] = type(val, types.slice(1)); - } - else { - result[prop] = new Type(val); - } - } - } - return result; -}; - -module.exports.copyMap = copyMap; -module.exports.copyList = copyList; diff --git a/src/thrift/transport.js b/src/thrift/transport.js deleted file mode 100644 index 59daa98..0000000 --- a/src/thrift/transport.js +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -module.exports.TBufferedTransport = require('./buffered_transport'); -module.exports.TFramedTransport = require('./framed_transport'); -module.exports.InputBufferUnderrunError = require('./input_buffer_underrun_error'); diff --git a/src/thrift/web_server.js b/src/thrift/web_server.js deleted file mode 100644 index a33f47a..0000000 --- a/src/thrift/web_server.js +++ /dev/null @@ -1,567 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -var http = require('http'); -var https = require('https'); -var url = require("url"); -var path = require("path"); -var fs = require("fs"); -var crypto = require("crypto"); -var log = require('./log'); - -var MultiplexedProcessor = require('./multiplexed_processor').MultiplexedProcessor; - -var TBufferedTransport = require('./buffered_transport'); -var TBinaryProtocol = require('./binary_protocol'); -var InputBufferUnderrunError = require('./input_buffer_underrun_error'); - -// WSFrame constructor and prototype -///////////////////////////////////////////////////////////////////// - -/** Apache Thrift RPC Web Socket Transport - * Frame layout conforming to RFC 6455 circa 12/2011 - * - * Theoretical frame size limit is 4GB*4GB, however the Node Buffer - * limit is 1GB as of v0.10. The frame length encoding is also - * configured for a max of 4GB presently and needs to be adjusted - * if Node/Browsers become capabile of > 4GB frames. - * - * - FIN is 1 if the message is complete - * - RSV1/2/3 are always 0 - * - Opcode is 1(TEXT) for TJSONProtocol and 2(BIN) for TBinaryProtocol - * - Mask Present bit is 1 sending to-server and 0 sending to-client - * - Payload Len: - * + If < 126: then represented directly - * + If >=126: but within range of an unsigned 16 bit integer - * then Payload Len is 126 and the two following bytes store - * the length - * + Else: Payload Len is 127 and the following 8 bytes store the - * length as an unsigned 64 bit integer - * - Masking key is a 32 bit key only present when sending to the server - * - Payload follows the masking key or length - * - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-------+-+-------------+-------------------------------+ - * |F|R|R|R| opcode|M| Payload len | Extended payload length | - * |I|S|S|S| (4) |A| (7) | (16/64) | - * |N|V|V|V| |S| | (if payload len==126/127) | - * | |1|2|3| |K| | | - * +-+-+-+-+-------+-+-------------+ - - - - - - - - - - - - - - - + - * | Extended payload length continued, if payload len == 127 | - * + - - - - - - - - - - - - - - - +-------------------------------+ - * | |Masking-key, if MASK set to 1 | - * +-------------------------------+-------------------------------+ - * | Masking-key (continued) | Payload Data | - * +-------------------------------- - - - - - - - - - - - - - - - + - * : Payload Data continued ... : - * + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - * | Payload Data continued ... | - * +---------------------------------------------------------------+ - */ -var wsFrame = { - /** Encodes a WebSocket frame - * - * @param {Buffer} data - The raw data to encode - * @param {Buffer} mask - The mask to apply when sending to server, null for no mask - * @param {Boolean} binEncoding - True for binary encoding, false for text encoding - * @returns {Buffer} - The WebSocket frame, ready to send - */ - encode: function(data, mask, binEncoding) { - var frame = new Buffer(wsFrame.frameSizeFromData(data, mask)); - //Byte 0 - FIN & OPCODE - frame[0] = wsFrame.fin.FIN + - (binEncoding ? wsFrame.frameOpCodes.BIN : wsFrame.frameOpCodes.TEXT); - //Byte 1 or 1-3 or 1-9 - MASK FLAG & SIZE - var payloadOffset = 2; - if (data.length < 0x7E) { - frame[1] = data.length + (mask ? wsFrame.mask.TO_SERVER : wsFrame.mask.TO_CLIENT); - } else if (data.length < 0xFFFF) { - frame[1] = 0x7E + (mask ? wsFrame.mask.TO_SERVER : wsFrame.mask.TO_CLIENT); - frame.writeUInt16BE(data.length, 2, true); - payloadOffset = 4; - } else { - frame[1] = 0x7F + (mask ? wsFrame.mask.TO_SERVER : wsFrame.mask.TO_CLIENT); - frame.writeUInt32BE(0, 2, true); - frame.writeUInt32BE(data.length, 6, true); - payloadOffset = 10; - } - //MASK - if (mask) { - mask.copy(frame, payloadOffset, 0, 4); - payloadOffset += 4; - } - //Payload - data.copy(frame, payloadOffset); - if (mask) { - wsFrame.applyMask(frame.slice(payloadOffset), frame.slice(payloadOffset-4,payloadOffset)); - } - return frame; - }, - - /** - * @class - * @name WSDecodeResult - * @property {Buffer} data - The decoded data for the first ATRPC message - * @property {Buffer} mask - The frame mask - * @property {Boolean} binEncoding - True if binary (TBinaryProtocol), - * False if text (TJSONProtocol) - * @property {Buffer} nextFrame - Multiple ATRPC messages may be sent in a - * single WebSocket frame, this Buffer contains - * any bytes remaining to be decoded - * @property {Boolean} FIN - True is the message is complete - */ - - /** Decodes a WebSocket frame - * - * @param {Buffer} frame - The raw inbound frame, if this is a continuation - * frame it must have a mask property with the mask. - * @returns {WSDecodeResult} - The decoded payload - * - * @see {@link WSDecodeResult} - */ - decode: function(frame) { - var result = { - data: null, - mask: null, - binEncoding: false, - nextFrame: null, - FIN: true - }; - - //Byte 0 - FIN & OPCODE - if (wsFrame.fin.FIN != (frame[0] & wsFrame.fin.FIN)) { - result.FIN = false; - } - result.binEncoding = (wsFrame.frameOpCodes.BIN == (frame[0] & wsFrame.frameOpCodes.BIN)); - //Byte 1 or 1-3 or 1-9 - SIZE - var lenByte = (frame[1] & 0x0000007F); - var len = lenByte; - var dataOffset = 2; - if (lenByte == 0x7E) { - len = frame.readUInt16BE(2); - dataOffset = 4; - } else if (lenByte == 0x7F) { - len = frame.readUInt32BE(6); - dataOffset = 10; - } - //MASK - if (wsFrame.mask.TO_SERVER == (frame[1] & wsFrame.mask.TO_SERVER)) { - result.mask = new Buffer(4); - frame.copy(result.mask, 0, dataOffset, dataOffset + 4); - dataOffset += 4; - } - //Payload - result.data = new Buffer(len); - frame.copy(result.data, 0, dataOffset, dataOffset+len); - if (result.mask) { - wsFrame.applyMask(result.data, result.mask); - } - //Next Frame - if (frame.length > dataOffset+len) { - result.nextFrame = new Buffer(frame.length - (dataOffset+len)); - frame.copy(result.nextFrame, 0, dataOffset+len, frame.length); - } - //Don't forward control frames - if (frame[0] & wsFrame.frameOpCodes.FINCTRL) { - result.data = null; - } - - return result; - }, - - /** Masks/Unmasks data - * - * @param {Buffer} data - data to mask/unmask in place - * @param {Buffer} mask - the mask - */ - applyMask: function(data, mask){ - //TODO: look into xoring words at a time - var dataLen = data.length; - var maskLen = mask.length; - for (var i = 0; i < dataLen; i++) { - data[i] = data[i] ^ mask[i%maskLen]; - } - }, - - /** Computes frame size on the wire from data to be sent - * - * @param {Buffer} data - data.length is the assumed payload size - * @param {Boolean} mask - true if a mask will be sent (TO_SERVER) - */ - frameSizeFromData: function(data, mask) { - var headerSize = 10; - if (data.length < 0x7E) { - headerSize = 2; - } else if (data.length < 0xFFFF) { - headerSize = 4; - } - return headerSize + data.length + (mask ? 4 : 0); - }, - - frameOpCodes: { - CONT: 0x00, - TEXT: 0x01, - BIN: 0x02, - CTRL: 0x80 - }, - - mask: { - TO_SERVER: 0x80, - TO_CLIENT: 0x00 - }, - - fin: { - CONT: 0x00, - FIN: 0x80 - } -}; - - -// createWebServer constructor and options -///////////////////////////////////////////////////////////////////// - -/** - * @class - * @name ServerOptions - * @property {array} cors - Array of CORS origin strings to permit requests from. - * @property {string} files - Path to serve static files from, if absent or "" - * static file service is disabled. - * @property {object} headers - An object hash mapping header strings to header value - * strings, these headers are transmitted in response to - * static file GET operations. - * @property {object} services - An object hash mapping service URI strings - * to ServiceOptions objects - * @property {object} tls - Node.js TLS options (see: nodejs.org/api/tls.html), - * if not present or null regular http is used, - * at least a key and a cert must be defined to use SSL/TLS - * @see {@link ServiceOptions} - */ - -/** - * @class - * @name ServiceOptions - * @property {object} transport - The layered transport to use (defaults - * to TBufferedTransport). - * @property {object} protocol - The serialization Protocol to use (defaults to - * TBinaryProtocol). - * @property {object} processor - The Thrift Service class/processor generated - * by the IDL Compiler for the service (the "cls" - * key can also be used for this attribute). - * @property {object} handler - The handler methods for the Thrift Service. - */ - -/** - * Create a Thrift server which can serve static files and/or one or - * more Thrift Services. - * @param {ServerOptions} options - The server configuration. - * @returns {object} - The Apache Thrift Web Server. - */ -exports.createWebServer = function(options) { - var baseDir = options.files; - var contentTypesByExtension = { - '.txt': 'text/plain', - '.html': 'text/html', - '.css': 'text/css', - '.xml': 'application/xml', - '.json': 'application/json', - '.js': 'application/javascript', - '.jpg': 'image/jpeg', - '.jpeg': 'image/jpeg', - '.gif': 'image/gif', - '.png': 'image/png', - '.svg': 'image/svg+xml' - }; - - //Setup all of the services - var services = options.services; - for (var uri in services) { - var svcObj = services[uri]; - - //Setup the processor - if (svcObj.processor instanceof MultiplexedProcessor) { - //Multiplex processors have pre embedded processor/handler pairs, save as is - svcObj.processor = svcObj.processor; - } else { - //For historical reasons Node.js supports processors passed in directly or via the - // IDL Compiler generated class housing the processor. Also, the options property - // for a Processor has been called both cls and processor at different times. We - // support any of the four possibilities here. - var processor = (svcObj.processor) ? (svcObj.processor.Processor || svcObj.processor) : - (svcObj.cls.Processor || svcObj.cls); - //Processors can be supplied as constructed objects with handlers already embedded, - // if a handler is provided we construct a new processor, if not we use the processor - // object directly - if (svcObj.handler) { - svcObj.processor = new processor(svcObj.handler); - } else { - svcObj.processor = processor; - } - } - svcObj.transport = svcObj.transport ? svcObj.transport : TBufferedTransport; - svcObj.protocol = svcObj.protocol ? svcObj.protocol : TBinaryProtocol; - } - - //Verify CORS requirements - function VerifyCORSAndSetHeaders(request, response) { - if (request.headers.origin && options.cors) { - if (options.cors["*"] || options.cors[request.headers.origin]) { - //Allow, origin allowed - response.setHeader("access-control-allow-origin", request.headers.origin); - response.setHeader("access-control-allow-methods", "GET, POST, OPTIONS"); - response.setHeader("access-control-allow-headers", "content-type, accept"); - response.setHeader("access-control-max-age", "60"); - return true; - } else { - //Disallow, origin denied - return false; - } - } - //Allow, CORS is not in use - return true; - } - - - //Handle OPTIONS method (CORS) - /////////////////////////////////////////////////// - function processOptions(request, response) { - if (VerifyCORSAndSetHeaders(request, response)) { - response.writeHead("204", "No Content", {"content-length": 0}); - } else { - response.writeHead("403", "Origin " + request.headers.origin + " not allowed", {}); - } - response.end(); - } - - - //Handle POST methods (TXHRTransport) - /////////////////////////////////////////////////// - function processPost(request, response) { - //Lookup service - var uri = url.parse(request.url).pathname; - var svc = services[uri]; - if (!svc) { - response.writeHead("403", "No Apache Thrift Service at " + uri, {}); - response.end(); - return; - } - - //Verify CORS requirements - if (!VerifyCORSAndSetHeaders(request, response)) { - response.writeHead("403", "Origin " + request.headers.origin + " not allowed", {}); - response.end(); - return; - } - - //Process XHR payload - request.on('data', svc.transport.receiver(function(transportWithData) { - var input = new svc.protocol(transportWithData); - var output = new svc.protocol(new svc.transport(undefined, function(buf) { - try { - response.writeHead(200); - response.end(buf); - } catch (err) { - response.writeHead(500); - response.end(); - } - })); - - try { - svc.processor.process(input, output); - transportWithData.commitPosition(); - } catch (err) { - if (err instanceof InputBufferUnderrunError) { - transportWithData.rollbackPosition(); - } else { - response.writeHead(500); - response.end(); - } - } - })); - } - - - //Handle GET methods (Static Page Server) - /////////////////////////////////////////////////// - function processGet(request, response) { - //Undefined or empty base directory means do not serve static files - if (!baseDir || "" === baseDir) { - response.writeHead(404); - response.end(); - return; - } - - //Verify CORS requirements - if (!VerifyCORSAndSetHeaders(request, response)) { - response.writeHead("403", "Origin " + request.headers.origin + " not allowed", {}); - response.end(); - return; - } - - //Locate the file requested and send it - var uri = url.parse(request.url).pathname; - var filename = path.resolve(path.join(baseDir, uri)); - - //Ensure the basedir path is not able to be escaped - if (filename.indexOf(baseDir) != 0) { - response.writeHead(400, "Invalid request path", {}); - response.end(); - return; - } - - fs.exists(filename, function(exists) { - if(!exists) { - response.writeHead(404); - response.end(); - return; - } - - if (fs.statSync(filename).isDirectory()) { - filename += '/index.html'; - } - - fs.readFile(filename, "binary", function(err, file) { - if (err) { - response.writeHead(500); - response.end(err + "\n"); - return; - } - var headers = {}; - var contentType = contentTypesByExtension[path.extname(filename)]; - if (contentType) { - headers["Content-Type"] = contentType; - } - for (var k in options.headers) { - headers[k] = options.headers[k]; - } - response.writeHead(200, headers); - response.write(file, "binary"); - response.end(); - }); - }); - } - - - //Handle WebSocket calls (TWebSocketTransport) - /////////////////////////////////////////////////// - function processWS(data, socket, svc, binEncoding) { - svc.transport.receiver(function(transportWithData) { - var input = new svc.protocol(transportWithData); - var output = new svc.protocol(new svc.transport(undefined, function(buf) { - try { - var frame = wsFrame.encode(buf, null, binEncoding); - socket.write(frame); - } catch (err) { - //TODO: Add better error processing - } - })); - - try { - svc.processor.process(input, output); - transportWithData.commitPosition(); - } - catch (err) { - if (err instanceof InputBufferUnderrunError) { - transportWithData.rollbackPosition(); - } - else { - //TODO: Add better error processing - } - } - })(data); - } - - //Create the server (HTTP or HTTPS) - var server = null; - if (options.tls) { - server = https.createServer(options.tls); - } else { - server = http.createServer(); - } - - //Wire up listeners for upgrade(to WebSocket) & request methods for: - // - GET static files, - // - POST XHR Thrift services - // - OPTIONS CORS requests - server.on('request', function(request, response) { - if (request.method === 'POST') { - processPost(request, response); - } else if (request.method === 'GET') { - processGet(request, response); - } else if (request.method === 'OPTIONS') { - processOptions(request, response); - } else { - response.writeHead(500); - response.end(); - } - }).on('upgrade', function(request, socket, head) { - //Lookup service - var svc; - try { - svc = services[Object.keys(services)[0]]; - } catch(e) { - socket.write("HTTP/1.1 403 No Apache Thrift Service available\r\n\r\n"); - return; - } - //Perform upgrade - var hash = crypto.createHash("sha1"); - hash.update(request.headers['sec-websocket-key'] + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"); - socket.write("HTTP/1.1 101 Switching Protocols\r\n" + - "Upgrade: websocket\r\n" + - "Connection: Upgrade\r\n" + - "Sec-WebSocket-Accept: " + hash.digest("base64") + "\r\n" + - "Sec-WebSocket-Origin: " + request.headers.origin + "\r\n" + - "Sec-WebSocket-Location: ws://" + request.headers.host + request.url + "\r\n" + - "\r\n"); - //Handle WebSocket traffic - var data = null; - socket.on('data', function(frame) { - try { - while (frame) { - var result = wsFrame.decode(frame); - //Prepend any existing decoded data - if (data) { - if (result.data) { - var newData = new Buffer(data.length + result.data.length); - data.copy(newData); - result.data.copy(newData, data.length); - result.data = newData; - } else { - result.data = data; - } - data = null; - } - //If this completes a message process it - if (result.FIN) { - processWS(result.data, socket, svc, result.binEncoding); - } else { - data = result.data; - } - //Prepare next frame for decoding (if any) - frame = result.nextFrame; - } - } catch(e) { - log.error('TWebSocketTransport Exception: ' + e); - socket.destroy(); - } - }); - }); - - //Return the server - return server; -}; diff --git a/src/thrift/ws_connection.js b/src/thrift/ws_connection.js deleted file mode 100644 index 8ee8f6e..0000000 --- a/src/thrift/ws_connection.js +++ /dev/null @@ -1,286 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -var util = require('util'); -var WebSocket = require('isomorphic-ws'); -var EventEmitter = require("events").EventEmitter; -var thrift = require('./thrift'); - -var TBufferedTransport = require('./buffered_transport'); -var TJSONProtocol = require('./json_protocol'); -var InputBufferUnderrunError = require('./input_buffer_underrun_error'); - -var createClient = require('./create_client'); -var jsEnv = require('browser-or-node'); -exports.WSConnection = WSConnection; - -/** - * @class - * @name WSConnectOptions - * @property {string} transport - The Thrift layered transport to use (TBufferedTransport, etc). - * @property {string} protocol - The Thrift serialization protocol to use (TJSONProtocol, etc.). - * @property {string} path - The URL path to connect to (e.g. "/", "/mySvc", "/thrift/quoteSvc", etc.). - * @property {object} headers - A standard Node.js header hash, an object hash containing key/value - * pairs where the key is the header name string and the value is the header value string. - * @property {boolean} secure - True causes the connection to use wss, otherwise ws is used. - * @property {object} wsOptions - Options passed on to WebSocket. - * @example - * //Use a secured websocket connection - * // uses the buffered transport layer, uses the JSON protocol and directs RPC traffic - * // to wss://thrift.example.com:9090/hello - * var thrift = require('thrift'); - * var options = { - * transport: thrift.TBufferedTransport, - * protocol: thrift.TJSONProtocol, - * path: "/hello", - * secure: true - * }; - * var con = thrift.createWSConnection("thrift.example.com", 9090, options); - * con.open() - * var client = thrift.createWSClient(myService, connection); - * client.myServiceFunction(); - * con.close() - */ - -/** - * Initializes a Thrift WSConnection instance (use createWSConnection() rather than - * instantiating directly). - * @constructor - * @param {string} host - The host name or IP to connect to. - * @param {number} port - The TCP port to connect to. - * @param {WSConnectOptions} options - The configuration options to use. - * @throws {error} Exceptions other than ttransport.InputBufferUnderrunError are rethrown - * @event {error} The "error" event is fired when a Node.js error event occurs during - * request or response processing, in which case the node error is passed on. An "error" - * event may also be fired when the connection can not map a response back to the - * appropriate client (an internal error), generating a TApplicationException. - * @classdesc WSConnection objects provide Thrift end point transport - * semantics implemented using Websockets. - * @see {@link createWSConnection} - */ -function WSConnection(host, port, options) { - //Initialize the emitter base object - EventEmitter.call(this); - - //Set configuration - this.options = options || {}; - this.host = host; - this.port = port; - this.secure = this.options.secure || false; - this.transport = this.options.transport || TBufferedTransport; - this.protocol = this.options.protocol || TJSONProtocol; - this.path = this.options.path; - this.send_pending = []; - - //The sequence map is used to map seqIDs back to the - // calling client in multiplexed scenarios - this.seqId2Service = {}; - - //Prepare WebSocket options - this.wsOptions = { - host: this.host, - port: this.port || 80, - path: this.options.path || '/', - headers: this.options.headers || {} - }; - for (var attrname in this.options.wsOptions) { - this.wsOptions[attrname] = this.options.wsOptions[attrname]; - } -}; -util.inherits(WSConnection, EventEmitter); - -WSConnection.prototype.__reset = function() { - this.socket = null; //The web socket - this.send_pending = []; //Buffers/Callback pairs waiting to be sent -}; - -WSConnection.prototype.__onOpen = function() { - this.emit("open"); - if (this.send_pending.length > 0) { - //If the user made calls before the connection was fully - //open, send them now - this.send_pending.forEach(function(data) { - this.socket.send(data); - }, this); - this.send_pending = []; - } -}; - -WSConnection.prototype.__onClose = function(evt) { - this.emit("close"); - this.__reset(); -}; - -WSConnection.prototype.__decodeCallback = function(transport_with_data) { - var proto = new this.protocol(transport_with_data); - try { - while (true) { - var header = proto.readMessageBegin(); - var dummy_seqid = header.rseqid * -1; - var client = this.client; - //The Multiplexed Protocol stores a hash of seqid to service names - // in seqId2Service. If the SeqId is found in the hash we need to - // lookup the appropriate client for this call. - // The client var is a single client object when not multiplexing, - // when using multiplexing it is a service name keyed hash of client - // objects. - //NOTE: The 2 way interdependencies between protocols, transports, - // connections and clients in the Node.js implementation are irregular - // and make the implementation difficult to extend and maintain. We - // should bring this stuff inline with typical thrift I/O stack - // operation soon. - // --ra - var service_name = this.seqId2Service[header.rseqid]; - if (service_name) { - client = this.client[service_name]; - delete this.seqId2Service[header.rseqid]; - } - /*jshint -W083 */ - client._reqs[dummy_seqid] = function(err, success) { - transport_with_data.commitPosition(); - var clientCallback = client._reqs[header.rseqid]; - delete client._reqs[header.rseqid]; - if (clientCallback) { - clientCallback(err, success); - } - }; - /*jshint +W083 */ - if (client['recv_' + header.fname]) { - client['recv_' + header.fname](proto, header.mtype, dummy_seqid); - } else { - delete client._reqs[dummy_seqid]; - this.emit("error", - new thrift.TApplicationException( - thrift.TApplicationExceptionType.WRONG_METHOD_NAME, - "Received a response to an unknown RPC function")); - } - } - } catch (e) { - if (e instanceof InputBufferUnderrunError) { - transport_with_data.rollbackPosition(); - } else { - throw e; - } - } -}; - -WSConnection.prototype.__onData = function(data) { - if (Object.prototype.toString.call(data) === "[object ArrayBuffer]") { - data = new Uint8Array(data); - } - var buf = new Buffer(data); - this.transport.receiver(this.__decodeCallback.bind(this))(buf); - -}; - -WSConnection.prototype.__onMessage = function(evt) { - this.__onData(evt.data); -}; - -WSConnection.prototype.__onError = function(evt) { - this.emit("error", evt); - this.socket.close(); -}; - -/** - * Returns true if the transport is open - * @readonly - * @returns {boolean} - */ -WSConnection.prototype.isOpen = function() { - return this.socket && this.socket.readyState === this.socket.OPEN; -}; - -/** - * Opens the transport connection - */ -WSConnection.prototype.open = function() { - //If OPEN/CONNECTING/CLOSING ignore additional opens - if (this.socket && this.socket.readyState !== this.socket.CLOSED) { - return; - } - //If there is no socket or the socket is closed: - if (jsEnv.isBrowser) { - this.socket = new WebSocket(this.uri()); - } else { - this.socket = new WebSocket(this.uri(), "", this.wsOptions); - } - this.socket.binaryType = 'arraybuffer'; - this.socket.onopen = this.__onOpen.bind(this); - this.socket.onmessage = this.__onMessage.bind(this); - this.socket.onerror = this.__onError.bind(this); - this.socket.onclose = this.__onClose.bind(this); -}; - -/** - * Closes the transport connection - */ -WSConnection.prototype.close = function() { - this.socket.close(); -}; - -/** - * Return URI for the connection - * @returns {string} URI - */ -WSConnection.prototype.uri = function() { - var schema = this.secure ? 'wss' : 'ws'; - var port = ''; - var path = this.path || '/'; - var host = this.host; - - // avoid port if default for schema - if (this.port && (('wss' === schema && this.port !== 443) || - ('ws' === schema && this.port !== 80))) { - port = ':' + this.port; - } - - return schema + '://' + host + port + path; -}; - -/** - * Writes Thrift message data to the connection - * @param {Buffer} data - A Node.js Buffer containing the data to write - * @returns {void} No return value. - * @event {error} the "error" event is raised upon request failure passing the - * Node.js error object to the listener. - */ -WSConnection.prototype.write = function(data) { - if (this.isOpen()) { - //Send data and register a callback to invoke the client callback - this.socket.send(data); - } else { - //Queue the send to go out __onOpen - this.send_pending.push(data); - } -}; - -/** - * Creates a new WSConnection object, used by Thrift clients to connect - * to Thrift HTTP based servers. - * @param {string} host - The host name or IP to connect to. - * @param {number} port - The TCP port to connect to. - * @param {WSConnectOptions} options - The configuration options to use. - * @returns {WSConnection} The connection object. - * @see {@link WSConnectOptions} - */ -exports.createWSConnection = function(host, port, options) { - return new WSConnection(host, port, options); -}; - -exports.createWSClient = createClient; diff --git a/src/thrift/ws_transport.js b/src/thrift/ws_transport.js deleted file mode 100644 index 4cf62b9..0000000 --- a/src/thrift/ws_transport.js +++ /dev/null @@ -1,206 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -var log = require('./log'); - -module.exports = TWebSocketTransport; - -/** - * Constructor Function for the WebSocket transport. - * @constructor - * @param {string} [url] - The URL to connect to. - * @classdesc The Apache Thrift Transport layer performs byte level I/O - * between RPC clients and servers. The JavaScript TWebSocketTransport object - * uses the WebSocket protocol. Target servers must implement WebSocket. - * (see: node.js example server_http.js). - * @example - * var transport = new Thrift.TWebSocketTransport("http://localhost:8585"); - */ -function TWebSocketTransport(url) { - this.__reset(url); -}; - - -TWebSocketTransport.prototype.__reset = function(url) { - this.url = url; //Where to connect - this.socket = null; //The web socket - this.callbacks = []; //Pending callbacks - this.send_pending = []; //Buffers/Callback pairs waiting to be sent - this.send_buf = ''; //Outbound data, immutable until sent - this.recv_buf = ''; //Inbound data - this.rb_wpos = 0; //Network write position in receive buffer - this.rb_rpos = 0; //Client read position in receive buffer -}; - -/** - * Sends the current WS request and registers callback. The async - * parameter is ignored (WS flush is always async) and the callback - * function parameter is required. - * @param {object} async - Ignored. - * @param {object} callback - The client completion callback. - * @returns {undefined|string} Nothing (undefined) - */ -TWebSocketTransport.prototype.flush = function(async, callback) { - var self = this; - if (this.isOpen()) { - //Send data and register a callback to invoke the client callback - this.socket.send(this.send_buf); - this.callbacks.push((function() { - var clientCallback = callback; - return function(msg) { - self.setRecvBuffer(msg); - clientCallback(); - }; - }())); - } else { - //Queue the send to go out __onOpen - this.send_pending.push({ - buf: this.send_buf, - cb: callback - }); - } -}; - -TWebSocketTransport.prototype.__onOpen = function() { - var self = this; - if (this.send_pending.length > 0) { - //If the user made calls before the connection was fully - //open, send them now - this.send_pending.forEach(function(elem) { - self.socket.send(elem.buf); - self.callbacks.push((function() { - var clientCallback = elem.cb; - return function(msg) { - self.setRecvBuffer(msg); - clientCallback(); - }; - }())); - }); - this.send_pending = []; - } -}; - -TWebSocketTransport.prototype.__onClose = function(evt) { - this.__reset(this.url); -}; - -TWebSocketTransport.prototype.__onMessage = function(evt) { - if (this.callbacks.length) { - this.callbacks.shift()(evt.data); - } -}; - -TWebSocketTransport.prototype.__onError = function(evt) { - log.error('websocket: ' + evt.toString()); - this.socket.close(); -}; - -/** - * Sets the buffer to use when receiving server responses. - * @param {string} buf - The buffer to receive server responses. - */ -TWebSocketTransport.prototype.setRecvBuffer = function(buf) { - this.recv_buf = buf; - this.recv_buf_sz = this.recv_buf.length; - this.wpos = this.recv_buf.length; - this.rpos = 0; -}; - -/** - * Returns true if the transport is open - * @readonly - * @returns {boolean} - */ -TWebSocketTransport.prototype.isOpen = function() { - return this.socket && this.socket.readyState == this.socket.OPEN; -}; - -/** - * Opens the transport connection - */ -TWebSocketTransport.prototype.open = function() { - //If OPEN/CONNECTING/CLOSING ignore additional opens - if (this.socket && this.socket.readyState != this.socket.CLOSED) { - return; - } - //If there is no socket or the socket is closed: - this.socket = new WebSocket(this.url); - this.socket.onopen = this.__onOpen.bind(this); - this.socket.onmessage = this.__onMessage.bind(this); - this.socket.onerror = this.__onError.bind(this); - this.socket.onclose = this.__onClose.bind(this); -}; - -/** - * Closes the transport connection - */ -TWebSocketTransport.prototype.close = function() { - this.socket.close(); -}; - -/** - * Returns the specified number of characters from the response - * buffer. - * @param {number} len - The number of characters to return. - * @returns {string} Characters sent by the server. - */ -TWebSocketTransport.prototype.read = function(len) { - var avail = this.wpos - this.rpos; - - if (avail === 0) { - return ''; - } - - var give = len; - - if (avail < len) { - give = avail; - } - - var ret = this.read_buf.substr(this.rpos, give); - this.rpos += give; - - //clear buf when complete? - return ret; -}; - -/** - * Returns the entire response buffer. - * @returns {string} Characters sent by the server. - */ -TWebSocketTransport.prototype.readAll = function() { - return this.recv_buf; -}; - -/** - * Sets the send buffer to buf. - * @param {string} buf - The buffer to send. - */ -TWebSocketTransport.prototype.write = function(buf) { - this.send_buf = buf; -}; - -/** - * Returns the send buffer. - * @readonly - * @returns {string} The send buffer. - */ -TWebSocketTransport.prototype.getSendBuffer = function() { - return this.send_buf; -}; diff --git a/src/thrift/xhr_connection.js b/src/thrift/xhr_connection.js deleted file mode 100644 index 6459c90..0000000 --- a/src/thrift/xhr_connection.js +++ /dev/null @@ -1,280 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -var util = require('util'); -var EventEmitter = require("events").EventEmitter; -var thrift = require('./thrift'); - -var TBufferedTransport = require('./buffered_transport'); -var TJSONProtocol = require('./json_protocol'); -var InputBufferUnderrunError = require('./input_buffer_underrun_error'); - -var createClient = require('./create_client'); - -exports.XHRConnection = XHRConnection; - -/** - * Constructor Function for the XHR Connection. - * If you do not specify a host and port then XHRConnection will default to the - * host and port of the page from which this javascript is served. - * @constructor - * @param {string} [url] - The URL to connect to. - * @classdesc TXHRConnection objects provide Thrift end point transport - * semantics implemented using XHR. - * @example - * var transport = new Thrift.TXHRConnection('localhost', 9099, {}); - */ -function XHRConnection(host, port, options) { - this.options = options || {}; - this.wpos = 0; - this.rpos = 0; - this.useCORS = (options && options.useCORS); - this.send_buf = ''; - this.recv_buf = ''; - this.transport = options.transport || TBufferedTransport; - this.protocol = options.protocol || TJSONProtocol; - this.headers = options.headers || {}; - - host = host || window.location.host; - port = port || window.location.port; - var prefix = options.https ? 'https://' : 'http://'; - var path = options.path || '/'; - - if (port === '') { - port = undefined; - } - - if (!port || port === 80 || port === '80') { - this.url = prefix + host + path; - } else { - this.url = prefix + host + ':' + port + path; - } - - //The sequence map is used to map seqIDs back to the - // calling client in multiplexed scenarios - this.seqId2Service = {}; -}; - -util.inherits(XHRConnection, EventEmitter); - -/** -* Gets the browser specific XmlHttpRequest Object. -* @returns {object} the browser XHR interface object -*/ -XHRConnection.prototype.getXmlHttpRequestObject = function() { - try { return new XMLHttpRequest(); } catch (e1) { } - try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch (e2) { } - try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch (e3) { } - - throw "Your browser doesn't support XHR."; -}; - -/** - * Sends the current XRH request if the transport was created with a URL - * and the async parameter is false. If the transport was not created with - * a URL, or the async parameter is True and no callback is provided, or - * the URL is an empty string, the current send buffer is returned. - * @param {object} async - If true the current send buffer is returned. - * @param {object} callback - Optional async completion callback - * @returns {undefined|string} Nothing or the current send buffer. - * @throws {string} If XHR fails. - */ -XHRConnection.prototype.flush = function() { - var self = this; - if (this.url === undefined || this.url === '') { - return this.send_buf; - } - - var xreq = this.getXmlHttpRequestObject(); - - if (xreq.overrideMimeType) { - xreq.overrideMimeType('application/json'); - } - - xreq.onreadystatechange = function() { - if (this.readyState == 4 && this.status == 200) { - self.setRecvBuffer(this.responseText); - } - }; - - xreq.open('POST', this.url, true); - - Object.keys(this.headers).forEach(function(headerKey) { - xreq.setRequestHeader(headerKey, self.headers[headerKey]); - }); - - xreq.send(this.send_buf); -}; - -/** - * Sets the buffer to provide the protocol when deserializing. - * @param {string} buf - The buffer to supply the protocol. - */ -XHRConnection.prototype.setRecvBuffer = function(buf) { - this.recv_buf = buf; - this.recv_buf_sz = this.recv_buf.length; - this.wpos = this.recv_buf.length; - this.rpos = 0; - - if (Object.prototype.toString.call(buf) == "[object ArrayBuffer]") { - var data = new Uint8Array(buf); - } - var thing = new Buffer(data || buf); - - this.transport.receiver(this.__decodeCallback.bind(this))(thing); - -}; - -XHRConnection.prototype.__decodeCallback = function(transport_with_data) { - var proto = new this.protocol(transport_with_data); - try { - while (true) { - var header = proto.readMessageBegin(); - var dummy_seqid = header.rseqid * -1; - var client = this.client; - //The Multiplexed Protocol stores a hash of seqid to service names - // in seqId2Service. If the SeqId is found in the hash we need to - // lookup the appropriate client for this call. - // The client var is a single client object when not multiplexing, - // when using multiplexing it is a service name keyed hash of client - // objects. - //NOTE: The 2 way interdependencies between protocols, transports, - // connections and clients in the Node.js implementation are irregular - // and make the implementation difficult to extend and maintain. We - // should bring this stuff inline with typical thrift I/O stack - // operation soon. - // --ra - var service_name = this.seqId2Service[header.rseqid]; - if (service_name) { - client = this.client[service_name]; - delete this.seqId2Service[header.rseqid]; - } - /*jshint -W083 */ - client._reqs[dummy_seqid] = function(err, success) { - transport_with_data.commitPosition(); - var clientCallback = client._reqs[header.rseqid]; - delete client._reqs[header.rseqid]; - if (clientCallback) { - clientCallback(err, success); - } - }; - /*jshint +W083 */ - if (client['recv_' + header.fname]) { - client['recv_' + header.fname](proto, header.mtype, dummy_seqid); - } else { - delete client._reqs[dummy_seqid]; - this.emit("error", - new thrift.TApplicationException( - thrift.TApplicationExceptionType.WRONG_METHOD_NAME, - "Received a response to an unknown RPC function")); - } - } - } catch (e) { - if (e instanceof InputBufferUnderrunError) { - transport_with_data.rollbackPosition(); - } else { - throw e; - } - } -}; - -/** - * Returns true if the transport is open, XHR always returns true. - * @readonly - * @returns {boolean} Always True. - */ -XHRConnection.prototype.isOpen = function() { - return true; -}; - -/** - * Opens the transport connection, with XHR this is a nop. - */ -XHRConnection.prototype.open = function() {}; - -/** - * Closes the transport connection, with XHR this is a nop. - */ -XHRConnection.prototype.close = function() {}; - -/** - * Returns the specified number of characters from the response - * buffer. - * @param {number} len - The number of characters to return. - * @returns {string} Characters sent by the server. - */ -XHRConnection.prototype.read = function(len) { - var avail = this.wpos - this.rpos; - - if (avail === 0) { - return ''; - } - - var give = len; - - if (avail < len) { - give = avail; - } - - var ret = this.read_buf.substr(this.rpos, give); - this.rpos += give; - - //clear buf when complete? - return ret; -}; - -/** - * Returns the entire response buffer. - * @returns {string} Characters sent by the server. - */ -XHRConnection.prototype.readAll = function() { - return this.recv_buf; -}; - -/** - * Sets the send buffer to buf. - * @param {string} buf - The buffer to send. - */ -XHRConnection.prototype.write = function(buf) { - this.send_buf = buf; - this.flush(); -}; - -/** - * Returns the send buffer. - * @readonly - * @returns {string} The send buffer. - */ -XHRConnection.prototype.getSendBuffer = function() { - return this.send_buf; -}; - -/** - * Creates a new TXHRTransport object, used by Thrift clients to connect - * to Thrift HTTP based servers. - * @param {string} host - The host name or IP to connect to. - * @param {number} port - The TCP port to connect to. - * @param {XHRConnectOptions} options - The configuration options to use. - * @returns {XHRConnection} The connection object. - * @see {@link XHRConnectOptions} - */ -exports.createXHRConnection = function(host, port, options) { - return new XHRConnection(host, port, options); -}; - -exports.createXHRClient = createClient; diff --git a/tests/nebula.test.ts b/tests/nebula.test.ts deleted file mode 100644 index 23b2ecc..0000000 --- a/tests/nebula.test.ts +++ /dev/null @@ -1,120 +0,0 @@ -/* eslint-disable max-len */ -/** - * Created by Wu Jian Ping on - 2021/06/09. - */ - -import createClient, { ClientOption } from '../dist' - -import { expect } from 'chai' - -const nebulaServer: ClientOption = { - servers: ['127.0.0.1:9669'], - userName: 'root', - password: 'nebula', - space: 'nebula_node', - pingInterval: 5000, - poolSize: 1 -} - -const commands = { - cmd1: 'get subgraph with prop 2 steps from "p001" yield vertices as nodes, edges as relationships', - cmd2: 'fetch prop on company "c001" yield properties(vertex) as node', - cmd3: 'go from "c001" over employee yield properties($^) as a, properties($$) as b, properties(edge) as p', - cmd4: 'find noloop path with prop from "p001" to "p002" over * yield path as p', - cmd5: 'RETURN list[1, 2, 3] AS a', - cmd6: 'UNWIND list[list[1, 2, 3], list[2, 3, 4]] as a RETURN a', - cmd7: 'RETURN set{1, 2, 3} AS a', - cmd8: 'RETURN map{a: LIST[1,2], b: SET{1,2,1}, c: "hee"} as a' -} - -describe('nebula', () => { - it('test-case-1', async () => { - const client = createClient(nebulaServer) - const response1 = await client.execute(commands.cmd1) - - expect(response1.data?.nodes?.length).greaterThan(0) - expect(response1.data?.relationships?.length).greaterThan(0) - - await client.close() - }) - - it('test-case-2', async () => { - const client = createClient(nebulaServer) - - const response1 = await client.execute(commands.cmd2) - - expect(response1.data?.node?.length).greaterThan(0) - - await client.close() - }) - - it('test-case-3', async () => { - const client = createClient(nebulaServer) - - const response1 = await client.execute(commands.cmd3) - - expect(response1.data?.a?.length).greaterThan(0) - expect(response1.data?.b?.length).greaterThan(0) - expect(response1.data?.p?.length).greaterThan(0) - - await client.close() - }) - - it('test-case-4', async () => { - const client = createClient(nebulaServer) - - const response1 = await client.execute(commands.cmd4) - - expect(response1.data?.p?.length).greaterThan(0) - - await client.close() - }) - - it('test-case-5-list', async () => { - const client = createClient(nebulaServer) - - const response1 = await client.execute(commands.cmd5) - - expect(response1.data?.a).deep.equal([[1, 2, 3]]) - - await client.close() - }) - - it('test-case-6-list', async () => { - const client = createClient(nebulaServer) - - const response1 = await client.execute(commands.cmd6) - - expect(response1.data?.a).deep.equal([[1, 2, 3], [2, 3, 4]]) - - await client.close() - }) - - it('test-case-7-set', async () => { - const client = createClient(nebulaServer) - - const response1 = await client.execute(commands.cmd7) - - expect(response1.data?.a?.length).to.equal(1) - expect(response1.data?.a[0]?.length).to.equal(3) - - await client.close() - }) - - it('test-case-8-map', async () => { - const client = createClient(nebulaServer) - - const response1 = await client.execute(commands.cmd8) - - expect(response1.data?.a?.length).to.equal(1) - expect(response1.data?.a[0]?.a).to.deep.equal([1, 2]) - expect(response1.data?.a[0]?.b?.length).to.equal(2) - expect(response1.data?.a[0]?.c).to.equal('hee') - - await client.close() - }) - - after(async () => { - process.exit() - }) -}) diff --git a/tools/build-addon.mjs b/tools/build-addon.mjs new file mode 100644 index 0000000..8908c5c --- /dev/null +++ b/tools/build-addon.mjs @@ -0,0 +1,18 @@ +import { execSync } from 'node:child_process'; +import path from 'node:path'; +import fs from 'node:fs' +import chalk from 'chalk'; + +const __dirname = new URL('.', import.meta.url).pathname; + +const cwd = path.resolve(__dirname, '../src/native/'); +console.log(chalk.blue('Building native module...')); +execSync('npx node-gyp rebuild', { cwd }); +console.log(chalk.green('Built native module successfully.')); + +const addonPath = path.resolve(cwd, 'build'); +const newPath = path.resolve(__dirname, '../build'); +if (fs.existsSync(newPath)) { + fs.rmSync(newPath, { recursive: true, force: true }); +} +fs.renameSync(addonPath, newPath); diff --git a/tools/build.js b/tools/build.js deleted file mode 100644 index 4a870e2..0000000 --- a/tools/build.js +++ /dev/null @@ -1,118 +0,0 @@ -/** - * Created by Wu Jian Ping on - 2021/01/07. - */ - -import _ from 'lodash' -import path from 'path' -import glob from 'glob' -import fs from 'fs' - -import run from './run' -import { getBuildStage0Dir, getBuildTsConfigFile, runNpmCli, getBuildStage1Dir, getModuleDistDir } from './libs/utils' -import clean, { cleanTemp } from './clean' -import { copyFile, makeDir } from './libs/fs' -import { copyDeclarationFiles, copyMarkdown, copyNative, copyThrift, generatePackageJson, copyNpmIngoreFile } from './copy' - -const fsPromise = fs.promises - -const buildStage0 = { - name: 'stage-0', - func: async () => { - const buildDir = getBuildStage0Dir() - await makeDir(buildDir) - const tsConfigFile = path.join(getBuildStage0Dir(), '.tsconfig.json') - await copyFile(getBuildTsConfigFile(), tsConfigFile) - - await runNpmCli('tsc', - [ - '--project', - tsConfigFile, - '--outDir', - buildDir - ] - ) - } -} - -const buildStage1 = { - name: 'stage-1', - func: async () => { - await runNpmCli('babel', [ - getBuildStage0Dir(), - '-d', - getBuildStage1Dir(), - '--config-file', - './tools/configs/babel.config.json', - '--source-maps', - '--no-babelrc' - ]) - } -} - -const buildStage2 = { - name: 'stage-2', - func: async () => { - const sourceMaps = glob.sync(path.join(getModuleDistDir(), '**', '*.js.map')) - - const tasks = _.map(sourceMaps, async file => { - const content = await fsPromise.readFile(file, { encoding: 'utf-8' }) - const obj = JSON.parse(content) - if (_.isArray(obj?.sources) && obj.sources.length > 0) { - obj.sources = _.map(obj.sources, o => path.basename(o)) - await fsPromise.writeFile(file, JSON.stringify(obj)) - } - }) - - await Promise.all(tasks) - } -} - -const build = { - name: 'build', - func: async () => { - // clean - await run(clean) - - // stage-0: tsc - await run(buildStage0) - - // stage-1: babel - await run(buildStage1) - - // copy ts declaration files - await run(copyDeclarationFiles) - - // copy markdown file(s) - await run(copyMarkdown) - - // copy native source code - await run(copyNative) - - // copy modified thrift - await run(copyThrift) - - // generate package.json - await run(generatePackageJson) - - // fix source map for compatible with source-map-support module - await run(buildStage2) - - // build native module - await runNpmCli('node-gyp', ['rebuild'], { cwd: getModuleDistDir() }, true) - - // add npm ignore file - await run(copyNpmIngoreFile) - - // clean .tmp - await cleanTemp() - } -} - -export { - buildStage0, - buildStage1, - buildStage2, - build -} - -export default build diff --git a/tools/clean.js b/tools/clean.js deleted file mode 100644 index 8575045..0000000 --- a/tools/clean.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * Created by Wu Jian Ping on - 2021/01/07. - */ - -import { cleanDir } from './libs/fs' -import { getCacheDir } from './libs/utils' - -const cleanDist = async () => { - await cleanDir('./dist', { - nosort: true, - dot: true - }) -} - -const cleanTemp = async () => { - await cleanDir('./.tmp', { - nosort: true, - dot: true - }) -} - -const cleanCache = async () => { - await cleanDir(getCacheDir(), { - nosort: true, - dot: true - }) -} - -const cleanNYC = async () => { - await cleanDir('./coverage', { - nosort: true, - dot: true - }) - - await cleanDir('./.nyc_output', { - nosort: true, - dot: true - }) -} - -const clean = async () => { - await cleanTemp() - await cleanDist() - await cleanCache() - await cleanNYC() -} - -export { - cleanTemp, - cleanDist, - cleanCache -} - -export default { - name: 'clean', - func: clean -} diff --git a/tools/configs/babel.config.json b/tools/configs/babel.config.json deleted file mode 100644 index c36b44b..0000000 --- a/tools/configs/babel.config.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "presets": [ - [ - "@babel/env", - { - "modules": "auto", - "debug": false, - "targets": { - "node": true - }, - "useBuiltIns": "usage", - "corejs": { - "version": 2, - "proposals": true - } - } - ], - [ - "@babel/preset-typescript", - { - "allowNamespaces": true, - "allowDeclareFields": true - } - ] - ], - "plugins": [ - "add-module-exports", - "@babel/plugin-proposal-function-bind", - "@babel/plugin-proposal-export-default-from", - "@babel/plugin-proposal-logical-assignment-operators", - [ - "@babel/plugin-proposal-optional-chaining", - { - "loose": false - } - ], - [ - "@babel/plugin-proposal-pipeline-operator", - { - "proposal": "minimal" - } - ], - [ - "@babel/plugin-proposal-nullish-coalescing-operator", - { - "loose": false - } - ], - "@babel/plugin-proposal-do-expressions", - [ - "@babel/plugin-proposal-decorators", - { - "legacy": true - } - ], - "@babel/plugin-proposal-function-sent", - "@babel/plugin-proposal-export-namespace-from", - "@babel/plugin-proposal-numeric-separator", - "@babel/plugin-proposal-throw-expressions", - "@babel/plugin-syntax-dynamic-import", - "@babel/plugin-syntax-import-meta", - [ - "@babel/plugin-proposal-class-properties", - { - "loose": false - } - ], - "@babel/plugin-proposal-json-strings" - ], - "generatorOpts": { - "comments": false - } -} diff --git a/tools/configs/build.tsconfig.json b/tools/configs/build.tsconfig.json deleted file mode 100644 index eddf9fc..0000000 --- a/tools/configs/build.tsconfig.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "include": ["../../src/**/*"], - "compileOnSave": false, - "compilerOptions": { - "module": "esnext", - "declaration": true, - "target": "es2020", - "lib": ["es6"], - "skipLibCheck": true, - "sourceMap": true, - "allowJs": true, - "jsx": "preserve", - "moduleResolution": "node", - "noImplicitAny": false, - "allowSyntheticDefaultImports": true, - "noUnusedParameters": false, - "preserveConstEnums": true, - "experimentalDecorators": true, - "newLine": "lf" - }, - "exclude": [ - "node_modules", - "../../src/thrift/*" - ] -} diff --git a/tools/configs/coverage.tsconfig.json b/tools/configs/coverage.tsconfig.json deleted file mode 100644 index f3acfe0..0000000 --- a/tools/configs/coverage.tsconfig.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "include": ["../tests/*.test.ts", "../../src/*"], - "compileOnSave": false, - "compilerOptions": { - "module": "esnext", - "declaration": true, - "target": "es2020", - "lib": ["es6"], - "skipLibCheck": true, - "sourceMap": true, - "allowJs": true, - "jsx": "preserve", - "moduleResolution": "node", - "noImplicitAny": false, - "allowSyntheticDefaultImports": true, - "noUnusedParameters": false, - "preserveConstEnums": true, - "experimentalDecorators": true, - "newLine": "lf" - }, - "exclude": [ - "node_modules" - ] -} diff --git a/tools/copy.js b/tools/copy.js deleted file mode 100644 index cb9e508..0000000 --- a/tools/copy.js +++ /dev/null @@ -1,76 +0,0 @@ -/** - * Created by Wu Jian Ping on - 2021/01/07. - */ - -import { makeDir, copyDir, writeFile, copyFile } from './libs/fs' -import { getModuleDir, getModuleDistDir, getBuildStage0Dir, getModuleSourceDir } from './libs/utils' -import path from 'path' -import _ from 'lodash' - -/** - * copy declaration files - */ -const copyDeclarationFiles = { - name: 'copy declaration filelse(s)', - func: async () => { - await makeDir(getModuleDistDir()) - // declaration files generated at stage-0 - await copyDir(getBuildStage0Dir(), getModuleDistDir(), '**/*.d.ts') - } -} - -/** - * copy markdown - */ -const copyMarkdown = { - name: 'copy markdown file(s)', - func: async () => { - await makeDir(getModuleDistDir()) - await copyDir(getModuleDir(), getModuleDistDir(), '*.md') - } -} - -const copyNative = { - name: 'copy C++ source file(s)', - func: async () => { - await makeDir(getModuleDistDir()) - await copyDir(getModuleSourceDir(), getModuleDistDir(), 'binding.gyp') - await copyDir(getModuleSourceDir(), getModuleDistDir(), '**/*.cc') - await copyDir(getModuleSourceDir(), getModuleDistDir(), '**/*.h') - await copyDir(getModuleSourceDir(), getModuleDistDir(), '**/*.cpp') - } -} - -const copyThrift = { - name: 'copy thrift', - func: async () => { - await makeDir(getModuleDistDir()) - await copyDir(path.join(getModuleSourceDir(), 'thrift'), path.join(getModuleDistDir(), 'thrift')) - } -} - -const generatePackageJson = { - name: 'generate package.json', - func: async () => { - await makeDir(getModuleDistDir()) - const packageJson = require('../package.json') - await writeFile(path.join(getModuleDistDir(), 'package.json'), JSON.stringify(_.omit(packageJson, ['scripts', 'devDependencies']), null, 2)) - } -} - -const copyNpmIngoreFile = { - name: 'copy npm ignore file', - func: async () => { - await makeDir(getModuleDistDir()) - await copyFile(path.join(process.cwd(), '.npmignore'), path.join(getModuleDistDir(), '.npmignore')) - } -} - -export { - copyDeclarationFiles, - copyMarkdown, - copyNative, - copyThrift, - generatePackageJson, - copyNpmIngoreFile -} diff --git a/tools/coverage.js b/tools/coverage.js deleted file mode 100644 index dc5967d..0000000 --- a/tools/coverage.js +++ /dev/null @@ -1,69 +0,0 @@ -/** - * Created by Wu Jian Ping on - 2021/03/04. - */ - -import { cleanDir, copyDir, copyFile, makeDir } from './libs/fs' -import { cowsay2, getConverageTsConfigFile, getModuleDir, getModuleDistDir, getModuleSourceDir, getModuleTempDir, runNpmCli } from './libs/utils' - -import build from './build' -import glob from 'glob' -// import open from 'open' -import path from 'path' -import run from './run' - -const cleanNYC = async () => { - await cleanDir('./coverage', { - nosort: true, - dot: true - }) - - await cleanDir('./.nyc_output', { - nosort: true, - dot: true - }) -} - -const tsc = async () => { - const buildDir = getModuleTempDir() - await makeDir(buildDir) - const tsConfigFile = path.join(buildDir, '.tsconfig.json') - await copyFile(getConverageTsConfigFile(), tsConfigFile) - - await runNpmCli('tsc', - [ - '--project', - tsConfigFile, - '--outDir', - path.join(buildDir, 'tests') - ], - { cwd: getModuleDir() }) -} - -const coverage = { - name: 'coverage', - func: async () => { - cowsay2('Starting generate coverage report...') - - await cleanNYC() - await run(build) - await tsc() - await copyDir(getModuleDistDir(), path.join(getModuleTempDir(), 'dist')) - await copyDir(getModuleSourceDir(), path.join(getModuleTempDir(), 'dist'), '**/*.ts') - const files = glob.sync(path.join(getModuleTempDir(), 'tests', '*.test.js')) - - await runNpmCli('nyc', [ - '--silent', - 'mocha', - `--config=${path.join(process.cwd(), '.mocharc.nyc.json')}`, - ...files - ]) - - await runNpmCli('nyc', ['report']) - - // open(path.join(process.cwd(), 'coverage', 'index.html')) - - return Promise.resolve() - } -} - -export default coverage diff --git a/tools/libs/fs.js b/tools/libs/fs.js deleted file mode 100644 index 05b8ad6..0000000 --- a/tools/libs/fs.js +++ /dev/null @@ -1,89 +0,0 @@ -/** - * Created by Wu Jian Ping on - 2021/01/07. - */ - -import fs from 'fs' -import path from 'path' -import glob from 'glob' -import mkdirp from 'mkdirp' -import rimraf from 'rimraf' - -const readFile = file => new Promise((resolve, reject) => { - fs.readFile(file, 'utf8', (err, data) => (err ? reject(err) : resolve(data))) -}) - -const writeFile = (file, contents) => new Promise((resolve, reject) => { - fs.writeFile(file, contents, 'utf8', err => (err ? reject(err) : resolve())) -}) - -const copyFile = (source, target) => new Promise((resolve, reject) => { - const stats = fs.statSync(source) - if (stats && stats.isDirectory()) { // if dir return - resolve() - return - } - - let cbCalled = false - - function done(err) { - if (!cbCalled) { - cbCalled = true - if (err) { - reject(err) - } else { - resolve() - } - } - } - - const rd = fs.createReadStream(source) - rd.on('error', err => done(err)) - const wr = fs.createWriteStream(target) - wr.on('error', err => done(err)) - wr.on('close', err => done(err)) - rd.pipe(wr) -}) - -const readDir = (pattern, options) => new Promise((resolve, reject) => glob(pattern, options, (err, result) => (err ? reject(err) : resolve(result)))) - -const makeDir = name => new Promise((resolve, reject) => { - mkdirp(name, err => (err ? reject(err) : resolve())) -}) - -const copyDir = async (source, target, parten = '**/*.*') => { - const dirs = await readDir(parten, { - cwd: source, - nosort: true, - dot: true - }) - await Promise.all(dirs.map(async (dir) => { - const from = path.resolve(source, dir) - const to = path.resolve(target, dir) - await makeDir(path.dirname(to)) - await copyFile(from, to) - })) -} - -const cleanDir = (pattern, options) => new Promise((resolve, reject) => rimraf(pattern, { - glob: options -}, (err, result) => (err ? reject(err) : resolve(result)))) - -export { - readFile, - writeFile, - copyFile, - readDir, - makeDir, - copyDir, - cleanDir -} - -export default { - readFile, - writeFile, - copyFile, - readDir, - makeDir, - copyDir, - cleanDir -} diff --git a/tools/libs/utils.js b/tools/libs/utils.js deleted file mode 100644 index 8c38c67..0000000 --- a/tools/libs/utils.js +++ /dev/null @@ -1,173 +0,0 @@ -/** - * Created by Wu Jian Ping on - 2021/01/06. - */ - -import chalk from 'chalk' -import path from 'path' -import { spawn } from 'child_process' -import _ from 'lodash' -import which from 'which' -import cowsay from 'cowsay' - -const formatTime = (time) => { - return time.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, '[$1] ') -} - -const print = (msg, colorFunc) => { - if (_.isString(msg) && msg) { - if (msg.endsWith('\r\n')) { - msg = msg.substr(0, msg.length - 2) - } - if (msg.endsWith('\n')) { - msg = msg.substr(0, msg.length - 1) - } - msg = msg.replace(/\r\n/ig, '\n') - } - msg = (msg ?? '').toString() - const messageList = _.split(msg, '\n') - for (let i = 0; i < messageList.length; ++i) { - if (messageList[i]) { - console.log(`${formatTime(new Date())}${colorFunc(messageList[i])}`) //eslint-disable-line - } - } -} - -/** - * logger - */ -const logger = { - success: (msg) => { - print(msg, chalk.greenBright) - }, - error: (msg) => { - print(msg, chalk.redBright) - }, - info: (msg) => { - print(msg, chalk.blueBright) - }, - debug: (msg) => { - print(msg, chalk.yellowBright) - } -} - -/** - * get command path - * @param {String} cliName - */ -const getNpmCli = cliName => { - const cmd = process.platform === 'win32' ? `${cliName}.cmd` : cliName - return path.join(process.cwd(), 'node_modules', '.bin', cmd) -} - -const getModuleDir = () => { - return process.cwd() -} - -const getModuleSourceDir = () => { - return path.join(getModuleDir(), 'src') -} - -const getModuleDistDir = () => { - return path.join(getModuleDir(), 'dist') -} - -const getModuleTempDir = () => { - return path.join(getModuleDir(), '.tmp') -} - -const getBuildStageDir = (stage) => { - return path.join(getModuleDir(), '.tmp', stage) -} - -const getBuildStage0Dir = () => { - return getBuildStageDir('stage-0') -} - -const getBuildStage1Dir = () => { - return getModuleDistDir() -} - -const getBuildTsConfigFile = () => { - return path.join(process.cwd(), 'tools', 'configs', 'build.tsconfig.json') -} - -const getConverageTsConfigFile = () => { - return path.join(process.cwd(), 'tools', 'configs', 'coverage.tsconfig.json') -} - -const runNpmCli = (cli, params, options = {}, global = false, silence = false, ignoreExitCode = false) => { - return new Promise((resolve, reject) => { - let bin = '' - - if (global) { - bin = path.basename(which.sync(cli)) - // bin = which.sync(cli) - } else { - bin = getNpmCli(cli) - } - - if (!silence) { - options.stdio = 'inherit' - } - - const exec = spawn(bin, params, options) - - exec.on('close', (code) => { - if (ignoreExitCode) { - resolve() - } else { - if (code === 0) { - resolve() - } else { - reject(new Error(`child process exited with code ${code}`)) - } - } - }) - }) -} - -// get babel cache dir -const getCacheDir = () => { - return path.join(process.cwd(), 'node_modules', '.cache') -} - -const cowsay2 = message => { - console.log(cowsay.say({ // eslint-disable-line - text: message - })) -} - - -export default { - logger, - getNpmCli, - getModuleDir, - getModuleSourceDir, - getModuleDistDir, - getModuleTempDir, - getBuildTsConfigFile, - getConverageTsConfigFile, - getBuildStageDir, - getBuildStage0Dir, - getBuildStage1Dir, - runNpmCli, - getCacheDir, - cowsay2 -} - -export { - logger, - getNpmCli, - getModuleDir, - getModuleSourceDir, - getModuleDistDir, - getModuleTempDir, - getBuildTsConfigFile, - getConverageTsConfigFile, - getBuildStageDir, - getBuildStage0Dir, - getBuildStage1Dir, - runNpmCli, - getCacheDir, - cowsay2 -} diff --git a/tools/run.js b/tools/run.js deleted file mode 100644 index 442cf7f..0000000 --- a/tools/run.js +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Created by Wu Jian Ping on 2017/3/20. - **/ - -import { logger } from './libs/utils' - -function run(task, options) { - const start = new Date() - logger.info(`Starting '${task.name}${options ? ` (${JSON.stringify(options)})` : ''}'...`) - return task.func(options).then(() => { - const end = new Date() - const time = end.getTime() - start.getTime() - logger.success(`Finished '${task.name}${options ? ` (${JSON.stringify(options)})` : ''}' after ${time} ms`) - }) -} - -if (require.main === module && process.argv.length > 2) { - delete require.cache[__filename] - const module = require(`./${process.argv[2]}.js`) - let task = module - if (task.default) { - task = module.default - } - run(task).catch((err) => { - logger.error(err.stack || err) // eslint-disable-line - process.exit(1) - }) -} - -export default run diff --git a/tools/test.js b/tools/test.js deleted file mode 100644 index 1684ff8..0000000 --- a/tools/test.js +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Created by Wu Jian Ping on - 2021/01/11. - */ - -import { getModuleDir, runNpmCli, cowsay2 } from './libs/utils' -import path from 'path' -import fs from 'fs' -import glob from 'glob' - -const test = { - name: 'test', - func: async () => { - const currentTestsDir = getModuleDir() - - if (fs.existsSync(currentTestsDir)) { - const files = glob.sync(path.join(currentTestsDir, 'tests', '**', '*.test.*')) - if (files.length > 0) { - cowsay2('Start testing...') - - await runNpmCli('mocha', [ - ...files - ]) - } - } - } -} - -export default test diff --git a/tsconfig.json b/tsconfig.json index cbbe6c0..b9feac1 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,18 +1,18 @@ { "compileOnSave": false, "compilerOptions": { - "outDir": "build", - "module": "esnext", - "target": "es6", - "lib": [ - "es6" - ], + "module": "ESNext", + "target": "ESNext", "sourceMap": true, "allowJs": true, "jsx": "preserve", + "declaration": true, + "declarationDir": "types", + "emitDeclarationOnly": true, "skipLibCheck": true, - "moduleResolution": "node", + "moduleResolution": "Node", "noImplicitAny": false, + "esModuleInterop": true, "allowSyntheticDefaultImports": true, "noUnusedLocals": true, "noUnusedParameters": false, @@ -21,6 +21,9 @@ "experimentalDecorators": true, "newLine": "lf" }, + "include": [ + "src/**/*" + ], "exclude": [ "node_modules" ] From fa7d0194aa83f71a57f95ba9e067dd3541eda553 Mon Sep 17 00:00:00 2001 From: Bruce Date: Tue, 24 Oct 2023 21:03:25 +0800 Subject: [PATCH 2/2] * build: node>=17 * refactor: test case --- .github/workflows/npm-publish.yml | 1 - .swcrc | 7 +- __tests__/nebula.test.ts | 192 ++++++++++++++---------------- __tests__/tsconfig.json | 4 + package-lock.json | 102 ++++++++-------- package.json | 4 +- 6 files changed, 154 insertions(+), 156 deletions(-) create mode 100644 __tests__/tsconfig.json diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 8c2c74e..1752d14 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -53,7 +53,6 @@ jobs: - name: Publish NPM run: | - cd dist npm publish env: NODE_AUTH_TOKEN: ${{secrets.npm_token}} diff --git a/.swcrc b/.swcrc index bf0aedc..7752dbf 100644 --- a/.swcrc +++ b/.swcrc @@ -13,8 +13,11 @@ }, "env": { "targets": { - "node": "18" - } + "node": "17" + }, + "mode": "usage", + "coreJs": "3.33.1", + "include": ["esnext.symbol.dispose", "esnext.symbol.async-dispose"] }, "module": { "type": "commonjs" diff --git a/__tests__/nebula.test.ts b/__tests__/nebula.test.ts index 870dba5..a218b0d 100644 --- a/__tests__/nebula.test.ts +++ b/__tests__/nebula.test.ts @@ -6,7 +6,7 @@ import createClient, { type ClientOption } from '../src'; import { describe, expect, test } from '@jest/globals'; -const nebulaServer: ClientOption = { +const defaultClientOption: ClientOption = { servers: ['127.0.0.1:9669'], userName: 'root', password: 'nebula', @@ -15,104 +15,94 @@ const nebulaServer: ClientOption = { poolSize: 1 } -const commands = { - cmd1: 'get subgraph with prop 2 steps from "p001" yield vertices as nodes, edges as relationships', - cmd2: 'fetch prop on company "c001" yield properties(vertex) as node', - cmd3: 'go from "c001" over employee yield properties($^) as a, properties($$) as b, properties(edge) as p', - cmd4: 'find noloop path with prop from "p001" to "p002" over * yield path as p', - cmd5: 'RETURN list[1, 2, 3] AS a', - cmd6: 'UNWIND list[list[1, 2, 3], list[2, 3, 4]] as a RETURN a', - cmd7: 'RETURN set{1, 2, 3} AS a', - cmd8: 'RETURN map{a: LIST[1,2], b: SET{1,2,1}, c: "hee"} as a' -} - -describe('nebula', () => { - test('test-case-1', async () => { - const client = createClient(nebulaServer); - const response1 = await client.execute(commands.cmd1); - - expect(response1.data?.nodes?.length).toBeGreaterThan(0); - expect(response1.data?.relationships?.length).toBeGreaterThan(0); - - await client.close(); - }); - - test('test-case-2', async () => { - const client = createClient(nebulaServer); - - const response1 = await client.execute(commands.cmd2); - - expect(response1.data?.node?.length).toBeGreaterThan(0); - - await client.close(); - }); - - test('test-case-3', async () => { - const client = createClient(nebulaServer); - - const response1 = await client.execute(commands.cmd3); - - expect(response1.data?.a?.length).toBeGreaterThan(0); - expect(response1.data?.b?.length).toBeGreaterThan(0); - expect(response1.data?.p?.length).toBeGreaterThan(0); - - await client.close(); - }); - - test('test-case-4', async () => { - const client = createClient(nebulaServer); - - const response1 = await client.execute(commands.cmd4); - - expect(response1.data?.p?.length).toBeGreaterThan(0); - - await client.close(); - }); - - test('test-case-5-list', async () => { - const client = createClient(nebulaServer); - - const response1 = await client.execute(commands.cmd5); - - expect(response1.data?.a).toStrictEqual([[1, 2, 3]]); - - await client.close(); - }); - - test('test-case-6-list', async () => { - const client = createClient(nebulaServer); - - const response1 = await client.execute(commands.cmd6); - - expect(response1.data?.a).toStrictEqual([ - [1, 2, 3], - [2, 3, 4], - ]); - - await client.close(); - }); - - test('test-case-7-set', async () => { - const client = createClient(nebulaServer); - - const response1 = await client.execute(commands.cmd7); - - expect(response1.data?.a?.length).toEqual(1); - expect(response1.data?.a[0]?.length).toEqual(3); - - await client.close(); - }); - - test('test-case-8-map', async () => { - const client = createClient(nebulaServer); - - const response1 = await client.execute(commands.cmd8); - - expect(response1.data?.a?.length).toEqual(1); - expect(response1.data?.a[0]?.a).toStrictEqual([1, 2]); - expect(response1.data?.a[0]?.b?.length).toEqual(2); - expect(response1.data?.a[0]?.c).toEqual('hee'); - - await client.close(); +const executeCmd = async (cmd: string, clientOption = defaultClientOption) => { + const client = createClient(clientOption); + const response = await client.execute(cmd); + return { + response, + async [Symbol.asyncDispose]() { + await client.close(); + }, + }; +}; + +const testCases = [ + { + name: 'getSubgraph', + cmd: 'get subgraph with prop 2 steps from "p001" yield vertices as nodes, edges as relationships', + valid: (res: any) => { + expect(res.data?.nodes?.length).toBeGreaterThan(0); + expect(res.data?.relationships?.length).toBeGreaterThan(0); + }, + }, + { + name: 'fetProps', + cmd: 'fetch prop on company "c001" yield properties(vertex) as node', + valid: (res: any) => { + expect(res.data?.node?.length).toBeGreaterThan(0); + }, + }, + { + name: 'goFrom', + cmd: 'go from "c001" over employee yield properties($^) as a, properties($$) as b, properties(edge) as p', + valid: (res: any) => { + expect(res.data?.a?.length).toBeGreaterThan(0); + expect(res.data?.b?.length).toBeGreaterThan(0); + expect(res.data?.p?.length).toBeGreaterThan(0); + }, + }, + { + name: 'findNoloopPath', + cmd: 'find noloop path with prop from "p001" to "p002" over * yield path as p', + valid: (res: any) => { + expect(res.data?.p?.length).toBeGreaterThan(0); + }, + }, + { + name: 'returnList', + cmd: 'RETURN list[1, 2, 3] AS a', + valid: (res: any) => { + expect(res.data?.a).toStrictEqual([[1, 2, 3]]); + }, + }, + { + name: 'unwindList', + cmd: 'UNWIND list[list[1, 2, 3], list[2, 3, 4]] as a RETURN a', + valid: (res: any) => { + expect(res.data?.a).toStrictEqual([ + [1, 2, 3], + [2, 3, 4], + ]); + }, + }, + { + name: 'returnSet', + cmd: 'RETURN set{1, 2, 3} AS a', + valid: (res: any) => { + expect(res.data?.a?.length).toEqual(1); + expect(res.data?.a[0]?.length).toEqual(3); + }, + }, + { + name: 'returnMap', + cmd: 'RETURN map{a: LIST[1,2], b: SET{1,2,1}, c: "hee"} as a', + valid: (res: any) => { + expect(res.data?.a?.length).toEqual(1); + expect(res.data?.a[0]?.a).toStrictEqual([1, 2]); + expect(res.data?.a[0]?.b?.length).toEqual(2); + expect(res.data?.a[0]?.c).toEqual('hee'); + }, + }, + { + name: 'explain', + cmd: 'EXPLAIN format="dot" match (v) return v limit 3', + valid: (res: any) => {}, + }, +]; + +describe('nebula', () => testCases.forEach((testCase) => { + test(testCase.name, async () => { + await using result = await executeCmd(testCase.cmd); + testCase.valid(result.response); }); -}); +})); diff --git a/__tests__/tsconfig.json b/__tests__/tsconfig.json new file mode 100644 index 0000000..435f97c --- /dev/null +++ b/__tests__/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "../tsconfig.json", + "include": ["./**/*.ts"], +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 7fd61bb..9f75baa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,7 @@ "@swc/helpers": "^0.5.3", "bindings": "^1.5.0", "browser-or-node": "^1.2.1", + "core-js": "^3.33.1", "isomorphic-ws": "^4.0.1", "lodash": "^4.17.21", "node-addon-api": "^7.0.0", @@ -40,7 +41,6 @@ "babel-eslint": "^10.1.0", "chai": "^4.3.4", "chalk": "^4.1.2", - "core-js": "^2.6.10", "cowsay": "^1.5.0", "cross-env": "^7.0.3", "eslint": "^7.28.0", @@ -1579,9 +1579,9 @@ "dev": true }, "node_modules/@swc/core": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.93.tgz", - "integrity": "sha512-690GRr1wUGmGYZHk7fUduX/JUwViMF2o74mnZYIWEcJaCcd9MQfkhsxPBtjeg6tF+h266/Cf3RPYhsFBzzxXcA==", + "version": "1.3.94", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.94.tgz", + "integrity": "sha512-jTHn8UJOGgERKZLy8euEixVAzC/w/rUSuMlM3e7hxgap/TC595hSkuQwtkpL238dsuEPveD44GMy2A5UBtSvjg==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -1596,16 +1596,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.3.93", - "@swc/core-darwin-x64": "1.3.93", - "@swc/core-linux-arm-gnueabihf": "1.3.93", - "@swc/core-linux-arm64-gnu": "1.3.93", - "@swc/core-linux-arm64-musl": "1.3.93", - "@swc/core-linux-x64-gnu": "1.3.93", - "@swc/core-linux-x64-musl": "1.3.93", - "@swc/core-win32-arm64-msvc": "1.3.93", - "@swc/core-win32-ia32-msvc": "1.3.93", - "@swc/core-win32-x64-msvc": "1.3.93" + "@swc/core-darwin-arm64": "1.3.94", + "@swc/core-darwin-x64": "1.3.94", + "@swc/core-linux-arm-gnueabihf": "1.3.94", + "@swc/core-linux-arm64-gnu": "1.3.94", + "@swc/core-linux-arm64-musl": "1.3.94", + "@swc/core-linux-x64-gnu": "1.3.94", + "@swc/core-linux-x64-musl": "1.3.94", + "@swc/core-win32-arm64-msvc": "1.3.94", + "@swc/core-win32-ia32-msvc": "1.3.94", + "@swc/core-win32-x64-msvc": "1.3.94" }, "peerDependencies": { "@swc/helpers": "^0.5.0" @@ -1617,9 +1617,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.93.tgz", - "integrity": "sha512-gEKgk7FVIgltnIfDO6GntyuQBBlAYg5imHpRgLxB1zSI27ijVVkksc6QwISzFZAhKYaBWIsFSVeL9AYSziAF7A==", + "version": "1.3.94", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.94.tgz", + "integrity": "sha512-KNuE6opIy/wAXiGUWLhGWhCG3wA/AdjG6eYkv6dstrAURLaQMAoD8vDfVm8pxS8FA8Kx+0Z4QiDNPqk5aKIsqg==", "cpu": [ "arm64" ], @@ -1633,9 +1633,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.93.tgz", - "integrity": "sha512-ZQPxm/fXdDQtn3yrYSL/gFfA8OfZ5jTi33yFQq6vcg/Y8talpZ+MgdSlYM0FkLrZdMTYYTNFiuBQuuvkA+av+Q==", + "version": "1.3.94", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.94.tgz", + "integrity": "sha512-HypemhyehQrLqXwfJv5ronD4BMAXdgMCP4Ei7rt3B6Ftmt9axwGvdwGiXxsYR9h1ncyxoVxN+coGxbNIhKhahw==", "cpu": [ "x64" ], @@ -1649,9 +1649,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.93.tgz", - "integrity": "sha512-OYFMMI2yV+aNe3wMgYhODxHdqUB/jrK0SEMHHS44GZpk8MuBXEF+Mcz4qjkY5Q1EH7KVQqXb/gVWwdgTHpjM2A==", + "version": "1.3.94", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.94.tgz", + "integrity": "sha512-KzKN54c7Y6X1db+bBVSXG4+bXmAPvXtDWk+TgwNJH4yYliOrnP/RKkHA5QZ9VFSnqJF06/sAO4kYBiL/aVQDBQ==", "cpu": [ "arm" ], @@ -1665,9 +1665,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.93.tgz", - "integrity": "sha512-BT4dT78odKnJMNiq5HdjBsv29CiIdcCcImAPxeFqAeFw1LL6gh9nzI8E96oWc+0lVT5lfhoesCk4Qm7J6bty8w==", + "version": "1.3.94", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.94.tgz", + "integrity": "sha512-iAcR8Ho0Uck/SLSrgYfXkpcGOXuN5waMZO7GlL/52QODr7GJtOfZ0H1MCZLbIFkPJp/iXoJpYgym4d/qSd477Q==", "cpu": [ "arm64" ], @@ -1681,9 +1681,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.93.tgz", - "integrity": "sha512-yH5fWEl1bktouC0mhh0Chuxp7HEO4uCtS/ly1Vmf18gs6wZ8DOOkgAEVv2dNKIryy+Na++ljx4Ym7C8tSJTrLw==", + "version": "1.3.94", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.94.tgz", + "integrity": "sha512-VCHL1Mb9ENHx+sAeubSSg481MUeP9/PYzPPy9tfswunj/w35M+vEWflwK2dzQL9kUTFD3zcFTpAgsKnj6aX24w==", "cpu": [ "arm64" ], @@ -1697,9 +1697,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.93.tgz", - "integrity": "sha512-OFUdx64qvrGJhXKEyxosHxgoUVgba2ztYh7BnMiU5hP8lbI8G13W40J0SN3CmFQwPP30+3oEbW7LWzhKEaYjlg==", + "version": "1.3.94", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.94.tgz", + "integrity": "sha512-gjq7U6clhJi0Oel2a4gwR4MbSu+THQ2hmBNVCOSA3JjPZWZTkJXaJDpnh/r7PJxKBwUDlo0VPlwiwjepAQR2Rw==", "cpu": [ "x64" ], @@ -1713,9 +1713,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.93.tgz", - "integrity": "sha512-4B8lSRwEq1XYm6xhxHhvHmKAS7pUp1Q7E33NQ2TlmFhfKvCOh86qvThcjAOo57x8DRwmpvEVrqvpXtYagMN6Ig==", + "version": "1.3.94", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.94.tgz", + "integrity": "sha512-rSylruWyeol2ujZDHmwiovupMR5ukMXivlA7DDxmQ1dFUV9HuiPknQrU5rEbI3V2V3V5RkpbEKjnADen7AeMPQ==", "cpu": [ "x64" ], @@ -1729,9 +1729,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.93.tgz", - "integrity": "sha512-BHShlxtkven8ZjjvZ5QR6sC5fZCJ9bMujEkiha6W4cBUTY7ce7qGFyHmQd+iPC85d9kD/0cCiX/Xez8u0BhO7w==", + "version": "1.3.94", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.94.tgz", + "integrity": "sha512-OenDUr5MQkz506ebVQq6ezoZ3GZ26nchgf5mPnwab4gx2TEiyR9zn7MdX5LWskTmOK3+FszPbGK0B5oLK6Y5yw==", "cpu": [ "arm64" ], @@ -1745,9 +1745,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.93.tgz", - "integrity": "sha512-nEwNWnz4JzYAK6asVvb92yeylfxMYih7eMQOnT7ZVlZN5ba9WF29xJ6kcQKs9HRH6MvWhz9+wRgv3FcjlU6HYA==", + "version": "1.3.94", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.94.tgz", + "integrity": "sha512-mi6NcmtJKnaiHAxLtVz+WzunscsEwPdA0j15DuiYVx06Xo+MdRLJj4eVBgVLwGD1AI3IqKs4MVVx2cD7n0h5mg==", "cpu": [ "ia32" ], @@ -1761,9 +1761,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.93.tgz", - "integrity": "sha512-jibQ0zUr4kwJaQVwgmH+svS04bYTPnPw/ZkNInzxS+wFAtzINBYcU8s2PMWbDb2NGYiRSEeoSGyAvS9H+24JFA==", + "version": "1.3.94", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.94.tgz", + "integrity": "sha512-Ba0ZLcGMnqPWWF9Xa+rWhhnkpvE7XoQegMP/VCF2JIHb2ieGBC8jChO6nKRFKZjib/3wghGzxakyDQx3LDhDug==", "cpu": [ "x64" ], @@ -3524,12 +3524,14 @@ "dev": true }, "node_modules/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "dev": true, - "hasInstallScript": true + "version": "3.33.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.33.1.tgz", + "integrity": "sha512-qVSq3s+d4+GsqN0teRCJtM6tdEEXyWxjzbhVrCHmBS5ZTM0FS2MOS0D13dUXAWDUN6a+lHI/N1hF9Ytz6iLl9Q==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } }, "node_modules/cowsay": { "version": "1.5.0", diff --git a/package.json b/package.json index cdb06a6..beb7d00 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "@swc/helpers": "^0.5.3", "bindings": "^1.5.0", "browser-or-node": "^1.2.1", + "core-js": "^3.33.1", "isomorphic-ws": "^4.0.1", "lodash": "^4.17.21", "node-addon-api": "^7.0.0", @@ -41,7 +42,7 @@ "nodejs nebula sdk" ], "engines": { - "node": ">=18.0.0" + "node": ">=17.0.0" }, "devDependencies": { "@istanbuljs/nyc-config-babel": "^3.0.0", @@ -63,7 +64,6 @@ "babel-eslint": "^10.1.0", "chai": "^4.3.4", "chalk": "^4.1.2", - "core-js": "^2.6.10", "cowsay": "^1.5.0", "cross-env": "^7.0.3", "eslint": "^7.28.0",

    Qtto@_ow!f)HHd5^A2O|h0^KL7nyTJL6Lt{^>3dxWAxLon_a!%K z??ic`2gL=DuspP1(^~((axB~%Q~&r>l(XlqQXjZ?B#fpoMTG$)kod>YG)8Ay}lX>GanMO=7-fqS|2^g8T?-WBDdvF1eFhR;)Xh z8HlhTNl1h_>N7`?@VbT1l0-pzoQ9#!vo=~&i?ILQ_HlG{SoSIAFHry*Q?Hlt79!a= z5L(<&`j{Y~VOW>T?s9$UGu&UYd_BT90S@7IA{j8EE}boTL{G(t_PAa~6m6g>GYcg{ z^m1BncF&NOlhl1d^m_~8I5BHKC{yuU1X8EumuioZftABfAoDcN5%KmG*3j-Wlov&t za1HnY;ov?H7%C+7dUJns>~m+8S zAHJE>I$%C{1w5hYYDVqB0*G91{|RCOlrJ{_;(rBnCLSe)(vUe{nV!m=vHjEuhr9Mu zJON41pBByrD$x;MWQoMprvE`SIco%sbCrE@bV{+#&XDW@&F4!YGl!@c+H|+K7kk6c_Z*7Nvpy(Svd5>si5L?R*Ax zW0Y}{Kju22yH3@y9jsaYBl83n)pV9@G>wS8#$aJ?RiL)KAzmd>N(g)wLz(14JePnoN+ z^t_;vg2U`aPDOl3_9~zu#XJOME3!g|CiG`gH%T+AVFlZdwn8c-`4;^i6}(735YLH5 zT&aa^&!zUKY?PN{>Ot^6RVma)QwUxhmL}T@D2f5eCB9Q2U9ONS6cRm{NkF0gB>I1xMFV?DjTPXaVtdb< zh5o&eqzUvt`MUoz{Xf;bL*`ls5|-Uuj7?8yyXD$WbUxz`K0=WU4;m3alsgB5u8tq; zYj=8c;p+RmpWn;pZn3kfeH{3dEWjsZ0bYXVxH|&y^#-M#i3)4RYa`4P*9hg(thyuc zBta!qeem%kTHty7D!A)26s$l?b4xL(HeJQZnSb&o`SJIHv+XsxU6#5(!!p9*xkXk5ylpJCA9E02 zw@qKS;STTDJr5Ah0(yUzx(iSj!Q*(Nb&jloN9h_Um+q{+l85by1;>nI$qWMg8kOF_n;T+w8wAV?%m^8P}fDY zfHCdjZ(7X8UT?DartSr@%ll)NH(l(!iA=#h-NZK)YvYr%G(Jii=i~C6aCnFe>x7$S z$;h)-^LyXb0sQsXY&i(9krjLp1b8Ss5oLNmJM`DB5a#0VOZQ!yl~dH}2*xVf8#{`C zdH+HlA5JC+;bSZ^&B4T`p)Jtvr)b|$i%E+Ue%4Bm+~yjnYL4UKDAe*={Yp_6&=C|3 zZ6lYw*;_Ps;R@XTj5d=H15K1k)3?VvNXwe&uU^x07|k>v{hLc!`jZFOHP10ijohIp z#}04?cON@MS8`TaDj66W-oiYCU?GPflVAu)@g2R4>Kx8e?GZB)HzbtxR7d&Ub zgiyKMkn*T5?$%^yap9F#zer8EL?I1ONKEH1OhJZt27ykIUdj-YZsUyM$qVKtPww?r z8t82Ng1LDClus*2#^ed{ltJPX`w`?L_hY=tX{)FnC%+jRFSzM!4J{Nt#2s?NYFbnY zApRG46&Xhm`W(K`%X69AG7h2@rXZG#@*rn{SrJY%YEMFu!&BwTT!?*^>I8@5wrLKK zc9Q3<2xU2nz1O!gzlu4VZ}iZ?PsYnFDzwUJv!|E){K02HCY#UCZYAncqK9VqHi{PW zU#LimIF-U2RKTFB5|>R9#3SP{ls2e)=4TnsTd9tD^kWjAuPa2J56B)5xpVfvVshsX zV>pF5m@&CiNH!aaE=L9_n>7bsoI#&%j5Vyd$J*+>EfB5S0VcQ^vW;zpd{%X3lW_Df3?9zx5k%44|A4i_)FJZ1 zqqd4rO1>&OK_cNQG5e5GZi*JW1WtGf4PqMjw=$<9$Os==Cy+wf%^2uqR&R=*8l_#s zt)L2$2Zu+~-(z&o=v4Z9tYJ0(3l*pn>37B?-|QLXzUP+Un|~0lG%|Ofk@Y4%gzzCU zT_MdRB#*(r3NVSEh^t)ayHAr8zWWEAL9tGn5e3r0Ht9Op5^ssDQjB(lfRX!%6XF^} z1o0y$oQ>vf=upnBAuq792l`K-uA&bEM=t39M$tdaMn5Rpqb$Pk%0YgezSqG2za6G1 z4pZqTGZV2gctNtGg(!(9;pG<0^ZDSd$a3^9B=QZdS_19#y#EsvqgWee2Z*(K1KaTQ zZC*he=Yp=sQOk=U_oD88jb~5I+*ovZibS-8IR4<*oWQb}(x!!3egzyUZLOn}XZ3Aa zI8q8lB$U>pupJBgqY$5yF8xpu_zl#lNO4Qi%loKvZ z_V5I;8KC}}iw5TyeMEa}vY9K~2u1^8ilbADOed8~?IDdJpu4<-Jzav1C+EP+H+{?o z2XNhL8G4A)yLvjLW*MbsSS1E;tr7KxR?wmhJ6K~ zQoKyUa`$P#Y8jo<-Aq&jJKDx{jF}gu*XxBff4fvhANbn6Ni?Kq()b%+!$vhooRGMa zrk{ZMWN2&!mO0po)2&HO><1=@U|UV7q1J~L#-}sxvYJfN=0a4A*qP1xqn4MnIT3X+ z0JxnCyMkOSA}?qn#``XDW&!9oKRxeek6OA$felk&)OVFQpu~C{sQ|Hq(oy1i=yj1H zN`{N7y*qe5>H7e-YWJl}mT{6=n6Qqv`Xq^bOY`sZFtusgM5XJT2bhvJU5*1mh zxIQ(<8`lR#;mRN+g9Ow~0bP*=&;_WAPIu0ERLxh?qzVdAChWQ6#gd(%YfC`9zxWOB@QNYcjof7smr$@Gdz4(Sqm~!B)}n5VTsh9<^NmpK*JG7p zgC~?#*Z%|{P`g%z&^~*`21ZLk+!ZNhUo%!)_ldR6vli0csU9}e_!}hK zzPi#9m^i2cFfE`SfTN!ZTJMh*V(bNKU1-JzlN;a9=D{^l(WPz1B_@eLCFG z-X5hq^-H3_@3Y&cx`++L6FmB-w+lz=gw#wiZ+@*^;jtoT3%jxw-HQ}!SEgpc<8rEmsa+Y0 zV&|;!lq?{Q{>5FX9U)zTrw*;9z`PK>K`)voN?G-2Tm>~OGFE%Fq{^GRwOLfQDR{2b zcdUoGQvW~0-P9k8P!+(*Pr_Gxql#Sk?yB_0_k%3DTs@xuGJH=^eC;#E^m_TFtHDDu zU+|6=R*4)K?*l`@X-d)&-9Ct)p@MgQ9yRxmT^}2!(xSZX1xU(S*7_c6s`nQ9=L{~U z3WG#0rOSpPK4n>8Qeg$pkYSA9h?&cfmLFdJI6CQ|is=}0dv;WQ1a}rxn@0eLVCkT4kudK~dS5MTvS0&-s4Yjqc3B==UyAgA#RUKn4U& zTZ$plL0r~EJBLFSL*yL_>7PR#NQ`+(Z_LRl)MZ`_5JIqU1nPDLv%SUGzg*|&84AuS zuj{e9`e*Rk`)#xG+HEg^*IHLhj`3P+(-+Jh*NSr;S6dKEu;v*Ij7s(;+>=Gy+k)p9 zoYwJig^#bx#F*^k%P5m`&UZ#a37Bq7bEV#oC>+&4BH{ zWG+P9Pvl({$o?r*bfcYi`6gwK9|u!^H$#@2xO3!z1X8O&Uj3uDl#Doy#YqEhiEkks zC~|6RS+m1g8qahZivtcCFJ@z(HV$NIT!O~BN^z}39kN~TJD_r;QUQN= zwRe|3gAxZg@GW$_D{>vCkwavdh*c~j(<`6TOeW$}j$&{=v)QbW!aFHbgH8C0*Wrj} zvsoMTekoiog_NqWYHv0_AbckjTpT33NfQD6nSholMmJ;ubY&b6XF(#M^9g8`0y;Shprhh| zIL#6PwIHC83TXQz@28>;w!UTamm3%pzu1y;2rS4 zG7(^NiY~7j?9i{hCGpP*>QaZK=N>dNp!`~F}?_+?At%V)Yq#@Xy zKm;&jsTDARIe;m?JpkJ`ledlm_FD`0f$tjRu44tv7b#!@a{zO_@Bq9AZ9$5Elscqn zXD!?&fcN6B0_KYpFo8LMxj=aUwu7z5#sK3ieM>{|gBVo4MWGUsK=qE08Uj39#lW?2 zlK3?VlJSsxs-K92qYrBwz05AM&kmBF>&i@h;lz(+$?BXirEPuTW9UwiiEv(qe$;Te zw}f~WbuqC;U-%{Vm%|k?=8fySavexid6fSMhBYAp3qlm5D_5b+tic?i)4J5C`cxG@ zcB2B_i0n~0-6adEML-qW2^A($Bdv2LC_sM=uVt%^6X$@Bgg8m(pt_!~hh}D-1t5`b zx~M;N87P#J5$FC`wGyp%Q`&0NQO$9v8OItPM(QD`n?h>HmqZ>&F+q;hW4e`R3kO)M zX_bo6(jP1U2Z0jR^*>viL(ttc7QpyH0>^6j5^Selh&`P}r~DJ2yCVUf`Y;as@+`nd zX90dXo-+z#T_L9g=9bHZoV+tR19R)~0ZNC3+)2R7c$y{N9*I`Q%<%(P+s#w$g&pw3 zwiiAX{y1tL#~-~o!Tzi91gnm8*$;Pt?=ssDyKrbqi$Wq+!&7?NV-pHexSFdF?Gy

    DiMMk@4q9-n)#)^6xZRNTY)fDBTOHt#=zo#JZBZn);MG`y03;Txy_ z^jkcf%8q5_!}US_Md+xUbiw8jq|DZ&Eb@_)yCF!}l#I65qec?hHc=CJ3|n1sUewCt z2oXPOT%q>v*fKJvVS)3qC>oHG(@{ScDS3N;X$1 zqYYQp!$5*x{77-b2Ii)_IrxmTTR&!?>A?9 ztlzAZV#c9-uw#<2Z*xtB%uB=Kvl2R8i##R0CLme2o~+;m)0Isow6ZJTTDpWd!8|1^ z8!ksP%RvvkyTBS;)?@IX>b?2b`C}*VwdM{ywZk2sMWhQVCb=R%t5FW-3aF9JIeGa6 z@NDv-UKuOc=j1(E!OMN~P*%3j%%c~3&w#J45a9|oMogC&uRuSSks~wx#{EXg3g2(I@pHq7do%?a}6gw!Ep&mDBKOh<`1sLsM+Ii zq9WNUVf_b^pH%?K`6@LwTtos_qG^WEnFuS}8PM-zWe*W^8|son_CEml$G#4ME$N5L z9m8LNJ?yR>(_HNnPBV{ z`y2lL^_fXSTXl%rAEK%#@)&!$$sB-QMwaO30(_>&09A8wNes{>F+i6@^8+*{E66EL zrAWdnDu-FCMRz{}@fDGcfB_*0%|O?j=f){8)=1zS^JE;9UgbHZtm*}8HJ7lk%x>K& zZZcB=!i!HXCmUnq6;pnCg$l-)!XG3j9NFHX7+cDW%*oZdB99Zqz~TJ zE*k^V#nYC1Bo>*O%apsh1TAb2L?+sagVXQqcy2#&$) zlRVv>6}BaibBs1S#(J~GJC`PRB-b^u>~xo;vNp>gI-)vYp57uD7AFiM#MYH~pVQx= zS#ax*x?CAm?avjj<)2GsVn;5LLXlu%ycQ$!cWN%; zY`N@3TG-HJYhH%Ao|{|yU$i$3Co4_FB$KMI6BitWaz7ErCAm+-(5G1r9B#mpHzsP= zA`qbvHd@@6#Q|p4nY-IyQ+Ls?ous>Hqhhq%!pGK(^F>DL=%qAJ<F)EfmJ_Y+*#Ih}&xcN$C;d&ffb5~&@ zfCkJW6w-BQJiI9aks6f6#6!IqdoN#^kIg_u?PF6=dlG6Rx9#N^>X%;}=X(>spW$~e zep}U#^BscU9{8n+Pwji*IDg-~b2d;;&*Ii@$#-0D%`CEAp%9Hj8Jn{Bn30R<_OTD3 zeAYSLnLmm=(syu?zotDtRM+=W+gZRI|7Q++ECJF=+Pz{4ko2321<+4_vFuFZ36RA9 zS`r{FNz~lHj8XHiPD_8=zfDIv}$8LR{rjCbZqgxdFL+hU!1=a?;qTan+F*VIkO0n{4FXT zLq?oiVQ~7Ff5iyMkI*O09KLYa(m?@Pt#VfO*eQrOZ`@2N>qxu`2W@WR+uF zRjAdQ6{vz26((Hrv>|%hGTiy(AJ~akKbc)4?eskPh+M$z=_jjYO%3))Be3q~A<`*Q zrVP6BJaV}sWN^i-En&dBj{u5ugWzpaEh#1=?y!-3CF=cbnXDY#jp~saedA48 zKwpizjQgh51h5wnb_JSl{}?hxnX->EWeb}rC$oyplwIZZNw+W_%GcW$T1L+yeo2G= z1JtR=GR5ybR`3|~O{i;+_&4kDVw>CkE^w2$?LorrsD!yC-HUH#1>10bS(X=%LftsG zP2;<5ZtIZ_^sxkOb6e{q(DrQCsSnQl0os~?7Ls=%XnQ!D29sP#-P%9}5PKPWpYj;$ z*c^G}9<~9;Vj@vye?a2pQx{k>N#|^6zkSjm*~}xG>#IN82y8uTJdEm!3ai`^7P? zklXA1HRq#%qG~h&+Fa3E048xo3jlPuVtXmOnZy;_hN41~qSVL=9-XN}-T2_Vy%z7b z8RIqqokYP9LGMw}SEYM*1u9UTUZ-`=MID>OFCcC|vXjLd%*k1>I?BOH=KUaI)x|He zZ|@*>Sg@j3H=Mh{2H%{|m*z)o5^rH0%tS^Jg=Gb~16r|0v6#8?QC6oL<)bWT*WjbA zv}Ey~IuOGI#pPE=*@_EH#_1H7+$=vI9%(~?%AX;brAu*4vAf!qpL-lA^D`Ps5)Y7* z_tmB7&}aw9|J_@>jSb4JjM=vcKG`*Y+cuK4zpmrf8mX}`Urh|4T+}(~nf!J4;+)9;OCRRB407ca7mf`YZ z>_O|nceJp_A zf|>*lgBBVtEv7E@7T;Q42Lr*0=;`*hv8G}ms49tV!;wJx6#asIhqH~v^YEQYs>4#n58dZesPhig|6U193q50`z;2v(03I4Eko^>5VAjuzk8HB%gB*>~wBWcs$ks{R9+JjW@Pty@ z9N107n^V@Bi-BFFM2Rv`DkPzQmY`qc2(2Sf2k@|EloOZB6O0e%Tj%bpUVAhGed_mB z?>%DbS4qVOtCCTl7Qp*CZdI6yww`02h;V|JXb=^Yz zUVl9ISSD^qduvoTfS~0S!mT)NB~1}a7ei^sEAsUfX)GQOcTp+O75uZxtei|c#s?!M zBfRN7pWKCg$5z{b@i4a2=xAicaHc0mMzK!GHRiGgMs^5Xe$*fWLNsI5^OCEML)F?z z;K4pk<9z+`I~c#^_#KJg3-Nm?ejUlA^62nxuKnVo1bay0e(`(k7h&~tgpo)hdmEAu zE{sl{fKCO>r|p?;hDK+-Ek4gogdry~R#~O&Pv2B*8zLsV4bMT___^dZ(npcSrUE&b;>yt{WmLk z%;W~DUf80DjJDZx2Zn~04q6kI;616vf!k|nO^^ik1Y`1_NXL|Sb9Vmk0)`Sb#VZ;eN z#90+E>*hE;fXQJim&vD4GTOnhG#`9PH;obI)n|e3)=RMlHJY3FvSiB7z#AO**YR1f zDMww*HCJSkw zQCRoC*%^dZwvFiolu#aoCt{S$i#*^GHfs$w%aqRRd$b7$*#Mk2!bHBsv9`9q|8_MR z?PqZ9&;wOI+T*{{HU53ljsMxM@n;2(nOBaw97xVSS>*k5x>F`5j2v%PNS0ANFL95Y zEu(gzSZ8gfk$Y!$Y~<*Vsw3CN>{)?cZLx66OrDK2Ms1YBJ(PI#wzh~lKi55<`K=)AT{1C6=l>H^_ z)6uE8{wf~}gta$3xF=?F9?od!$ZY<2BgQ3m%X`?#(avYMuTlObAI^)L^m=uc#^zD( z?wHL3C*0jJn>aL-)+lM9&6XC+;!_TrEH*$;{E=4q$6NM4o*G`wG=D)m2KLR(GVnt7 z_78(IKNi!>=|d)gw00?H=e;Dve_E%>_0*?8}07m*yp8 zlU2IWg;Q_E3CazWv?QE1pm+9uI#+djsA6O_Bn**lz1rPY$Ea8Zi;mBx~!^iMt`Lfj)`r7;jc73#)C=zN;U9T3YX8bZYXj* z0!n9xf;VEwQZJ@9{oxy7_tKiyJ@{XL&B5rZRa(<`3j6}v^0OS|m53cDNC6xk+y@4L zI+H(*qIM&!L3Lqf9T|mR{7?1_D6LzM*$TnBg#ICo6s*e|N*g%}4W%176JkCAODM_B zVxR>4RU9^D@(ED$-UsHQDl*qLd(~@-uUW|wggya#+X$oMHJBhP*ai%_B;F>o%y>at zDlycCRcD$_mC4o&6TYQYA|wizH-$^<0{)sg=$QEs$W_nW1`;)ed0X)){NlfhL?9&W zTuo5()5UyKX$eu>)Z)SjxTnu|R!paFIJ z4Dbag^ImIvU076yf>~BoV~@3c*Zb$J#9OOpE-uD^jP?&KpNGzI%&n@~SpDh(k}R35 zg%gu*P(OKLq$+WBajK@Q2;BeSos*n*F1Fju^Jqg4RkS(XZj&s#=`r?JE0GKI7%TLd zs?m1b9OOgw&aSc9vTro*vV&7x5nP?CKH$JPeqozUUM=j@dv!RawCZymakZjeWu1eV zBsgyU1gb>41s8uh&Nsk6vM`+XsK*2 zrF1Jx57Sar!utV3Uwf3c#2c66aRW0KVZLu_7%U6a`U0QnN`5QfXRW{Zl-DjY(+gGb z7K%`a1_}d_dL$nVmv1vIF=@fX;nHoky>Le7*1pSYZ~A1M?^gWYh2ID9`viU?_+5|R z&G@CnQ~A9-F5GV3nOPqUiJB*)hhYq@q_2~GLt$(ryFl>vzAa@WW7Xi7Amiz;@l(Fp zW15c@3}ZU`3yf)gGA$~WAy+F2;=k_W==KP_{3aEo)ali0lGNF8E$ZCGI;n8_*mW9M z=UUW>L7CLtrhCN)qZQ6yS?7GhX&I~K)Y*#xBR;cO=lJw>I%0HL=R(#gV4W5za26e) z{p!s+A5o(gaZiuHgRIRo-BVYCU!ZsdZZ-aEDAB~k5T3b}XMg^I_#c;Oc0^0o%ZDd5 zt0)G3utC_%k68*7Z2ZtmvZ5>j1+oHQ*%+Ma8m3kS|D5B9xJwE3&-oeWEQun~f6M16 zvp4W(%S`eIKV~)Qv3-d1daS@U$_tI9*XB=ri5C6K~uA{QJ4k#3t60?SZ$Y@ z87wMOL!E-SRS4Jx<+WzRiJwGq*LE)N z8%6ke;@N1*nz0V#qWpIN<+6XN)i%wXHW~IW-uA!q@z(n0f`018MZFRIb9kYfJ2c5Z zXC_OMY=2jv%w|C0IotO4DbVEUyzrNB)^^;D<6<806oiw{+#$-^e)3OoMHd-pZZun( z{(t-h1Dy-485s&n-PO#dl!GPJ7G7ytXe5DJK8E~$BZ^hVBfNmbqD$<-kaxM+SKh+7dQ3&{1xRM);F1U_7Znj zd-3TV{@FO+RQ%qJ-xuuPkMO_1jPo6jUtQmBIwrP1sooigX(PMhI~1#QDg23Xe@f|6 zz4EVg>7p*zK=n)B>zZ39gCw>wq`V#!>j#RZGN-u|^)Tvr5FV&BL@FhZi}?*I!LE#Y z%>vIY<_lZ!wTmvj(r1pmlFx7oi%Zy^TY*yJml8%S{mwXcd~a?})bF)eh44M!9HHOs zWPB}*AK$T6#j^sd(8>#yZt1(G>erK6Rm=zU@X!)-5r!ve+o`>L^k?bi+9IqiTg<;F z^3Zk>8{xqA49q#v=A6^tN3kEb$zkhj&u@p?L%bk568D>iWU!MsaNTfJgftm4ahA4}hBleTAXA>{CxDg^ zLhhL{n^o-j2UlS(m(9%gKr%ir2}yUW>cK9~>M3sQHU%)n0iwBiMnF)x0v221AZUKn zHN7bn#K4N>q>JPX%{SKx2xmgaL3riojA6kE-@^1F2-W*@*ST_84lV@)W1i04Co@ix zUpk07D}t>(c$p5nD3k#XlnkarSh-yDKSgzT6QltyKmKUr^2@xuY-M7l10{ndlQl2s zZ-L4b8;BiNH;-f2kdPUK#MzI$Oh?!N-Amg=I?rGFLFakCGl5l}{S@DCCHQwG*fSwn za9)9p7EWzTSHTwOJ0RV$^beQG5<;K#p`qB)WK|j3lWxHn%8sFYt2J}0^(OS1VoXT? zz|An7_c|KlYb)HCs(-{iqAgIh?>F{BW^J%joA}R$t-D@flx{^%-3Ckm_}}BD@LR$1 z6p(4%qV{Xsb0?Q{?46afKKovIqSOpbT|fK2h*Z3`ju$)-l+fVM(GHA%mxCH z<}V2zKS6R53ChiXUP==P-+vvBEzI_OZW~kIXleDWYEyCN=qsT+4#|UlFn$Gv(4?-m1TtUmMdMv6uR~RJf$;f-<`2Ke;nKi- zYiNGxtkC)Sp=tS{lSuy3oz;7buRS4LmS;8Csn8F!W=Sga2HUHtKvmRXW6Uc6%wy6t zhdWpConpN-`~Hxaph)@a@?&Gh%Icki;_GE1e`#n3V)QoJVm>q;Ca+bT4>q@j#@D5u zg@@2P(3}kSo*cetY}p3b*asHNWEvQ^v9E9LGh@-fs%omkXhOeQMZWw7pZ!M+f|fph z3kK4fSzrBQahy59s6KOhSDwJ)_-O@)zvd(~>ATDJG^K{Rld??sbE^-nfs(Q({fo#7 zRjaBuH49a(;&?&FBKJrhWVkzwufsW>Sq{9&y|#Hgi@E-4ydTozqB$u{2-pp#E@#&01X&#d3k z&H{+>IHjrI(HtM~_G^0##8mjv2fn#hrou}{_eh!wBgU8)zSXJV7O)pzWFJUOz(ad7 zdei-1M5tt97t=-|-v}<8=7tph(WxyN`w&(kDn~}|6 zRRfPL`9``gp2|9}Y+6DnLvqBZaW$&rC~sF^>4QI5ie6adO~6}o$DfPmHjqh$oSqeX zpzjUC%#bl-xakX!w!p72JW8^@+w&cUxMkL>wm{-`JA6&vt$71rEdIX7reVW5t43V} z-nv&PAiKR*VQV=k*SE2xu&AsJ&oU_R^o&%ft*UVM|E+Nf-5A>V6vS zpJx35_?nbja4o7t3c(0?{x?4V%{l}T7DtxjZ}hZ!{6(Y@zu@^@sGBia$qc^Bqwxi7 z9Lw^Og@^5Mj*VX_4`-q*#>Yk3q}(<$qZz=)qHI$vpHW-ut))W$wM}zB{?y86 zt~(Qw06vb7;v^8DnK8wDh1bME0~e+mF|8cXEfYbD>B8)QydZR$8}9-mDc2LD2{dOh49b7S6zm4a&4i%I2+faNMI}LpfPPZFZSUwY*7uR6 zXaw7oIoR(#pIRM^=dgyN>aV}X1?kdGj9BKqcHT`lb=Ia@d)Mx5(TjgaJx#LsZDodxnKj;%0WWh=x%l>Bk`~41`bpr=M_12b8dT!CdQxqp`dC-g3|m~|VYRa?wJ z)Z$$h8*w7#^z1~o^pKoK5Q=8vt1?wJz$o}m<;hn0PV1!}8{*e#9cW!Bd&rlP_K+h? z@N*TTY4(uE;ZX`VI`iqF_g(hZQ!^>EZ^1SJ<;J?HYj|+CfVpO5%=)0KkTtcR5X+oX zgnlHuMxTA4n?&Yl)EPa7`%3K03RHo}O9;uZm$ueu2RVejF&1mFHei``*|9P&v(vT< zHH7*$u*chYkHEd1yr0j+^Z42ZL|j@!W<#T&A-`S_zkkKu9!qJVm--#{K&$5NWHcwCZ#1461F2`4@c0mLmp*&xZM^ zz(4owR^npNrTusx*i3Rf424&nwd<*)z)sDzcV<2rB1uzP)Im7)siPpcCgV9*LDdue zbNeV8+(#=E-hLx0M2hdE-JDe1 zKA8>98OL7KTvF)sp?;6A{l(`XWelHJ?=1Y<-#))vw9^(4bo)To7CMOcO64JV*Rgol zaIC_t9_`e`YF%R0?9=$Cs6|UV`!xQ6Sb=>S-x_0K-7rDHSQk!=Y{Awpw0bOHnu&$p z6J;bcOe;uM!@NbXwRQdk%con&1>k3FCTcKT7@?`fxLY07FhpYl<|l}C_ylQ*a8dx& zZ(~jiLMupGQ+Bu4p%KB5lbIaUfZ{db6BP@T)!H|6S4(*NPwi+)Vq#!2g84+R0WNrX z((OD#Q&Y9S@BUO>>9=jucZ-*Sf;t56_F5EL<5kvRT+o$2dwN@6!yD$gk=`L&6j?VbnZuX3}zN&VY*WzB}-BzPK+oR*rw^wBwO9pZKED*#RI$=kF z-SGj4C}BEzCA_JxM$o`kjQRGhn4HQh;?7jnUccB!>TB$$(ZH!Oc8NR&Uksa9`V@Hg zuzN9j723~r2dDL^9MaZw0J6y(vKg8cCvVOiQi34|hn)4X z%4?Y&>ef{p*%oJ)KeT|h;u^v+`0h1?=Kv3TGT3=`i(+GNICx+CXAR&;27KtmSa@1BRP-3FyD8X?op$^pBIy{do6HUb| z&i6)rKI$q7p=s^c>ihkNN<_JMHPzl9J$nKi6waGq^$M+|M4@qMtO%Szr__gnLs)bJ z9I_t=2UvrPp?6f*cMO<)zr`@iK7!%0)+2;6;iK>);?pa{3VMx28$j@HQw!X@?K(z!njT0-3k^Hx0 zIprm;Kr?s&p6Hb_%=I+@9f4#chOb6XYeI4$dq1Bd+FF_4At)%BaSv2WN$!k07q&Vu zZt#N?(e`{Z6>W}?jjm)T0_IQ1UyFfFOuTK2!#_he+pl?3sIM=uU+ zm>R_DVA~r^cf8Ie;kr5!t^;zo?Z14}QLve+mp}L@Bro_Z4B_@_=doeKa3X3Mk60D?L6z`00?g-2{-;D!>2;_bFZlp^94e4t?(zt$ejBTaNejE*$UsYtnB8zPs$_*#C|gW4#5{6WfVuI#&e3 zH&l!DLMV6gv~Q zyx)gbPsVsrtu8GLN!Su{6^8Deh(d_sfVpuSp6*hYC)oqrO0*dm-Ik(Q(%-~u7fgQ> zkTp_xItH=P_y7Xn_$q5uoqa;EH17YGdBZXDU6BK`XBOl3#VKfCSrnUgk-v zUcl4NjZ}+CuR%9ei!2>?AzoyVl4}Z|XWYJTG7|t!Vn%WPCHFhdn!))h$t`7HL#^^k zl!by77?W@*k1Ct9aI_Rk{sZw#jLgOxIoZrU2$Rh3Y&1KeThUURpDumEW-4Cj-w@*8 zXqIPzwImLU_$8qr>8(&=tZN!dS16!5 z1+-KE!3yBY-y$O93mW!8!#AJY>(hGoW(nWn9aZ3p)P*9#6T9>i}w|VBYCk z>6`CSX=W3mdsaoOHsT0w6*&6K=31vh1?Fbf$v8n9&5NiGo-|RF2gYU zYg)36I63Q3w|5P-zh=9#k2BmDA8fSm`~qlfjf#9zPC)NqBJf#fnMQ;$MeMP;ac{b@ znM$oLJ~m@m=>}MQ-+;xpL-aaYd`H+-?4dc8RXm2K8>-v%&3Sa%s@7TiFD0=o$|}G8 z!RJV3k>ThsGje=`SQ5Md<`n2h_9471XCiRTQmBCJ(R}5$;CJ5WR-t+dy15F1_qPbb zSSrW}xDbMYr&Fm_b)m}aM-*kidu&9LjkzHEpR#x&Dsq3}6^#(^gKHk5Ny=;}jIXmsk`o*d>YPCbt zR_kQrRF7y3Fw=j(^~UK_XiD}fn7VSkLQM=qOG^e|J(301-Kb9L3LA>ng(FPYN|7Q2 zZ$U0j2#Hp2$f%-eE38%NmkL1gTD|%yq!(WoNH%{#Ql%~pImqU(kQW4KU8}$>XLjhM zkigA&hJ6hQ#P+5sGD(V3CW*?4O=c!kITtN2+T%Sg=f^caA*aaP({o%e>;5TZ zzuZFwpyyv(|j$jod#_{TI*SLlrsX%!%yf>o%F;cwJay zmmqFx5c;7RufnBpUftKup1_k)9@{T;?I>EF-yE0))dKBVvNrV<)F-zd9_a;uDmH-7 z8XOifOH=BMc$R7x2<00t+uuc~=r!Z#@im!r%qwkJ_Usyx1y(=1Ivow{cUq0MAwazl z%)zLFS=3HAW{It;&5tX6$*LMJU!A`>amvg~Op4E>`2++H00x)EVP)3V&QyrXd&rA4 z8i^?|hR`DCiSj2S?K3@5Gy+iv28mF7$w%>wll{jgXFo3+SUul)$-Vzv3J{sjcbH!- zG6bWFQ;^-eyoc#Ss8O>0s3+yXgTAZCgX7R)Y}CPnM4xMhK@dtPIFjX>NgfBFEN_x> z8XRDHzz8&B;qxfu9!4DLS?~x7@Gw7d72RMir4|RKswB3JW?&XBy56ynH&E5;21#qbqo@GXEV6s zXAdf*Un+ooxWPe7(|gS$Tc-NsdwXPYd$vdc#g@qo0f)Js7N4u&m@TORKCzK^b#!j{ z!kYuHq^8LEHp0}hS;>8(Wem#F?9_O(<1nH4)?sYEMBmyXOY?83HR)RqVYA{+GU+z$ z^hWjtG=qq+TYi9elt`hryfaJ78nztjwEP=e+7kbFSz4YKNA-_vHb`H1be3iv;>`+S ze?)ME-gW4&*}_wT0$ejaWzY!I1t5n-Dir4C9ZD6)?V^ts*P&Q%4CKklBXD6=sR*Kj zdAPea|ALQdWUN*Xu{zex)QLNbsv`u7Ia9`X0$=B$DF;y9=1x*vk54dnUCs+BbN4De zCtTGilZ0cnvx}r0EV%;nb>n}L2`rI4G$Ed+6 zBmEQ3u94|VgJ70sRoaa18(3)m3|CV3Lc{o3E)}!X#WeBWSgd5dwY9@RowK~G5Y=rV zpE@Qxs5)UxCM)6_w|n<@6{{hnr|>|^(_vkeEFGopWcIq8=1jF zyL=v1EO8P=MO!DN;WZbX@Yt7i+|syLy}C}-JY2bw@T2)AX%dG6l{aND+ zL*ti*s+K@xA?XJXU|OCC0&fF>K_#x1m_pk=^`^uYs9$kO|KHyOK=FaHMm&6p!FZ@ra($>-s@i{To#< zRI*JVb6LqluunsEyv;|9auOn3vY@eiy4I2E_Hu+nwnLHhCsevPT1Ar%lN%jw%Fvle zt>U|H8;)x_9wc4*py=Krbbo+h+ zL?4{>vR=)o^H}WB{poGVrCikBLlPefrqeG0 zMJ6jnKL6MoySJe_#Wj_Eh%j-a$MP&Km!Kv2%=Xb3=?~rqv23q#PhYJ2AcpeFnazVJ zz~_{G(C?_aftOY&x_z^}w1-wt-UoHGp=?zs-+tuX=}(|d5wSQ&dh5@OXc${B!@-e+ zZjv#g!KJNa-Ypj?ESpwy;o%LiiOwmQjs2&u1I9-->#;*#s;W8({guzlYeTDkUj znW=u4-73v`bS570^gR7~)M>WM-#25tD6)Z;BOG&;RazV>Utx{y9(>1N^B>IR*=OML zh%G#Hc%Hkr9?#P-;r;#rF{;y&3m1cE7t|_KfTUC)?|nIran4Imzqt zC~ARVj{JjUnQG1|9zy6FXh$i^b*|(dzgozB%723hH2o0BVlffxj?b!Qk1UJddaS{* zIP$XH!t<5rss9kC2x}cWwAa-kJoA}R?*rQ;|HNU`-{KuQnN>VGbW~D@a#2ouKykrL zzHOCsXK?Bq?u#6ObGoBe<~QTO@9$9BEQH-6FP<+i*@(p?9Xp>_ZYsw8j+I{_3?ufV z`ps)`{U#+pg*(42+?6NN9OC#=G>CB$1avq9+KyF#XceoZBHHvKNgE3Cm~v9r&}!N- z8)R1|4J1H>pUlO;4!GNqjAHMSYMAhO63IBN9`DrsoCGmGj8^_5X0x%zGS&g~EIXX> zXodyOkfV)O?r=t;LEo20po~>-Zl?I)6;7-%P>0(YgVh6O@ULujBq!~F8L=^njS-ar z60*o%_=6Ymo#MHL7x_$dD1wB9g4H+mD-NIE9V*QE-J?_c4AUb#v*}oB(hNxTRd3F> zQ(Y*gnlr;Q;YIU`E|_}=;=#+Bn>m1`jd;JLX31ERk|hIGTi82WtT?WAMR z;cg#CZ(eUFePMR|@cCsaVT?7X1e^MAw&?Z|YTx?76U3&BEuSk0AZ0`UcUAp%)JfOX z;2JQeZ4fCUxxm3x=zk#;GOO4cJ~{e2zO_ow-tgjls-#fW{!J+pkE{6tsu~;fk@A}N zx=*{=1Vu$@4r^XAh3rkybnsp-o1*p#&RR`Bqi}E<{!Ypp6BxZ-KKjh9IHk2_1t@9% zg`tQ}>+TSt)EZji$kJ$B(<-Dke-ssdJBAD!I72^YQE_v4yZwQ4i$9hr&ZC14kw zs!r4|t|9~O10rC6=2&$ORE|o_sT^hnbKQ}MZWJvyxqHpO@2L8RwSv7X+9 z=9%Yqqq#bZPIo?Gm8e2{au!%e5mx#uT3cp$&1dg860C(@#2JRS>KKXO3z#VZnu$3SdYo9mo!Nyb1a3(-;!UOl zT1UDn>Ariz`%Rzyhoel1CD0QG`c*uP*j|fIWC3&^>H-;E3v!6#rc%@XA1+qj8BbK^ zs35jdlM}gLUM{d~qgKgKAx%pB#@=_)qj5@_cVG7=%|_JKq2J#~*)tMwSphe4z)8_d zCKDIi;UbU)my%zM%i~W9U0~MHojTUPe|q>NTeZZZqAfD58}0xvIx z2R!JJ7(M|&<4`d&U&p2-3(#Ju`^(1W-Y49A(iymff_r6N@!Y-*=T&nlj8C>A7JfNI zuue>r0j&Q9oh!0jvA(s*n{wBSewJafjVGXb1vDTFpp)W&hDm351BF4P4W&x}92=6Q zDj#Yc7vh}c!$S(omJeMK3x$5QOQ0M^b1QVi$R4HLs!iUsdkl4d84n(ufXkidCGw!3 z>^2L90G^n!1PJyff`QIr=Q%VBf^AUOmhGur^5wq)Xp8pr_1C<6x)ybTjGvsV>Tve4 zJMGc`-Pmn^L|{>h1bxuTNT7?(CDnGx%;hGqJqyp3LdFTff`-BaSa_-we!#+DXS7Cn z2bOn{@@-PyOUpa5JYUL$|yG^@xmWv7iByfIoO3ZY0Z5+|W^=6(X| zr5IIb0d!p)5UHOCXfy#;Dn@5!0d#yE5QjGrP+J0;r+{|9>fN;up^w?bmQ(<4FK4q3 z42e2aVNU^ELLgi#f_#wzCNKvu#efIkPtX*L*tIdh2k?|9 zmjA6G$hRm|LUL?bE)!k~5o`~xBVr)i%ZeuUMmv9~>w+oQik7@C(q;3lhnyZavley) z1{p0;l$P<1X5OsKRfytV;7Hhg11ay~!t`K@w$G$6E_M%L;p->_vmTnj?pUmDg%;vuhh_0Q$+b?@l;MFYJ<0E)( zt=s}Z2O9NVxfLHOkB*%O(YZ?PBxW}z6#aFiO4XmmWc+GuTK;MSCu|vi}YvBsMLH)@2vRs7H*GqKRrRNfAhf~qP z%VM#$;h~NJYA6j*bjv7gOXPVDiG2e1A~_~s&#Txv)`iqk?qo0dti=bnZwXV6_f<=3;MAQCG(Ja=MV`o8t*0*a-3oUcrs_Cjk_! z!#C%+Nh+mSSOLU2E6Sn+yo(oLwoJKSMj&TvB2$V5O87;4Zv%=W@odDo}1~!UA!M4M)!%;t(mBV-Q&> z1tNg>RhzNb211UDi4={hxoUr}EmnR=>Wgv(K`VZ2b+Mwy&S$c;N<0J6o4M#08L~T1+BhJy3(SvSeD8TO+PukM(j!r3bk;-R2(MW(3We`qzjN zInkAk`0F1iUm%0;WaWNZc{(e5cy3gnF15ZQOAtzUyZJ2vl_{VTvj92*b%8(fBtn{q z1n^d|XnwxqZlRb^Ji~42JX3cm50%l7qn_n>4e`jTTuq{^h80;HRS9=6wqA1k4_Q)*K9!V#x0cAY~IB7Q)#QQU( zw-EiHCgP3aRw!1#jOe9`BD5)`JKRxA207CVM{Q4>F4(2mgf5T0(Q!k_ zl_+ogIcb=y4zbF*BWqbnkzBu66uFU|-ekUc4g^@LpFhLrOq%06RO#S##k=4zw5y~l z<;3#5dBOYf-@0Z{-)qV$ud-HC3$3ZIY_(p>eLIT8Hx^sLxolJrS&X+;*Y~8ifhep~ zSPahuen}V~b2(nBlizV3ExT2KR^4xjMyx_8A`Z5j%&!2*i^mQUaAbV+6_k^4A=KY&wXIVXi7->0Dy`=Dj>3two7SOW6f~c&ZHMAqiaxFOban z3)dy+cB)@jcPA)&gNjEYv6?*gj&3afoOzYI1tXQ6gvi^4n#FujOy0P2E^4~`2% zC~2sGB&cvvlHmWa!2EaP6H!4qIG)akBKF zOTr-9J$RrV*z8kmg3owkQ-!+wh0V^d1)FVu5^QLqfujUSI!+NfEFD6{v6nbfB}Pu$nOH>`^j(rLew0*h{%rE`{&Jp4RE4}-8`-^xkNv^n~eEKAz+~Em`LM~m2T9I8! zwV_!c_D9`Bs^uysAG<^8#=`?z>qxpIff25nmPyUSgCkg2B!#nC80>|LDDTShJ-t}D zM#}B;fFoJ{u9S0G)ie2{SlA$is$B6v@n{x4C54>nv8ds0EWcaIhQ}sT z>o+feT7_L?^L^wBZ~C`KUE7$JDtGokm5Kxo6+l~`_6F35x;CIx(fufOGOQOH71n&f z%Cxl1<~s|u-oz~L92tKn>6kzV)0=?$D4;{L0BREl#8FBF^d;0U=Xl`tr@X1K7IkeZ zkPQ+6Jw!nE@jxgGpc!#M^@;-`7bgPhKtT36!*~Di?%HS2*}!eb zx^3!J5*o5VGzvrT5V@4cgYxK=S>N6Tq(nyo!|SP)@eCm^>euvND?m>u;? zPe2AKq-$f4j{Lu!fb4;iiuL5E7`(3kqZ5#O6!0ryr^`q1R3VnUI_>cX_C>A*Jb9DK zw1C_KkY?z)C&rve(j=C#EIbLvN@V&^$2+sRe0`Fo~7zGW_IW#!qNpJ2w z4s`)T_DF&$*=8e(HIH1(UU=ab?i@}Xq08K_+P_jpSgP%o5`$1>>J0WMbA8(71 zw9_;D`KfK_vSRR#v&EdZ0D++^@x(V-hS1P;dJL!|L%dIW_hZt&GcS2M9Pp_3kTuJq zTz*7#3M{6v&1%b|eIv6iZy35bLh-N`Zo~@gaaF7>lV~c71I#Qd_svzAlzPPU0G_x4 z)AW4lllb{k_09x4P-?XkoMo(b@IpirpXK#A|6CXg#ZXO?S+O zJZo679Zj?X4H->jt+}?Dm1oSkuV~Cn~Wmmv7`{pCp zkvL|JebnN0;VeKkM>vVqau`l61Nnq(8>zC)$`5o_mfqsbN+f!L<3+mA5I}MTC#LM3 z?@~xV25kmdI>|Q%oi)`s^1@+i`BKB^E2||a7ekWqr(`g1YiED3>rw^FO&x|Mcs13= zQFr196t|=-&iVY)!EMjP5c7!nF2Jogav60#o;c^9|8$*y9=$#mFM0D$-e#JCMG@cj z0Z|&=2f46jGs9H=Og|x^{Sl};?gL8 z`_h_*(mP4ThEiry_FXQix7L^5hk_+6SYNu72Ljl`=ipI&JqG#3YKIFES|%n|Z*`Am za7){yvMk<=_<#=F`fmc35Fy z5?Rr32TS;7O1*&Tg~L4iT@U^A5tyjfoUi~wvAo6{!~gnE_Ayo%XC)AlSD3Hz>vWLNX<=V?;)&{Vf%$EH5a@^1LgagB}RILzvD|E{M4jIDC_?wh||Yd(B|779HvE+XW)T z=r$@cxZA7)^$|(HVF%fzq?EdQJA~NjGEnzlg_RmtR`94hvIJ8A*cF&7mZ0xRvF?{W z;!XQfJdaG#-O_Pv?{UI*a28nKL%9PY$l_ca^WG>0A2#0ngWN0J(JI+jz4quHjn!-R zReyhke{LmnY6VQiOd*o!4#pq+FBfXiMUn(#TM8uts?E+sB?1AtZYQc~y@m}pT@}uL zE-Ihjs6&*h5ih_KRXSq+R=+vXC4Xs^$}E5TVQeI-lDa-_PFdL<|MfP}K*dn3(0YNF z-dzw6q?{+AfadYfVlp|0P|8`T4a(=);`=D9LJ+hF)`zIo*hs`pA54*JHA3B0p{v(A z4nk8A^~(aL40jeMiuz`z8TAs!>Dzva`hto@F;SmyZUP8*5Tu6B zr-=GGCeC)~Oj{Gwd5HpTGCj9Z@QeBZ?(#amvZemo>xECGZ>s!cQQd8+e`~BARtv~$ zr{Aiy;Kp>-uU+ywozx!`gQ9E45_F8dV+th}tm0ZbGE4ovGo&XX^|7BBeshA<*AUH+ z98y4bc3cdhkRy9W)W8U5Y35M zUNb1m^KN*~sU@<1zqHlcr>j_VLNw=KR!WGbeXJM3KG}-^k1VxA+v-7US_@w}5IQNO zJ|zoJ>3~*&S;0cwbE1XISlH6sk3xJ%3Q*L$Uq=9Jq)Er9cNP?Wg}U5pzex^&;5d-C z!Zn&=g4m@X_WZ@W7u){o{d^st!$T)2f5PJ^jx5tx+@9qXH={1QEvBwq^03-7bJtX7 zMq?wAAwV?y2Ir9&6wJ&F4%tu_ToNYp%)CfpS#m9;nyF>bqGc0|waA;0H&8wESiLXg zb6PsN4u#7Xiym^adSUf8MSMN7jf6+j@pN?0 z=v2A`7XYZ-K8Vks|JfUXx1qXe&!D6OlW55VI@NyDL3lMOU{iVZ?`RU~e3%?2T3Nu~ zkVP}R5YNFStt8km7rDPtFN%1zQn&;+HBiy>i9c$sFW)&UrP`!EEm~kI)-F6lmVwinDWywai zx)Jx35@hV^^R~8yAd7|R9=-PAFV`u-Y>`wSi0>42wOZygKev}bPl}M#L4WFg@QLHF zF&144g-<1U8qK_gw6a@4`I-<#brae|>Mxe<#-*s0a>?y@R;WFFGF^`bq^r=66;4%F z>&glqQ>hqr!AfmK(anXGZr&?S7PGFkDI+|RXO(m$kN9hPP+t?qnLWMCSJ}FH`k=h3 z{N;H&nw?zF=WY00$tf4W2Fwe^JUkIFF){-qzj+7`@F6L(Qwe*)eJ;XIa1-{#J2MgX z7M}lbIHB<1E90DSQ^uE9y4wWY z2%nd+O$pj~A=wqrNnKfBavAU2^}dJ&Q=A2+t#ibi;Uv2Z3?4V%r`T=>D7^kLco5iP zf6JnRw$gSjwVfrROZ;x~{lVWNny43~I^sVAspX_x1pa~uv7UD7VE zf@AKIc8wo9C{#C=xZe!q4}eir@|l)zjUu<&z*6jI#^OEfS8n3#U3D&d`)Zw}GP{IW za2aGDkPH}q9Zd_0^BD*S0r(CH$A-FUnlGSPS-p8=xkP2k##-=L%KEt;)f|t=M_42I za_)y%!JbPYR`3u@Gf32+7ouiyUN=heOB-AY6Q! zXVwEp+W=E-5h0fn%50 zhR>R}qCxVuup{$=tZ6#^+hv#Fp`#-(k^+ac@2uc6AHJDjop{+XE@KM4c`eY`3x=a< zIBk+A+|P|yh9$7Xt-+-1^|>R`1W&`ZaBH8#`2-U@?U>}qXsYkFZ7(Nf{U6%W3hzZP z>oBsjdT4^Di;saATg{LVBzPj#nBa;31Mvh;dq85S!RFidK8j8%tXTJ$li;bjc@X3Z zhe^7IAV-2Wj2wGD=8gU6`R*%zY0sb4mexvg5$GPBS`;vCuCa#_w~sE9lJ8-j#MU&( zS`nI(TX5oIuv<`1-iuQ6jD=a7WL_E#qnS@}H1jD!X#5F}BR5VIRc{)b zdq~7TWKrbK;d8HOlVh_0DB$yT9V1NJ1>8Qn6 ze1Z)2_e}?q} zmTyy7KwE|Svr3Ms?^?(TnwVqCHjg}t_L1qjcrM8Du37S~6gx!)LD(6lhGYTJ4|PG| z{mL-) zAnKwwxP#7_huQYT7(1*o!HEv1v~uFiozqiQu$PI70OzMf6(QLaJQT3bh{3{&1%FH) z0^u#G$r$a$%;k@nd2F}+UMKiU4ve+h7VKoj5lAPAE*B+gxtmNIXrqpW?yI2p;Jpv! z4lv?;mviLX5XH;oomidaUDst%BuC)66{NZo4maX2hEhynR+Zq`)>_Td(CT;bx9{qW z`0KA3dKfsqrBwz4P|r}J(*}F^=m&& zCFM2sp|>7@sxN&)Jc)jUh_~tnqVMHeFayLWM%f;Z8Y~kAbI9B=cBt67lm4?9RUk5* zOgkmr-p`?@rh$Yo{P!l-|ZeG3!qkICG~mj{o)yeXmb*&@AtJ zmS){M%%)k3(MoWzr5a5ngvqZbPPN_fUD%(XW+|EJK7NfhqGUeB#smiDnP*G=n-=tgC`0lRViisVD0#)l4wY4HH<45 zkDr7#cv!nsK+z|w0s@Mt07%+EjAtSKpF{EgoUVcCNPpv0U3K7HqCU++-daBia+e)B z0YxCkRoi?Hg}K|mt$Lg=9%Fuy$%E;_15n)VST_8hC0o>XP2esJZ;ni7sVO8??IoH= z<16x@Rh1VKzF2=U31a;*_l?**d;5kbK_1@U<%Vv-E$-7Gu_VnRWP zPf2X4yQ84|^lD}T#w#5I@)$L?G&_~~JDaVr&5BECcBc-)gOb44E*T&`no9~8zHszD zfw|vY3m89LkW(}}*R^38ez~&_V9MBuN?YP1&UyGDaU<%#*D5HmJg<8zh3jR9>6op@+^vgW}=qDQwKOq1IlD7g@NH#aE z#~Bdk;VyWL;k`7;Uh+lE`}f+wFSpJ|vW+r-Kg_KO+abvwh{^^5R*1d(>9p9wqhXag z1*AtG99!7S>_FdGWxl^VR+%s1wV4OMZw8bTQ(gw_G49^ACu#Ewd%UhP_zNC?{JeVW<$QSiyEIG`l5^V%#X0ItV6-AF(GA7?$S~ z({$x*=PtUK+`*u))~yBn37#mJyY)L?!^3H(C?oifZ_|in(oN(`$j<4C4s)2!<*mGG zHKSNWWh;;2bSd;hdbFW=7CKXnC7fYL3tGhSHZ*J8?+p0Jq1il$ryahcrn6KsW1Nnk zOsL$pj7J&lNrEhl1QdZ0NY0Uce|nT7%nqZR?+2EUtT8Nf;cbyoj!@7j*E!)#-adl$ zr_qAdI@3$=5$g!wxmFsZqY(d4$0R;sB3r?n2}&<8otM~jXN6!ICzudK#R*85MFrRK znZE3uF7>{sa2Mp3!+q-T1+w0=!|PS~Z?Wy_iU}%auLsN4QPerYi9>e!1r>V&3w#u8 zEWb_tKt%#%AXZOpEAQoSutf9-|4=MV%@(yjx-%T&0+U*N)=u z0J*v`l-+NoxW$}ZFL)CHb1%{C;VJflD{K=1x)BT=aDg6h)Q_zwKt5_UQ^e$Q>ab0oJ_$Iy9|2woPZ3u+H`gUApiXM%Lcd-XnE zTEmm%eqE^6<0b08DB9RGZ63x0eR8;`z_|^XfQ>RXol7Y69o;9!LGdR!Y;w|n0A;z}y6ERpd5KJ39 zCMHPt;>cA}ZP&<%IM}sy|6#JG2{Ka*Xof-E{S`K>;B-_dq>nQ`Kz0v$zm?zbIiH!B3mp9{On2hyRqwx~hE{-N+ zDR2?}c^$?7x!t*6cahT<#s9%;|1RzS#6j^edzXYHO2lRkAxaZk^5P)!1QD_SY>&RE z9)xJQP;^opL`{N-i1#5pQa`{8^RE{~HPfBB^Cn=m`cUVFB6@-l6$v7597KgdL?k_- zh{h8leLHx+IEcCe7X98gVY`NWYVr>MnQLlCpX1fDM+DOd3sdj^LC1o-<{KQ<6-@oCOzC6@yX;1UO1@fVI(2RD5bNnsSPYB}i7UCWWZJCZAgUAuYfgvWv z-So-M&fBJem<*DG75jNNv*Kw%Y)+}LuzxD;tFqRDI9K@+m4cU$sf-Y*)N`qgGa;M$ zT(}jtKwF&7g}aY{^%VO~0(KanZvZR}7GV>wp@bq+>_zuDC^`ZbbYGINF6{i8*>d0D zAira!2FDq5mI$V7!K8-?jQ=p#e&l|Fs(vBd)Ki^XXP|Wz(z=n;oEdZlV4WD)3Exo< zJe&k$6rX>^t^fO#+rmFE0 zWLzH7TrE8F;kfw^OLK3S>fD@B8 z?q}7@!Q}RM)M?*QxAIV?qiPitX312I_ycpz3b)}ye^vhs2=0y%o?; zf8R6M&nUeaykE-0HqM8n5BhHKsrbP6%Oe=2eDW>Yyu<-KqZZW-Kz{ym!1yN# zkMd9!dHP_)J@mGNyd7-Acq`t6dM5S57l4dOutFu=VAbAM;8H5U^Fs9@!YDE?RfCXk zB>T(MVql?+^iulEi=#k(qAJ8sq~(Pyr+Qz;m@JF0s?A73M#)ZUFqfn}DRns>qil`- zE6YlLd-U)2th5u zH$Baloi-&2$*F1iJ9fP%u-CLJ?#^o;>g~jF> zK8X94)Vii+ykxlhz@R@1jEF%G5Uf_jj>rJzc+C&T#0%E=}RAYVWP`F z3$Xio`KQsJZvF@8&pG}@^rxeL1^sF7-%Ed5+Gs22?q7p<*ky79s)$G!sprq8rpT_E85P7ZRa!V1Mudd1(3NYo@zA z>LX0T)ev+Yq{6>e%CAzFNckYx8h{bv+iQTxzaH!c-bRG+ws6n|0G(W(joy53%|zD+ z__q`PzQ(_#=O??@&bsa<*Q6&%%RMFaql5NqRLE_u2Tc35vTW`O z(5J1KM?HgVQiH5|5~lSy@WP`Ck-2UhM!WE`0r^&?0Ks#^P&W#vzhux*!C4Yj>h$YL zhG4G7qy-8)Vi!H_`a2l_a8&%GB`4sI>+mxy*YUq_oQ&KR#P$6~i@?axlr_};2>?vT z-A@Q&3SpI6Ohj8y>E zf(MK?&%k%-wd2rqM9C`1azcl!~YlE6a zP~$Bq+;(0;AWz#sb`VG}fJg#u3Tg9epR+bM4b|pqbt}1Uw090lGV&Tyl6ojJcE%_u z^G>|XC4gmeKF5Uw;Gl?S02Y0d!V|z_x(j|uhKO1dIYcn?CtQW2|F(M@QKHeHh@MllK362Oj!dH3G{0&r+; z55Uso4wnWH1tFYOZ3&U)>+chQXwwA97Bb%`gCnqRJpO~sH~Ik{*G&%c_O0-7xl+8V18&0cL{S9c8*2&tx zQLDq;iE0ASI{6|2IJEk4z{b>$VnU>~V=~ticKpwE1fXqQcAT1e1#61b{&rlGbo;#P}36I%(zmt^u*q#mLlO6 zYgI9l&O=o`TuZNpmTu`~BC@nJy2iVUXF!-DgmE0b3=_rycxM;Jo+6CBLxgb$hTt$^ z#AU2CY9qf73L`FKt>N(+Yzo_vS*@;x8)ypSfN@cT@iGF~{TdGtoe038FIoaNrZ67L z10pSqpN)+o7CQ()3*&kMaHwe&U}FwN1|jMz!gw1HnZkHOv|6trU~RCjV1O`Typ#a6 zFrE>ItQLR;mvJs~g2H$bJQv7NQ4dpwup>9RFuIE$q0x`yXqKsW7vD`UL#1co+jv)Z zJ^lmCXA5R=I2+{WjE?4TUiBEcPUYlvY)5|SD5D0AXsz!25YzKT!pC#QP>-#It5lAo zG2tqeV;JvrEm-q_05pyUkVF8p1mHiT2}2ljcf-N*7YV=?1_-O-Edp49kPWJPk^mfp z;(qehVEt=GsYTEMvE%Gp;e;m&Y#?14_rWdS6BvgksvXd#eS>Y*-VQa$gnFSdppZsH zej2M`!AU_}XP8jyQ(P{>=?SaXO)tBA06uO+Blq>T*T&!6^ldqPJK0`GA1e22Exzp) z<~%dXx$O^;@3tkGifu!;C6-+BFgChFMjBkm(&zJ$9~~uG=8xwf9zOQN_wyq=?*HLO z_Vho;qYiS#S+qGvYAo;0HJTfKqQ$x5C*6G^r;ucsxX9m(lXDk;J@6hu`tt=sAnhU| z*A-)i&JC9}QSxKW>t}7dh$39VK7wwAi7rN@2VAp7dLpnKkmEzH(paKQPygy>O;7dw z^qr1YyktRr3c^yc=BG!Di7Ak1Gv2#xO2hnv*G01uJ+b;slP~OidiLMu)Q+a54f792 zEzpn)@UFdCRslLUnAGsQWssS|RG)7@gf1{6PZh2;aW>R5%69+~m@&!c8wvLone3p`u`V^m+ zXcUTewF^?zSapj+(GPK4t@rT#_$cZl6!AH*=$Tl%u5Jcrg^B3RQR;IfUd1cYn~P8@ zxyUmp0;a3s+hC)#Guv=DY*4r}`xkkGyTpj?8AbqMKIoSOK)KSe@S7PRY>e1Q0Qqug z$_fH-7y`=4TilYSMdk{GBt*beA3P?OX{cjaKX%a;;J9O1&zTsY^wBI_qT$^eG@dAG z-vpm@R4N!Tm3XP^JL~-ClKMG8GBeA-bQOKYeU8-S7J#={~FS^P5dQMJSac zKc_4OZ?mDwb08go>3M23g1%!}BO9o0*k5D1eS3yd|A%$&m*k)KjbCl0ZU%yBGnc$ z276}8%f5ev$;(|>A~faYugajjyfQe7ygUyt(3F?I6M%!fEFh0DzPwy@e~7$PW7r{i zxsym~C%t_RlM*H`orsil0caeJ)+7SZbBF(2=}ha#M&xB~4=eudu%28B0|V1gR=B7v8}k}ID&CmY*>=)fL0fS8*)=-QQ|1yZd9T8L3 zQcw!Pe5Ru|K*#Mx-)Lg^AI17q6VEZN2!DUNR)&asR~F-ojEIz4u^VwUPOUioKC)<( zT9HcwNs^ie6UVs~XTfCP3nr~Pw_+xy^XliRdjjeQ{0F{tFu~$8Sicb1A%LYJD(!h& zf<-e*uxKt72GMpTw9A0;X(;5>Z4+I0;NNWgE5g5j;on01TY`V)j6ufpzk>6H1@+6& zd%-C~Xo>~J3ovoF*0WEAj7hqUUdFtRlnK*zx)EqUc1o4;o>5{3+K8FHM}5w3DPAM< z_692DO$h2*k;9Fd6x%ht^gVR7kNrWI0y@0{0(-v(V@hA<~W~eeaVx!1_+Co zJVyXo0&pJ#gw0FtC4hDUa4P{gbk8+_rR9q4qtqw}3Yx_My0WK8L_F$pui4Zl#x@qP z^YLb^*_b@|VZ_hzCBO{p>6~*G&n*OV5w=lTKO7Sum!S+ zrKTWH3$WC*T`i(-D@0EFUF_VruH+}uQqy*I9U5nhVUG%8;k1Ntjx2;c)Rx5}B!gXN z*k$088DcP96aFjyNxKXyp1GjD!offJ442qJL=bF%R#V<9tv1Xm0-?0p&=&#@hN~u6 zxf2skNpi8`Rh+A~fyz!4*CAUhMzbl@aEC-(uh;h!cpN}r2`?N=1=Wj|mL zs@HKa2bFxBCX!5*dH|1_nQ$s>%nY9;QiyO^8)4*_ewEoB(N0Vb(#3A3vE4+7u(P#H zd`IkzpvD@HJ>;W1WOZxlkiM3uDBU9cp@Q+B1@+|Z2mQs65OZPbTj2P7x&?C>9p5jv z`jqkM2u3AcG??rzE`mii;{-U&KRKWB1aQ1HZGqGy69|xv-pNIH3a=qcL#33SNtiptE^EQoTREha6LHh`Rg$?kbo?g3S}(r%~vY#tjb z9O1T7&n0a^k%%Fs5;Q{OuWo6&3+9fBI788WQtnKvTmx&TrC3Z96L z|3SxX3kk7xypyhLYlzvEg@AvjiIS(e)TD_pMVMo*K{klTuP_)ukdkEQmU;%_PBT)@ zI@J@{*D$44-B4zw_|UZqUVkT+`DQKhBC}JS2F$wybb{S@uhn z*&9h(wPgK>9Ki+?BZ0z7fYS(&@wU5oBGgcaaVY#4G&SRBpV3a0dYL?YY&J#pBXuH^Liq^3nw4Ea*r?k%R3W6aW zMR%j#xi1;>v*dnGcWEkk5OJeGV|VdjybtmLmM;ewOlHg`moj%_%9LjL9*YwVRVQG_ z>ol9{@3g7D3Q_%JC^`u=GOJD1H*(jjukK>ihYBZhL`6#|0yvb{Je)&uRR420Kq%K) z%9+~@50YCX?nkjf=Qs2>%=%Zt?1~Lvi0F3Qr zg}V{=lpAh%-Q(r^W2}3~xOJT|D68Z!_CPhJfg;^|a1X|U-Mx-AS___6$ufoiz?;DM^}3i%23>4P!~C7F2Rtbre+7@jd({ghlN46ltF2N;K$Wit zr)s{L==vQ0zQey?@b54DYlio&@GsIH%{$A=mno_DSiQF&IUNTlJqhMvfnp^BZn&K= zdnMmehy!?3hudL}%+Xo=FWlkN3@y^`3QP-}hVI}&aL5(73YXe5gLNSZngSqKO9C<@ zy#j>uj5YxX6B_acJR9n%!bVi>vg@b1)DwmDjmG4Lo(;*T-tJQO@tak6lkC~hf!@r; zn+;R~?;5Gc|ML?KAA-XJvS|EuHc@#{q_3Na8YHqH(H-zFn()VzPcvIe332;D+$!Ow?4iA*6dHyJ-*@NRi8F{0~mL7+Vs2p^^>jHpJeja z_VTqzlJK9ySEJI#7V|Ff!zrRWsc>OyRXRnU{iCTuxLo&OL}ESJsrBSAX6Vd8;orz! zw(+=okbj}U-_Ob>?kJnM4c@$`Y~mL6_lLnSQ__dzS2pZC2t4~|OX8WKd6uLM{H`of zU>W_dvV>x7EZ!x=MwhSTF#hOqq%3<|=qO@Tne(XF8Ny43qH#5PY#$d5Jxtj=qfx(-|v<&J*Dsj>}t&9 z*9H5H{dLcUwIH2pOtxy27Eos;?OPe743jH@qwzp`r4y>|%bn`>(&R6{2;V&_V^9hm z(_J?i&Vh95!{YK`}NwOr|jFJ&IKre%>qc-KHj#c%Df@zy%d_~EiC`=s+HXEJ0!uxK)AbYw*E_Ok2_I`FbAF@!+E#zq>;lr5~ z&<#}r)$whjM;Zg)OiD)Pdv|Sp;rT>ybk4XHCFasDYqG;{(tmJxKGC_3NGn;NLa*GV z@8Z9W$jZxX(xcQgT<#-$MqwHzOKOrS=phAF6?;&$uH{-#<3e&h4q2uj68vzCR3rf* znhR~HD5*)~hH9iYfLdU~;v=Ksdwk6>3SZV15lNAqUqFbY8&KG>jsjg4M{ovogtz9t zg&KwupqUhMK}``J>{NUS2vE_{q=MF2EGlT?AB75n0nVmCg`(i&I8R_5^_;YH`+OK<9tEiIRt&!X}4_c`J`Lds^o&J5!EW${YOY8p~0*O zR#ZV8!HReOvaurS9dD}|6kJZ5^LGCkM2`u$L&R-5@J_YkU6oYOJ9ub4Zi68+6%>c? z5IN03x}ZGV1RY~UeYO~5>|oiUKc!Tt4VQ_>GJF$buKEnN&-bSU@(1;?+4B|POmus0 z9DyzG@mm>ZHo%#9Xjo?erLYK@+b4g`#+W`%Bh0Wx7cn{=Ozr|L&prchQ$${#H zT8+a%q^2_Mdn zvf4Dj=<2kmvUT(wmRk_updY6cDAdb?K;+ez6M@`VM~n|TKA=#>1gBGcbw&!}R#hIM zoh)b^tG8Sf@$o-MN2mdi$S77XMH>((IRgn|Cj&A-5DyGR%p<1lLIS&Dn}}gO;wbj_ zU;0ccV(a}1dGTDQE1rO*ba|- z5PT5uauCPBIGD7xiA#Mni9^t&)s@-h43YhS{Go&_7xb875S}U5`d~8D762jvpj7?w z(oYn)*U@XW%Z#uVmLdg~L+8tBGTa^Tsvlvb) zmMMAV8kUec1cL`bq8Q0npv?mSz$f})Fb>S$D@z*@%nsnt?{boT{g;)Mp4b7e^+I?R zf?0t!yHT8kQ98GhYbruHOp=;_0vyrCi`pJF>?8z#WYCDTdx(nT?3Hms8qgu1Yu7&B z*qw~|d1mr&St+TF3;QGD09SfM#=w+<6OkwLTpomHU~;>Ce9+6L&-Vq!0gE6}OCk{z zyrm@v-IvgU*?~i13liiDw=~EC)dev?ooUc!8TA8SLmz0fi=J~A1=>{LA#9Q;4n`kT zOtO(`$_CBcAs=HAt5`y*%q2(YVx4=)8|c5_2u)?Mw(mJwviVG`q*oj*IefZ%;q%m` zZ;$Y(^Q0M-_waa*x0Ux04%SOX;WCzR-W!m1G49!EL)tPF>C6d?@Uw%=7vB;J?N#1m zMfC2mB6^I(rQXHv72mLYwV8IY)Tk-Qg!?T!C8?l!emf8_R+S4P9b=G$KPyNf`tXHa zAIKQS(1#;se8Py)1oOQSv`ITZcm^E|*3Klb8m>8=yQMYQW(Z+1c)f32o9n%fIKmVdNARmfv zY@)QVjKh+;;m7lQcj?nWZVXH7@(5s0ZyfA@PMB5}J!dLl8 zvJ3YdU}m5u?5;>;)$%ndx7sR)9*&;)OKJ2rd5oZ7nqbNkOhFE7$%a^$91fMxwdj|U z%61u>D3nk)oFW3OAVqI+aNJ!=Yl#Shb*U}+y{WtS3j#-s4BggyO4IzV=OVy5*2=uW z`F%ICh@RjZ!*|GQ`G%vg%6JdGC1dZEk zBhWq2rUOif$M}R);SGF7*bxhNdMV}>nx@yNGX>>NH6;XPQ=NiQYGQ2`73+=RSWg00 zbzg=xPc;o}(FT@;f|QcY`E~al{5D`Nq-g-Lzn5KX`6G_!Ely1J_l3|P>CULumPq}c zMj3>=aKA{JzY6~i^xBF4;%X84fdTx7lR1MBlV05GL1!^;*bgxsv(d;*!{REL=?g;? zGq#x?^bp) zzko=0Xqp?}Q5$rRy7(C7a`ulb)hG|Gr08LO3q0hvqmZ{Xu$U^RRzh5g-lX*%d|g3* z3fxoD^E1&KB!qniZubxG?K=U-4tNP_3hD^@bvRsyace^NSna^GfIxCs5c3x zhC`Dh0|I*RP00VcUC_nmGbGI%XDxOtZO1|tqRDz`W%oXDt0V|7^8J`yzHRIMq3fLo zu-QfA8&$3Zi(Tr}=FSpuqR=72P1nEg!sTEj+_Ta&4{SqDY{|X_G?Q54j$IaO+;~Ll z;!!?A7cSO|P6Sb5VqFT)+Z5}3`tBgM;{ogRy{~xj$0yeR`oWZrM8x|2F*dQL!+%4? z`mwQb#oB0##)OOY47@y6v97B#3I9J4>qi7#Y(7U5>o>9VPu^>k1l^{2C!m& zm)w;Zxy#+fUt{bwcl+vHwyr?oa!;UeG-?QG^Q!nZ4g&kWmH`aKg&uFUn=?w|(`J#xfxP%jb` z{RM@QyTaE$3r@*iwetwBtRAxh$k0QsqPse{0?$H4UG4= z!~OZ_Bya)E>C=?=QsFsdV_kPlZDY%Cl}f{RKONwXQT||xGwfcZg#-rW(J)!KHv{Ld zmQvUQ`P_|*W_55GIhl~Qf>W>xTvEYQul1lG2IbSl>$7{w2$WRdAOVnzmmakhd9nVL z6S?NQP&0NAh7*4$DugQOW11nSY6JrY+HAvw+%%P!#v%KB!s1{`Po(d3HFgTM$=eP3 zqNzTUNL)nDQkD9&i8Gc;WDPKL5NX?M49a8v%+>q}OwaV?bOu&vr3Z5J9&%T4Rk<{y zNGh0t3Zn4fHsJNw{*#aM8x@C!0f4nyQn(0IPX)AdOs{c__^MAyUTke-yF39BqQwsk{OL9-Y{aM zYPy$IFT}Qr^Z&xPrfF5V-NQU+@gHuy#O5Ez^dF9Bdxte17}zeGHy>_5j_Os7pp-Hp z^IeRY`w&~(`^eg^XCsTf5vlItV!)b-x>Hi~ccFVnjxddD?Kqu5IHrOQRtiqf zD&kDfZW;z<8bU@52XaLkwH$nggP8Q!w>)T)Q5zt0vp7cWY1kVWwHNm=XK9a+4?z-C z!%-M`_9*W(;iZ!xQ2sV4?_Wj2T&c9xij;ggwWXKozWTL8R;f65i4LDz)|uB<8X7l z*!Szc5jo9HrA+4iZm$RO0qTkL_YhDEl3qT983;Xt842Mou^7~XWPh|VU zt@Qi&V)o_Baj-lASdiL?8Jft>(qaHDOZ-SZv)7GyU z69kI3W%dW_{ChK*1Ba5(LLSNr+64!(pRZ)uQYVqgZj7tqk6H89dt3tBQ0J9Ny;eY(Ucd5RDSu?B&O zi1h-DW8mGrUor1UrVCTu-rk6HS))X?TIX`6_o-(1z9l(03RJ7Nzr`q!n}Y18iws=M zuo=P0Jx3S(uEXRZ8%)hn0Aw^2GD1cHJ#l>IOBn`IU25QY<}e`k|MCpW{x7JfczDpo z4xK_CDVs~T>iB%=q_h*^>>$Wd6kND0^G?HuvPWsJTUlXgC9gXvYZ+%fBo^)}$1jk3 z&iilVq)rLP`n)?4<3nsI(54(-3?M-ZmTzeF3M(jB(xInhUee)rw50PAmUL?I+UKLf zvYJ!Lh-eL`(wl~tz=EgNc!EhLyhMmmZ8S8K0MFFEiMRy^A_+%is0SHDS#!qYxw5dgJ)cuJ)L%+Dw2KJS= z$aMV0-6A)sy@kF_@|Ge}3y|406bOL_*M(;G*?h!uT@GAL5gy*YgWakuN&1w83-#B4r>7-QB2CTWwBmR8MRXV#jSr=P{&~iX z6r+D$#vQ5d(k>!U9@Q8bpXf_>G=}?8{+Rl?J$et~bnZ?Or{0z{WnvpTFomAUulr*3 zvDWgc9A^B^r(BDTSFj%apk*3wJ?7%}KHr7kP6P2a_*O=CDTYPiS;lk>j%267vz)U2 zR=@4Q#vtjpawvV^PQ<jpi^*AOri?R)J7_;k34rAflmy=|?qo<0kjjMU8_>Q@jUW=2LM~qUtKV}k(<{Bb<%u}aZyaXr zs@}m&v0Krk|FRVYF>q_w%>f@g>V292oe-_+Z}i~JmLZXjy>=Y?2D=Z>oIvF+{!b--J;vuFny&PMS{N;D?4B*#8 za7WjXcPD<C@vI{mL&}Iuf32`o?CYESV_R9}VPu7=P zq?%p~ry@oD<8*SjAb5?*b>nT7i*fh>);ra>E3m3L2S0dK6HB1wDtQ1!4Qm0OLUG+g zSUJS}Ex3yL4Cd_l?HW`03iV7sl&3r7@Et=8KGB-g2xRVf{K6>2!@LGK5# zTnEs}YFLs~zIwe_{n1W65j#IFw|M zk0UA179S5!%DWr`cz!JtOR@2Rn4Mx00*QxXdQ7`Y&lDtxj+5A=jv#D@+gJfOjvp@i zm}ZUt22&i{V2%TIc&$=_!Faq=&w0akM|7>G)A zu>PcmdjxH%G3RyOI+}#=3q31IvtH;~Nr2;PRD>rwZtqXl3q4KgPvhh~1W{;omAht7 zHRqSxRoQ4T>#*%(;Sa`)NjBzTH$CQG1Qp8Cam>=sah4uf8Yrw~rlKmBdJq|?{v2WI zV3^h@Odarhkg4YY#EGdV0rt3=y5M~gbLsz3V!60Ee}NGD=+9A!ebDqWApv&* z#EIA`fIV(vcWh%~nVHH%giR8{lH=5R@GzW%0UThe#(4;}T#+GA=awh*dAR>Ao5}PBq0$hfrKcD0DBiiG!jMP@tF4zjamM3Y~KV z_q^Jpj&4Pu%QSH4HJq0~Xh#cWZ`Ma;*z0ibjJDM4HOAqH>r=O@hw$B8*SZ@hoESQl za3Nf@g%7e#)bj0mS1g}>l+eyq5kATO0KH2W$$mSQqdgw=56t<4OY{6B@xxyItoUI` zeZQFFN7=;n7(K?7&E2T><`eUUOUp2tIyG?-xt_VH#Qy<#2L6A0R>tj^J9$VCE;Hsw zoWOq0a5N#z!on*IOwS4wZd5m;YHNXUuaM9t4hfAw0xE}R$GVF1(vSfPIYx)Wsnpp5 zbXu#CyHV|gGijU#K!17{UTb;%2Q=_*%-=@Q{B2a%z@7bI*j@&h*~?1_!eJfO3s}3_ zBr?5N4RM6qaiCIn^?J6*QztXwB&rdFpH74~e}jUB{xpzYGCRk$fkK7u?9V{(ep;9O z2oK-m!BqG!@a#l+^{=6nClXTM58^<1A5A%=hHUJ{aZwVb`e81pt?u8^GE<+k<51NL zRAIRcVF`3o#&pbcU!^I~fV>=3RW=|`Wf3xc*}-Au+(h+@^Y<$HjyZZ1Woxz7R5qPA zF8cInTkHIm1@*MMGN@Aa{nQ4+@yj_JzaFzEozqp8y{ytpA;@6ZUG`5*V;B}$#B~V* zB}fj!g6;H0g6;Gq!FGOU2HPj$wa-WB%wRh`OR#+mOK8nvr>wJ}7 z7ycVgSu);XCe{#S(PxlFj)FxNVKKO%kVP;;7CjjzS+s4~=ObJuS@bMq^}`defUHbB zF+w@l#F(B%-CueY7(w|mwEDQJ1n2gvmKR_qkiCi~l*mHasT$z7UNH5|MMP!{{^9SN z4X{|jJBgZL4-qoBcUpUha8wlUAyQnkL@Zxu(&WG@( zP-Yy`TJFaiA2*sHX(_Wm_H6?O#krhEO}7f+tW+*^4Hu%$G7BvR@39U=t6+x~VO^$Q4(>E4`*@E8}a5q=?i@BqaqBZbni_=X4~6Z9;;2UFkJ7 zT6JOkqU?fyI(o*$Pj*M+w_7*KJL$dIG;TqsLG0U7yT8ygXxu^<8!2BE-2?+dRtm>c zT#JGGFytQ{&zIakju&_iyX3xFje|GmKX@_w-x*j&^^ecs9H9&FTr#&W?tM%T6!wG) zr(-ZXkAU?;e{%wG5YWHK8N)LFr<9(GT?Qv%Zy1e-cx|roSMPB~@djXtex9xJFpkK9 zEr}#NazHm?bgM9x5ohZCkLk#J-eO#VfpBJa(uSI=u-ya%;go;78&j=XQlqlOf%y$; zSTeUG7?&C->;T54qSXiBGnvUE9}|EBGn%-e1y{nOe33?la(|bLU zLl@G3w1IKR>1~m7tnvLP-(>d1Zfmvr489y~vBY*3B*mb2ZM!VPdzVhX^$1F1OyA1v z4l-19l+?~t^Yq*FMD}T>XgqdB)IR;1O`?fCIo=q^KR*5Ij$JSz`gb~BMAN@d$v^Ba zqVopqM}*G3MgT8SK(?tZz-dg#aAnY$Ex6H~>COK?f2FoymD# z926%5_E;6vxAFf@LHi4?pn`6|X^hbn^me$V{?WqaF<%jv!x-lwfC&Q7GaA4J1fbKs zS`mN)XBz?*R6v7q8!$WZiE8llH^kyt8mzFH1E?Z2c*XZ1M{98Dm(JuA09MF3Rt^5f zA6J7<0`g!O~8izx=#6-T+_4k&Y4GzilN?04|AqGQ0ZC|fJzleP6g)puf6&daH9N>Ls~sRhIq};z;p_C zDfTB$y6NMRr}E2d(!Acr+)`@b8%S>}dV`NzT)!C2^3TG5^l4!3ES&hTk;Y!*y{*}+ zTy(BW_9ANw#Uk25u}U2|gEa-#r=dC(8+i2UQvioZ&`#1SwG%F&(VWKr&0YO#(e-6G zj>MBTx%o=E#?}161g-tE!N0~Sv zE4W%s#v8CHEGu}sIt_IAYsrFCsRo}?U#x`BYr7==PfQg}U*wxlocrPf!0N2vur7a{ zuxNMWpK-7lGC8$n1;?K+{PimLCR#|7<4CQgu1s|FenoIm7|&SMJRuV$$Xw9>Hozs^xs{206k>40WEAcz+L(geHA-^4n_Lh@Q*3jz9>*w zil#NeGXG_2`A7^;+6nSt-Lqsq!mQ&c%sQ@XU?zoG2a~^NZIn@6XmK=B3)2B*Dp?BQ zaZs|uaFvL+JcUanp4nOwTyA=WyTzs#TPZd&w-l|TVWk#(f`B(Ha|!pEpg#Y4k;-X1 zoN1d7L0h67{qDnXH_Cj6jt>*1&Q4-0LzA34)j0oV|}xr=Yb zz!9==9@|GaSLmywv+-;r6s3e}8q0?>|3dSEKw}Q-H7+9==-ic6`y3)PLQu}2rtFud zG>X%dL%YJ75^wWE3&g2mXD7X6G8r_JCE7KNX%0;&!j*^We$*gDYw5n@!)QcLv%tnn z+lE91%LbS~T_DaS2nX?Qf2?img`_C7ZPAO;wjnZ8uU0N;TWC@(4a3{jI`ZGNtN-u^ z&h(T4HbiXV@%pJlOwZvL!qsgDh9N8#Xx3ks%d8Jg#szKdZM6Ma>rC5^@Z3UaOH|#i z66(n1R*>7+9RmF)_mIP)WF=N(Lyxgv2D9cQLJ#8wXb4RFWa42vF9^p1^gb&$Px@}jd`BCh&cE^4^&MB7dz^#S_@?R zP-uEA_;N7_l|)haxm89Q7GV9QU=v0bgu_liGoy?T$tdJ^jpVD%RE;wycEU+JKB357 z6Q)9&26NxG2yq$FhC)d)WekaJ}mpYdFaT=P!DL}mEF=a^h4+1&;&N<2I5bQd%o zOETa3KTyTO)$q1t9-`KimTOPBO>BYj^1-@IOi`+}?TQFAU4+ z@u4v=t4r19BMq>3W=h7uoPryT6k5tGOuC|^A{j3VfA)Sj&*M~O8*=`(;1FL-kZ}oC zTK)qUL_4YZr#8qUq~@$Ul?J8OnkskcGa!XXdK`cI4xH%rK1j4>F9vNhawv7kB+y+t z8(%WE78GiKDaE)l2Xr?oInqGWyS4BKkUPeS+{xrbg4`q_w?%$cRB|r|x#$dLdP7jW zuOWV!Q|InZ6*NKx_Aa>bbSx`bmh_|?meQ8tQo0?ElqsdJRy!-rljN5ja~?zMXT`?L z)k~1u@WV zdi-YO{tDX*m5EE(7PZeEaCnDd?f!W`Tj9|ckn6xP5u-H1~ldeq=@==NU_J_6kEc@ zmUrZ~mMNwIyCBHDBdVL2*T&WO^cQ*CWZic`x0@}ss8v((v8fY{BiR$Cb~ zx$dMB$yu$St*YNr8A13;JVQiH^uN0#Uc8yKEOwRx*%E? z2hmeOM8uL%M2iT~e(AJnaS%-aEHR0_kVNid`wXHF=e2qzn*?GwZ=zj+*Y?}wdA#2vYtzJfPbNW>Wp-B zst)~1w;RX0%<^m$^m(Z=sOBg&Zlk59{rZdMNgfC^uM1vSdJD9in$Z?7@f~a*-LgGU)Q%DxXL2)}!h;q@edOu;=atTYtpg1M_P)Tcd{NJdg7KRh! zl>C#tII#nrs93$U_LI%dt=)=Z20JGxOdI2L*453DIge8VvPP*7E(5~d(gH6KS~;2? zSt!0eP9@i&63q{sMSyh!?A3X`1M-=9ltl-j)3CqUrShpF&F~Ifk-;FLqfSep^D80e zw+iR>eFtAoiv+7lBI%iVa*6QB$5<#qxG9&7^IKOS1|D%O%z~z{i@m9@Uw@sGx~PQ^ zyNCPn5==8REu;mQmJ9=3{t1_}P+SzJ4V{jo4a+64x#Ur^4aRnD=tmW#Di^l>_%}jA z_BB%nL8L#u8(YFvZ#i>w85}Q&Cz{6^;!&?-*NtU!!RHguRBHL-cn{MQ7GOgD4-l9V zoe`(9E`W_`YMT=xtyI6f=}h$=xLY9RgoN$nwX*$h#Byey79Tcp(M)BWw7r&sELo6g zUE7)rHu3_@Ls*$16LkwX<{v6!#~E=N)B+6>ebRjj(JN@D&Lb3)q$j`H1pXYA9&SnR zbq{aFd#Ca3HS*%b`h9T;ifI<#7pK^K6bss|mmyLi4ox|ss*uq(D-NojLILsQ=5RbY zglDXtLpX-ZgGW5f@*gcb`p`0&jN48Sm-+X4`}}(mD33M&4sKcFBZSN3;^D@U+)%E% zHRQGf0S*Jv7o&}X8_%A6J3P`2H!Cr5k4vy1Bn`eTN$GVjrve*YIYw`GF=*QejG|p z)eT@iS?fS_VmTJ#C?^C65gIs~P_7Y_pKm~$!$Jd}yhC6fGW z2C~IbE|YJH%jAnXPj&5UZCmff5x=-*@?6R-S*8BvLg&w2j|=5td^@cBrTBLXXD=YA2+p2Mc+_3Y*%JxEL0JEU z6Gcr+n6oEfjU1ev_JGM*z4)~EB5qh%)-4+;*z^ZcjlZ)r?XK7G+*6)!rRT%anCtQE zMC!<6B{dJTYmmD6ekPUlV|Xu&uySvtyYyM^l?u*(0`YRv6L`^xx~h5LcAR{DIf9T# z5arPYUmDZu)E^geL&FXNlOBALd^0S|PLkG@ucPj1jqJ@}YV~4(nEP<1(|3o?$pfr* z<>;J(5Jgi1=p!ZN_~)Ru!0lO(n$v;Mnq}zCJ}1Pf z1J2&`59TcKj3Yxda3RKIzk?_NUEP2H3Xq*F$Rg*}b?>sZHfKQ3;RaagtH3%^8`KV4 zi_D4Z(J}sVF@9~=g3GN>VmsFi&yh-!OwJ;hmzu#q|9O=-XYgrXp?v-Vj+gLxV{dFx zXFk8q(E3PE&F3fa&Z#r+CkJjzGRQR#&5h#$KLPm!UmEDW@IHk#tS@$ zr9t4lO;qMzEB$c$%g+699eJpcv97^{VyB?!76-*?(za$n^Nt9WL!_1>RDWM$YBik- z8mW)R5~j@-T+)B4qAN2cYtDaUxT%;CkNB~e!SmgAFLO(gS)KZEm$ zlKRwW_xBpOEL>r$C62%-%idpBSnt7v9qQ#$Cxb2iZNoXnQu6|uKQ|q2NLrw9cWZx4Jgn%fyZ)VZW=h5ONMcXa`M+O_OP)kio$or%EpqW!6H2s{c02{nU2 zOjvlakZQ?Q#!l6ODspvaf9&7SqoTVplz)Vwyj9>%;=^Y0tuTb7$sV155l93r%K_xy zEpBcRK{zmLI?*ywk+N2U3P`H*ofove{o@qB&}>RFnNVyf_r6FA07LSCi%vqSrhUNu zYzX(Sai(WCJThZUI@+jpJ}r^O=n=Sjnwk(QrdWbbrzL2S&*zh^{lF#lonuXQu^YG+ zTjoaLT6C?V(=noCUcbsBV$%n&EZVaJV^`4%EgHp}> z)DG~JC_l9|{z6Z#?QB$+RCdMjaG88gOTn4w>$2Q!bN~_`>RH&*kY94HOKBzR&<-QF zR`nu^v=Y^=2BCI0)i)e>32cLee@$+bo};}(P!7WTDqxN5TI%_#K;e!+W}d1&2bFY} zW|xLk0=fbhqJnwkn?Z#}OGNxy0HHZJlvEnj0$0rY^9Vt;8h~&6W{slhhHBC%34SJ< zs}N@m;D9_ANOkm)xR}s{(F4|C>|45!WjAurla$qW*fGrq)>|~?klU2@**h)SXcpIwYx%+#(uUgz=4n<)%$4SD8=>MgcTlpp-_ZNj6 z25_M0O}+~WM{KxDtI$CPUux%D!dG74RP3>xjVo|m?~3)92F&l0y)pxrVHRIV>#?(W zH)~V#bgw|+ijlbR!aA6}&+p$vx%J|k1K<4rx%J|5FH6;Np6X?7*U&d!4Br1uz;_QF zY79T9p)V%~+q^U0!wnL2wBp;mpPY2$ObZNp_Q~VyH8qfOP>HRXdFFb19Cxs|l!=#; zo^i-1oV}EeG(Z3zgUhiU_SIW(5t6JS7}?)EfL6E)5QL-ip(qAcqrR9be_Le|z%N07 z>jA1IqTnK}VRG4_oS@F9s_Sd4)LG<4BE^(1LsWyxpmTOvmHph4OGH$YU8+&-Hvtw< zk^~}3vwws@n^(A$%M~sw z;cwz*+w5|Wx(c5m7p)!@5r)%jyNRwm=#hl4wr9hh|9b&bJvP9d1M|4)AIB@ZcL^%P z%iWy2yrd$_qnba!Lk*>I_KCm}Y^@qNJa+?cwM3DUsV7~4*;`T-qO!0ZC`6Zhs;JZYdk}_(7gEb4*c>efw#m{K^wt z=uXYDohM`EL%OwaCMXMwu+*r9a4-GKgiTW)b7s@kfDP@(+>n4zuh6jEjI+e;M3KdfGuIKfp&* zCfCJ5^b}x0Oj=MT(N3GE8L`!NAVL*rXKQIEu_$KnF%HL$LYaW+z1h;eES1EcE7}p$ z$eWT=uv*f~^Z6y|A10QlwH3W=hnIM69iozupW3IufXg@j0_ zBu|Zl=;|OMqCJErbr~V*D-?B#gQz87oka7OmE2{mc&l|Hi>&u!3IIl5H_J37Eo0_I zqRVV~krADLrC>VA!X%v^Ez>wo=Lh7}|MzDyO;(a_KHPCxL1~mf6zqyjMmx9%D=2(8 zJ5GHEpH<19-{=#}+91)kQGQm`Vw<>_7IIDb*pV)t;d9h}&^n2NPQ zG2ZP0xjV@ru{Re5ahf>^!gkMCH4m8#<|dg~>7OTa5h9L@3`wBK_uo)0L>L!ohax^7 z)9J$;+2`Yy7V{&KLfWeC#Lv2WgJbwdtyziMg$OK^$oLmTcC?7>ZOfcR@>;+W^57UA zr~6%!gIH5&x0Y9e68i|=o^-sYkau!8dG+v<{N+Mk?L*GwRRA`ojz39=)(WD9aS+V} zEZW&VVQbk=@)W--Fjeokt!0hm*)11L7{jfMM|Y_qy@_~REAGov!kP6Jd@z6VMQjkC ze9)O$_X9ShFWtrOAeX>Cmb;6ep*La6Z1>|`-8mrB=k1Qc(4%Izr2gc2Fdv=Pf%;OKD% zz5KaFsAP4bm!IP$u$>vsEb<5a<9jf(W-P^XzC2ICvy)xE3gu!-*`DF!ZoFeZl@a#nCOTeKiB?g8tK;2Ij%n_tB3F%6Co*D<~ z)j_1xTcJoVBcxe^s8bw7ErW>FK8ZIOBMS?j?e0f`zH0v9v4n zCi*NGsU@UT!JtiqD{z_MOSSNwZY*t0_`IF*Ul=3=NC>|KNC+8EuYs7f*a7i>e&r^= zdYjqg(~PBb!fN<^YJ!-MnTW}3I3Qjuh_A8`pGwnr?_rb@a;X-FOYTYl~_SbJU+uqn%nuYqKpQHj_lA(2I^237fCc(!ExNMqX{dT32 zNer>W>0}kR@cW?AK8s$yh?kJtvqK~wKEh3pK=$>FYe>1XHf8`;Yh$DmokoZr5bM<- z4x(Qkwh%?C^~d<=Un7g+8}4(a=vly`Rc9sawG2MM-P7(CvwPAx094E3lWm<%l~``p zpZghE^)wTi)z>j(Cw_OY7L>CDWk`4b*o=GdobVoe3Z9+WgJnyc`87L^7x*`P2S4Ej zri$2VM#K@)gFiDP-k!>gFbbDv6t2L90=<0;DMU|KAW)3*$%XhL_u8x4 z*Yu)^-b+q@Wc{Sk0NeV>1n@J~`bpWQ<*Q6Xy>j)!@0-bCm#zD#jyQ{uMr9zu6ra7ihBVIsyRo3yPEp5i^0nW!TtcXpoTe&WCrV_%Zl4oI=MVz_^!o z97j+;DSzj9GpOHC-NGnL%R~l`gZsQd!SQ_xWsxp1Ez(Dry?dU28uujBv=ke zWXtw0phfq#yGeKN3a&7CP8={HhMiz;?tOx+da_1l@>V<$@;YeUxT#*?h`(XA*hCZ_ zjRBTsdU++$NO5n$WeQrP`@xG-bZmo1-FZDv%1-b_%3a?Nsb|LP{;2ely(E^2=#X8s zdWL`^dS;52K~_05BUOF(0bvYv*@76!ZL=^EPy|Lx9#4#rM=FfpVt zRoE@WHm@0oTZn6|5y$bLSA%LGKG{SZ+6y+v8HigNiCfGuK>F_+G_|3^B1lP4NEcce zOShquh+3?#k@N-4aO@KZrU+_`PnF&(lp)?@P^$D2E~$V}xzu|}JW7Q{lh^V25;bZL zoJs!#8Km;Oc&?IxXf&Rk=Gs{(N3;j0e2H57m#=4@fN)xB>nhZ>33uT3!fEs82whdB z&a|ut?D5fZme9gWM>ykZyLuFxW`L?~I5}g8oMl4J#c{|v_qfS<@H%Eqkeucq$Mi$! z#DtTG#v=i&E9(Qx+R+Pz7x>sdlxXoomcxbg?-jy}N}TyPo!rex=i+aKLT_fclu&G< zp$Ln#r$|_5<_PxA2(!MM8LGu`}VX z0~QQum+*{7AE|J59`l< zArv_$^DH1R-x5C@AiArBv!4;IgC4Vp@PYY$F zDSeqB*PLXh$7xz?Y1(l}-+~F;Kyxik=V|cZ@iX!$(a)!cl2@aiSp>pXwP&6i^PG8p zH(-xXE!5Ran87p0qFK2vButn2R?zV4eG8+p9^nQHksZT{Y(PZ1dNGmT%>|L0D6R;z zO1@KI9XU-ftMmhA_2Y#A)`GZ!fE@(!S-?t*j`jS(wz@^!2%~>am;U;6=+gUw?YZj+ zGyRP4_FP0HZiJHva@)osv9U!WCKkt(2YBaIVvDd)Bs2Ey$WbRdP_~Yy>uT3wrmj;c zbut!~-(xby%*swwG5-8pSXURGX5@6H{I^uP1F|s9;2Qk(uq&$l9GdHsf93Ch?p00s zcl5dcpX6pCOrY=X`08#dN)34_3HwwQd7r@}wo(+_ZXA*G3~?Q0)2;m4wa=`THU_FE zsc2*Wa@;q(gw^-ppJ&tIUMr13(!kCv14wEBmGLaTm#&?{Rar=q4a?|St#wH>> zc;D;8Up2w5*pT~P%NRrxZiW%`QTMAylO1`uF!N}jn$Fnu~UOiSF}YcOjIy0e!f zxfAuA71Bt}^&r~`ygMrvd)~5_p^I6pGD~BYF;K?bD{&j3oLG7-V2Llx z(nL~H&i#>to;72{NLdckz=PcIu!RP(O25NVl1fag6o=be>ba7er4qwSBMxs`#WoDO zG}jQ#<@F2XJIr)$|pc=If&Y9_oJUqj>#btn{QHS?Tx{K#yvTPS`ckvDMCM*kJINnKS zpJvRRLdm(|lyo6V)`;nFgA#vtd2Seos$bzih00o@gHzrpW|F4s3*^B7&w1f=-4Fcc zgnDM7GlycB`J6blO#`f6&Ws$6 zh7+QL(rG>7AUZRMh?iJGCijgAQL1kL9dX)E?vtE}8tK4n!bg9tQ1nC`M1Kz=B9j@? zFRFkL?G!}g;~>fbEPA#(^-4nd{qrSu`TB5H4ivp0X1D>i-zihEmteZZ!qknIYQtmW zI`TOSlZRj|F=AO>!Kud#vZICUe5@B#W=DzG6FyL8+wBs8?4N?{qhV$nyUG$|=$4$V z+2x#ofc2)(Mal4~?Qjsb(89%@iFZ1hgIXfDs1SLHTFZ+BX>dqcjeQ;Hl8Zv*LB>#| z0!)DSXGT~uv99XmE_4ShFxlLNM2UJdSInm6Ftib(dV~^Hquz%TXhv9GzRj7OCjfhV z0fop(@sSbvOfKAKZ5}V;`B(Wo!W{ZMi2IyzBTSsg~H#Ui5M(zhuK|9%Iv+ z-uLA9Y+LzG;6C*7bbcv@m0b0{^s*UV!myg=`eJ(b+Yj7lmxQuMZ0l+`b^f(tTbA5P zS}o7Tcy{W&JIEP~w6j<9>tuhqVCe@e#yXzNVfT-3EUo;F?HZUt3%T8?<~0J>I!rWr#Uz64Z!NAkvxV-gnEn+wG%|eaS+`BSjgPPBm>8g zJV84xVXMBl(zJVhDN)MVR>73oqIwagv{+CsvQYLp-r=IJV7ko0)cb!JF7}CqKagX# zwAcSITs$VoR$9n<^5k;`UWXqO?!235JeYrtg#~MAdm#l;cdxmNf1yo_KC)=msOT=H z1GK}v{kQN=AFX427xe2g$oAZY7ZRzkY*IgZe?7ks+QdugWiDPqs4fc;OFiRFBDWV> zzU>tD1NYnvL5`6k@(G+R^Qb64;QWV0reDCblioi@UZMC-k;<`vkk(7(H^xCUCWt7~ zE$mB(7PaG6bcll}6|hmP>>;>Z{;q=JvwY`9y$e|I^ip=e5}B22!RNM z3ngWj%EB+Ch_|JlcZBYSJhcG1dY5MgX~wbN)LbIvvmFwd0G`DORm z^UKykcw*<5QE~{*Ir8~vowUq56#wO|+oQ(v)@>3%$q3Y0d}W+iQZU>~h z{cpta0{=m)7Ol^1edWT6cLcmIo7r3DY7vxvJ4Aa;Dhs6OF{(hQx)p_bERfU2h{Bu z1NVgbdVAL`Z@NuzIe9EPCXcgAO_Y6od%@7^m&*6{i)hC;gvOh1ABK)0<6imvAVgKk z5K?8E2ZqH))g=(Sl1JO(g;Y7kZ_K5>;yaUmK z-#{zTf3Kh88y<}65MM*d5?w%_=8$=y8d65wZci#FK<%h(nijM8i;Ba)GRN!?ii4d? zs_RM^YZJrhUVdFuSF)T6+V7FDf(aWTynqoKCNhM<3O=J*s><*yu)^7AOXndEL&aM5 z@oj0P=Amarf#yjb${feQ!t;*A0t1h4CD*)ev2L)GFIQ4nw^L_xUE*v7$Qs6GO8U9r zcOQbvc2jXQ%4LnYb-m23?cf8Q*nI91jqqj2(sSmE5GJ>cac&xk-Q2QnIB+1UhZ&D_ z4h3xS?r@$Vn^}#+jT!V0@TK$HM9d&}7K_Zos0>!Nf>d>xExv|nRr4!~q7t$eaaLv_ zK_|2Z%YEbipFheKh*n_sqcyqN1)vA&*?ZYpLf;=1;wnN~cyWRFgZGj*m@EH;v&Iq^ z=pgK^Xk4J3hzn$(%pkzkaJ+_r@cW6f8bO73`r-m*VXfg{t-s+4XUJW|1>#VJBL1iI zMdrd`TNoN_&Pxxv&FkCpcBo?gIUnKBv@lTVYP1P4k6tf9 z5^lwPh2P2_r{GnFAXU!~QsGt*Fw-L+#LcDnNIP%w&`95T3y#ocN?A^19L0Yy zLaiw|UKQs8H(nLz5amXhA_hm85UhNlAilsHHDF0&Z*@-i3uT zv{Wk<&2=kXhSYFA61gXn9)qCC2h=m0&ae#m8iJSBdYZzdS_ko})~Vu|rX~ziH9;Dg z8m~&)BYgSNA6&j{ory0W#%px?)#HUPQE!hgq2l`ZGEFl$x}D77oweqw95`DihfD!H zmAykBExC&4Ee(HPce)jNVO~P7M57h{*BDKNl%b;h=v5{4DD_(O-YG|pp=FYz!_;jb55ejQ(S4Xg>Ajp*$ z;tFEocy@=Vq$=5R#)WG7JsQyx9flKE)oDUQ)BsaX3n#9zULH(#&D<2$QVG*qak<>! z%nqs5D?SJD>BpX&O63C64@zp{@GU#AMFPJ)E^%!u>(5jQuQK&34!q-LwhB*uiHB*Z zr*tq8pa5sJu!lz9@AXg)Q|-%WAA0G%Q{7&|Dy1b0(_d@8KY97EPHLv7vMV>V98L4E zv~dkvnKlGr3Q0C>H9xO(RE#>*R9IL1s%N0ACp5X}@O-LpBS53cn7OWf(;bpdE9d2e z1>tDCk8SU8Ew!bCAdgy4f*oSMNJCkULK4=S{a3)w#D2o_hnPsyE)01O0ND(j&k%t< z`1T+XWZ49{6R@aEo2m^(2dKU6KUun02SK!SJKP(@hI0p2Ex=glly4slwV--0dNpyt zGi2_#9}|?^&DdOUlpmHeaJ~*H%B{`yy z+?oG(Ij9kaHz3G)7of6HqYALByV!=xAW`kwI+;b%CW*r}^2g2rLJ{hdXn3R@^3$;B zJG**tj`CZhd|1Cz&#v}79gUl`9m_L}yq(Ewv!dj+*-hnGm0hhBu~r6*72h6ps#4F0 zjHkNrh;X+8-Q}NNNC6CzxoAsE?1kne<%;wLVH9udg0TO*Bz4K!5C2`_)0c{xUk^TC z6X}ZDAOh{FFWDt?O|$?h(ZyU**F3Wu>SIkbA1T4eM(R+HivAudjxH9J3h`;>q?Bq; z8wbmeVC83rWYV09fM)z;DouNUmTKbCKSF6L2=_ii>_4v3H0XDb#}QTobFLNdxz#5z z17X_nbx`vHXvvAnUn($cS0UV|s860gkiImFUZ3Y`@>^7k|K0yUKCK~zpe%vmTSKK! z)8*$7Xp1@NyaUylZtAA;{{&@)D0>Sxs=sm00cuPqDV}>2k5z!s1L;g^UcQ&JA?>$T zrSjCJ40bNF9MEWW8|S7FE~c)&nOf4EVn-^fF*8GE@o}lscv~|AT2117BnOIr?#!$v zJHiuH_3(uybD&tPKAM@;Yt4UAGjB>(>p`004Re76(_Cv--@_@nB?h|+)D;8${QlA< zsD!&#hj8$%)l-E7C(=W_JeWwSa3?6B8hfocuRumXBW{t5*w9ZI<0hz0%%g-C<*7?? zD%A_j=RZQzK?|E#o*Inv+XL^&nfc-FGURK4yn`776po0Us+Z#05nj7LN-uZ5SK?7d(5Ma)AhQiHI6q zt3e>5vx`mB1(*p_E`0kK+ER>tfSLRyzMsDYCqp~iHEm7EY>bu^D49SUo8Mz_Pfg2Fe%C8Rq^M6MFWzF(7uD+tmfI ztKcM-jLee=k!48r0<0s09{q|NDR5Qa(2=NDjU4rN1`M8^AFMv61JpJwedPcQRWPT> z8LmfPik)X90rtVaW;pXA??eT3M6U}mkgS>c2Z_vIBq|?HR6O6`8CTSAebt^0!OE}E zWY>l}e%#Cs;T33ztMAF`&`@7mAi|y#DVEWj&%k|x@(!HS*$lqZeIJ0nnb5!h+=AU) zpn!Kn%Q{@Kq6{>{2a1`EPu_Zr~e3*wLk9%>*v4Bcj+#W@MN0d|A2*6I*0vp7DJgEUA zJ3xT73a}l9Sl*zJ1n~Y?04xJQ(_?HwKwFS!l=b^L07$F#am=+@(RO66EF@ zo!gZexuU;6&vp>Os+34C<74Pbv7UgX{tKvVlz0lT zmJ-s*NtInrMAnn7A_t<`fMvgOY)KGFYZ7CJCk#SqCb7{PKJBd|T0am;33^cAtqUy=5S;BouWKJQ6}v4?uJy;iwP-U!`=%XH=>AWdjP;a`Pt6iJkBOQ|R2s_w3jpsC%=M5-Yu?C$|Vt~rV4i8f)+faax zgr-4fH`|L823dM>fgasFxTo8TFcP=Kl7F7&d*^UBUy!=7=j5h@RnO8KdkOKKqU+qL zm>kg&ceF!B!cAZU-WJae|duLg(SZT~!c7fr@uv6GV&2s^yRy#ADQT5{lqsNP0Y zGa6(*gF}6~4zTbLP%KT+y$WCivPaWL0Em*E1tqb9ITL{H^mPPLWts0g0v0`Ugg1Th zSdnk5J8cYnxXF2IMVsMrs>OuaP-ri+ zDnH2b#e+wphsAv!*7sAL=uY-@_GpcBAuV8p|95xk9qXV6A6}X#5@RjZ$U-~(U)?Ot zA2@5Nt$4acm2QV`gE!U=zjB7!;ng4O$@6^n_swu@X~tgx{#a)tNT;P#^jR_5&@*c! zQtKjP@CgdQ4nGi2!N_)6;Qg1xMTR2X-V+xI;aL`C{Umv?Bm^t_ot#*cCA=623@--e z7cU0lfkFNU2L|~L;pG^(VjULWF7xLq8su3U&mi9dA5pjl9FR?Z&mq#w2~(6cPP^tP zI5zk!^Zwx}7jdnElwzw~`+Sr?Xro_czFh!Q@YpdB4De`JrPld%@U&SAPaEjy4S0<` zuscr{*+EZ?jiaZ_YzHHQPk5yA8GQgpXr-sb*RabV83+HwXPRGffLlIacM}r0_W39c z38``WbVBBvfH@L1_iXjskmTCx#pj5uQzyP#nuh=Z^JxWID+~sDw6WK1O$U!!4}_?c zn(4YNmTCU#WryuuuiK(kU}fi2Yjayu0cXY3r8Mg#mVP;Jm)*VB5tb8sKY0(;Z5NHO z5>?M|MlVvUf$k>3LyT`i=6lpHp?7%2m1OfDgx^lztGJm@x99@17AT@}3PSfJ)O|c{ z^T4fMckWi08mTPyfI=ob9~5rU$?@d9jhd4gr=3l z#bueGZzZg?k6)Doc06Fw%=QV>bav@O6X%PaUB;o?Y3ANXU->p9n(wQd6&Ee@&rk`2 zalQ?t0yvsowjIuv+GSp>0^Ag~#cW18YMplHc{LQZSgqCnPR&lGsiOK(Wy{bHgNdj@ z5%tP}D40V#`~vzGDvO)MU|<&6oKu(J&2`g?lBt|wAC$warGze0be6CV&a9wLDR+o% zH6u{h*eY%JPfp2Bz(aHBk>5h;Lm9g3A&ZWd)^$cunr`d*KF(&OFhM6WK^@Y8Kjmhz zt>!kA8_PdaR@ql$cFi_aCIHs1veO6S=|p75QI8ymI%s2Ioqz?a<(>SiPXDK!+)vSA zG+EmH5&og>z^bl-+y}vmk`_9UZx@|~cD}2fe#(IC1nUD>?Nn|?f&qh-mry_SjrL&W zIZR0jHFG@D^wdF0Uv_3+eh)83pzV@cwI|L*)dp!_{`REoRa*quX8Up`5rq`dML7_i z16Wk1^8xnd-wXdw`*ND1<4TGFA-9+};e&{39h^#|JFpw%uI+9-F*}W}25h$RFhX~h ze#Dr4^dM=yPOZ^sF(y&js~UEs5VNcE43lb};V>KgOn-a^tMBOxwXD}jFiSg}*Q-Kk zx2P;FWM3v^{!uOs?xribW~*(Mo`FW~?3(3*uUT{8kamV06I&~2T9}9$=;|0WJ%seV z3G{Wn(fXaBGc=)+=xvT-VOb{MJiG_SZo)hw^`KSxrouE^zzu5qpWQ)ap4>srxo<6o zgjSHh-o}xX*fQncrTtNbY7;2(FE?2Q!oY*_2hSdJyA)UcfFu3x zM7g3AtBQH4Uv@e^1*OYr2P}>*R_F4-(1(yEI$K1A$7=5%tz|iO7|x4X?f4>U$GkM*7BtZ=+*^JG)V(x;M?ia+ zK}7Mth<^_xhl63~B7Vvk#!ng3KRz2L(!?BY-noIuxz7s@#`2gBDSXmJDR&CIMJa*O zR(+cO>GiRM@){7HJ`lHag*0rRyr3%>nl0kgB$04`D4=sL1@TFP?2s z#Lw}Zt;YX`l6F8f9;@d4QmwI_0C|1{Sdznz+M3Nn32s=#={af>I?&oY|EY-V=kkPp zSZl=gkOu7-EPCyBJX(uDaO5_7D9m}8r^jJ0RTbizWuCQ^oS@dymu5lT5ntwGIURla zfV3_-LZ@xr@1dNzQ5GwY&Q9wa01GM|+hTR>qb6zH2LZQr(MWd)B-Uv%>V#tqI#7VL zn2EzAaVisKuN~>fG5t76A0+9NUPwQl>76BA)Z7wIJpGus4~M6$N-EBMh~Bux{0E5u zI3Y>@v?TZ)l(5*)vqYxc)+aj&eklqY36Mc&8_$iGW% z;}-94$3wW}EX#o!d{JoNxp(AlPwI{*tjBH|9f!Q;E_($YQOOG}e# zcHMnavy(E_>?qdE-iFa8N6o(e$&aepbgkJHwq`J93C${=-33i0fYorYx*j%Svk^|6 zH8SuuG$R7kZZVHZqR3+rr6)6Sxg;he_bE(VghbFSIU1#<|6tVI4Y%0qhzwGy2LX0Z z5-GL6XZ8;I9NHXZ0;E*BO!y~Wx?vdC5K*?pZpD;Xpz1!^vOv?Hz|dwtz|hoznTFfr(B8cH`4Nz=CMrBs zZx;6;S7lbBtjt15Fz=9Ff5=PwJTl#8%y6cHvBvU&}&Z)h*^7B%%suWFpZWPyu7xv^6&# zmc2Ds1Gd@ec@z;DMRa@)L_HFS(nr@1P>N#96wwFWv)AaKfJMtrZ!w<_e_tp&^c$Bu z5wP;dxn}M8w_y6_YZsF@*JU`g5UgA!>%<)M-Acvz2gTV`#@^;meUH1nt`=dACL<2+ z7Sl@76OtK$aJQJxaI^{l$$@aKWPT6|SZv8)(R?F^W~XgAV4LmjsYFzuh|bP|sDA=c zdT$4bsJ|lm>X7U;`UqMdS|;IGTeMd{@jdCI@w=suqM~l3`{9|xFURVsl;?tuH9tHxbZTnr@2$Of?kVx$?4#tHHg9zhQ}8(2E*4>2hwA7{=fO`;Xp zN}h?E1KYuNXnqe7=AjsEzPJ=M;`wz6;9+*L3K3?2W&uSaWd0tei8LXW#*im3#t9J> zOR@S_XVb`ap5@4sAS$3Bqg>RZ4}Q3t2%mK23t^ag)1EJw6F@&eCXk9hMNL3p;2Lc% z=CjvpPh$jN+|cshxXiZrd|Tdg$Q^q``K<~?#9q_qoA^9cpReV!E$t31O-lLd5)bcU z7w-iY@6U+WUQXE0mw&7;{}aeByNk7?Nr{W%LW`m=Q52mmgVP+Gs6wF+#cYd0*$r6Y zcX*;fR>Y-5{i!6XTp(Lt#KhN;D4jpnmbV(?Hg=hoH`iC*a-@4*atDFzO@9*rgu^K4 zgPWOZ7qLTpS+A6=w$mmOXqS?-yAO!+f*rW>V(CD$9N(m`wf08wQ}*qIO1<1#hit9) zLrA#F{rWC=wjK2e(sdAzHs>dycz3C7_&AH=X`--N_-#HEfApbfM-)_^xjZBJegiBn zUz6#^GjV|=CI~%&iL>1DCff2YV0pzSOUDL%<(-OjkI=^wsOt#=^l9fryE+MwC21ak z1}UZ&eLzj!5*gmZGs#;rRmnSq->#GxZBE2bt5M*f8CC*1nlA)W(}#^dZQIwgAvEeK zL^_wtXh(A=VZ<*c%zosLpZ1!-^u@S0pOpc>I35FRG6`^Pl%%3{%CqWBVfq9~A0+A4 zsxy`8gC(6!)TPM9OgvT+6QsR_iJg%sJbbAo?Jf?reageDixNa=K)OfTO$6#cL`Zvw z59kR2vZQ^8K=q1grVnVT0I|~G`vnAQRG<m;-J8Gg>p^GV`srm!2>Ym~$y3q$5hL|saP z8Y)oiHy_j{Kt-d{nM1=Yn^;iFXmc`tHhrRM2*v50@HMsSrQ73|v0rXRy7bHCwqK@l zyq~Qk?-|6i9i>B&?)A&51e&Wr-*!p>9gg&<#OO5@lSmWFu+gRr&q+hFwbVxVNo3y@ ztjg!`V06bR^G##oTaqZu0Z5WA{~bdCU7ema>z^$PTLM?UKucNo$w1#X=v6fkq-dztwKzZ1iG8h(oT zft(@judz+K$~Ng0$_abimeWB;3hKi;ye+dCl_(a$WRlZYs+h`u@~L5D+=5zQqc+P_>x?Oa4*i|7-MGTY4$`w(qG zy07IY0TDF6VPkZRxZ7C6xjcF1Y>fMBmf2<_^w1v`$;|w7D5^X(tgB~@=ws%vys298 zvrwMbvzPNl@%?f_^eA6NN|Gz`&^WY+w~1(rwwlwlu$h?(YfqfZwXjz@_zK&_k!8ah zt;P$NjT(^dYxS8dj8V?r!s-{=4!zbk=g&lB$#<;}(H+T%c7>2nv|BlbgH5k3l%?vR z5p>RTJs)%%%-I6pkYnO&27<0;658ipkJjE-!U-s0N7z=)oP>&DJkGLf150vspJ>fG zRx1_i+WV;RDMwl3M`BO=J6^a{c$H&P1gQ-1Q&IT@*S`)9QeEGi4|9@THau6xLDyi~ z5f)y(@v(%O%Nc05JWkgcsH^!HKXH;J$tfu^`yIRnpZbok9O0|bFjOe@jLDFlAEE^M zH<|HY@sV!7W|0&o?(6gLm>~+~;7@S={o~8m=LgK&r}!f(>3NPnUEn*)Av0jK05ZNW})m|zBlEc z;=Deb>*emxVB~j)196nt)`A|l^(*O(;e#{xgVzTuH{e~>{Jurek|LaCC`z2YkC*pm z&~&z$J#Y+EeRNwZEk#bZ1|vW80AeXg&$dQ(dIFFZ_ zfu^@Tz#=&)J4Dg+l^+B6BOWS%inFB@)RwA;qUZHD&*5h%ym$hx6Wx9i7o&wu%Yezf zdbj$C!|>x7QY^6c5wK=#H9oTKVbV|8+ri`y-N7Wkp|!2GwNk}k^brKq zMKP2b?|aXxW2V6-vW$Vz@~b#aVZqIL3wiSy743^kRDYM}@Z5%J?;x#4!$7!K2DN4S z3zE)W($NPT?U?>oNoU7D54kJWJk2dBEqg5o0yE~ULq<|MDubWnw3DrP#VdI z#uCv6l}V@OKy)-8>~F9Gg4B#s!v0j zdx7UNN|eWM72zS$qytC%gGj)LPl<1|$y`j8&vM$3Rv9>L5CLZB`06PDDV%mF0m>BM z`@HN-zXMtnBUGl0o7bpZ*-ES>id1%gf&d{c%zo+w+IbWT-!I9 z)l|IR)!w}~{$cvGbQb}3DZotx$U>r@0oG1S>4NusB3iA8PRxPmNQ(&5Qu=I?M?@PG z(Z~C<*XZ>EZz@QiDA(d;tXdH*&w*$OU^7fhpoNB@KDQ|oyh}v63 z_TXYO@;mqJvPjXz-cFhaXLB-9y~>n{?tV(!5VYUgE_o!-qYB&MT#`b zT-~$)kXFiFJ2y=Nbmc&ufOMY(=*F~j1vW_n;5-G+4@i2F1UQuGK}k-<50+A;i00K{^omfUW$;slK@sREhj)03Gh?EHY)+f5RsJt{c|AdX%S_V z0C8wtv4B?jqwliU=wE=f%3!(#_y-a7R7CgXKy*7*y>!L&MxwA1U`h@YqZ4&WmjK5T zk(B_Qh$vM8v?qX-0H5v6-s<;SAAkfn;#(QGp*R1x65zFO1W`MS=zl8#B8qP98~>LQ zV1OdM+C`dM0t73M+Xt;h%&A#)*EcofTn9y*O$yusNOjPlK6w?4DK&D)T{kv*aIlt2 z;&v(wuFvb?Og~N1lk|q3Og}=>RYF+Z0r6ZA|69^kLRj75NTz>wqe>a-i<^I?a~Ob^g0cD0qyEl!u$Lh&pSW2mmUJBX9|hz}BlRSmxSGQ-gO z9NJWDq?Yk20kV{_9D&k8@CAFJp-G>w=l+{7^cOd9ITEaPvR1bsn>A=(#fj3PE0tdg7rVredgMqFs;A9 zCRALU6xnJHmBgf36DLKsnmA6r_@`JL6WMA$MIt)1Uy|&BKKuvhUamg8a2JW4(xD3o zVD;gj5+Dn)Cjr)q=5#qXh={B{+%pHFLW?M)X#N7)psNr6>x=9)dI7L@eoJ4YKSV@U zAHF>YqF+%3O`mJ8CJHOON9RCsMxrk1b8QbIvP{4KbN0i|a4{Rl;JB|FJ+hNw#!W?W6Px;TQ0E>B+!m2vBmrf#pdzryx0nU4Uetk*WlPA z{2EA~$NQ#Y(SpF9(+24~4u!`HkMLo8>vgn6wztlve+o9tCZ5Vh7MTn2owQ$gsZ+Y^)K^T0mvzIi zFE)^hVrApu;>gP0evKkAM5I)8+hJu*8GGCSXD7cesp zL3t$&vDJb}eK_)71Uq4Zw>VX#-AKl2`uh8{L8@WzqTSUz4b=GC`POoe^uQgf%gxN z-^glQNff(}k|9%)sh&d#5a=TSeRGu26|f8g?iR~r3`CeAU;Mo0V^96C(bl9dH9_PmN~nR&=c=>0{DB$m@VpkUxS!wKV@%7S z%AZRw^zG;OhTmfIEP6Rv6oSIt!{3Ym0FS_Hs~sxFuZg^dQgm;pJridj5#@DA9*3JuPYQTD`v?A$VX%J>g(+SWl5&1Y`%i#=a%;-!LpQB z2Us*vf89IgdBJEs70VFd5Q8mCXr<04a3pbbqUR=<;qacymF3_4nT12O zsc%xhe?3jQIBhHSZ&2-GMLH$j`B9>~BY4i*-DS*JufuREfiw3~sSoUA0ZUQl`xC$( z$1Ng2mTn9HmZOE2Kd5g7*YY2sp(*wY_)#%2dB1t#qe#;oeH|e79)l;LA-X>AkquNA zMS5|xJa^sR7b5m8TBD4lCpjrMgTiPjv+vnrgj5tvm<2B z4j`JUo%ZeriBh-WIjz)91hyUZ{{$eV2OcJX?SZ8P$WpCa0gJXH79XOWw_qSmg_!&D z*_I5XVCCVMw$u7?ANnJ;A9-V;zaRCQit2X~{aALbH&BwNbvc)Wdk@W;<2X<_VTC53 zPd|CnH@2F|QYl#^$Tf%K6Ufr^vm|y|hRN7J(P6iKi@61fAX(?6$p>qiQ=tI5>~d&h zhK}n(0Lw1lyq~>aK55FrE-&F_Y>=|c-+;(1^+6&{WzyvYw(L?N04eNp3jr*K4WdL@-3z$57k9SP=eLs1^DN&b;3U?D_e!fOw6RKef$&jCp`Z! zXfK)YK^%RGa=V!QIQkW9R4MiNzuDZCSUN0=m#@ImVHq@tzZtaVZY%#X0W2ZFTm_gd z04emimH-tBFg6p0^9f+i693y136N!c9SK;RVxWLa%;9B+Q7J1aqPq3NF(1UIkYiuN zXxVYTPmuYc-gKe8)}`YMzRlQLZ+3$DjpsP65#=HFr(!K$tw{XBmKf_(eHD zj^=b5rMdkyutrqW*W2V#^xZOf6b1R`cx>5aLJPITURolek!Ft23v)UZ`oxka&G%x6 zB6{N~sk$5M`A54X?lRaJ^m^$>1*m!e(1eKA`9Zx#;?)AB*L(4p@B4 zy0kW4tXTfLR@<0iQTH3XN?p|HdhUhZp1ong&H@P8=GJq2;hBxmkyy;N4)4A)lYrQ8 zGzCO0H(t*i>n@16m}?#0lQF|xlA(ba3cL)hhyufKP9LyLd0{k4Q)+z9bkpV>7bhap ziv?-|K;m;|M57l1!hAf0?-@G=wjyQ%UaX)(=ECDJ!R>;@4X@gmi(myxz1p!u4(0Y! zXidaRo9uyIfjH$!D_IMo5!TYJ)7s)ho!Xih4wI$UX-*DJZSs$<(+mHQI(hTA%-G2@ zGUxBFkK+7o2|2+WyUjO$HV7}TK$20-|?@16(R&BeZfm1|^b?J7fYO&oq zhx|eSQZ6<7IRP3Jpi}@-rid{Fu;)~vm)Rwyh;)QI{v3`4JYi4^Rf+o zjKZYxpC6t*Ipg^6#qlr0`ApAJ}>;F0*@x09pEWDAl|T1-W?pFjh6fs$f7)Fz3I5Cy1E!e}}jWI*xX2vq ztJd4Evsx)k`#SYJ%d}4kKuWz=6TpCJcU)*1aO}%%4aX2Nz20W61~ zPk<~`I18{aYg%IO#3I+SH5k%2E2Un}L56(jam&)p%t$RYG+trxWSEm$;gz2ul^+A2 zWah`@vqDaJ@?6v$FAh4wI@EuJi!Ux57*SAR)9P<9yhaiBoIbsEs`YW_S~97?`!o7r<4(uE+LC=9* z?3AvA)a0?V*J>uMbcPk74r?K1co=Ok_V+9QgB%&op~cHrj?&SpCQrd) zc5*u$B3nqOio`Zy`Gvl{yz+DTgNMkrxpx+^4$t>@Pq^8_#`DzMxKOwn@xRQny^Wj; zn@%9&Qm=xE({iIS*K)j9NACQ62Sp6}QR|AQCCFK@`k%B7CF&WhzL5#`Bv}uj#J1*u z(L703>ud^{*o9y=982I`GB`!H$@~Qg)Yg($^jpo9Z-bu;R7#d?%P=^H62L|_>q~$v zgR?7OGkApj@D@-MYZ)JG%}~a>1h9jumH=7GcoeWy8Fh~d;@7vglPZ3BvgRj$laZ9Z z=uuk`ZWbjWlNR@rY1Bzx+%FuCH1}kUP4k(7e=C)@Wu~mVNY?oT@y+muvotLTHn+QM~$c}{;)jf(TWm^&coP->N zChT~^LSCzo?NbXqnvin|Sz{rGDP+nP$yT%XO+YSFvb^_72C_5|V3h)_%LMQw0m2IK zI|5{(n*&%5!tPkK*ov(>Pw19%@M)`=PP7e*c4Ve<&m{l{fE@eriHBfyH(Jtkz@4Y) zQ*6~+O&)WTLQOnP1b+PO!@`eEZ(*HFDO3c4#ReTMYRZPq;O)d9FPrM~SqNcp$BF^B zV`6M7ze-~l@@rIVHowk|E#cRo*gSrnOxK7{Fb8|P^PL!vV>`Cto8CpGeXS@P5SxK4 zm>fr;^t8Eo7}Y~ukZ6r(eF)Pm;kTMD3f?lE|B-z{k;q@%xvm8Z^tqa6oXz8(*X*wA z*Q?x#%@w~+IS(uM+h~s~9|{6wm?p-Ln~cNC`%TJTqobBOEr+ zXM5;7YFlnzdyA#liP>jePCbILrq z$(%`D5946QNz%_fUZU;V-V2;`WmgdZ-O;kUK07yTe^o8u@RMWZlBBDt!%JU@tAL9o zvT4bHzXzaOVr7mJZ%C9#$|WP3L`17q6rM>$sSC7$1lT@7jw5%^QBnb5NmS|sEedUS z5{4z@<4u1OX@IP)F+(?N#LMP)_Az)3m`?C8@e;_))`0%mt+n=wyN_17b;^V4k#4S~ z+{&(rOhSF`S1jq82-+IZTcU!MFH>zyw!{W2|H{M^h2*zLQ-wtMe(zB(-ve7)84Y0Z zk0g~nt+s)7=D`t=W_z@cCv8-gO6PhPEC0-tWV$S(=W5eZzL1I3?w4K) z^({q?JOqBDaJXX_HuqfU(@OSFcI0Ix|E1ghiVN0>`=WfM@g3h7R~Zq`iEiRQ>)Xg zLuUZW<qA7TymkZuEU)F|DCtWmNN83^Z(P$boQ>DI>#o!E2V7pmbds6Zf|cvI zE1Pxu?PcBH>7v*&@Y`$v2*0iB>2`|pThLsC9*K2Ve(UjkD%pdTOHq2$B4y~uelOKk zzOYVB^Je&LQwb1@0pNDSHV=5WsF0=Mf;wsQD6# z6N6-x)M97J*f$$Nu)&3?2JxXl1d>w6Ep}KuTv`PXODQ zlLR28GeZQhojH&ISvs>XV9}XaX=BKkH-599EL)AuMzpn@dN$(OwY5I&_u4KT0NzBO z9&BB4a&%!2J?(qd?^@7>ub>~wT?)yW*Zh>aD882-^b2&4}?#)hIdSmnFb(8Mu)-qp%YxP+1 z6aORK#SuFU9EN^NGwx{A?^fyXnDTUXT92lNO1BPi2M3?}whhxNe#34NHL-hD>}N1b zT!B~a9*wS#yASsEXBO&Bh0E+u<&v>e-L_&!|x322kMML z*X`zd`uf)FY36~Mc#3IdaNippb&AP46M>W4|D|`ECRjie8=bnF!*(>WmE0|;p2USS z%(=A-(xg^q10F5?usrh7FV#@XeX?7BtF)VRc3laSZ(d^8SI!%i6p1E@eX`<&cS`dc zx2Ib?8T#Pu-)J8UN^!{7{FBD_ z9O(@5kaSx^lg&I_Ttm{`-Pxm8OLqmwphoSJL!x~Pc5-XH`6d=3 zf_q=^i1~2Ehi>4&id%aI%7#?k+Px?`IUg4qPR@_d=?Whuf*qbi>-!$+5^FgpDfZwY z*e81IaMUt+pJ=ibvu|{T^xhR)f#C`Xl4pxr@gz{)ii0w5+|bH7BtD0SSe6rg7O^=G z?1(ib}uTKs&&rD5s3wb$2qGxl^Y^W)DEo62)4mn(20EsdVr=6S#Y2^&fud8mu zr`Jx#&bp?J$&U`Zx2C#dZzL;*x(M-90K~Kb7EO$IyEnkN_Ka*6@AfXAOP9pE)#4#T z&mN3QQIr&5#$zJw>g2=ZBFPPzwvCO zE&z~reGBh?{V(bRX|(It((x5+_i?d31KB%LlipHH5*<)X53P%3LIurmIqO$YsGO2& zL|S#`FTvzOLPYk{SaJDc=SDj?B;saS2adO3^-HLZJ0My_;9emBU`+I6em`g{D5f)f%S>Sy%PU4SB z|AXVn0Phz`D+@=;uy1W!`IjfsTlptoO>QM-Y2UC;o23uI=tAFiwQWr6+mS3Jna9z_ zbF}ig+IT3yoRY=vUB~FyV^AD4{QhK~Qrr|u8#rdQojR*EApYq0jchO zBZ_%Wf!e@m4`lZWP^x2-xeq{U@NSD!p0t6P(SJvMN|#_{!D)|?0osZ49<}m#d4;+6 zXP;qiUfBX0&C94YsP^wWbf%$Eb_J49*Ol6mWv-c|$>P*fPVZ##L@4o8c=Jhxx1_nkdoz-isC5zmM1=R4M<~2WX;*mfl4lX#s+6V6 zZ@Wb`erd7*S9x9Um)DCyu7teys~|N|y2(QIdk$Z>L2gGcVj$j{$SnM>5zkqtuHX8q zJ$b>(d$C@1ofXE9o0%7;&mbc5mI0LeTz5g?bGKd6=jLu*)8=N?sP#nkSl9jF43q-* zgKaaW1z@S@dCYZWck?YAA)1!J7B;gWeAyHk0_G#8&1G8KaM97%3fxwv%|M#smS78I zUBT*Mo9XWa7~uh^H%Ql+9m0JfB3M$C0DU|FaVRP8tmxF4q&gpO<7lDKPIr<*ro3i< zd}h1wWeA^2S2zrjR%V<~#N{ipx!lQIvdX(Ud2QNl%*be?{1(Kw!HhOn4%imNXBUm* z-rMKc$xB!r5-4jul-tr!&TJK~kmgGmVDnd?2o@DchG6H?WfuOL;2R|?>V|feVHlv6 z1SzqM=LK+B;F{pA^}!MKs6vCe7WwhEg+A(as3Qj2XO0YbXW8_7J>amsKmIJqUOg5HYGDK-7}R>d(io#B!V+P%A3f@t7D+-uz-hj-;Df)A|b8oi6Q+U`UbLMw+ zBZA*Gf7y-SG52AIwidZMaHL&1EpRLTo=ExoHGZo+IU(ffe^oofnS}{fmXIXS|7PY{ zIUrj{BSU5oModk~lB$jU!2sCy>b({fxvk%N=c1y)&j%}M`c67#K4?rW22knO|nC)|jb)s=*9~ z@&QyUbS5Pyn|pz(ZnWkcjg^8OsO?<5ql?n;w#){xAE>~8Uo5uM9gNMX6L$+HO-c}8 z`HPFCC0DlEDYD$n^P|QNr^r)X41F_?8!)nOG2Z;@XU8I?L0tw$UW#{W&oC#v))@EJ z9(+*#dnLht3wAyNdL&pdY5h?X4Rff06SrC(ta*kpJ`(3apci>PO<5;ateR(L00>9y z&Hewy5G^fy)Ma7KNL$I`$W26j{m8-B<7V?#FhK@;jSK|fj@*8uybA2-1W_y7oLf!F zSB>$C`9++FrWOaQd(i;g+S%j`#f;({>};y84OV|ezK0QiAHp$ko93u5Mezz5vxK1` zTpNvqrot4}9aB`6kW=PEWar2Lle?CJG;TA`0H{i4u2wP@-D9LJ2!YieZ2&{`S*RT; zl-3Q+)}n0RP>I{!O2zwO9HOvL4%)jB>K}#rct2H*s!jPd@-RiE5$e#!g~c#`0Dx7S z3KRtI+UZty3u3U&0xeOwNJJ`!tnOJ5sPWmhga&H9Qq7mn;=t6tWn=wQFbQhV+N(i_ zmZ`+F_#@w@Y9(vwHWiM~XV8qPhW!QLRr6tJFR7iGhk2$p%mt;)GD2}kxc1Otsx}pQ zR6GcJJEy03x#7g*2(xqlV8t%s7*w<+2G#aj(LP#H5C)T}h@uO!Z=L*8#n-1*(!d=@ zIKx%#>IB7Y5O^A#e<&)V4B~W>=BtaV)jarz*rrz3Kj2c`%NLM;i z$=Mn&-$p8h%oAToW8F$)ao}5Gq#6->qesrv3d0zux0#f6zFo$7Q~Q13zJCu2RKWVZdCmHAS3Jo=wIy>AT6HY@jo0yW<`H_s*8OQ96;0QdO>Pz`XPssJrnB8hNf+b{p`| zz~6N#e{=BL%G;`)y*=@|50x#Lf`}o`)|&E0oNXMccYPd!UK>_`cJ4u_1veGMK{64Heq;1%dF&zu}^|lE%7{#-Y%@ zL*|WTcm?vn2Rsz36@`4eIR}hS)vRQ@)yp0Q)Uskw>YVGQ1o45lDskN9gX0}a(8DL=s5aw>eq~jT6VG0Q|8!#T0nXN7P!;LuU#Inq% zfVnVpSs{yO17V5*qdlxl^H=>LOcRXo=5I}~#|EDC5|nxR&TQk=!mUF^@wHNi8N{E! zV10#d0P8!qP1i93u?IKO>e?x^n*^(QtkVp^LfH}$tH|<14b^zlV1;Y2 z@;SEKCt!n>e`HF^{wZ(#P(f-=gRcV`kNycjiJDy`eu04lZ$i_rsHBM$vMw|eSa364 z@FI#cF^KczE&ziE%w5m~6Akp}SJL7xXk&&p{m3o|Rz3*6@OMM7GQyN(0xo(EX-%{6 zVZMfI3+RW#8-b>$k-#8hr7Ov3=Iy!rVTH%iV;>sAVokjP6ZTCGe(R74Cu|iN=I?Q5=`79CXC>ne3cze!{+!_R`eZI&1_y&D8n- z00%`Tk1BKPa6vI~rY_LT?Er!X1-MqBr_N@9ZCLERS6v%0zxbH%xFBsEdTJt4&1I6J zXJww6#gy}r@)UCbs*Ra7iMG<6ilbokbz<+#KH{dMQy%%1c1lZvjtl_&JQtq+jtoHN zQ-Ygcq>a*CTDk71+*;P#w_?-nz<=K?T=0U`7o152&dc^xQwL{!5$tV+Af;J=5rl0r zUP6|bv9!MzCFZMfR@X>$b+|h^+1!poYD#v+p({}=l6SF9W|q&!+90+{Ger?@o)d}DvU$vZX)D%%uvMynbh*qukzo}2WsjGSyZ}_jS zsu7=3O4Vjf*uyXUtE(az^p&t_v??Fc%_|AEKi7U2t?KE2vmxwc38@&~)g{tpqdI~yIie|PC zhsJ=3mm6W?NNxGS;V=?Hro-B{-2H8m!(MIpbwooXcMe*E7fB5n=QClbY#B z7UpF-D7=oD26>qd4tGC~WjtiTcTxlKz&nNW@z%8Wz&oLg#Z|4*uBI20AlroJ5%T^2 zxRnnAQt6!6bYBu^r|_y9AjwvHpjbI?Xqu7)(=HsE4wz*wOfd3mP!}lKw}HGfN6ae^ zVy&{|4GatP+|&+V?G(z`cAE@r~P=P?TO{XWpv<>$r%rE^g>zcYG z!4!sv66OLwOnuYmXm6t0?ZX2J^Aiu|6kF}P*ig6TJnxlO^N-#~&7Vuc)+s!d*xtef zq(o3I;6Ti4V)rBpMh_G8?;a>w>lz)jd3if#`XOf%vf6{h<&a>lRz$jExDKFmv4RZ) z3S*M5;G3YPU16;Pf4M=C3v zAu)X*sYIP>u4d%Gcq4#ry&&Hk>=)1@Iqy((1Sw ztJ_8tl^$EdUjH$@Lw>l;rv@WOymNl$*KEZ}Wn_SG9dl)z1FPq#J5R_AQ1M zHnYfit8Qf90ccMkyqg?Ea-{Mm@n>T-<%vp8o*+tQdicyJ+ik-=WFcDsM>db(t#B2%3vr#;({ddF^f9e4E+X5!Jg<3q2!Qz>c`z*C9n_#1=1L*P z%dpeSK!AXmrWxR9vx^y8hr_Ur)I|bV+_Rc>k$gO9tq2e>Cu)ZLXtV%tu<~Cn8M=EJ zdU_cM5HLSLM50P}G>C5IU-u8Cr)|NQOaPhO@m41PGYNG(+cTbSN|A*F{1e>_iWi?*idk)YepJhAz?Q zRAy)!u9r51y<9ZKXd4I+Fk>~t!O8sZxcPq1wwpfPgttGr%2kF*CFc?~)An zdKs2`83+(CpS>=P?iP)%V1`!VJ(A&3FT-jt0|Bu9(F}(~qiZ!oBTUhCk$Nw~W-kK) z0>;q{hpIa#s$`_mjb4WBUWRRw;S$XNFIR)#*s$oy={K^+%fP#ulu85$nBz3VVbLgW zgFwga6JFwJYGn;hnVNwB0ka32#OUcBdI!PGR&|kL54OJt+ns6Q0mq@^>NLaQdfhvi zFK{JC+)ytUon^Iz0ZcQ$(F{GKy7}5BTp$^ydKoVBGBC1q!2DD*9HCcAK+MdRHgL~V z+dvl(ErI*d0W(lD9I0ERAnU4wQKd|`{+jj*+6xXIAWmUd!mSXj39mV`{a-?p-t_-# z6P_hNuIrJMi$j#=IR!e3MzQ>GnE<63#qLv}J~WD9O~;0(X)>l9K+%$2&?=8cO+rzb zWvDRiJO8tIxM=Foz|5m(B9b~MADyQ-^MufA2n;Y2^X5jMj(mlhl@|R>HDtfJNcYRW zG{+$KHzfsmWu3x2UNzbL4#1dMWnasmVKP<&OKFU#+FOKuJ}1*A|(pcv>u`vxXBN7HX&Bs2@B|@dMtc_zbCI z&ak4oVPexY!P!7(-{A1lZ7gXV%fZ|n@_YY( zvdLwWeE1~;v2Iv(@VWg&Yh*B(zhWqWtS$6v`U>+m=yk$$p_fy#Ejl@G@Olit;Bcu8 zj1aZ`*4LD58ybq{cMgp+d&>w}xMQ3nBReWn+>W;TE78DXPzy^pJCveJwSEUB-dJlA z8@!RrRx&-R9x%VXnhx{)sRx^yeuZlK-rtn+9%D|8C>VC|p<3NOY1k>%W!RCeIqWt< zy@5%85QZauqRfNLjUci3o5~&a?k>9MkZD`-$k5U9BTQB;+Irh`g;2Qa8LFbV?}K`% zbw>-1kYCQrbtUUW{z8>YSIMH+=kff@?RmqhYs>fc+cIuEjfk(j1i`00F^OB4ouUh= zTtvr=8T>LLro$`DS#SNq;1331eGe9#aI>6Fk|GNv3mj7^H9mq!!2SHRAv2(mTo|rTNA6B%|F_>jF~a>b4BjKE(qAwLiW|sEtN| z+96DsEur>RusdULF1t*rJ-X;AFwJfK>Z|r*Zg~qYIk#X&I@iuDFcHSr2#d@7XBxLP zV*4*T7c~d14>kj?kxF!p-oxq9UVq|>pAnKs;&_LSqBrL)bKAdF+kSbSU5~2EAxup` z?lIW8c&p`^-E*`oHaOA%pq4cFddyX5@B^1hgJZMECsKX$`h2*Uj>56o?QM30cp=mG z7lQu~Xa08Q+rj0gY^?T|(}{LG_$|bW2IJ6(*0&-iJ(@EIJ@jX%)4qZN~d{`qv&RmY^l%d0tZ?umt<-j)YF3et)b$D;Xvyfwx zLc*8_a%8?Ok(rZBa^|aYWFC(9v61L95aif-*=uX_XJ==&+?$fn(Bq9C} zD);8gh;(sx^ij)PZK(}|eWqV5>;noOD#t-qAQ=MH8}n2V`=uTSN!_^^3q*%{hz@Zt zuv)CRmWZ5|0~f;A&^T!)Xo*}}kKVJnfCqhIa<{R=KA) zXGdIsj#xTHC7^h-XEdT%wZEmEFhmhX;$;Jz(w#U1x3%hneb$Q5HF>`vxQMD7b_?2T z9y`dpA`C`i#eo|!l2;sQGv{xB1TEQsNWwI0s4|P~8=vx!%7WJb{%#9@57h?CxKtey zoR*r4-a%KmrHKD_OLx_ZZLWm(%`|Jdd1aFBgkYuh$g_+!sq@RO=NjYT3$YjCYy;Qf z)IE98bl3=$WET=z>B=ZRAl|JfRw*Ip4K=qJ^CFZ(jDF!~yZQNBEWu6i4~SIRfgf$~ z;ahKhlUQ#ydp@bAbOqde>{79&WEn<02di^E9E`9KN;)~Di_enfP&>`-wVpGXvykK4 zd6tW5WT#S8Q*!U%J;CY+@$8hWXhQ=_4MH)TA$yN7EP({Lchh+z_>Tp;a7Cb%K{)Y` zRV!@Tg*YMR_xn8ZWq_Bv$Aqf3w8CtQLg@WjQ@#>sow9l#7KArYXvi6iR%SiwU9}~j z`4Y$dYHd4t+|TDOgx+WkrQWV=-Q#{v>2fm^&`7M7$@1X5WmnJx6+bLLiFm+`3BtUCxk5jgt!rRfK z(Aro8I>?*=4GLD-b<)qZ998CRj5syUtDdYZlFZLsK4FWPy>86^JPjsmNw*9{x12iO z?Mmz1OJ~9sZNl#zCpobvF|V_5WqO~Q6Q5D;ipt69s%JtQ7~7amg0a}c$lZ(t#_ss#VI)u{j6!U=Zy6Zd znswNXPu=NAVB}QcVH}zf&(Hol*7&&oz7zvc#>Vw1EI3Q%!0mk-bBUn742PAND0&;PcEKWm&yd9#8D0!-$ z+lS90Xq@sh{v>VGI)Q~uSg@}^3TFX+DKlm}hzirkg>BK-rCin?WR4LOYZb-11d42D z!@ZG2gG8bEForgIhkZO0*&X~_Vk4s+1|$E>i>xYw>Bz09Ykr_GhNaE7&`wimdMK8! zN-Y+gyI#RcrYPFE?+W`TR>P>y!xoWPaT9%;qG;z+dr7k+|HqXBw>S`u)@J=-o)9trO`fl4PKK*0`S~l4#DE_^bx{_UZ1Cg_`E;12x zH?Yj>E&-L!Xhfv5x&=aGCj@fP^yF;~pj)vuz&E-zz^8oK8jv(@4Ln*?-7$n@_(b4S zw*-{)8QP?-WErbaS8{hgzGC4E;Ryg`63<$oIbv4!RcA+-iDJ7U++j5M^4jdMACv=j z0Ez(Yi#cG|02WJ(if8FO9Vk21u6(stYQ7OmjNXvp>LM57cPg`n1cs9`ybYp+Kn^I&sm#hZ%B*}+W|cITS;rt5zFqiqnU&AN ztdYfdVhMGTC3qssdfYk?@O7fur`C)D2orK^R7)ko;_m)x5sM=kwOWMHYVpZ&t3`d+ zjRC}MwM2NJx=3%74J=6OizgyPd2K3g`#Icsx#DuB%!`hlwHEIXR6}++ws%NcMrh;= zH<(5f6o;AIPHc-6g#^L?DbEBRbI0RUo7|NbQd)5A5bFvM2^L9MoaUhlYj45h4yR9Io{ao|CRyc#vo}EP~!eCJRUhawP9C*%yr4hlj$>NayBT`cZuY{W5BMBCwN zTf)vSKnk9d!_M1&J&joFi8XZ;9df<|2dN3YwC9CA($t}G^TsGt?qSJnSygzdGM9yqI)DtLBH(Z&HO`VoR zI{LK+^>@y7=^Fg8Jv2r!4f8Pl=pNdyR|9-|j?_su4c7)E=b_&)csNS0c~5$vOA;sB zq0s}nWvoH{K=xy+FdMZ#htdXW9VGlL0T^4l{e7v{&DQ6QccnfDr__fUin$$Sxb^u( zj{02jqwBM2h|nrNcDgF1&9>Tn_jBPx2pZLwLT1&aP)6m1HqMENYG>|25(v``TkjH? zO%)0Tz?sxw))GUOt*(3do-uYN)rxb^ay7-4h{=-Jt5wiCC z_q}-NRXYbJ79T0+zqy1fZE$Yw9Uavd@$dgc?N^o|u_ZPcHU z+21G};!A3fD+VElZ#Y9nP80kREx|P`Y!B2kUd4K9TjJeVwW4lp))9Cqd@LUXx8EX<0A) z&NdMRsqvOnpyBaR)18Z^Gim`t7C2yD8}A%}^CdDfW~#*@a|Kk48gV<(aLpiFA>!IY zjE%$_1nWW&XW{t}-gGqYQz0$gu@x0dP zL0eUu`iQq8cp4Tbk;Z$}PndHvpeDb&gwH4_n>E+!qdvN*KP|!wk@v5qw%bg$&s>fS-bZxMskkHBNGJ0Q^87W)%O%RK8xS-mW7V|CPk8UGN@t6Ez) zAHodXmF%t-(2NmWOh6Alzi$Js)-|rJW9y2t#CyqH$!-CJAjzkvl)JtLWXnRg_F9im}m0D z@Pw_Aey^9@g7*;y@_mGXU2wqD8lIhR-}ToWHFI<4u$AZT;YI7tylDNpdvI!;n5wTk z*RL!n$gmOirf$Mu@vJ#%Ma{rtpH9jTPL1n=o7e|D(g6me6TwRq4e4~Subm$zzH9RB zOYyvuc5pHiI1t@lO^;3APsLf#JVc>O_H}*-*`MI_E0+`I`l`mhpLUz4{~LjyNv}mr z2Z^Jv;~8J4RaRvW0xjzQz^ za5U07rkKtcwjs*wl*k)1wQQES{x?oIMXlLPEIZ;EgTZs{VdYSO4Ew_ww6Rb}O=z}> zd&c?b8hH)ip$Bn*Z6=q@HX$B!g$4GYhj!GAmY+>|9_OrK)E4+*a9&jY3iIm1*0R%& z_m&qS{eoq51PKk@j3~4#`!6`|kRMOSax_5s7K42+@`27JP@V)S`xA8*`7F6vV;_=C zRRXF(&rMAG82`WZy#N2^_)W7N_PV<8{83$w!ibp*QyhL#Gj!b$Yq3i)22F&2P@aGS zJ@yGQVz+a#Hs8iU(lqC2l*|Iu{=Yh5|NGuI@*Dr~uZ06wnQ+HkHmjlx?k5|dJeWUO zd+kZM;1a(~yS_I0kYUnHsU_@1879%W{x~$aiS2?F1^;zyVSV#^_Z?X@(Sm!NoU~bE zJQ;q+Yb8mUET=iPSeaNDl1V8|HF$j*!?o8$IUcA5_5#A@E9_YzuqU~^*Yqnmt;Xty zAvM4Ebt5CCPosZ}w8J`Y@98;31ING%KSuGBkzKr4p+6adV%K8<_bpm*jR!!#fHdtn z^p;EE=*<4MX9H}9;1r}Y;k6E~xvmpq+MLapg-}jBg}qgR^X;9jKS3Y52!Rb5k^|kG zR$)JgOEF?Upqhqz_;FrIJzK)8+(rIAwkKISioL9P75FgFIp^#T#CPiBJL$AAk-!|r z{|tSBllTMnDd@--`ZIYKhLZFVnv`1*Y5!HoGnf< zz+(#5UBRr}B`}+;35y4$?l|?HIx-R+#Q~vT0d#^kRKEhd^i606ttDtiuR*AZfHATY zZ9d4$d$8E7LELbH(`)PO)U5Ax80T4k*Z>LEwZ!vd*-PB;_2$kO;;|f&>AR#+CcYo+ z2Sco|TWROX&Z5vm>$2dyUAGo>9jw|Oc)qBk{`Ae5`XKeZ0av1^bPXRVy%#d(oS+nc zEnT;K8@ssLpx`3DsHgqQK#1m*DiCDF?p;AT-h$AtIcxDd-~M8x>bVMAT!7i@BpI(0 zBiUj%nS9ORePj5;_9vT5qSxc|Mca4JLgrJfm0X>}erYcsQyuI=L0_ck!n`mgUvs!2 zy}ON_BQ(WAGiD07KET4C0WtI|e~9$~NP+#q0U3-2G(c3YcX{K`(SiTdD;c|Pq}g%j%Wwc74y zhGaYi7?vmlkhr;dW4<-CfNi4m7Jx3`_Dso|E+fkHRKwMTHhtL9facU%jwkpOr4>Nq zo9>^&#`AMtaLISm#!?2>rDKFb*3;&J1x`vgj^K3WM;xbjn&RI>&>jGqx3Tyd3AmXh z79I71!)^b(&i!*<-Pe%zcmqsU>rT1e?nh+WIP!Guq_yr^tFJ#s7c$#o70bzE>(qN-I&vRD&{wA0yU=_F1F*~npTWF%Z4r!8UWvw_8rKy_NtjF z24A{k{!d8ZE~LA^2n9hWy{&_XH<^)QYI7Ol;@ep4^>#Xd>lSB~{T+-ZpWY2Eu%>De zuY!q!$vB%M3WI&(PGxdnh8N#-O)@$k<+R*DSrCgvZ(?9$l}E|+L1++@OoMp-b!zQ7 z(wSe?9~n#1vgk~w|6DJA1IJPu;7TAG`%@#||c#}h_NAL=Hu4%TdM|;Vt+~#Zsyg?Y$n@G8#4XHaq~>x_NG?M_8zk405zkU#3SGa|yt^P5 zbe|8jbFAe9>NIeJFVFE^urZ3_TFN-sk$jx$w``?lD4bNPzed*}3!chilcVAzuJv`s41Pn8z!>W8eNJ=r$*<8OMwq*J4fW&TrJMW9AKC%lt4-C3hiMe)|?CdeH-gPXlab?R$D zoUU+n)F}45q(*t4%3GrcvPMf02ss>-T%*}A`rzhjP&=_$hUZu8725%)yNWs^V)Pp z`B?UCEaL)3e#|~a{q5J!qI_y=3op>Lf^f{*!+jv61$I;3v{jbO7UK(UfvL0JE@n)? zymczAMCttjCnI%_y2;nueKlVke;i>?YJoHRoNH`28biIz2G?WI4@%yUx%mbR981V$ z*8;CXqKH{9P!T!b#UKLZlT&y7A~*h-lBO(dj#<}ss8m0!S4uK^2;24i;CXU#!*oYAHP>c^A+WPrJ@ZK&Y4w4 z-%Jm#*AroSQhpmp*h5iQ@qH?@19}J7$+xhOJl1f&-Te7P?Nck*;jt(B={c@%t47H2 zzg-A`wEf5bpb-xPF}_qaB6?H7mITUIpdZf& z=4BVmy1E-qmHj5-QC=J=gqHk<4zO1%N4s#O@ONw1H;4UCJHSU3j_2gCje+VtVx`Qa zo1?aU?GhEb3D#MBz6xn>=9 zTbQrnsbo}vwrvXY3}vciElhn0Yb~CiFP-?irw23j8ffKwSjKNLYELuV3@z9-8=FCL z=_Crb{DDK&7#fku;SBIKF{5QTVZd*6uLBV%S0_({uI?Q2Nn=u4+nQ#Mr?)i+%>~7dGCa9=-?5t=qlPs zZg>~`QvU{sZA+X&!Re~>N5;hWK!U!z(DR}!=#L_OFQMQjfZ~Z@(i_6fi^QmJQzDB}1nFJ>tcvRegh~bH_<4AR% zP$jI+;~5x5AP71pH^{SK3C6RANr!dxsloMk2x#kUP2bTxO0_!wh2Z#VZLP0%3&wvM zv<5$Q!n}|`*~;kj5TL>YQ0iL#`6d!GZ`n@qE%cwvTsA1X%|mi&n8<}y>yxbg8H_EK z1-Vck{E=0NjPKE0mURsl%3=eARRk)WALzD3F4R(g+IVD>)8B$BXToI_ zNIE~q3qgoyhZWdWfC#&|!0j#Zwe^R+JB(A{_YQP~(9Zhbcz9^2z_+--M_J`9AiY2A z<>5&zP(Tz%yTC_U<@?ce{;;QqdWHGPrOp-Vel&n4EVN=1vJcRTA5ihse;4=& zt9*lS%#G)06(a}hq=Iq(+aBl6$P>z>{){T1S|2NGAvNXt|~7D z6SbcNfrE*uJ`MxUzbhzKj^xz}Oow!B8e_QJcSmlWP#O-}n;v)Un^?30@aVNpVE8J8 zK4rt9_o7&xWL}V?4c^2`_?B=@@g7J647_`b)fNMz5 zXa~y>P>GLdB@SyMQn$(%gS;}j9RI3j5KJ|LK%yD&MmQJW3DD$4=wYbFGzV}BNGqd@ zm>B<6Mwx*E5<~z|kz?_l0Ia(rpKL6Aa<{OSgE9jVOTQ4l$1wH$AN( z=1Spl#H&!e4~~btcnWNaO=xocqbNs~!dTWx(0p z*Iv!<_KG<*1harvpHBOuOvWcoz}6Wd$xc8rXthasK2t8&3~P=HF2q+f&5&WWUH)g? zb-e_GpOstToc0*OpKwo~gYgf#S{eNgjV*C&41FI6a65;=I6zoZ1;72O@i7^Dycfo} zC2I+QUKnE7@ zATSW5hh1C-on{(h(>{n@cXYD%H}Eyp-%>B?M@o*AS0BYAe7jnQ!van?|{7R%Ed^D282A(B%f|DckmO=v7!gj04`quohyA4J$+H`rMGa2bX8i4*vYBmV0moR!;3Z z?}Yus$30VC^+d>dGB8xUhxsWEz|pb8~U2YahzcPS-wgB_u=p zGq?%_Dd;(rgE-h%AOtNx(^qiVg=1k0#@n+Rs_blb5&H2H!*M#l5~80 zA8f&RC&k~^E*O6UXu+d;NT|s;UrIpy^ot{tIO0=TKBRw%=;Uxs_*YJl_!rtFyvE& zpmdSs%DW%dnNxYUp?eIfylX*Qd*zLyjfV!Ev_E(@!A;E_69V2Gv|td2xaxVT?kMI9&U!%vd*Rus1@s^b(r*0?>jR<|j*=Ol_oyR-1$;0} z#e`|pl_|3|<<7RjDL2FDg5zn_fqnBlwT+H|u zDc}E=`(riJ7Fb6CbRj@fZ*2@=a=GZS0cWz&9h}7cX28-JK}%;umzo>05!w-C&WYNC zLOA*vHleCN6oW^4qc?M`0BaK#B+fiHVj0a@!WWJR7S)rqGG)9A+9)hhDyx>cSM@&l zD!|+;L+?*vzLh)Py`NCBXKc`93%9Z+WRy)Dl#lpQu4T#vnsRzb%0i?x8OE5**!_J& zl67N-uH8R^DZ7u9L8A#%CR>sXK_35355@nxO|TTUz^oFr&A@qlIgGy<%Fp+4YNjm_ zecgEvvdeg53YBsZ(NdK1ZeYYaC_^`fUD^D5hRN4w)uahXVbT~)vib}KJ5M%i=i=L36-*JxAsF9k!`o_@V)2EVX+^7G zku0FumbxQ+Ga>R7VnPVSV9=7K#2^;D4A>tMUGtqYfYt2@zrN#6kz&Z_|`1H4l&e2_un$^hjetn0!`bXR!-2}fe`DMAA z?e2euvJ|V(?UupywiPxZE_gvraH-PD%fp~$z1n%5xu`N0dfWT!NGVsHL1mp?a$8xdAWT*ez++qU~?cO#a)VHa7Ocf{HIwip``5 zu(Q{K))+GhT?{c`xf=t0?D~!9qs7X|tYtl#{uD3_Kg*f32ypJ7AV4z+WQXw8g;pRc z>ik+)HH*G>l*e5EGxz^qOpLF$@1cv~gbI!JzAuUEe}%LTax-Fgao5QjmZiRdaHGw2 zmih{2ug;qb=7qZ9!|>(;ujB9*_zRO{j*DEZ1{K_3!k5F4ew-MJcFArZB@i^K5c_CVk5!sl|@`CpTUBnW{X7UbG83B$YSV!M6~g=QLsL%?XpO4S9&uoH}ja)gb>=nq|G8O z?!Sf59!*;FKw6^^+V5#Et;OYDc_8hT9jG~dAWZ^lp5KN5dy^2Q7r(+CpR}S=;ssj3 zr3VKWaFLUab(~hzBfd=2O$|v`fOPR*QrO+u#jiA!)Z^j{HT9_>sgGgmtxDTCg!aEQ zyUZhLsIm8(1sAAN$a!aQWf4@%ejh`Dexe5$hy^b9$A4y`38?qD!8=RVG>+DvLEZ3v)6ydADqT)y2#8YLX_Q1}0r{t6U=7pq`)%_<>pXf_2 z`a%@mE%grr;FL<;$Fpm;=VS)U^QOa4UV4p(R*wszJs-3vZ0s&UzWOUXi#F;vc`AK+ zmoV$IE%m|p(TGuB`1bcbeD5P1dX#Hl-o9ri3Z1YIl3bL)IZ5$tgJJ)bL#Ec4?AXvQ zu5HjHGW!8a+Puev_qx`eHyQGSZIFeUpf8sPFmj`>G^U(&13bZOwKnA2qej3@Of1G8 z&;IdhjP7IBsLR6)I2Xq|UMnhd*Mcpab*bW?%PVuykk{o_BS0*Pb-A0_dm1l(_4ei% zwMAC&=*&f6FkE;(T*>#%lC1P0?R5>(?B~H<%}t$Ru@>a-f@{rGX=o?*{+aYgIIVe1 zUhTkMkCY+zdUXA_S&GRc3}C9nyw>T%t7ALH)|`%3;*&}u~aD&Dw-82`Cj^FN>F^8l*;X?jm^ z*I#bmQ;O0j>fdi4iU-i8W?>wUkwYG-*GTL+!xI+Z;5CLi)wHrFf)2IT!0MmREAf05 z#o44Q{hr@27mvtCk#vF$`^)1Qr0%i$sehXmuu4@^UopOj7fffZ&cY0sZ$dB4hwVyN zZqQB^gU*U-E`+E5CWV{Osp`W+4ee!M5yDn$GxVvjYlgba23sh6Dl9|U6ai=xzub4I ztnLC6@QQvj^fd^B%P;wP%*z z+NyS*?^t(8aEJCd;^X^dt(TwDb7^EE4JQH6?e1(G%*1AzQcyEJ z3{ziC%iXD(hPB>Ni}P@y89s+$Z7=cr9L9qRUZ2A^-8yWzeUM36pZUoUD9b-T)tu^Z zPZOCfJNcf)^~mi0=t%r-J|lOWiZGoTE{CJCxzU>-ZEkg~ldrVh9Ua|};m4yJj%F;Q zp|v)BaszZ^>f{nLg)v|8RSKysnJF~lOyQZ^rB;$W`RTBBxuV3|LT6Dq0~*z3@SX)i zM~{vMRgfMX0$MaCeb1miTY~G=)nV}`B3dNH<>)$Q3gL$|Z&k3<6b$-I*9wIzu#Atb z)%@5TcI)}}gnvV8UAf&=EF$txrp(CS4S7UV_!Le*T$FifL1= z`@kh1I~t6^h#K5`S_OJyY}(HgmDu%>9&i|E=)BAMYE`5m##j{(o#Y!^!~t5!KRW&t zT;dsjrsH@=9plf}Wh=Kq&M-oBCglu7FYQHWt;b>QpU+Q>MRNYp8IJ0HfYPo+8tIk? z$hcIcf#x#(y?_Ji><=)kv(K22CR(2EHonx0oM)fePG}F!lgd?nDTlbkEY1GruOrB zZb2|?c~&r!kL%G<`>^d!b7`QbL!obx+3R66Si+QhHZL-}gn@oX!#8N}Q?jpVWcH)k z-jYskYKmHzzjI33uzZZmQc?_BSHS+#gEX61>Wl=tV|?t^Jz_5YNSNN;(a5{#sN!4U zFQjqttyiWMHFw5G(GUAgRIAeszRYIp=?2SQS_4fpogq582e8@_)F;hiJX+;Ox1N_m zCh-oaFnd^9aN52|8}Fq()CjoyR%x{V2ml=}Z{tW3F;a|?2mx|1e0^6rHS10M{1l7^vmvu(o(f<4vVI;}G z*l0fl@OS|j*>yb%W3N#%|G_dS$#jzKB-!~OLlZi9n`omHzhu_jw0U>1@R8^v$I!tU zH9b;#11?P2*8s6BYC}|dD+$dTt8mr!XbImh;a!1=aQMZjw$GOE?--uThch!6c!ILk z)VD$ewmybk7B3znBk&uTwFl|(O3<3+JEHrb>_r61RG^t5KvNPxWZw@olt5h-=(G@^ zV-rA>j~}Qpfi|m#e6c^cXdl8dq^LwgWTp)ZF6eHD84=I>(CG)8m@5vs70@iqNSEl^ z@dD>?JZs496|YYjiSN`A_Qww#yvEL5j6O&xkWn736Vxcd9N>_<7(EoY!Ue|b(s&he ztcyC{MJ1B6R_y8jQ+WLZV-FN~utL@hDKL#BQaT=&O{vR~=x}^#JGTGtChG4F>Z4pD zft=e=CGU~&od`$B;l8D!jsB&gY%vXCapFz5lxl8=$oTjRM1v3bIk=j?g$-pinEd$l zWeXzX`^O4U{HI``zk-(KpuWiCs>a?bfCvL>c_}i5VZAQ5kr}C&m%1uFt2j z8q;WZh*u@t%B;5EmB2mV0n)&&Od2HCVd%ZB;YBs?mPI!pCKk;?DB^K1v)ZnZ6q_a7 z*6?-=pDW>2iqt+PH$%Nhn5w@6q%A@iKaL%7VU#LZ;A>@u@5Z?dElyMwf$icg|S$|*FYo)@5u1iBz%#C?@;V2m~?2~+&RAJ=+%SdR|&Z-Fzls}=yZmUknpVv(=!%L zL!1{zJDt{=q8C#fEh*TGxSi1%3~!2Xpq}aL5->i#3Y#mwNPCyZ{u|tq%0X*-7iQpt zvZtF!^kJ!8&p76???UN%&I!rolteBpxIdTX1nMwOfd2b^FuVVT)nwSEWc@&Inn=6AxXAo$= z*7uPiK+O_B3sZph!V-*kP>wc#6D*^(pfxgDlmhewfvS`vD+Fjp0%&mx&_yN^8d#AM z*_XL&)m)AX$)#l?mnA7c`(PTeEXZYPO5{Hg8Sm6w7D-?EI#?)A86eyNpP2%5H-Sud zd1DCBQ;GcW%t7@lHFWp7XPE1x|B;d(hoL==>~bZhEdl{(Ze8gzkTA zZu-raQuYZh-f33(AQ*F%(LQe3YoD9a1^(Mxjs&_{WAj$hm*qB!0K?qHRxcY}Nvm>DTB!5m<&O#}d6qQGyz;fUf`OWj^X3teDl zq`(AofTsonH&x&w7Z^Tf)WJis3rznS3QRBunCmYA951&;6i2wg@HDdmNkSYwV7#vg z1|FlpudQ`N0Z%j80=yjmYUME_<(Oa&$DQyU!11r23&&Tw!0hHKNrxP4^fa;Z za!S^8DT{Fl0;hWN?Ok24Lb~JKsXQ>29lKM`*?n(+j01%=J$a%8uMpl*%>xax3VH|Q zL3tLJiax@<9Oux&-8*4Omx~QuWv@hfXZ!7DMCf^%D*FM1Ye};01}F&@T4RD()06p} zye_fxCBd@!wWTSxer{k^({(wgqX+SPB09A8U{d8PRRa&zapZ?(#MWRNUy37`VuhyI zh$~k(p$?kwKmWL9*C)u=UC)09yYTjx6S?lk6)ktk4Bon{?JW}STVlfv=W6?93Fq3B zF33S{nGAni!ledey$|7Vwp?xBDdAjY(iOjh8F;e7 zXA@|r0v!_q)I0%{x;XefuH-vAYae_ZETcC;Yi7Ht%azLrWOmjTga8#MfT%+LqFqX$ zK3cQ^AwWGri<*zfRC7E#06pTu_27Wss|U`NVauiBWv5#__z%yoPzSRA!5Xq?eSJAoq|Yr5b| zM+Jg8V@*LY$8!|;o7Ije!Z*kwvv2tndgU2!BC{`Ii0{lvPdk?}9|gC- z0iZQ4Fty>FNT4YSbZ`jJujtn6Y|0;-NGx2Xb{K0B8PC#Omi{Z4-9?F9QajZd1TuU2 z6GMQ8f)=uC@f(+v27e?fxhn2x&Y_O3|G_1t@BSsg6J6luPU{TQ^|WAJzh8kHyTFJ1 zkCv3qRp7tB;D{o8%Re%^2U>=|5w&4RQX^`Fuw9>Q<9Sg%q4EeCyS-tIsQY2b>R$R8 zbcUzc%BMpVcx*k=PrhJlT#2Z7m8#a@e+H}8S)heR;P{St@Fp^Q&h}((uVP3Nw_^~t zt2?-LPVt;;AFZsmN@n!~*iCh?`Z7(bxnOlyJ_=!PA1#GVa+|%;zPE0KnM7!f71dn_ z1HoZtq`eT##4FSc%li;C##ozz7Hu^to<2Bj+VKf9?{ZSxN`1J8`fN}qsQQp<(f`RE z{qH_-OuNHDeHBtUg}aNXnpkp%lSPa~ zAB7G%tVHjTA9Co*sxCTI3zlzR38}}oqVT&X!935mFBpZ>ihN-BY-7Cl0<2?XFK&lO z*!-TW8Cmh2eQ?7<4gGCf!A{rlI4`NcH{iFLz~5{`Oz{|THt-y&OpSbqaKj>=1CQa| zs{RF$(i&WeQU=S06tLfa9bCoR0~i{9lPCH8NKUI?yjGL&zL6YIxWcc8Db8VFR06qL zuMbc3Vc=8=)Uz0z4E1H;I0Q=R&ow1DlYCFnjDLOKDNP54F1t`lV>X6uACf3ri5_(E*D}=L&-El-CP`)gqRM`VL?bonr5>U=2uFq4 zUmeML-ctK>`Mbv6&c88Ed{NqLdlP=*h>_6)lzk$~9$&6_hkEdO0*{1JrBYJ61G8|a zNyjtcCQbO^7Dq;DWN)#Cu0^OLBO5JD&gN-DjFi3z#blpne}vm0&OsQy7}Jk6@}>kP zswszoD-bBvlxwQ#&uq5)HM23E%w{0mt&nR-v|5Qy^$?8~B2yvfk;q7)nTMzw!YS3i zv{kA8N&c?c-9uW1>r7d?MSpxi9UUo z5vJA~Gs3X^79w1h|HJlVSbiE24$J>QIMv}SSVrivC`h{-zjeK6-4LUo`9>ceBhGTo z`AW$^Dy_<%&j>Th*@37ReLQ!RBF~U6Hx!D`>gQp4YW-FHFKgb^HGNPmWwA;=2t|Pb} z*^WecOV(L8iry!cDt9H85B4|kQLNPaB{0#zM>Fsa1WE%RW8^o99Cg1)`jr#Fs#6bx z5$;xR9}*2xqI3^YCm}LbeFTZpLA0wp!P#L+oDC-v4U#w;!N5I(3}+(^XY1KI+iRwG zZAx(VthYHoPNJ<^{gXXJcM6f=>~<3ERia!E(Ul0NuDx@Zc0F&(Uv@o%?3eIeGo-+3 zReTH0r=7TqEthQ35Ab&1$s46B5NUyatl_y85Z!j)6i3b7+M>g(nj14?u?(0Vb_Awk zVcUPgSP})e(7vdZDg8KJkd0Vtp=-mSR$DMKqsxg!nGAPN@h@DzT20`~$&S+|mGl$r zgTby`ZUq6FxiNz5jxV^~qZ~55h?1U-TPvai6AjlFvss%PV#lFiZoTI*!gQ9Ih;Wpn zE5d0`ENThCi5X$XLkad4QYhNXL!3cZwUJdJxaUfwQa;9}mHqVYb-@HT_lRw-}i zc(T3J%iC!AVcN}kOtD8(H1nkBhHx_amqWGP{E2@ZYjUhT8$V4wm}9=YXz~_XgWW_p zUCZv(IUIaBnf(eEjmqQ@k{%@n+gC9BeF^88B7_vGUwH4?)6Ig!EhofZ$rO)C3Z4%_ z$mG-`&N3a4DFWiJVu~9i1&fT3DXebKGF77cyqdHFKr2GM#t8LzbSG|eX~Vu{{6y(X z|Fs_9W@6Joh>TFblLlt&_Rra<+G>iwc~Wc?B9;RB@|yf$QSoCXQ*_r9H+xb%AVicD zh!&72Pl-l?C^l*hLT_QH84=I+B)vqE$_cP4dlZQ>G-(?T(OE*on%ngTYx1lCtTA6r zUP}obC*cHhYjP^Xn@PB-$?HOD@_MHDXMg5kYVwAVn#5b1)%KH;!qnunI&1Pq(#`^{ z)Z|U3CdYewoT2O)Oidp87QRhQ_7oyhlPAg#QU$dh!DBsDc@k;v5KP!G`!Ld2SbPFzkR z!}f_Dq9F)p6MrtEP5l4(S9|(L<+Bq_-9_@r=4Z#`b1pw;%jZ;n-Xx!6`8h>C``{DJ zY^*&2KmE%Gk?7ab-O9e;M>(c?rkm<{X#*Htpwha%3g4zi9z(b@1~dhx)A0;mYBkml zvnV@p(SjE5&8+@g9sFAi{siE-4LP5gO+jY6&-ACA!L;W(X=j?WM|;z@VA|En=+?>v zqx;zoA<@eY7Kw@w#^M`;ecwFo(j6o83N$b^Ld`qlWn!aZNXxh1=w}2oE2c*15;oH1 znqMLE!xp+$t;GoACUU5UksFi|Vc`8{kk~7FArKO40w28?Vv0ujOMNSEnGbR@zRhIZ z891)Qj$&pzm5Wc-dAMlA2zq+lJ;D!KOwb?BHKn=TfNnu!b3xx^%iFA=F)!$HMhu0+ z5@>J{A{=E{gmB6@4aL&Q!&v*fOk^P=rkd8UqM?JvypCAsIqO%tSjHvSt@-orq)3YT zm%fSRvG(>bhs)Wf!n-p6wgoVCABW1?-JJLm6Q9L+9yS+qLQwkJ2Z0JgFRjh=+0Ley z4?q;?(KkFISjUJoMC?AteygtlL~8?hP};5nT;c_YGNQXioQDWUR97RMqWZ@{V&~GP zeG8vv4*QCHawcW3;OAi8aqMj`#dk?%y6*@;^Z)?VU`+h1<4v8(WpbB$f^t52Eaxv#z#jz#LYuMU5Dt8mYrUQ=QV@Db|| z4@obq_?WH*QAKHRd{P#zLImBPR3KmhjyA*w@65Lsf~aQY3PhoZ4Ky`ey;;+Cj;>j` z5W#lCW?w;rnAqxLP(Yd%{cq85D|e5$Z;WN~u4|gL?)D$k;L`?I4{sDl6zfXX>@V5Z zE;6S(&Nd7iZQuGZ3M^3Ad8y3BbzEL!wDk`>aipbzzv#sfnRV|}E_{k}z*YEtTj$s0 z()y-Tar@8l`_rJX1zMK){b2!EiI2e!26qi(1008d1LzPCQTg_HXcqq5yxvxLL)}if zyACfcW9MFF<|zl*jR7Hv#Dw}ba%-O~q?0EpQj&s=M#iB`u#XnH1-z_6Hc}Go$+l+h zR-Opq!|U9LuJ7Id){2D%nFZ(yYdQ9^<4M`Bs{M{U$`Lpv2%<+h7D%}N{4EL#|-ovCA0Qq#bVszbA1K=`#`oSvSHsJ*GwUj zb#lZ;wrlI_043)kkqdQwB$g_O`BfGS+n`*xzLCoTI}qGHied_ zHas@s@UGwj7o~~33g~o?PHQw>f#-C7-R>xwDOP+xglKfW-^(ccEA!F2!b{5{+c%Hc}ybNR}F{n$6OR`v*L-jGIzDM*`>}< zSFbjEfnr%J#gH4kplqd#w${epVvj{icXNK!*y__s2S7|Cxhw`T`cEtx1-*1F6mXwh z$`b{wvfw5xqvqZCepHb`*l3@G(V4DbQ+4!Mrazng!9H~c+YqFwuDAEUPGv}U4gmb? z1!uIckEe^i`iRQJdv%a+d>W3~if-oRl*NRlzImPd<~-d1uENWr%h8VJ#x~+#TCy3e@0ZA3WHt{3SyFNFJaiZazH(J?b9nwW;?j}_F6L{ye!*1$Q@_%G9pdZ1 zQ02{QE5%g6INi#~kSudRTT3H8i4fV~9DVm8ArK7+5zrfd3@Zz)9+G%y7lU9(gBn@x zG|NBUpfVH-143*mmN^sVqnY&_8jG&s(zM5dT#PCJ%PnvkIVq+>V_L#%R#MCojX5k9 zU62&BRAXA<7+_M&GL2~s?*v@6@Nm#eW7;5}q?oQ6b2#2E$Co!v7mYc>LQXcmvBY33 z;!YaV7N@0?&^l-g{Av^=#bjvAQFzxpDW<)~v_pB4V%lmS6S#&lpY_d=kFVy0^h+-q?8&6{Sv#vHHf?%tTW8q?9N z)q8j=)tF9Z?bQ=gtT893+Yv9?OpQ4a&lIxhdeThSn9i{%ZzOqRiZrH6Or2VI(oEHu zlUUN_NR=q*6pcAK7G0EtR;V$KyA2Q8Wg62p7UfMjF9!u01BV;D>gJ6ZuQ71A(JLut ztj3%ci?&aS8L2UFxxvK`FIv9F^e|pDJiK++nA2HOuA(MNI!I%BLJgD9@-(KGaqZzj z%h8xK%(+`nOdpLoQ?D6#dCS(A-mxgJqIqMgG$tFnkVz$7t1)LKnUAYA_-vo~DE;?2 zC?7n+y6ti~DC0{D#iHzE28lcIiYAK9I`81-l!l1oM+7mj&;pxw^_ z$gG%cTozpJS3qmZ&0*CK^oWTByW>+Lqs*nNR@0Rsxm=LQg#*4nmuv#4)`Zj8BXRd%ln$>riiE>ly0atO3n zfjWf%wN3yPr2zemjTEOl*#6hxa&H7}P&fG$vF0mNe-6Pa0j=o{Xkz-sbUA^l6lh=w z(3u7Z-NDQhpd$&iLp!?$AwXY08(g|~5FgJ|rdB=~O#2vUP3ekLn3_wVVg;HK0yN$L zp>(AwK<5z1l#7sB|rfwMX^f$0vemcfoivrAtp?Y6BwU6$-RG1gOFQp>&xkKqUk+ z!|)X$Kx04~RJxwTTCGeS5rTD)VG6@=Rti&J!jy^^DA2o)2WR>kXelO?u0;yaV+1m# zD+>X-ImCXufLJq?sk1_`PBKiPbgfgE$|6uN1^Vu>;L`1ciDgRHHU+2>kxuFU76NpC zh^;n*Sn0~t#1O2Zq;0FTr-jfS8$sEq-FqIO6D+7DZaMZ;*_DJ60{BI9|Q z%j=H@%jj7Hgj~9$0Nq0%Q|?t^x~2dPHj!YrS4w18=8~!Gwg|~3J(0_@6rj&x zNX5G=(E3M$%l#r~O+#6l0`#DX1iMR8B5!9dOLeVwQb;bN61h~Q0QDk}k#5@%pv(l& z;uN5-U`QEdSdkL>E+XSwmEGqa4i?Jeq%Bg~c_Fm7(0W^&8DFgA<4B&eZ8?g7gOuWo z5Wo{iTcEVfLTG;pv5EeLcq}NN!)cp7@`&vz&l-5j_EZ^8++$;D(5=oo_}TP`qE9>~ zZ7hXsPM@Pl4PB(Oe(#pq_wd^Ro>t9rc*-`;t=uC#-aTq~)(P=x^_b!nx_G@E*Hf*r z(1v{-_^GMgr&WmSsX+=Hae>ctdeF{9m1%|gm`nwD9(gzuL4d%G70;jvc@K#8-3E__QxZD~b3cHDj;%_q?QNUZ_ zVyxU&hWcmV`fdR5T?#zh1@7TohF^q)T6xS!bWIkE9mfx8!5p8iz(3yNaNM2G@IOWfuE<5~0Cw@v3LC|vE-E}1iYvL?xq_NIUl}Eg!zfqG10Z7xneRfvXQ4Vn409sK zMfw2X?h5?F&5i`%vrzr%<+%;6c4vs(7YG3UCypjU2oJiz@L5R5eBu7|xD^oqJX?Wt zU0~N|;dGZ{W~4GEm?PujVBixJc+Yf46!2N7UKSU)zzbbqf;qs8f`K=|pAkgyXBQYg z3)dn^xR=G{!N4~u@R=?!d=_pK;5GPHHJBNxCDTB!5rWn!N70eG!aBG*9C^p!c6HR_PW5eJL=mP3_L}FPjP|avrrwJWw>1gGg6KT z=5Wk2y#b;)RDrkL=!gP73$ume_AYSk4$e9S1IKXy7NVHt0>fvadI0R@0y87!m|zaa zyfP5L@x=<TdKVZz3+Z68GFt2cGb05im;=ns-T>gy3f#s8hR;Iv0GQ^g8#7X1f;qt4 zVGaQP1yTgZYl<9Ez-QqGB&m!pCwC&_+C2cS3I<-Hz*o4y@L9N1fU8_!W~3YwOgQdr z$qDlW$H_;MhJxGXE@*r4MzzC5WDbhB$w9<1+#NdeDY9%Jykw=^1z-XpEf21_J#7fiJwE|lLsB_9QovF2>T5ADe{RP~oCV0{=>}GGA^y&dy^eqNSXJ-6 zkbaXbHCT%y#Ud<(SKy9pAuBzM(jdB(pp@j-&)~B&iDN>|G0S_J2$l zY|BRe!YPh!3%-X?=hndwi-0BPd-Ny>HiGehpS?GWSG_pv1IK++&yR4*r{_%&e=ZW) zFG~u};1JR;^^^){U3#ho@$eI|(VmYK);_$PCNY#wKB98%B820kKWb)lVSM(Aj&p{ztodrju26> z$m$jn*-CV_mxqfPu^cb7g6KFz=rJKX{sDDaRO%`D6h&JipFI0x|3yAUDesg|sw!mJ z#J&wbttdr(T1`z}!SV)kfX|#BXgtIGHxj--e z&Sc4z!~ur*O%TMpD)%u@!lx0gbtJ-Wz7@g-4r|Ie+a)-82IqF-812aQ;9MypbdEVj*#n%$#QNa^(5hnh0uV01IPX#F zL)MkKn`I2hU6W?_fx1Ej4RE)@C8|Kp`MUNal&GQAPu{A0718-T_kw3x`^=O#l-Jnr zZ$VZ3wl|cox>`mQYw)I3VEeYtctbfeGW*Iy`N-GiES#X3oQX%2*A!lcijcP&rF6J> z^5VykFfOZsX?tQK-;h(k->Z%A{S?X7>;=RgN_u_KTJJnVdmMW5pdEuojK|Xbdgq1Y znfm79zwQi9_cpuKxvJYwlXljUEcmpk!K0}C#8K)p5-e7N1tDO?pvB79?jeF`UtAmB zc;anPygng#T?H>g-j*F<562Ck_%cn|I3(qN(Ur;*%jqSvHl zGDtbGR?YWt{uxBhHc8_reUxE2{p(8%q@&n5<$4lHWbb@0Vr4{C)(p>NoK_ zSos}n_#IHdt{!IW8}JSZpo5Z`nMJE_gEDh*2s6WeD>G|UTi0A(AK`rq6DlFRmdbBt zGQV%r(CTxQ^c_#n4Hn+Rp#4q4%Tj)`48N}M=BA7Ank6&Shs_82fz7X1!A9-1FyeFy{3mB4)rlq1;)hXdn{_K6a{U&6U5fp9o5-e@KBrv?O1mvC;oAiO2RKS8*)R}YUP>@bE^BMje3E>+jtciaW3ES@6GXmT`I zDi?y5=0ehSwSI&!EhV7!kO zsyqZJngF8Y{Xm5TTBaNg3IWPa0I_QQK9L%0`x5`H&Zk!jvr_XA{|#`@seN} z{S~yVe=+gq^Bx{{yQV{0iFL1(UDLz zKicw}tiY39V0e@MpKSRZqQHl^!0;yhKiTqI^__@f)kH@Whro0S+3yQ6b0;a}Bp0$_ zowqQ76trP}gd!cGNRC$*T=(4w?^`P{|FFw`k!fy{SLO9~Uzm#VVr_57-5#uzEkO&l z(s{>fDrE>;rQeFoN-xr`mHoVQt^4;2Gl%=y2m1LHu>71e7>h7}4>G&wg7!Bt^TRj7 z%nuWU86%@e^d(FpieC|b$dTxB{NUZ`rMxwrUxc1my8a{C4G&PJk4k2`h87o&{v>s+ zHiF};RInRv3ogrQ(4s6yCMI+tn$ua!(pk$wG5lW5`S@#*%E#kHD!gHdHI4B9 z^2!Djm=^BY97!2-9?_=|AGuHpCZ}|g7tahz&~ruO6=l3ZDd&7Y)q_Oz-J;X17*8x% zuXTQ_s)^z3D|bbDWl0wlW<-=zXU`y7oc)w!_@xUaa1|GoFd4rh9)7C2!zUQ(X~2 zkN60TviOv%rN!NWwbZ(67Wd&mYm5)()5_>n ze8{3}lt{WkM<8zbMP~0rlz(xeiXllI#|ng*m9G2$yB!L&A9a@I6N4+)fi&cN;^=fs zsyI4;$`MBf;{$G`?Sn;UN|fjp>g(a>k})C?tRBijur(x$Yr%~ovoGn6w#iCbhe~QZ zxsmvzmZjh{s8=k;&2szi>!q~V$xHJlZxWf^$)CK5xUuyl&tmdxkX*;PbSmV;@2RW% zsjInk{ndzp10^t_zzA>5@KX_v@04YrFJ?n>#x-;GbV%+cZt&xw3Nl=?vKRh^vnBq3 z*1bexI~i=F z^;OEZM{1`YWlzSJB&@u=vKUXVM53<%mK`08g;Ty26-Zfy{Tv3I1tNC$G=bk{(uU^No-W$K@tb3z@4Clz|+O00#`5VU80{ycuSvV&FZ@Odm9kFRoK`9Njk&61-%i8Nq(1a38hapFeY$L_ZUPCp)rHo2vzl*MjZrzd zhZ>=vuFK*3A(vV|>fR~C+_yv4+mn!$)mXfe<1s#Ky^c8c5C&J()?RYJ>O4Wl_z#|Y z-;_7)F-rzB@!N<2=n$4LpfVZ&!irHtpbmg2z8QKVvkqv8edyOB#+2pL^)#>`qbe2S zvLb-UfQhEPu8Yr2Zb=nO(+^q_JZf!pzt) zaWDHn4(Qtd;mtkte+UF{%2H-SQ;yP&{lN8HzCp+K=65OP$ z(=M7x>FG-vGp`Sp-W1RVNp}$9RZYzPN4=Zn3qw6U2(0fB>=$EseEE`t$i|``cDt{z zm7b$j^WJr=#@a@hH(_1H$AfBD1Sb&fFHq`uktTYu&O{5DXn|5q2USoR3qfm1*NuAR zZl>q8o=B7qpp3w;{f`JdWjVSdGuxn<9Tbw;&oGWupw5nDeFvGsAtF%2%cpx>+e7?k z05ihow_d`1=0_I8pOx@LTa`812N8&be(yl&%0|AEO~a(-J_bCe2s^nTHUvLx8$~ zHmK;Ch=+vLsZo7=TNv(;U+tc!aGa)Z9AP)wjYi%Wi2ed z_@WD>xh4jw@1Egow$9LIuaki z0!&e1etuPO0p3?bu%!&MvZP-xjT~^^|5PLQ6Bj0kCN#vvap7bX2o=nsp*C*YDj6H6Jj2=L%hG?g%o)Dm$KM-XMd5N>KEo0=me=^ z(TAvRYV3Pkqzvw|;BYvl^TAHn3U{PdxlHXOCw70hA~=`NVKaeKT_mpO7T#Stu8qib6z_2Hf?LNZ6mF&;=mPz5 zGyUZpPtP&)Ali>>Wd8ptYf6@*5}PH5OCayJU`qi~IEr=JNCNjTFq#LQMR+@g|K}4T z*a$~RdylWPn&Cxw7+vVol>TVaza;d$e*=1W&$Bs0qMtLN-zM}t-H+H~NgosXtxDg) z<84pqHw%4*(jQ0q2|~X~!slxE@eI$E@C}O7k>1*-GG~)7?*_Rq+jJs*OQGl77@WXg zURRVM!6&<2^}C1I6G{Ks$By-j5ctaD3Q~eT(LlP8c$E;d1-qvOPGWck!jb&s&ueYBxk;p~HC$GO! zdp>iSskuxI$)zBX3v0qB7Q0^}7gnD?@_6P_p}8CwlFLu9q)b_;AAX>JAu_&9fnL2d zSSU{?fT)0epoJz9LZR0BBX43ZIhxD3kX+7BC3)_-E@(|`?MF0II!Daaj zCY=!q8>=6v%0!|pY~lXMzacWdReSThLUOq+kqf&JKhPzJ^vwDC5ex4Y#D?%7=#VZo zH)dP!VEM5(^XsazYZsDVB#|GxGJk&GzzB5aeOoRL7SB4+8u75B^aDLfAT#fag#gV; z0I?hP0~HX+%=>aefVvZC)O?sqTvZLXlcwrD(j{l>NRRdFx{jK_Wbmw9r!0ndRG@JN zNVbz|U%U>V8~zjPDVWJc9ITNLNyxf7K>L6y;2_K$3K~C4OKQ%l5JC{Cq3(W0C(69pxZ1DXb^08lQN1N5acP4V?SRTgzpiqA|Glt2z>>tN9C z3R>uZjt6rQl-5n#3U` zn%Jk%`g;Udue`>1R|duq2!d|DfdNZFxiAAAyX1s%!Gl#B(3-(24VvSFviH+ENL?gUE6X&aFN&1NaIZdnMT?FkV-n$Cs|Zd z1*n`gveFR5BG96uv6Y8qczHGnB1k9|o~H6|d(C+Yj6;y0o-QJgwF$f$zR@11%$%0Y z%%N@um`~OxgCUy1Y|TLTBPh0MhkN%Ure(&nU%;dq=Uv94v~8&}>+O5+oxDJQH;pqa zj+h&(H-JPJH0rrUdM*?Awn(YXc4r1-aVk}{k4A=dZISZsDERzxOmIDa1gpzgs^uz( zuD!Lu=;vR1<8hVCBkgh!-WaVLTe!L*El=~|G-6rQH+AmLihAZfws)G3sCT?UztlRo z=DJRtmM`tcrIF}o#Z7T$9K=42B)ykJHK4PhCkfAn9Wha4J zMU}i%#u8YYxKt);(t_y%7UjR2DDCfbX@7DuA*3T4{7-3rm!2l=k5%}4&v720NNrrC z?&hR+ts_?WNc!xD!r7arI-Ie=hmWQ~olSv4-l&l7x}Yoy9taIiEDD;DO%+=gka|&l z*KYEUZf7v?DFi}tXC~|P6&FGA%!=UoBZDihH)!h|-HtMmP`uQ6S_9@{Rs=sA5uD3E zCWv~RQE&Cg+9#Ee)6J=bUcXm8*6AZNKXrAGq&jQWjgTQ@rXnp@B=%)ilSuS*^ky+} z$K~v>a2dp14(rW|YP^xP$5jnf7akPgR3Wjv#RUz0{s6IOk$y`x>CLj;*`B8`Jj;Bm zfC2h*NdLIdbEQF_+CX?8hTkdSTx389JWSB?P2|fp1AUSKvEpCiBB5s=gAn+apdp)} zrwX{sm*QRGWT9sV0s36$kpnPkZPl)~Ke@;N70;9NiTMEx_~C5?@a3XB=l#=BP$jcM zci%94n`drcM!2;Fs}w8w@g6>wkc!enp>m{BPPY97Ll2zIF$q(urQpA|TtR4;Xq?m?q z46OFQ?%9sNc>h%XF16q0Uzu9iugNEC+uFnLgBi!RApIb6*pVEXG7M(GVV*J!VL&6N3`0#Bb`A$;<~YXEA=Hv|NXV*+4ew%C zG0rT>%}1P5zU2s)@;yNUbHw5*55Zj|V7c!gfmuQu=pnd<1Wqftm_%lI>^Kk6c?hR) zo?a-z*)=c2-S9a3EmIZwF#e8adb5T7*ob`FeaGxs(6HiGK)IPpvmJCXtAP6nflz7;VOV-oc8 zWHO!%vWFeP59-c9Qkr4?U=QV~2&Y=ycel2gyXCL8nLF^EC}t%34i+{27XC2I-y`k% zz`pnFud}-*w?Fg*Im*Mbj%L7?N+X{!hW(XnykL5|Jv+)M zV|t&5C`UK1MmP)ck3UHvM7D3@+cW=jvL0))K9f+UdVU?4fI3E@1mX_D>16f@C;bH` z{ZDLK#yEc&=|#w&G0@oHPdb5{JdJQIzMabN1a#MCboP>;h3w2e8M>v%*0EdSTtrW9 zUPvh}kU-AR-F>og44*FHH1OR`xbX}xkZ|q>p->Z&H|=~@%|)c|D)h#xnHXr*6p%hm z=#5o#aiCRm3F$Yz!9w}0noAkJO2Um*a~U@y#jY`%kv^+t66xm(y|HR85438oApKaO zr!GMbg`8QM9ag80zmim^g34)glNoR{12|4yWokYR-G^htIteQ^pLpI2&>?4@M?7eLtfNwJj93Vu-s`)QlXSuOzcCkGg*8lEF@s1D~ zt7fhIFjmd;Oku2=8J-jm2@w?*GQ68aW<(tgBJYTLBje17dZq{9A^~7a0KhO3nNhW+ zhv*C;Vlx6!7ZRC~b#H%so8q<*B3TTmvYU{|jI8TDL|>t$v-cSj+m63m?V<8_sXc&y z)e6g&PqD(f$){Lh$IBtgMpTT4a^YT5^4c z6)79M#2T74tY+Gh;raZR%Jc|~YY4odX4FZsFXU3XWY$Fk&T|903YSNg>}idunzbR{ z?glAZgDXalu$#bN@UEUNWfm!?^-`P;@}o0<)Z}M4N2|yij#!c>$xduyU#Cv)pVGIk=#wYd&Iji^5l4X z{^=Oc;h*;L0{&?e&*z`!o-!3>#(N*%zxREl!KvlG=d0~h)!XCHQdYbOa)#@)rS{0X zSV8cIWo?AgG_Y5o1t4OLJ#K+Sz?vysuxx5tzWw)88mHOEp+2D|@fDhWjom`iC&=yq z8G+CLJAmT*Q3t?1fQaWMla2%FRjA2t-Y!UMTV0TLEdDv8vI`N?V{}#(>{^d+tf7qJ6qR(IDTdwy$`} zG#&3z8z@3M^yAV7M`hJaLmM2$i=qcI5HFk?>uq-*{Dk&f??eAv)!amq&uJ#^;moAU zUeEY|h0_;l{kgk8!79W3v{R2VDuY)6Z1zxnn+Cq(3+W_bkwg^fTGqLYAyc zA#K#a^0t9Bz^jU$wczAEQ8xQ)90cs%ZPGe)y)v3+@7bHJyV)P_;B@#coyFcGl>b^f zi-m}?KAZ4b`=s`_$$KBXJw~RwnjrmA;tDuAMrTmmfSbF^Y9^;u_RW%#_H7~B+91t- z^$zJ%xTN7BGPviDjCGZkmRYW_7J;#!Ds(nBbkKolFjp z1Z!(e&{-0QFNg{^0d^{7h&(t7L!-y$@26tLm!_@#K!t%)Gj5}TA}JrGvp>v zp=^z1yjZ}o_6-lo0+Nh$ftql_0g^{NBzs8GO;Iv*fY0Ut7%6=L?KrVI_24Sbm}qBf zOKwVAtPFw3J>@21Us$Fo?Y0Ze)eRdk4p!M&*};u64Yb@kz=dQn?Y+IH{V7d1vk+6+ zn>o$L1z6gbHPhze_A9@T$7+(9`=S*>mgErgeh!q{3hy(%M$Pmy% z6irLkwlJHx!Hsn+8tbdArMVy(F8j+-joR95WcIT(Tb9Uz2hb^A!YwkCdyJH|5k)lb0YcUaWHIe`c^;P6utBHQ9zhrY3(mgE_5+ z5x2Bv+A55QOHqgWU@tj!xJ?L>s_1{4z49!*YYfqO^)OcrIq8*&VO zZ?E8@>^L_-s;?u`k?Io!N|x#)Brq-G4k1XA>g^=BOr<(0gq2aCRjD@H^%!IXz24PQ z^csB_P8Zw!H>NJs_-zeHx?|Uvi!Z;`5$Bf2jymXyPQU zSveK|pp{EXtZ(!Ms};&>oW#lVfR!ZJHdq?*Uq}$3A!VS&dL8>6scGp6i`q!%n#G>8 z@V4zWqj@A{C{7vf9;j5(%DhzPI#jzb+u7a0qcugX5?E~=sy|~D9CJ)h=UX(Hd30U@ zIn39hZ9hGj^Nq9xVRTp9)0X@Sho_O!ze7EV^4YT(N0N1|0_5>EfZlzxrwox&9>ijz zz^Lgtm%M=D3fc;`Z#92O`)3-I+?e05>&u(IoiM7Be>XGX@p@i zxCVTC#2hJoiUHMjp>R}mHM!ZwQ9U`cdjSyNq}h_W(v!9RFX)0RaLRBq%B>wWuhlD2QmV2FO7a0v93)DoC^xuZWdD zIsPbtkV`b@<1||TphZQ+N);Wg3qwh9a!t zQMe+kHl%DHdhH9hZXa6Nb{H6mrw@Oq6{kR$gp^^syDFxj-E{wI@E}G@{&jRVh z-;L*X^l5WX9u{jga8RG+DR=?h7Ko;{AZhIuFMNVd{N>bxeBmj)P=I~)kADR;k#qP} z=x%`xd>z9hm(V0f9{8!%K~EFZjB1FP2dKh2uHcasA{NAX?Pz~4dR~*JhTI7z8%B`$ z(MR(tk*FoL1$?QOnh~)#;R$R3Z_`@<2glh0nm9QA7Vy`qofte^+cO3aGymHDY4ESN zZCQwU^9x*l=aE^@(j?c8Yo2i4?d-0L$%@C85bw&2IJd9U`7BBC*}lcVtrM)c3|tVL zS19Jdl?kqa5<&a6c&xUL+AODcpm^kq-+dJf=0jp{g9Z}CIZL2Y2ATjGm}L6J#5oa+ zQ9u>c@{mClEVPTkq@UI(c*V!}7@T2knxSp|qp6B3;z%VNoll6SlT|xrnsV~CBRwKX z`u~HTgFrGx&nKSIiKWxC$D#;&KK_7S#fqNIc+Eu5hXvE~>lb3sb3GKmKpQX1t1gT| z&wHqXqUUW?!GfMQk~V43vnO`<30r4tyZ>+Kxk9xQP0xXN628nZJujSVvUghfABt17 z8HWF1VQl}y`IXlGhZzW9W3@~<4QA4&RjSs?X)wtsV5h-kEpL=}*AUF&DojxFSZI6T zlE~QUD4l@DrS7N2Lq~fRfwO8K?1lL3dCB}ZS@;%vzy@>?wQ>Tqv!|R z4A`44m3F^w)U9e$b(2f|Y?ibBhe828(H*m zUcf~k0|IXPI5kj2A7TEDp@HcrgAg4VtJPt$Rl7c|(y30|Y1Js~T%G5VqqLR~VLA%p zD1DJi!nf#mKZ-JC`G`TATd^T&hc?@xfPi<1GM&ULr1nIL`nkh^y;R1Y>wK#*)QL>g z1tME72NOelw{+2`yHc=C!a7QYyo}#jr`|D7ZRKOk#v`8F;5uZUq;sFG&a=Z*b8IG3?Q}zeN^Z0}EkoV;gZUow%s+)qku*% zv6J_uKCI1k??=b0@% zXH#W)&Y@0pp$c(lL!CG}RN57j$R?49?{5m&?e})cZWt#dRct-dQA%?n-1H^=ixKmR zT(vPQilkQpu|Tg&Y&xuCoN=2h7CZ~wx)`_Tp3At6Mp=K1Oh=gwwRDsnIVT3nzJ+e3 zqwGDZV1cq-s7qrHp=`NXfGn6DE<6_Hn+GV3dqp|=;6C^^d~kO0F!YwdDjwW5fP@$) zG&o1;ufRm|))^4uKqsE}A!CxG>;sZTa%l^yM=frQiu<@NE4LKIjoD@5#zmQsa-XG>0=AuB}K zET>V05=O=-s$fBuA*jp2aNf2Qtm@AZ)?A`5`Saxv;hvDLkYtpQkqtELB1YK3X_E`_ z9jQDMIUIE{Od&x1?~+V&07ijWJ0a}lO-Br)1o0PecA%xxxg}nmmBjf1D>5Jy6>yvc zsxbc6ZicF(jPCavbhf(-W0LK3jFW~8^JnFwI@wahaB5SLO`IKrY@ZJaQKeQ^h@i?& zs-Qv?|4bDusPYKvN~$2wWGbY(OO(yg3DQmN`4^ysCIoNj?ND@?VBIZtS--grgX8^q zqbpCW_*W2HVrdXKh@Csgnc!hMx*`!ocqG`Faw0P)s3-_WsT;I5)6h{Wt@IHxY$R&6 z_Cq^NLS?=mf>NG`@#u3GhOOvx7)A`{$R6UMCqwkf{#6Y6j2#@J&v~*!1bxn?3W`2m zsDcH3jzU`sr_VvRj{j6epS>sv(PtLCdrY667W8@Y_hIze|ARrFtfi7ZJz8%h>`Kwa z7H$V|{3B1$=)v)aPBWpiNS@QYlb$uRG`MJh^|;O?EfC7eROw*GOteyoZv06y!2|!1 zOb{#V>M}eE-|i^=qF;t#k677OZJ}R;>}i;|6wyM~t|hnbXKU9;$SR;%boJ`Uwc3)7 z20{Gg^o}%6m3}W-&F>sUZ4N}6q^;yUB({|5t&!h2p26Y=yx?~}B%8V%P0^cA(MH-& zJ&1?M48mxHA;E;kSn&aqer6O-9aZZbfN{d$I*?;L(&X7~7!n4BtgZ2lLtRumF|^Yc z{>`KqX?XhCzzKa1)*APwKip;u&dYKIJt+d`A8a#rrf@}NZ|G^n$E|D|08+%!2YoqZ znlt6neUug6S)n=8akXqS7}n=pC2r|r+)_F6rv61|d6)M~^XJ=NOG0{*e0y+Fy5CQE z0L0^@dw~aw)3ou~gU4s7D@L0ERoT9x^VGED%6y-hjLFn*a=cN!K6RC9@5(bUud6XW zZ0Ih+cWrSNlK(o&G&G3(Z)b9~Kn-e$UU(jTdtM4R$rVfP>TfGLBQOyLQ?b84RmU*$ z>~z_lJ-9Gkt2=aRT*)D}lipRUG7!(p_N+XVQnt@g_B1dG!|xtUQp90K8{Ng-zmu~c zH+NcG?|Cy<>V)7x)mU`IkQjwZe9SP}#U2XLdJ2HbDMKJRjDa$~AD`9u*8+B^5Ldo? zC_yL0+rTJRg_7fno3X&haY9%v@MYY}m3k|&RpkUsuE&lkIM&5hG%%|w6PZ;TRXgRx z$y%npwyZOKYrX`VYc9*S`$w<#mGx{wvF`RE=T8Z$h_Cu0j#c`Cf_+!xHf6v62p$Fd zek8w-!q;HmYJ86+K#%;$vo_6`wLBkR8feT%Z`;H;laUO%sff=hS>E5~D9bkU*!pP7 zh_ipYpR)P``(Q!~Hv8!oofj?G?C+?=%+$%{ABQVA43^3htqsIb9k9M%3@kv+h_`D> zfEB(zs#^Fj1F)V`?ZgnU*WeMYbxLk3_mNufo($RdR<_Y)$?-@=>zzNRLT;%^;@Nz~ zO|^2(65yp^-&J4~`k%j?7)Ox{6PeZ=T=feD7?mnf0gq_K)OfvS(BYGo7_lzwWLI`QWZq2y8|x+$}iTJ-jl+C*pTS=v@Z zuy~hGv=!Z&PZ}FMSHIv@Xqn+x!m5{_!OM7tE0>^uNbblqYmp1$FME!EN$TQ0_v}uP zpu7N&Mdt-PF446QBwR-@5yF8Od=gDxMh{QlOdu@Sw}z;YQ=#T=ZLHZl;z%@0VE)2_ zf*^A3!+7!IzrPc&MZ}MfpIBa9bh0ZSE*h;qUmV@?OK_&P`=%R-->9qs5}yWNJ1z|< z#s^2;!SXX<=KfGs-M(|y?IwHktPnGr{XrD&?o1hW)aP6?47?>JxzD)~+Jeuy$>&+; zD_-yOY*2jWE3WhvKjbT3jZ~^cL@hV13Rqe(c&GPRlB4t|@S<+fos;CI;G!wH2xMQQ zHSE+xfjHcwyo@SAUwm|iD#P~w>4^_pj$=G;Ul3!R&Y zmuR_DN?KHatjM{Egj!Wsw1_i-&NnlDEV>f0`du%r#*ae|#KDjeiNfjo08cUnhrE6S zcf_F3CH{l=?{&WE-Q6$aN6&7pcoS<6MOVjeqyg2nF5V?byOvF9*RqEM=Z(sx<~QjL z$(sju014#JpeK*x2|y%$&ykk$g9Fpb(L1NQHd9h^w&Q(gQ*9=bQ%)YT@{z9;j#ACD zakgW5onvfWF2X8usdL_qTSvJK#Uj1$J0%h2OiMJ$^K<+b9Tpk85E35Iz!~_|c89S) z`>sZ!E(yd`oA}@={kVmahaNNk&5Or>t7!ddfJF2aS72MC&RLv{p^jS|Jw?XB8$wDa zDrRyl*wtVp-VUV%o3z8UuXL``_H^!#a+kRDMgX3(N}F2Y_}j`P6v3YA68)F|0uk09 z^hpDKv^phX#gXYmB|QKev;whgj^54|Nid?4P!tOzR+6@xm}&uTw9#4W1!`$LPt)

    X5v-uZB7ozr3Ejf4so|0AKqlnBaEI*Upo_U0~>Df64Nq8wpM z(g>NeDr0o2qs$tsA6*}X)k>Gxy^OJ%;yxxfqG}ZpPl5&^<;=i^vsy<6@jj!? zunPOgb<|Qvu_`TB)^mmYyf1&Fuo_2^9G##dc`LVbsJFqC6pr}9G+-=z{oo1ojZigdv1!C2;oH0czkHiFQCU~tHu|Mcs{R1vyM^fQ7^-$v zrJk=;rLHK<>_?NTD0NPXyA3pKUD6ADQ%>!dR7p2i(YbgL_4p*usr(~dz0}2>T7;Lz z(o3OQj`G1qfph>m%1<*2lymarp86}wIoa7LP-Z{e-D3+bo~3OjU^q6K&M)l6FP{WZ z*IA?zgPJb!$cMOl_Lx>KQP4oE2qG2uSgA`qMtC{Q5Anz@AK8Lr7QG4Ysr8G51D6KS*7d0$?T6vh7e9G;2yy1IgrmL!e8IQi3{(P$+erid{{ zqjX}>XtWMLq8csWOu=}so8G9uA4V+vrgmiss&p4$7U=NOj>l;FK&+;NiY!zUFZVFo zA4=_CXl|cMP$gB|gZ7oiQR^giSqas3B;6A|_t%DN=Bs`<9Z6ZnKqD2bSQ& zk@c?jwts#SokzbnX*ABZ9Ut6~JB9pbXULwKs0*mip`NS+kg;~t*_mGAA8_btk`N)~ z%V?;J4)M5HQausN`8+5^kU@jL3Q2YyT$b$BiKO?tfLr;Zm0RJYo-udl2y-Mlgf_-e z7WhxF0RTjg>1~nKrna24Vu{A`EPRuo$t=(kIy6f3w`i1(Kcdkrz0o0Pgxs=tlNizB z&B^>`cm2&h5}ZK>IMfn@Lk;QR(44SnloVEgvsvhpU%7})27@TP?B;h?s(1dY%&vEG zTbJqmC$d`}$L}QR{ikENA(h3X1`tw7o>`3_q@?kGsrZF6cBT;m@n3B@warMShIFI~ zYotEMjTWj#5ngJYuCv`sBMJcGN!(h@08>7{0n#~2KgAXx>a@nwR2ZTA_)(^GAGuH| z$I;c8K*7a@np{!UA|viNMk@uD7eWP}2SOc}xct4yWg<=NIssM3kmw|7dW(5*;&*(R zI7yedSSGfoMJyA2#OY|X!?KpVfazkbC$^l8kg;2GsRvyhCH`q&bv9%yC5Y)O7NLm~ zl(C7-oK)~FSgH14NXF{mnx_r?AyzTiyV*0jQf~#?VjT0Ql@uxARx(s8|CJOO&TW1B zxf)j@>y3@yc|(6^RY*T)T*&ptQL6n6-VeWK$Wc0%3d1MVJujoIHIE+1`J^0u^T>l7 zIiJpgKT^&o?DWm^>C48*`E-g{2=yieT8OJGS8jc~PxGmt7%=%n=F_RB`SgdL5%cLZ zQ9tPf=hNxJwIHGS^n2NZ&Y+=@TWv+d=2L%hE}HoNIG?uuBo^i~PzmOB z)a&HhvWhzFOx>=&1^&!Q+4PL0U9xM-I+Ti0vV^^STeeck1t{4!U5Xj)j~8~V@Xw-~sp@weNm2yT<@kqsx? zKav#RMHD3e_S6*ZZSS4Z3fEnmk~XKS+jZ^jHgPj%2HZ+BcG?Z^nr< zFTC(VcSqU3F-^4zDYEY1h96t2sF*6gy`%N4+CMtUH{+w-UBUXP zy7HHknmYwXr9I;?EuC$e%dVxsosgTCv9stDtw{{rCCCYg*0h`ya`{ZLyM%)Zoq~LQ zIc=Hwh*0`ZHA=#bV>hywO>-V_xx`g7_Tzl{!Jy|OF$G^q^ocfXmBp;ipQ;Q$JdgFi zjQ<5@{HNqcVPE^s=YjY7Fv&XqqKw!3y*AvI%Shnr{wis=APzV=;#f6_7k@=EcWPtZ~W`;?A4Q<92$ zxk-2wh#~*r`BgjfCgW8(B)sgOxziFUk%L0XGu^yr_EDQd@J66`W@z|5Oe(0HE~UYt^~*fxu+e?!sS8|W=K zhMpeJ3zHEb-UmB-6KUnwJnbU{Zh8+M!yKBb-DdaA9cY&+t*)A9h_F0wTcJVoHnWdU z8%rm?w1ugN{B*AOIjgYDG@<+GE;BHYv)eZ}OCOVXwu zEZ^%{pn2B&b2j*<;{O|cQ#bie_T}4s`6(jxdZ1#eQ0A0o3uS8?n=>x`fH^;MX>S|$ zj`;ig5_{U`H|~TRG)MS7&EDfUhvI1lvrrrfypG4y05*<{H2YIK`EsgY_?vT4zSw;T zZ{}1Xy0W}lX@db?Q7e&4s?Ilc9qML$SL8tbd@``w#}M3f0W5y`J(Z5JIrxXq?Mbd+ z--Dgz*ebe!1dcRkB}{%fYvCH&3a?Pk9^j-?M)9Vi^OV$--9T;_@D>XiImkhS$5@jg z?u&ZB3<^ZGet}uaB+{Jl;Yu3TI%%5Od|lvP^)0vi#--FcH&F@h!_UE{?RLs+tO?{IQd;adw2XAZsY2oy~oaS z-19m5*LLQ*#07ts!>Ya8kRNv&@QEF1OTmx=1NcN7ATbI|)N^kKxI+9fh z_H0R-L%NFhSkU7L_RRvbdPnwll+UG$J>DeQhxj0}5R)u8LVqYhL~J?mGend&IW=G8 zQG}25sJO)9J8ZUuusP3j(wX z4-nv~ki$N@^5 z_gLD33;o$}(;EV4krY7CA4mW#>cTTKH(&gP-`3=e^S@4V0RzrBT-1lg4y{cwkoXXE z#3b^Mm%+;QfRaKf#ojMJ$FUUjn-b=|#?`mtdFKf*TsL={R1}Eex{2$6n8-UTh^EYe z**XV;)8sW#QJjcIRQ{cI!s*5Vkxw>CM26;w&NgU8KM<8@NXZm#%e!qlU`+E*cIUEn zUF~!oW99v+-W~Qiom{5Wcf$J(rvGHOzrYP^$2Iokw-F%KokHa1LO2{snbRrQw*ucn zgcx&0NMMcor=msAC|aDJMYPbj>;?**R=&qMJ>4HkTF}0_m#72DBlCV34JF{>MI*=o zDtE@%Nt<@YkxWh3xS!OZXrY75v{+BtdGC&k;a%^@=Jf175?TmQ`RRY1w0_XRKgk}` z-y*(g15tW0K^kHcM5UR=@tRjUL)j>&^$Vb$gc)7(rd0f+Z5&12<_vTn1BMTEozvSr zd?~d3qLDPMi1+)rL_x#9sg3YU*Zqs#hys{+`~XgJq`o)LmKHd+cb+YHSqi=*Se$+! zB76uvk352P3JO(vEV;af9V-0kn01T)z;gnNcCiUr2p3j`A5Nv@i#|i8zM!Ps7njlG zq9$FU^|Q|rc%kUpw}W(DGeW29$u6;CkEAQ?1uE}sT5w((b0J7O|3_;=IIf5A8PZ|SZ4ulQyux9BzaCigqyn|+jw zReH6E525I^V{>1_vtux~rZV!$&=?Y_9HJ~mo)l41ae?2M7QB$w87Vg>V50n^P7at- zC0SpbnCLM9pK35<_M3SV+aoW+6PSE<(LOTu5^VAPQo9qbOZNxebdW@5&W4qDy|^7> zO*;%W!16_UdT?m4Z-0EcwD&5>&(Q1JHVCw-l~E!@L8QfoCC!N3 zBT~w2M80jKP|sIB9DiY16kZ@p^V2U%WeZ(Zn$LZkDcVF^Nt=DmNA?__jPv&SN&X-M zMA=U?sYlYLMuJjOrS?1hu-|EKv*SRYl!fM2Sc*yO6!+Z%rEmO5bWSjUj>Km|0PX02 zsK&Yr9VmMbh5G*JgO8zZ5LJ__P=5tB6$%$pra}jysEC7>lcz%;$t*dd zHH5@u$qU@x{u&*QPD(*)f4_AHzq-zNHOUArAt4qnZ=!Z_4m+*@sDPS23blB2vI?SSNL(JG`}vxMfv;JO{hJC(mx)C>FOiCrLR8pQ=* z%m|Y@i>Z5du`SY0EKV$(c2S6h)AxNIRLqH1$lXCP_2O$t6-5niLmKpR6xw)FCJ^Ld z=Fk-Jz{TLuh5`E9Mksux+N{tnd2Lv9bvFn-+I(T_rA2b+ShNNXg$_nWJ4*Fz6?IVw zuz~3R+o^L#*MwrOr{kRmjCVj(cz0u{TaME4*eplx=_6Mq2O7)b##&E7ecpMB$9sjO zue9frv9~QHzkpWO@1T<{f=>3YR!EEG?gBCKJW|U@RiolhP`q+CY3=#qQatfbwu{F< zIuL}BJk6zbozn@9isVM#DM6_h%Z+DU_!)c=w2Q(@hV_fq0G9t(Eimj;-nJ!ijZ?*| z;oR}%Y=V(IliaR;nG{S^4F;i$E0H^N840<~^cT59`GbFL?-XuTm6^eI%fEWmy>k^Y zgs63r-4p9UB`qD^THOLR?C2GX3zwf1XreIwMlt;J1Ho|_iwl>16Ijw6XF+j)ElQ%) zL#Yp1Y#06mB@et0fXUaOcqGxS?yc3VayVDh!J(2mzzb8Ww>k^-+bi3pRYmhu_&l33 zJgXdKSK&7~lQO;4gJ6&L=d5vwyDlK)ZA7ZPHOP~<#y9mLeAAo{@sF*J?KXuuEoUpV z)`}#Uq}S|rt})QIL7`2z`4ZZ+oYj~soq{6@#9f8J;)+5bbSoa%mj7DwY@I#Zu&3+z zJou@OPtCI_0*$!O=@4*>gJ7I9ADM&2Ce+vJf_?YUp4k{M-zO&jC^=G)P81h(sh`zywFTW1o@ z;u_Q;6e{j)XN|oH>jnf*{Wcwcgn;tSVDLZ-Po3j%Z(5P8weKp@p`{>qynixtxG&`UgCHqHqVi44nwPRgFHaRUJc^*Cb%|; z&4Cp=QcTk6DO^wIX<~(@Nt}lfFw-TtWj`Mh07!deYZ%gK`x{uogROx>)(UBx1d!oe zE%6qtAW?9|M*16)Sfyw|A#m;>DY53Y(`F&swCXdH`kYz;!BxJu=u#|*+Rnjmdq4fz zFnvxj`(6yw=M?eRH&}2*Z*B7M#N^G^*N5WHrg)iwq4goc-;6^kP*1gS1ANXV|G0rJ z@#HzAPDsrj*TxW|YvV@wJum@J#XnDr4;E_E(%^rCmNtX;`odqJ%crc5b?ik5YKep zA1vRyENz9I43U9Z*k`w%gGYhs^bHqZ*tBue3HGw*@f{iw9W1;ZFHON^m%+YGSg2Z& zPs8@TBW)b^k2rVxy`#5%V6bm9J^2hzIG#)%Tq+udrDma_Z`6yLe-QsIgubEq3Du%c zc+1Zi@2hi8`>{pf2Gu#I2BScobDBZg!1%&IGsLp5{5qmzy*7T9PZCk&p+hUi9eWUL zKDLn7)h^nELTxC;RqO*1hXt>=t8n?Ljfrvh8gtcW7_;OG3>!4j7Nuxo3p3`Y78O@AHBOJvx9UX^ z+Enxyp<|oL@zuXW*q+o*&%dFbC6@FYB&i-h`qrda$i~3%U5#o&;jp7P@OMG^Tg&@L z>VNg(;0Ff&YHqmA)>;p4MNOq|ga1R%Kg!2^c@fX~Hl{f_(t3m6uzQ*8x)2OcK?Ms` z(gIp1ylB7*i3?HJtclCmcF0@PRXp)U#mAeZs36?aWC%C5YeRQCtFehC^wK2R#mXRU zrvb7w77lw$Tao4SXHktM$R+azo+y2BTpE@%Z*@BEpE(oyi?j?-0H=0}T+YayS?80d zrM!3InD`hvCO&2eZb;LnjLOBh>xb+QR+P^~%e28@4<+2_nJDnPlC&Kwf0BU`Q6`3e zah!89kE~=HwO}ji32J5!Vn`2l(Imt?1aGaKKrf$wdgX69$}XXmREh$FhPL+&o-<^? zWlgx|CQo>dhh)Hqe-D!Zgp@pS9aT^=pb8bNNV%TWzK{$!@%Ssr*@|#Oi+V6uw_Zbg z?=WEygP+p@qml>1>!EGci%uws9kg}RtGpy5Xp3^@_=!=3w;xtI#5V;$!GfpxX}tt{ z!pLaTl918X6)}ihby9kW!?l(e@(J z=p#{)8rVp(tU%2R7_kHlPdep*CGAV+ZKu!rPL*^P{{iZpK}k=QA3N* z%NJu^NWO@GGne?i6DB}sQy6Vd)8p}U`mB35l0FZj1Zg{+O<}8o(4Z`uNhCuDL84Fu znnh-qfBjXGh*F8vIu8rRx!Z?sOlN(x(zonR~K3Isj~EfgPrq8OQ+J@|Gr!n5!Z0AeAS(QRmd(;#Mr`WtYk zWU?vk^fw0m1t*0D0Szll*Y_GkdZ<0Q+iVb>+G+25((GX4AxF9zr-oD{(y`87cG1XH zA~};nH&1&>m!Tv@LjSRRI063K1+{|tuXRiU{5KFs%EINtNhpcIe?8PN0%L(&#zVONo{5Q^j> zkS1ecR?)BHzlr!HF%TzgQ%7okh08ZEn+>j8nF_u zLrX;6jofiLRfzL8c}?&l14v)Lb<<5$GN#-(kVgKxk!0lFJ|qg^_c8)5%{ea*F$mBdJ%@n!X2ES zMP`NJs89Gwzy)_I-p3{swp4vb)Q$`3S(b7Y&q{168Hvb{=xq^s;t|7Wve863!Eb=L zyqX(=JRxxj&dJ;mln)Z+MqxC+)_C=8lJ|9e=BK1?Nxnj~;@L zK{TXm@HQa|ya4=^Qkb zg!W$W5{SdgNZA8&(@&9Z^^*yv8Jo)Y6`dX!#qTAfC{LSFg>f)EbTzV?aIhm*-0%rOlR;E=lipDD z0FM)_bd->LQ6XKZI0AFPkh7$S;{GK$OG43fj?yJm5^*k%vOTgKWH^;;i9FANi40cv z_P{!x!UwGZ4`3h*CxJyX^(i=h!oXUPC;=xvAqf~*#xUIdW;>|ygu!5E7-qFf*$}!M z!BIw9ijMC~+G}(G8U^_9%-LEsV3@f$FdS%X2@C;bcnJKFa`(k{<|?x>@l#U3YV57Q z#jB8ZOV`LD9qOx%QK=IHZXVrwyj)V;j|@<2x#SU)FhMvCVwo4+pnD{?%%JWM2Ucm3`9CoRL1T9gk*dl2rkaBs@1 zTXl_%cbxTNElR9bfJ)NYzUc>QqE*jJ1m`=a$AMGVX&BxCMTUG|*+%hkArT*D!Trv+ zxd@I5nD3!6_+(VQw#PpX!8hr4=nd+4XTMkIw3MQm{}DR*=G{&wWYcg~LjDZ?jgHPv z!BMu4pul$c_*AmH8te@(1O?#;A3Wu?&b5FV6K)-Sa40DqtjsIRtJ={e&!Fd#c9#?sQnR6xDb_kX z9TB|iQHf*5Xq?kbi7pNob6XnoXSR#nm4BecEeTv(vRwxBYex`b>L{a|D-mc4pG#hn zQhaatD;-Cg3pPh>z|*z8sQ*(tVUEeZ^0jQ2cFiDh>p2p&i2uJ-3S$b)B z!XhMb3p6`*WQe*Aqk(t>4|TQUDSFvr>w7=y62#=)NhGm1A->Zi|2xG0?P1xLCWQpB z=N~7Jv>tvgFD(kdnC z5{{t9@lZcgwVax=K+qph*XsEsJO@;EgL56FCllkCcA!X34=E6-C;by;tS2!yb=HTR zY7CjN!UxGHA7VGr^tXtC%fn=*p^NR%t>SV9>4Q3Flv7g{1NWdV4@_}}qjWm$i%bKv zaEpENM@iS#^I21A{bW1Ks|j;^;%=Is1vQ=E(Ja0ZP1x+zh)T{C4PcR(Q(6 z^DsP-MrtxY#19b(JZR#5obHy$3En*t94x+s(#r)9H2dC-y$!_T~| z0&(GI_>O=fDiV~|op#Y4LD>`z5?&ApIuyB87K1It^IXkOJc`o|^TD9DEySQV91RBP zT*J;6W1nkK2S7mg%Fv0x_;lY{$%8a&yL>+8RyEMKa5RYCd6A} zX4a?wVb-VDqr(t=!}Mw7W0^%_81WS{@Jns)eVYqWYH`j~Ja_yP+Po1_aHh$)&txqX zKndoMg-V+!MmAF3%LD*k5 z{M{qTU)mtP|10DZWjUEzDN}t+t%N4?bvqi|J9w^@6Hid^NJ_9oip(l0GEM%{2JsMD zSN{AKvI#VZQtHn_9xiC7>nXBpVm!ZpBL1R#xjNnZq+Ak{wQW@D+cpn>Gq$<#*HQK= z-@cHY<*gp#^UHTB>q=M9g_UQ!#f^xcqE_&7$&DwU3Cmx35!wWKI(wHF;-EHN3rg&~ ze4w_CzMJjm82?N9_%#U;d#M}5GL+M0zSLH@p17bL-Eaz?qj%_jy7CM+hH2@KilF?K z4|VLgm#2cH8qSw1u$gpTNjlr|0opct5aO5S4H59C?vqhxTTw1g_)bNJAvzMYp7dYR z?qGeSdyw#RHR|9TJlew@Mdf$UNTn~J=sIm1u_mH$yX}_cwnN5Qncvb&eASSPVn|(d z)eyAr8__oIKE`X1mSj4Zmwm5%*Hguq)g-&~z3&a8Kf!0gWvSGh1MQS7&9OPkp9TS$ zoH|~XpU0?B@!EQPR}EHU=4aKb0~;xF0khyw4IIpr_*sK`f&PrEN_>yPl?JshP*NZf zbq7_j0Cpy+h#+?)>7=5flkS|D@TNz=%Ql(@@$(DTUA9@Oa1CM)J;yPY_!o)3@WUti zwAp_eO&gjVVB9Vdcs`Ti))D+$0A@yTVAKpLHYT8)CJeO_K4C^%f?6kjh36fbFxwI1 z3qf3Yk7>g2G+`CT;oUI=7lDzI(-{V8gtHk+PG@&jwo-ER)no6!jco-T_whYU9EMXs zJomYX24y0HfW8)DSS9u7Mg7s9j5zt8-)BzuY$Xe5PWsw0lX5${;Q}$YKHVu%%ck1NR>xZG*sS$pf&n|7G|Qd zn)^s1q8!iUa$q?^`jplsFmM^N`ocSiQw#*RI2Fyt7O@U$k37jBq;&rIBtp>B7thCg zXWuIZ47&XB+#5^sJcA~zCi8=`AzC^CfJqLAP3A!g_gGBIFisfz<#}Jk|DyG<=^=L^ z4Pr<;z4oVGL-OuL7~HkoQ5ZifMXawMK)js6$|ikXXXUQYdXyFIL|NIqYi4=o_tyaz zVCZhad8uL(PuA|xyKn2}xAX_yG86|KRQ6KFV49-KEwbcYZIlsyx34d02B|BxXQy;6q6=ZA(E!k&D)l4 zAzLSX1NF0zas zNvIP)K5IQyza%A1S}8fqi`V!W5y*{z<{2~^HbaLpH21dC*`4SN5&^k?M`!b52}#F0 zEQ%E=I|{xH$vb(J-B99|4}#SW+z@%5sZpe(SN1Pya;uG~#K8>MZ9m;-v`bfU@fvzg7!=OxksLKrpH_raP2{pV?G(Ar2PgVU3oOtS5B z^|r(1@g}rmZeQyfSc}2aI@F-np$AYU_BwPAItk2TT;0|VKsQQ&ln%(cZU_TxvWhc3 zdPjh$tANMXTBD$~9To8{dR_yI0LdY77uHn2ywgh9H2Rtf3W|T-OJ7NfiW`ozmXTO$ zohuJZage%PiUU%25>9Co{8qmDZn6HVUC*vlL9$;dM@ltP!if|O3*oeZn_O-*DYJ`8 zO-wc^Er-&WQBEx-l4kUJZgMa;iBoG~JJ#|^-+}+t23r{%>p;JDOsPwN2bfZ)FJtk|$!TEhFxe&}L*lZrJ`Pd! zAD#}hg`A_hU5KcILxNS#3yrv;_^T0HVOK`IjyS<{{jT|*g0%xxHIJ2bkZOXcWR)=ERy zQCy=N=8zb$Mql#+{fe;=HHuy+iE{sT`?K{#Xob527wb~sn{MD@pFrrmQlr=eBdm(w z_?ZNGqj&}-R`c&cG;8&I0d*_01)<*zPf5|KTJfsN;0WZw7PG+|($i7m`9{O#!315H zyCN!nJ3R!S@>g_f2fpt~YqBs#>?O_6$OO?&2rY>PklMLKiG>r2ogIM|l2r>bn-Zt_ zC<_-!Cx?4?Oldx97snF|bMZupg&s9A?Bi=g^1(7+Ir0IzAsi6R>90~eDGl?SmV%hG zpB_-_eN1N<_WAhd4+#vqU2={ak0O2Uv!K5PvWSc8L^eIQpv*|rg*ru2%Abk92H)n3 zGd{)6ZQFGy#1@;L`8U&FY_a)+f0U0x&`K{F~`7Fu@=ED+&|zaJS6AK$xJA9ht69ioII-mBvPA`N8tGmtcBJvPQVVbCu@8cqg20C@JmO3%HScnN@#Gf5`L}$mqAeNP% zp(JY8^f7creb=;uDp;`LE2ztkV=y3Dr?l*B7~O#w&wP$CH~bNZe+%`WjeQAZ+%2;I zHuxi2kUfCx3}F2k)W4gj!RU7Szl8di{h@zsrUsAB!l50+B2DAoP5y~SapYlR{4Jb~ z=rfd94R0^>E1qSTBWxDb9ws**4$+Ot@|DlR*RbX20iz3!L?~IFWAmJ*O$sv`kJ^H5 zNu&53>ISAWA+9Gt5Ez%23m%t!+VwI_k6fg13LnwxEm41Y80T05f0zDMvCbK&=>UoO!0seoyY=y9=WfO!U zzS%g7$|>Cqqpem39?`hN z{W{n{6U@=}fg=xwqXW#*hSdFvIp`hnE~*f7L}R8FYL$T*I+SBz=83rP{E<{K3+b_t z+LSCn%a=5Y!t@I`z<-Jt$Ug8hB7Au|ho46nXpD#VL&$%J5~~h7$qqy8scm+nH#RkZ zRm<)LGNlDz;IJtCHHb|Q==(3u$`MfZg*7O*>U9;gFdn8nSYcM;9QW-&mpZ@Zp&{ni z))#b0P8+7!8T-G;{?`yY!~cbHRxrFvAwqIVgyaqh&L&DXk()ool^gV|qJ5$pN(S=blJ^xq z(Ml)L_rp*4YGtXi#EUYf_nlHvaml7y#O;sDn`ze~B^P#oXv!|$Zh;D8ra-q}%~f>6eW>PWI*PU+ft0X{v02sFpp0=PWL(AfEf3-on68j5xQjUbX<9OH0InafWIq{ANH7)2g1s zTsOcbX1*S_SD~ma=D&vXjd(4q^9kw(KsuSws2e5>%1XGAnEb21V=wPaeGPZoNIq4! z0sIo_4L3^guuK=-I7>k51it7z#a; z-{Ri?_C;t*hWp<_b1eM+x4V#lu^IQjsnPk0*GA`^5Gfd;8l2XE0K-g<1l=mWeUI%n zTq+MidCufuQF#CgS=40Ys5;d07}$slxPc1sS2W-)UIQJr!cT6|srZLa)2_mwvlXGF z$XRLM?X18NsCC#?tix1tu9l`0M7XU+t5D$A5Iw|Id&#g;MLZ2&T9*hfz3Wyp;h+>G znr9C##@y{FeF^Q!OVo0j^Ksi-GcIQH7B`Vl+3K2-3t6%jBs=3{>aU6V1NWP5XN#1$ zbm{4>dQTn7VRMOkE1Vk;w28R2=36DN^96Wf-liya-xHTVE?Z=XVDLw_A%nyDV=VY% zEAdAsTn^|SUIoy@{vqR@}!0)SE>$0yJmdFCCUixM@x+-jMO5qpT80 zg`hT!ZJivYbU0M*=66F*Bki>8C6|QtCb|>x4aDP-h(>B5rp8v>_X#2((NLkzehJ+t zNI|S1!e_H3xxKsl0Uo&xMqG}}TlC7$Q0nP|resCxpl6SyHjcG){s?sTZ0hhW$dc0F z3{$qENY1zxK;>l=I>kS`{VRI-ECiv?{rBYzPC|%DSsc1 z@`}p@6{(XagKjB|8o|%^bUeEp- zn#|s|B7=J2mj!xKe4dh8PM7X?redywFl;$Lw}B^_yw%pY>6@muyo+OZ7n?}NK&$8l z(!D4QKc`wNu7>P$jBSK6l?Dw6^CV{#l++p=>8tSK3b(RBq>Lf>piXP{O)aY(!y&?B zI7GM;&i^$*WuuGU(4MmzldU?}rM)d41voI~Lf68D7cQuP;^8|#Cn=DuH7JFy7t)gE z%Al}0q;Ih%gu5^FD+r2LvHi@-aHQ@M)D^eh7$I)RfIm`yneY6HQrF1qAWeIsp`NB@ zA~!kA1|~4kXWb$vrW^_ft+rzrzKGu&V!Q_*z=bb;4p#A|G0`d{-NSba zIt{yrFGL=?hYv@)|FwsX0JV4<)5!Be6x#JRp@PpMe}qkE*#09*3w@V?naaSlzK9pF zxY`_d=i&i42HZda?)L$|lw(mmyhPH!b1eEpYx3r-8W0)^m{eI$6Q+I_(dQk&-@r`M zF5TaM%b>fp(z^f{pI4|bE`#h*znzU)rd~e|ov{d*6#V#$z_FR!FJ>v$PF!?&9$j=; ztFnEkX)9#5?^?d-aPgSj0!1Q)-4qG~6?YD=o)c4y;)s<^4 zZH8=StM?h;VqJ-W$Fh@qE6M#RWQc!(0WgUvv8%o@h}w*aCgPHub@IN-vCvEn-^NwF-D<6wT zVOxHtXX5$Q$RZqzenl&E`UN(CBv3zYL5Y<;WQq^=5F@|J{47|wDVy)<@a<|{kO{@R zBpW8dkH7%K_EGvWxCFC8<|I2>H}atb>d>Ws8bT&T+j8`ZbQ0!+|Du8xJ$qoobpWhR zyoD;5aVq6ie_k3aTCk&h}o zc8r=Fp@$viU16;wn>TQ93go+r*VfLY8{a2L8@t-3eT9h>TsVl>RBZbJM+A_|)0|w+ zIM8;W*uc?@=70xY= zu2mAVsXJ9AvbmtC8>y0oopb`KV@6}}M5DxJoDUele0lu_IbV=4fW{wbYayNq<>P8z zrsE>uW<=~niPl1*cL}gziqWqZuiwqsXyS3MMop_BRG>O#0n-!h#hM@2h5A?a#4+u( zdMN{87#tkshp`IFY-7?9J3DMX9J$Mwf2#e@P+|r3-f|wKMZTPuxk{`PSwBtF1xa|? zrvH^Z85kOmk|!s%GoDTWR%VT`XX;t|O#Zp%I}Q9CR`f@S6@FeVLwm6HfGJg^_5rY+ z6irHWsQE}qWLQL*`kRH;m3+e7YvwK|Qm&#=SoM(|qq|2q+24C}YYaSjL`uU{p27jzyTa3d(H!ln zgScc>%Nd|eP4ym6gLT9)c4x_`p))=9*OCs6!Ec!He}yL~c5Jr~bp=0wtYkRvZ4$MM z4g_K2Pp4NU?5K8c`cUyQ%F!a)9hc$hzu-BoSQId9qG%o-b!0T5afsD-P_VEI0}b|F zjUn<41i`*F^gU-yux~ZKz%iz*;0bNn>T{W)!>!EH=g{A5aN_m%o23SSdD}8W@*(Un z^mjhbR%8}(;X*cXnGA1Y|45gCFJktOTLL2BW0~Awj&s{`{r8oigg8K)d!uywBi1vu zWQp76&vq4EhLdE<(?@w_OD}~eH_qTBxznKyN~=7K#x3IR|NA7^`Z8M6aAqYx6A9t8 zF-Qwn#SJ*OW;m;Gv>DI!7QA;#H{nUJ1y2cjwvu@t4ONS)(2!v!l5$0SwN-Z&vUMTK zJcPh)vJUA+ev@Q~zonY!lIW+U*FVWE7H!duDG6s#>&`7`vG&|AO=e-A3VFEZlb{%n zKWgI*dgg22G3v#BWcJV|Edv|Fn=#HkTA2z?(p=_?!4_v~J9Ay)F*HhH84b~-6yred zqt2A1qF(Nipi{n>t19oliS8RPsdUUwzq`}KPa$7bxc&0Dcg3^RtHI)(Zw zAF(3zlzes+w}`8EeS!cU*db}PNoJpKwO9(p1c%=bLmspH*e>1==sdxuBWWFsVhl9W zC80b%cVfl3a*{-E^eTx~61$v~Vuz39$X4(U;%7P(A{XE{)qzA6CkGGRdhKmfv|RMI z$Ui?xKRwxilarW?Z&hJYeqGJ&ZvIKxz-LBXQEv(~mXT|uZ>~cngk#Kb%ZU$Q+jfsD zl#6jY2GY}5rR%}qYF*JIe5qRIykHZE9@uc&Z6s27o z1xDg;@Um?DMdEDwfemJNJSY6g5Tp*}$yhv5B0rGnh1%O7UikwljPW~qS}J_;o;Qe< z^c)keQM^u)tz)6!hbHiB4K3~Z?c|ksf@OXeAiM((MA&oJi@$CDM87}WShcG~(;J}C zVc;Su`U-K}KK=?G!}gCkr<@tTy%Cp(?|amcH6i=nX7hZ{3auYu_C4)G-;6r{Ys5H# zff9v2&mM8x?bcYlaWR5+Y8c~Jw^R3Gs$0f&`?OOxnd<(`b-$cz4Z{am_v2F<_rc(K z;2^j4r*_)XsBTu7Q->wQ`)K9mFmvpx`%GF8e5&%=Rw^% zuKQ*?bzi2s>$vV8+o|iNx<|O~t?kq;KwT^RUrueca9gLh(^e0vTU{>k|Lq*BcI(9c zB0R6j45V=N>UOGcMD@V*yJgc4wNtl@>JH+%?sn=qIn_e3U0Tmox1B$*NR*fcs^%PXeER|K-kSV5@-W`HeaUQmzgrVHZwIT z2^I@OUTxIIrgkRVxl25Hy%gbyL)fSlZ_4-)M@5i^y@@ph3cLhg?mq`bOb@fM28>+yI2{%MK%E+)O?^paB z%^+zW^bjm@H*ZfOe|gTHz%<|xVl-JiiRI3_0@maY5c_aSa53G4`S=20&OJgJH<#0M zizVX^sEdX=h1RBaR?9U22x`H{PF@YhA@01Vt>{es*2UhH9l38Y!_(v_KLh$yd=PW? zh_~ls3^jJ-R>qaHHQKJh_2w&QZ%&VI6L~O|lZHkqytJWVc-JhPC$B_-kwMDM-qebVzlO*k(+PFa( z<5P>$z#E{kKWiW^@^e4)bx>CGd`dTKg+(-aTT5E|U3)-Rr@tf+6^LJLNW!I(MUH&jo7e(i1O?9=I;B8NlMhf>bQ3mQNC#a@ z8ZY~j;KMPQF5+)E_Kl6!2NdR3;1LbdZgT}jfm3N8)b}+Ns8Fre_IqGH2(9NQ-(}L@ zP4~fvujkkh!s(nc45_veAy9_wzj;1q2|15PAbYjeN2^Ch?J}}XV7De?NXC2b%1ZK# z#{F;g-bN&kK_X?PaRP5J5U_Kyh0xRsXKKWHxJ+&UCJzmmV|O2*UlZxqNx5`soYvqH zXFQQ)dlNI%hF;-jhOnR?DkEsnQzrVqgp_LH+#5c}X}(JF&F{Yg@1mOYh9Ve2omym{ zH|avyYA3l{rXlpHgAq()NI(O!WPpF85925cMnW9jO${ukVva3HfiBWv zlV{=*vA;7^Nhw+z#jj~d7NXT!A8Zsqkj?~cJcj7`O{Tux4o<P1{HDG2$oDY;xF^Oj#oyfMynG z2Hapk&&@Fya2{1qE9G@m!GfGws7vr0nP3x61p3Nv^dXP{8NvYDV*z{s`cq&J16)%W z1K>BQLR+SsQqNKa3xNNKx+ey(jR6jhD};o}#RAbF&Rs1{AS`)0Q^_m@G@|+N1knod z{m?a5?7+`Fl;bmF?wh}dR;Lfe z(*9WHSL*>O2}LY?JxaC(lpw+l*I!l?i1#2ygOdnFgpR2kW!g0sS-a6dt1uJA7vh`o9Kr}$w`435YH>lqSjim=QaY#ot?5@jM0 zt+#?dpnbp+$6?nAiR&A<@i6(x?u_7-y7=U1ObQkctOGBSBC_g*2qF5*wP8Y(4OxhFpWr?RT;q9Hpslm?RggTzvijz9a7*N}8JNwpi>gAh{Rwpf2Y9C4 zkMFFa*e-iAmGcXHk3vOedjt~F+B}Aj)R4JP)RiM%o7e5I0ZNj?PdJ&#{ z??@Xvl1sg9DS<&~{d-4m`#^E*1`>e5zRjo^7)71diGwI>Jw|%BJmG+-Xuc7qXt*|p zL!?jV{X~O!Y&+tl5Azub`N;FtoFr^N8pUJ;T(rJMjf_#g{;5DEsj7`Gu@iBPz!U%r zzb9P{XdzU#Kr_d{6aW}2@jD)M71BdH#YA@suUyWub39~ab#A^3aDVUs)b+!F6ODpP zY*f|<;6^VfjQm>CwGijMPlVVr0a$YP8y zK$+DbZ(;otYm6S{V;yQqD(K%w$gvp=87H(3s4^{9@i$d>b90EH0jdZozcfo4;-b}< zG<^A%kQo2tH0$AcQI`~bWO1eIeu}YtnW1u&=2J<;bw6Whk(2Y4*;IzdJIXJos*-PI zh`gixT%%wp?YkUhkD&l#AU?d3$B+_d42Ph2>3rB&U_FL6QP<3eQWHoNx#wS|^C3?q z4$|)-C(_B_!b6wxkT|5D%kKl`51q#4>Z&6;ge2eT)E&4nD0Lko@c|kRNGnP?O0Pq> zMr#iKfKfIKmz^K#mP_-tmTJXN{GF)99&_;UEoHEl(?THz?Sxr9Fc)l$9x&VGLiTGc z8eml*S?#DVBZCEqA`b{uqB1RaPe96s)pD3?QIlk@U#!>C?{06!7Jhc+l1(?;`v2`_ z+vtdYH{!Rx?@<0X^LlBrS48bM=w5TodzYhZ8#qLq89MV5OHFBnTB!5JYg4Ux<5|=- z^G1g}Ej@=ZZ;;B{Li$|!yONxMF=FCLAF~)ifVHq(IjtSQy8kzT6jj>Hq_fq0K;l1cN3{jZuVWs))i&^xT&svAAA&LxB_+2pNuwOD`)#F`@b)ev{MoV3unmKp&JdA z@|n=ezJZ&gy~4tjjD@KVc|#lB=lUB+_&HtNZ5T>)7vi1Aun5o*fR+Lr7zH#m@m*qe z4?1?B+r0>ocI@^GVIjjZbPj_-K8J;=9`7~iSXmYgXO4V@S~j%(!}D&EzlAJHK~#xpUAOBwI6jm&X2!b5SJgH!J}w?ysFq_ zFEE{-47V42D23y^LM?L^njeYt*xOk&t|iO0h?xps^$>_#XKb z@x4>H)YM37ia+NwgU(_Gyk}xGgL+k!t?U_`MO7j^hlQvT7|u;((Q^wP9*(*MncNR1 z;y$<^a6$q-d%i?1v432v9Hg^JY((1jXx}x1TM4mTbkJ}|Oar~RIfPnkHg>!scnT+6 zvalfKtkRBa3AG%g+PCd!J-8+07_$t3&1@xNM~W7g`4&W^IpM5l{tV@p{-lW{+3 zY>+e4m;NGomh z#M0ey)F}q~0@MvuFvPvuY4;bXTZ(9saio&o&eE07JE%G5$w39j;-*+RG8)&UHjH=z z>&Eq>3Bi_VJzBkDKv$ykK=lpMYWBNptPwEv1OR;r))?^Sj&qgpr~u;_%yNc)UJCcy zZAgS)HW9!4QX@wMGh&3osFWq~5~+#cm}QLr`?3xECdM(xp+f-Xo(g7X1tYh_C4Try zu?#r;ax`njF6S{6ts{tCu4R~`Z5BGr$DytT)-k{zkGF359n|e8!<@roy5bzB1C0q> zLp+0F^~bP69P{KZiQg#O1jd|4P%3V@yd5adI{_$HaF($@4wO(rMv#ZT7sC^>BBaL$BzJ0RWHtT5`zsuV;D&GF*IF3we-^ojfQz&FSiEcnwi-j@&8^l}d zqwKkCVUjKct&!J@26QHV2_1Y1U-sE9`tl^;2jqsFwj%R{r%HVMPe_GoT1XgzGtjn`Wa!DDv`!$&FqB7wui;czZGB3* zT=Zz(MzKDWzmB!;?n%^*V*Er$o5G{TaZO}vq9N0O+rEIjFsyukz}X+PA8mbMY@9`) z5_Uj@xkNryyntDMjc30jcULZ~7~TGi$Q}|{ zFz)ueGYJ7|*}#dM9CFM5;VRNx0~;}iNkdfB{b4jn7ZD=z?F8V9@)-hO@6q!}UsnTF zP#*eMse*+@`V8ulTG??Az2hv2RMj}c8^cdI8XZV`S%>_TubvrAF%~ujctQlT8^%-+ zjOp>xU8eZ2{vml2W=~b_$1Y^>C7B@(KMG<jDz8S$IMUh{inWSI^csWeb^3FiQe-7{!=A@IM77$zuq@vlh}H-HPtte zA_oPiTD~FtR6T;re5j%a8rQ??_LrR_n>00K`-krZ5T<6{Kv-kK}j(cR7s7w6qbmp1jt+c}j*2>?3 zG7lV*M3o{_nmfe@S6PpwHl%;Wot@88othL56Wy3-m}t6!ForXx>a<8*AY>1{YPo5@ zKQc5w!}t5&;RK`q$r50dqk8JaH=_WgdDrcqoaRG@T@~sg6b0-> znMYle%A-D4Q2sMQ`o{Rq7- zkj_Bu%dj47J?fq?P?ss74EM=P$modHq84xfbqfKdtncI60cym51Jv4n5>q6LLA%o# zqG&@G_Oqm1k!)j3y>g|Qc_3ecmw<6zM5RD>p0tMDPcsR&aM>t>5~B?OfT)brF+>=#oV^;@(>{>+ zyNw?NhG=q*Oa!zFnhxUUEjW>ZRT&c|y*;BDnyAe?pgB4w#B2W;X^o$^QP+&04mrJt z8$dB@*GI>}iR;?|;2HoBpR4M{`Sd(?Bx_M$lWHKSCQ&f)wiPeF#$rt^rWY z9m>_Df?`50VO|-4=1+`Qo=7)D0DA4my+%n&9=Uic6C=vvE?*j9J)$R2*UT&(@`86| zs2C#@ezF3|9no5pv{Zl%CBW7&VCn4uX8&&h`$HdzF5Kh^+WY;KrJU3=(#?K8M-Etu z&&~88L*}t}l+6V?Nk8kt9OJE4+S%ZH5y~oatb^>(aqKkEM_!Q%TIaCUQ;qUksEnGQ zdIsr(^D_-K>>(ccX_t{|#uqV!y)V*8*#x^#+EYmC?}l^5xo9f9;+N3m0*6=2TJ@-9 z#j|gqE`c2q;O*E??_sm#1t&=y;#J(K6~~*2mQ3EvsHA&WaZ3k!%a%x`V_cU%3aySr zFnD?5Mv2LYxL|pD7dpW&Q1k*D8E>BrvmWSP)Fo&`15I=ze>DS0d<@^}neHld7{iw} zf0+ceE8osKr>8r871gVt*^eX-4t%J~%fvXYiqkfgb5h(Xvff&*7rI;hSE$6P;ANTs zz}`*WUOU85nu%pnPZlsGcg_%Z3xLAi=fn&YsFRMELWJ3`M=5^d-R@!s+6(zLs5f(V z!PrN{;X}f^J=FGG-P<5fvHy0KJS5VcykYDwHu+ehNKFA<*b4m1p)*Z4$uyCfSyW3_ zO!E=oMoTXmEzv>p=v7FyWHR7I!So=vbhFVCT~$}>T#I7R%b)|bG+2{2?uK#=#&RO{ zGaAB-z~PY?gr~L=<+`_eNnA-|5khqu#b`dzlNvVHF$s=COAAZ{4?!k;Jk)v;yo0(Y zHVLkb1n1QalHGeof-{G}QF`yBcEI_~34`-u&k%NGXydOLoL-UO?1KWPgYzaf-d3{k zWz;pW(;>a6zX1;S)gbcP>1(W|8rvX#jpuyR3IrA|&bmzV)BP5S-kqhTO8mr#%o&O& z>~R*2)56ZehxVfh+lwHj^IhV+#W>TGOrf|+*%4DQ-#e)9e%K=(#LMwSHwdx5ci9Tl zetAG#WzUmRvV4ZEs1UAjn6p+c3NvS6Mmc6A+2|Q9G`}5zyddiP;wud3uQ!LVEf^gh zzP9L+s9@G2CwG>P&gR$@N=OqEWANwDUm&^;caJyFhw+35s?s%MU2PtSne7tK!+N0T zgY%-fdD@JW{DM5~J27E8tV6|VS_1-lQuD+R^u@7z(ncWm3<1kW?q6HvRjni}df}JmAk8?BwY#s|j(AO&)EL z;c{|*h|AjP^Be||M`8v}9r9pvs`v%Ek_oQU6<7sWYYEOC>UUQ-57kN8RI_mu2#uSM z{=*Q9<*jU64dNMW7M_y+JD-f1L8 z47Nu3xugS*O~c7=n8Np4ji|fvilfy8u7UmLx1DYgHA+Co8Fn1)t1E zbz`pp6QR6?0IOX>8RGYKm6KvvHF6o2liodSug|$>80Gxq8;pFOIxX9!WnSl#w`L(> z%Wnqn(2g;_cLX~Xh~AfiPo)B+9S%xO67S^uM{W0QqXvD&P2x6bio_)@d$jifD$UD` z4;*FxkGb!UlY098pWS|KKbS2^Q3^>Eq9nE`wY6w7(JvH9SSv)kDx|I5&5qYjKM*0_ z>utT|cPQ4XtkAAXh2E4O6{4FKc}qX2=KDP7+}F(O^_rR2%ub&_zVG+LHuIWu@9W%i z&OP_sbIv_?D2yp%KB?E>C1Z_C#%8eP?=3nH&)+9fhVNf0ye~b)I9hPXuiw3DS3OiT z9U8o=vmj!u#+490HSh*ZN|ppHC#m35UYo-Gsd+8wN4i8{;9W?gUSEG_0DZ%6D`lW? z*JmT|%t2(>O{+);DBbm0?#peI2HfUiOl?Fro@jfJ+hKtsW|F9>^}&9n8EF=4bVy`gy|*+-I=u9}y?A zU~q2Ua(_UCUDa6e%fR$O3mwU3@dS{vUE5K9n$7tIbAO%tL;d&c4UfYWPmq{KJ_~y z3UW~#$lic%Dq&g|uJ5bISGb&bgqv4FwNCOTYkf>o-(mkv5MH_CtS0 zU^KC_r>NJo$!@JYj`=z ziJ^ybO!D_Mj1B@UBp8=TUJ7tRmfi@qiRJIct>Yzo;-7jOjW-sY~83H=m5>R5e9c` zoWV6XlEK~Sk-22NQlif*w3&5?GK%GecS+G9)y{{N+ zZl%)Vyly{PQ^1Z2q-lY}%?VO4O&f~;)gbi)WQD1>PeO~344a{k#TuwaI5m%eT;z8K zz-{td_B4|*GW3G;+`8)?^!^&vGwS=hX`ub`{^oJsp91itseIdEp)z}`$-D65LPnnK z0GnijS_{bV1AWs4`KcY;>2fQ;lg8_dLnimNY+f#SHHdLG3cR$H^MdWot;7-$cEfl=c;^4Lav?IW4oW?7Z zll3)@$Y7LY_B$uS9K49=r3G$cJ9k!$b>LMekJ9SD&557|F4D)TesAlJz*aKm+!f<8 z0kN49I(e}XFc3!(N803%_+N$>So|-;LL1}V_I!oSbWayb8VvFoBZplZ9w|Fp&3^h#fjI=k50-&xM2%bbEr1|uO&1!tf+ME(~CR;^@z($Gg*K zIlz;i(x=G)q$DOMLBkWfMm_OZ%!xfjW2Yz3*>SLI@4${GkauQBEU?zVl6PhrJ#ic? z-GeBjK3JM22t|e+g_iGX?m43HE&56<}JRDQq1~~%|iYl zDUwA#Rq+T5c*Ke-69MbjEo8Zc*NLp-+zHkT;8ww*fSPya%RtCB+Sqj-p4r2c+c`zX zFh{;(M#f$`mb7xmsho^F_oZWofJ9q5*8XWO9Wni@TV{lo5cpRoVseI-5u1P2&xPfU ztI`624e--c7Y~E7CH3u}Po?!&6<>?LDb>XV_|aLxzla)$vPThrf{^BdwTBJ_}~U@CjW4vr+iO9p2ZB zoiLMqtYXLqYFwUfRGa6CF7huY3R5xiBC1Jc3_|T8TCVrga*YQC%ZcKiyv9O$&#n%Y zbOuo9t46oPR#(0gl4>x%2PY4}4W>Tj!q$lxCC}X-Qo;DI5kcuSbT&fs}S}h zWAQwvivYRz7;d!763YjaH9sP5Rd@?;ddu=H|(vTGlsKjx2X}~ zG()Ay?aa!sb5XnB+z8WNdb(eFB2M>jM*gaa&}`{okalf~WUD)l-WFUz7CBID{65$` z-N-H~{={3P@XV<00v9!E)Hi5GF6xqWX$vp4xJOZVa^h*Xk)xWf!a(do%^AlJ(n1gJw(bJ1tfT($UwUZA;l;}dJH{-n9QTH_lNeI&$1c|d}LG8gG^ z%%Cip&6wOUn|fcJVrncjP7iCXbgiWbA@v{frt&;Dbsa8AuiBNmIHjlx$|LV0s4&#K z&Cwd9xpu?L;Q9XN;TzRmWFJB)Xm9(K=#w?duJeb&ToYyFQ(Xq>PFh6mq^rG?qtJ;{ zvor<>jU{2_cmftBNX3*|Q!2cAE6v{wU@|UukDi9HpRHpm;RchKWKfQ|C1S z0V!Zv4$O{0(2|auVil|q|9*LlSmi||)ywJT7*f&3dNgjSu6~HE*kf%fSNmCyBHNR! z*m4SFuoX+O4D}b8SfKrW(Y9aGyd@1apF%%4w(RZCpRj>kqahc|F`-uolA|~PrV&X5 z5%BZ{@K0&@N3Xt(Ja_j4p0e}E_OKyXSd}hvr*1WIkz#0ir<|t4*}w?@4I;_34yItbiRXw**9E2rp@`cltG7j11_U>=RI zGzN9fZ|qK;(*RCn!JLx-t3~J{wDfk-(og;@B9~AUbFs9!S+|)_83R#twnS1%5xPXr z$4g(w>%Mr^ujbqbUII7?g;xPyFgytw1l7f+DWEQ>N7svql_1xPRe*Q;dNDRs%p1lM ziAOJ$0Pbx+X>uWg94!_dKY~0#IyzZ*#QU`B%pzI$N@T>e`sfkUj>2{GR$Xjv+ti>` z8nNu?WW;n;qd8*QQtA=cW!qX^Y;IW9juh%&_OjA{2?W~gpSIb$|HuII|9<41y$&$X z?uOgD{P+{{5Xao_Z=Y%1?^FHy==*&XxtK(E-Y@M4EO3s!FO}QXSubA1v-N&n=e+dk zftX)b9sxp!#>q{Q@IVz&M)cn za}b5{3r3QmjyzzeRH%7)yHQMNK})1UtF!(2Dn@d1I6uf}SlDMg;e;D@{l%SW467@A zf*Ady7ttoc^Ty(vab>zs-HPo1@=l7X^3$bz*`MVv*)`1I9&mpYUxSKu;@93OI4hl9 zsuM6dH_kU-tqJcf{)-HZp1c${$>sv}|W6jx2y3`rJjWQ$| zsDBH`lvUMvXZE5ej;%sRJd>>gnm3J(OEuYFz-9EsEXj+4TV1)m0N^%UXdjS}?rQLz zLr$mN$MY`Y499sIBTb!FaWHC_G)9xYH6>8boL%=aMiIw2o=X!NvAugaG?eD^3Q|d| zoWibnZ{}_|n4xRP>M_=>Djq-@EHE_X=DDUST8(;i0eY-18)RytqiN>eChzw~=Ttkv zA~2ttN_Hjh`uTg1olfdNBf)gBNY>Yfh?~3ySCaA^r^6#o ze(=`bnPGJ)rOcYxfdaLSW5v_Yb zakM*%+Yhj8-x=!fXc%ZN(xF#Vx7j{Vx@;?5vL}EIl1KAd5bbU%%=W?9%+horwF+f) z<^lKV+YaDhP2$=oMer&8(j-}`F`qOu4W*UA8u*f(mHU|vw+K)e>8*K;bZh4vf1J#? zFw#@@yCaum_mQ&tV+Pq-4NqP_e#Xcs)b-JU-?QT8%f*dH? z?$-B6ysOfK$&F1TPwN0Q1IC$?j%UUOa4Ln4cbt!Dji;EQx|aUV?e#tChLf;Qmi(zh z_k=dXg|)Hsr~G5eLMc>85Aqg$jBQGwumICZ&J)%6Gt1S^z3%MTOr{pFF}NKSHd1d> z6Kj4IMDb04nV!+d;&eF+ut=+-(-Prq6}o+LE~Tq18j1>ul%R6)S%`IP!gYaFW)xnH z?n~hhBfE@porqp47Y9}F!CB0xT%9C%JBt}Lk;i5Uw_Sf>D4|qdDOk4y=2PhWJN@or z%D)F#!h^<=P*tN03=<3F8DE$)%&n@C>-qOTz(@47?Q`x4B*Hw!#7QporCd6DL^_lF z6=O_U_`tVl^F^q*h|uqF7<5Q#LEcyvt0I5@vFh19?v$E$*zI@hF((p0^uitQea7=> zWtz6l_4!5|+%9j8HP@%AvCAhX66S}TZ`{o17jf4li>;~;RHW=(_4YOT$)&A%$|FGwSYxj z)yY1ynEtZ-!jOu%s<1YEhovn!#yH@gRsg3q9YvaymWBH)BW)r?G@~3s`Y3~}aEKbG zLXsi=!yP;i9aZ$jCGZ$obx|S<56JV%0`L$j~ zJFf8);cUTyiC367c<35Hqbh!)9SXDT|a z*GPH^DYl9*fkYW?WFru)vz)k!?Z2$}l#zn{Oa9C56WA9VaV|hReYPK9qE+q}$^7_t zcgb7|aE&L^id`~^BGz6IGqOwg_-ba6KYyD)bGtFrXIwhWpQ-%wr$BZxKFjOVWi@7O zb_pL>9k*{QBGV;wR+WB6n-PKfD^M34E!0Y=LnE_@YENQAYZaym2{sgL_5<! z*$3IIYP6OahC#BX;cd=H8qfM%kI#}DpiXPXo+G$R6Up_`JHi*&aPQfmtYw;~s>{^~9lPXiotRE|5=Nhq2KdK#tTTNx#XKT1%#K%-PL zmzC)8aZqZKG)j|K3qRSk8pT zp3*;kB2zkhn=1Sg9Yh-7GXbFu@HE`-)XEZSa$i4BElO!U~2|xotnB=~GB{CFs*xxHf*5JAH-$+^S&e6araMBaDl^Xl=%Em1v6=4+!C+ z27N4x7J^%p_UTct_o%xT0C_MWQb~Lk-^}6@HH0*tj7hQ>r0f8lSEew58Z6J<7Om3( zLa#vc#NsD<(OOW=R6j+WCoNOCtC(7P#o}rURBIu#BwT1Ay8u-ddUKV9Oj)yD z+ik8{`2}Wig=s}pS)n=Hom5t#+TaOA3)h!evQ`2=TB0*Hc#E#Zur(d-8PAgAsOlx^ z@C-5{L4-vzv6?D(BK-3QON*om*J)Ped>oopNYB9``d>_^@6~dQE1mm)=z7gQSIE`>hC<=PC#HBv} z(4566#}&h3ga_VYF-CacKN7cLiS$H4Lb!}ma)?QhT0vEw1=Wb_$zi0BW^0m*+i}*b zMGPM~Q3 zr#(T)>`RDezrD}cP#ufXwdf$y>@xrnHv3L%7Bc(9f4Vtr+|8)ngY_kpOXN6$dI0s{ z{h14KhemZ~8Q`E?%Z*W;ap3Y#qn@eWTVdQqnRwxD+oi|>K0Z=i?153}OoFeEXIR>( zN4SCs0{xRs6-t4pF9x@jj5mUj{4e@sn8%6^(zYc)-I*!y^jT8id*c(mK|&{FG+YI* zDP9XNFkEKmoI-2G0wc3rFet3*3R$gJxdD34pIN3p+XgSFzSa9z9jo zp!mIzMt%7W-kRAGebuKEC`G6}iH!18*cA8xnvg@_WSlGkKvZ4(C0SBHx$8XMV!g8! zU#D$E>Pl5Ge*;X@D)N78n1iyuJwh-p>sukf86R5T>NLFF%XoO;8|QVQMj7(L6-v^Y zBN=sVG|ej3Q8SHYfsEwWE$&!;2kVK@hvzurIbH`c7GjLamK2K)aJL|~aS){U0Bex^f$!$RE;~m%VNTb?;CzIg^ zo_S=X^=PEimVsxBaE}Ujwg@~syhC7=@NDaMBIOJ1GP_Ab>9p^60p-To7XeNPl0esu zv#s6}ElX)hTv%l`GR)AGy`q!eKwhG;(lU7pVda#`6E%#M$>6u{nEwu&EIG_aS2E_P zHAcKencFD!ZRef3C3sbCim)$@*mpe?5xuXDWcvMGJ->P0=HhG@I*Dr9o=8R}WFTE+ zAP6m)fJ*8q`WT7 z4$Hac*w)aaW~(~Ynz&B4;^iu`&P0L>Saq?vbg5bY-5OfeB*8chYnho~Oy_-~BpBoH;XU%dq-|*L!PycYk0MdZuca>mS11i}`6K#Ut^cgfq`+ zJI9*LTU3SoUt`b!s<-#x0bDo|>{z@fYaGsr5wxe`qZzmq<%;gP*e#UcT^{cMcoVpO zGcqsPN95sD%h7-~^&6)iK*w>NV0H7!Vc!w&BU=YIz&%`4Re>hcy+z$HaVUx881KxX zcz@xvQXHlvUkx3mqQV>#{w5rxF54+lKE3yFRzV&|d;;1RWk;s^<+VFjJN}#+*?N^FJq;b zwq`HU<;6R5&mkx#i_CauZlWi4Za>%pz3qG-KLD{$-qeVdvbg-w6vAPzLhhaUIX$%Z zF>3{$?fir~ACk`Mh6JaDcjo`_+^lgjbVP28oNw*&@ z@NDOFbZKQ$bMMSI@!Z0s<~j8rwyo3)PH`}a1VmkO!VxnmUG+g4DVSu>!qrUrwlPe!V|}NiC4i zV`I{8`%L;1*?6{@)Pk7wbekh)(lKfQ&f0)UEp59{&7{GbqcG`wdg#KW}*qC%I zF=_vCN6e&F>d#A=N%jO?&7>E;io&Fa>7fgg?#Ay4GwJlb%%q=QIwB_h_!sx`FSD0e zOj^orpYR6KJM)PsZl7X2+c_6qTA2ik^K(46FsWtEXgiZ$go%*bB&Ri=VmpF0sWma_ zDun98OC+9XBeM<`VjDFii<#s&i9Wl4UXc1_6ej(Oji(!vKE>||GpT3~leh1SN5rIy zq?f;OOEc$~#$r->#C~88Y=7rW+JKW56{B3nfJdw*)xt% zRl8wLzDu28>)SE7p{UARJP)Lkrk&*h(NZ3Cr3d+w#9BKA=G|Y{iw@8n8 zd#|WK2S_7d5(4VM?5X5Iw3NerI5(JI2KV7yxDVf_hb~k4U-&&?X&Lc9mX;PT zXg*^n5M%#o**QkUF4Lu#wf~V`?2(b(-9J@#;TNjP*~}w3wCvlc=D%53;e2Y^+sHNl z>wn(`)o%K;i~jsff4-+b-_oD2=+Ec)BfO>))|EvxeFJ0RY)}=)O8R;+ebX82r%|u} zLKD>Rybr#TwdarXJk@)gr|(7MJU?AL&ht>eah|jLkMnFCfZr_tlXy*j*nd-4J2C9M zvDXXzgPbPt(4FUf$Kn>>B66gvK}{%++>%C)fK7KfljBHN71glgGw>A-x^j#O zY_6$BSffflFT-bNx_E^K*O8AW2*g?fkuOy(K}T}{SeYjsO`=Y9oZ}YytbMfCQfn8P zx*UDLI1pXHUOM;^EPf5AFM$#%SCq3fK+eGsNMsDx2AqTz*G6n7;hoZ5!L&Kz=3Ec==F8qhQ?7{~!P*@)Le$=8%c-}ekfP@vJH-I$X3d#De z0%@Es{0sm|@38$`%rT%m_?ScD@sPoI*$fE!%`+Y0HO=++Te5ss{02fBJ5;hFK;NA7fe2C#%) z-Ras?@ZsA_=aP^V_GOeDp%6jod_qZk(@%(lQd7X<#y1ifN&B{F)7a#>|5?$eb@QeV z)UB*qSbM2|DKpiuMcLuw|B1dE*&tHi^}m?u7ggWwLlB+xT`%G4rj;P4k~y~)pPl-y zMuTg8_acEr)p!2_psDW)sZ*`*CevrF?{1^kE>rVb^Z^m7lfGN`um4khH(k0*Qr|t< z#HsHpkW7goMb&o`)_^ox-}ycOX`K4*asWitcjr<|t?ybAU9} zN6~j<;rFoUyBmJ4qrThs^#7f{ds+I@`mR&&*!u44Pe9kUGBZ}Z?@rg(0Gk|LPY`^< z`tA`N2tij-_1z#sN$a~VaZow|uyxmWr3;hMcO!JGDEjX2r`+_N=Rr$+t`ufLJQJ^Y zG8rr-_+n{{tG~;&>!JobL1$$9Wa;ra;nb& zH>*)&09%9(89}ULO|rn@T|h?8u-*#u)ITxxFHG$u_8tqMgsc@GCc2)*AwnXyqP#z z`obW3-FO=uK+!TsM%JTo$P^Ea1KG}A>p0R>x{L!kw+W8pKaZQze&pl0M*4!7kpcbR z^H{zdNhxBj`agt->=yaD{atqv83WklL}c}2A|gY^>RXqg?JgFq97!pH)t_XO={4o6 z3U{ok0gJniwGDlaBdmxz0XFyTJq;xQ4Z%52kkWTPWB!MIiY~2!^LZ$?G*4|tKZl>h zo1x8Uv7bkT*OS89!QsWkn(RR*3l`(Bm^&n(?V4e?Z$@9FCr(oLq znDsmY;11uH$6IuQc*Q~qBkS;#;<%|OdSvmAAxlU9$4Zs#w?+*9pfx1keKlbDfY zuJeqP<33d$OvCjO>#yR(j)!KM0;*ktsT^QbtS3JTKS=j;=|gy}Hm~5GDs`p4O0;lW)m{QPR2DXD@MQ3LOc)Gt z4r#Z0m>Cl?7|M?9(A2tl+#O%sgSx6~)Ic1QLFeRfve{y~IKV!#reNu{e3ZQ!o8EFC zVGY1Fs^LLGnOO!ITLqpgxEVuyI68&vX>nY4p+B?C7&y#7ZGoQ?G;nIFJ5EjQ#zCGB z4yTS#Q(#8~^9zjq`lRo)1tSAJ-tp(-oN$@i^gNBVnLmG_u@6Ym%;mF4V=-9hm%?ed zZx%W+V29Fll>BIp14l%=i+pgykz%qqH-htEqBO|;;st}GCa zJgm10KxZtMPf|M|Jy>{nU-(try}U`k1cSN_;NX>%9H`TIyiI}dtjEE(HOeP=*^Mw@ zl%_E%5sY@e9vXa9j5fnYOAe!ff{`ZE2ab&-I-ZxuUn|~&I51L`T$YG zxnaBJACF&11nbY|B{}mIcM6{ea8TGwT_scmV#7YxhUI=95HW{UdW^-vO{LG0p01Ie z$mT#Pz9AhJ`CVjo7u}Hs@3_Os2k4V$%m)uED_8?x;B4N@G-^-*w zU9dkA(l?c!wmv9y2x*a#NJT}zjsz;PP@3w|>0`6CFS?KJTiAkxB9D%jqc|)4!gL<%N)bX-qju9g$X_5|@48!Y$PanS1%fgbEoi?qhJLtmO@PGzln zPZqrFH+ew0d<~7lRv!qY*YA7&<4&NP zlg8+aLMwrW2s-vFIe<<>jm|_N(2nQb(fJA{S#ks#An2gxD;CT@yhSHrS7vU>O7fax z8%B58Ho#rB`Ssr*56>q>pLmOZg^Nb+by1GFt`>r*fMX3_NRNYmehY*hSq zVl++Ph73y3-Y0|oyPQ1Ks3QwO{SBX;yMKfC{d^hhRx-2DGF^`2RuMD~0XvrJcQusm z^GWJo2SH}jXF3jrcg>X6Q34`UbO$=NaWw$l91NEN9Aj3!NDd~-%PkQPoJwZNbrTD{JycOH3F6%MB3lGqJ!`{O8v5Qi(+B19G+u3Wb z8NJBf1Di^P!EK&1nW{^9G&bZKt8{4nT(45iR6eaFrQuG{Ze+$V;S4 zu1^z~U3aK#c}K_S?+B7<7p2J34tZ|Aqoyp%J3iDfi$sjd0mJt<;q?m$-X-o;f~KI- z$vlA*v8hg}9?`C?;<=v&q`1E(oAq@=eR2#i%{UbXLGEN4<&ROD#=`5Y;wfs40*~!`RTHUft=-m5X z?zHU+a3Bz#uJOvvUoFTyb-ze^$oM)&@Hx$i&l<9}FcQ6zzw(SbJ_`X({;7m&Ie+>O z^UEu^1hN;XS4+^`kxozxm;B53nJ#(L5wHJ^Sr7H*he9rT+!tI1ts3^x+rmNz{Cu4s zs-mJKs-H{0(}eXe9S>ifI>-k+IM`yNOkhp{De70r)FM7V#OC|#r}5QMC;1@_qTT7Y z5s1rVxfbA7XLFrgVjtftTn*iG(nrvzAW<~*ee#~lPr1`;0>G1|*OybQNDURFB8tV4{i~7EKG_{lx+C=!EV87L>L*AALo)a- zpX}hWZcbv|L8c#wr9HD(#KG(0Bf;y%$yQ=@6r^zUz&zQg={ zPb-3vmvae6{+%liE3El)%`Ful9)@L6nvDqbUg7679slyNv{?3rPt?DBG(J*2M_yJz zRGcICWGv0WQ*Y5(bl9(eBMkTuvc%}CygTCibd_r&W(w-@Y9@ghgr zT%JJ2C}^x5$p`1VGrkt~6}=NpbXYBpzi;k-wpp&7#NAuqXgN*k3doa zWXL(|T<#$=3}T||T>h5;qXw?mXu$E>{sEw?{R40eUoP8DWUtd#eA-R#I%0X+E1u{N zCd$MQsqPDK00$_wu&GGR++WFN3hVB554(?U1;FdX+;M`_nSztHo)+P740>^dDTINe zHA1CA?mlr4ITdII2eB2pj0DNS%9 z$B<~tVk%FdX_j{s)65Y?FfHLu8bcjLXcPy-eXz6a7$)if9)E|>Eo9t%i&Bf|Dk6&T zD4BAgnT{gl&vmESO-W<)`R$C6CR4Vc6A?mapwZD{_46EebiRabl^lWk3p(LDlHO~| z1d0eDOu{QHLNzQ7Mgx+@=#2>uQ9oTUiije7Plg*trO@JpyqxOQ4W*MEA zK|c{8gex^VI;hb-4mzhKjn3TL90W=ej3S~4Rb;P)mF2SmcLL1=cya_foNJZosmRep zKlWqF*r%MM(a}MT7IDx?O&Xm$ZRq@hL`$I4&bFKYoqs;=kX~3r-}f>ZqKSrBQF{`*kA&wU_ImbJKFt7_JB=EBdtF z%B@xc)R<4U#0va39bI=YRvDM2Q=09`-kG;k{g8W+V!9G3rl~`HxhLmr03~n?eImf= zBA7S6`!0y2RSKKnE83r=t^$Y&uzRX0on3e{)DaA1B=I>jH1siygktD7OJ8B-z6A$OKskp? zU#y0Q$x?*2SS0gdlHYwk+z4=VWwDzRU6VK59G(y5q4{855-EHvNBxV>S=2is9XT`~ zoXl3=ea1kiCNLk~1gO~7K)aLCFTKm|!o%IXGch|oW+cZqG`Cw$x5q8hV555JYs)mC z{oZM6Bv1=;h6GTif!lT2lJ?RW(}1q`p$kgPX>j0Oo(88SmRqBzfpL>5Z=GU_Nt~Ub zo(BCwJ)O$aU^|TmhjoMza)nXC(_qhd6RnPXwM6V`V7Xl)+S&1!LmkO})ya814J^|< zb}GsB(pPvIe3i=6;B?!Ppm!JsS$>!X`tIZjv)re_Xn-d-4L-RsG!4XM)laZGBN|qJ zk+}t|_Q>S?ve+G~RRB*8tL_@B&~EJI6sA>|XjomZvC^KjzHzYXmNZsRj}uyj%DW#c zSapqt)hA?mh0UIqiri`SB)}SA0?bxdVMz!$3whMS-5bfulflyCyF8 z>GvAWX7t7%Ye-1WXLK<_!JiqmG-pDwpWW8jk3RCi2ZQp{s@a=FvlYj2%+jx8DAKJ< zzuto-9;IK$&mX6c^-z`8<#|}%i>l~g@p_-P=ruG~)j`r{2e~U-TDPnWQ^-;SK_@Pl zK#3Ap7vifUXfzxkmE)l}@%shzyGzLBbii`G;51BP@5}{M^vrVh(>wEidg6%I=ir%+ z*0&LCW5tM8lOY$z_T`z8*uDUe$_>DFXEul-B%u?CaMmotAr_D#@+5|k;&yxIL!xwk z8FgMko$o&E==^%=94xZ?f3@mKw|D->j7ZFXHPCte1?c<{XXmNXIaaf%oxg>a7P34V zrSrMec`aey)7km+I4uRTz#AI1^AYyW&yUi1cj~+cVZQm0gDhFnc|>eOljXoeHq5^+ zh$PFG0I6(Co!{^5d>0N^0rQ9eh3*M9uny zh-8*?!V}!dK-&QN(R!YakIqF{_*iM0&=Gz~c(5Fqj!09u5Tt>PyKXeA^MYyVFf_{W z4*U};9_%feg$G9Vh6*4sopvjYy)(by)E3-mkXeNi(m2GI+c>8RLkMkGHmOwDceyFF z>fuNr9}Sc-v_Ws``5IJqO80o1XD$kDRVpF|BIVthp+Q9k{_JW+#|3rC>q)C%KGsyw zk3&&P$6ri(RQ36oyxjD0QT@DY>CEZ2f8-~k#(B<@rx64>{U0XC@@uhBa5p%!s;hEW zOG$2BkQjDbo-JMWR7y6T_oYdRga{OoEovqRS>qj@5d zRshwB6dP;J-+F;rXz=;8t(U7?Vb)i2INAXO@yEt1bIj8G`i=H7;kY=fHrg z^gO|<_@w*X34SABA(R+AhJ~tBbt=gJ=_scBP`dAhj-&5=6A0-7Xtb_V>5FrLD`s=l z(icCIO@}pJALFaO7hjzvDo|*vMlIKXgK_c}U!NgB$7R}20;F;+t3&kw{q7=VcK{YR zN!f}74)IfQv+qapST(JVxE{g7(w!#UQG1!8Q1ek4x&o$HWiMgqzo)v7?P0)L8Omw_ zdwR=6ioL};ID!X>f)9nYt&O!Pm)R9>t?nmB!TZTk@D#}VN;)IFhA~PY?Wp>42^mpAStS_fe0+3T*-b(;lUtUK5 zF8m$>SW!-O)tB%2gdib(+5Pv}`f>-1K{I`8&E4)Oy$4u9sjm96v!JB)<#WHq)|Vp* zpN%3m8FBFG0@%9i%Y|1kdFrSyZ`Q4%=*uSfDYm}sP-^ihr-x zqCUy)FwM;mYh$a=$z&FW)#s>*`07-jfeEmLVPamcVYLSBO0W(M+8H2~`$b%u(eExZ z>L9GPkOt*JBZOobw9|J^7U!MWJX}pK)}YP{>@@Wfvh6xZcUpr!waZn54hFuJ1B9pD z?sOkp2f$i+S|<(q&|py*rUp&R>4mpOYS8!IAq_g0EY5B}vIbq62TtJ;UTqqk_xutJ zis71;bAQxs^0=ES>SpH;(hbK+b;&Z?ub>Z2qshO-)?Ho5vmpXK^kn#S}7sT)L78Ly<5U={}N8Q@b@A41LVu3P{{LlWuTSe2c*uqX=`Y#a;acn9`{EcO28=5Hws28 z0M=(vh_AxWG2h(c8UHL1$5&X}E7sz@88--yP!C}RG;sB4(3kcu-Z$OwrFU6fcmOwQ z(M1Tl+K~tMX&o%P-E*Z6^~;t~CALT2BfW}hh{9!@@qKmybAWKJBN0~&WFn40CxZug zJoN9Qmw}H12lxWn+f~-pyiU+cZ4BRT{4XP4<=w0AUo|d*V{0TGF+O)G)r2E1;z@Aw z04f>vT1JppPdy0{5VsT?kMNXE0Opv8-2|J0>DiwAw2|n!^(CMKvK;eO{#+nX{COT+ zuC>NWkm>t_GY)v*Bxd0&qtv8U?~?FQPEsnxG){YrGbmE@sY{@iP+q_wL2U$jfb2l*)~lls zC(?O-SHj<}Kc0rWljP$FWgsS^S5*liNr5O^DXKwa)IpW3AE6euBB8C*p}58UBLzm{ z$;0sr&c;uLH$d8codmjrEW*~T2Fan zAj%q#0$6dCx9ARVE0oZ(AJn9i7xW{@1}>qN@p^T`%MiqRIUSbgLZKNo#5~om!i>wf z<<5+d?!MW(b&5XPT z;CP+XQ>>GqSNCP|(BTQz^abj=tHdNV@(Z|pQwJ>P(C~x0LX}~ZbFhsu_|y*sA~$8E z5ASWL-aQ8)IrA~;ghs*1o#9`85=DfK6f!Nqa6rrA) zMMfbud>@I8c*{6^ou+VzePb|xI}WjL#71wNz(gE?zf8AXC~doNTgL(TP8!CSeH(=( z8WD_(rM~YrCQBOWl=-ynpzRxSvPRnkCt^MO@DQ(OV=p$P5S51$IhJlnyUw9@4U;{V z-cNeka*>GvN+YVsr9cNDEwd?NEc>wbUTwxNGY>td#ojyd!#Gu2+hPBZll zGW@_)y%%|StUJ+X0vuw)*QAGtj@fD_dhCU7XCEGPytU#4yv7(_0K{Ndz(6Un+ZE|{ zyJB)TSQK-lXPq{S)y|Sj7aO0ebt|hKBFoC*-j-#>8f?U8u_uR5%?aC+y<^%QnQ3Bj zOh#6bu^Ur1WF4+oH-5vManyp9teWF)70!^t!gSbw9lkm&^gTHOvUVAJD*sC$E;Ht1 zfP;A!r4(OV_W~I>{BD{#(G_;0hR@CnSN`i+pbJY{>V2xlGSn#fWW&*=*oz@934adV z6I$#GYlnsSv)k^h+w31xP6ef>HN(wQW$dB*^c7yJ^YN`J#H=;y?dR}#6U-=B_@rc0 zRQYCRpC!70Ur_=z;4i?Ms)pa9+4CTCu;&j!jNiX0gbR$#??&C8Pd&KUj;v9L1vBixTTWy>y-5Hr>`Ub7)Oujyg zF3&Rh`iiUanm`gp`qbTr@HVS*(UG~bULv#-nG<=<4jZS|{i&lE^#SZp1OFoVs@zC& zwMK2Z28?oOhOftqM7Xf~9Sx${y?}agVRwlJ*Cl*zW$@VSz8c_U!(=WahQqR$@@3da zwx&~J0B7p1H;MQj9jEKVu)Q=RS(xgy^U67&#R+&3Qa|$14cT%zkXk?%9_CbyAT{-B zB2Vn`-g+cRebG}R#U(R_2vX#^|Bkbd)AL7D==sExl)ogqj^=m?GUH`g)Jrd7Xe zm^*H-0G#&x7^Vae6LMm;6QrVv;Rol~#8B3^2D2^pSlIs>A%9~;{swJ`A%81q@x!)e zFBwQsF046f)K}OhyO~$j8oZbAYY~Av%&T$@;v%XuG>Fz57?#zkK`k3xTX9~sksJSMEd5N`5--{Nc|pG46vF z!w$edtw8+>Vb?xn+NXmPV5vv-{5R2YEq&Izk@yEDv4etlmi<+UI`r@9%5=g-Vx{^x zuMe9R+4bN=>DYh4Nt#)NpUEd(&!^Tu4SCxy3kjaouiOqHQ&We4aMtx5D|X24(XdrB zLpxSibE2N2v!ySTfe&PFqm83tvH-uuE=x z{_pgAW(hCH!K|@?#RcFwR`HJ6?qhCAwj!pv)fQZ5H=q9?TM2HmAi2quQQc*IIQ*7w zOy}@hwS?c`CL5`8&R~*g4}YR=n{#z5tHmj9vae3(StHRG(*YB6{(NSeKU2ass5M^a z&o031K`BT7^8159Opy|vBF-DM^fbbD8xUl@L5eBr(hai>9yb&oYVZ`OygQg*WMmhR z-Gmkdr+%HsF_)U26T&f<7oVZYSVAj6{GcC&7kIJ+mlB2)ZrO>Ioo84H9jYR)>-h*? zCU%IQjvGQ+KkaOh)&znn_oB@cp*9G>u=;cl+R&`HDbxlY6%-3FHIU4TWu_w}p=eC2=si0(N|EaN01W4*STy}`-pL)k@n$&dv?^EkUcx2wg5Z~i?iLu$XhB7*OdCywr3!G zDNwh_Xwg{$>r~U$604&MUEPB*$@_4F)H?OfN9^p3nyY^snQBl}Iy5vm3tw@88SXK| z?PUlJm0}qfBrvFXOr?+cZZoQWtj^YLb!aG^+ipPHWx@QlXuAw;n`#(cezkTG`gd6? zzJ-wnqHvU=Zeiw2Pi4A8V2djZeWA#=?6DwogNOc$r zj;%4?zIG4M{p>Kg4!2fCB(d4MNJwibdQWrrB+yhV>-GSDHx6o>olB%y@Wz<{fq)Nnq2iW=YP zJ=datTVrL9rGGbTmzJN8`D=SZ?RcNJF@&_uFx6M>EFjwqb7!M$Wv2Fb7l2y<4uuYD zfLhg28-LM3=6C|=)VqUac*Df{e)1Cc;XMR!bS2T7I=PYe zwdb)x9Z>Gs-76TSdeJD}NuxAHP-+B}D(A}QfBFHv>3!1!BfH*R&luS?IJq}gg}*MB zG4#HGZHq4n$hqo#reXBm7HdVXorO%QH+8PhRX=H-7#V7J2 z;C&6d??oXDTw%F%3Lc7q?Z+*ZQad)gNZ(?)AM(XjW8cJTj2jZzik3E9FBY5HW7&_Y zZFKb9C}UsVG@XAK?8(}Hsh{7Oh71u-6ycHTToKjlGGU%(Oq;$;Y$Ri_bU_zdG-!k_ zT#1PW?ekPSmMz+4?aP0NGoP3k>ZuIwt+A201hKd~16hZ)iIeex#lrDkQp2|};Fx{? z%<`c~o7$+JE#X;&&*dtAR>=O0gU@!57x*+4e1bZeei=#pVuLmzVn;QhS$QXNL_sh6 z{e6M=3cw)j8cw=Y$WkjZntCz5I^r9L$wGo=dPP9CUWBjC%Ot+mFpCA|J%Vu&^_Kw- zoSKAHmwRRaZ6i)>%fv^s##q22?bW)tl0QE|D+wl9b|q8Dai8FN)j$twi45xJKJJ71 z680Ej$AhYqYpK5tofXKdL_hWu{b1ESWbc6wou6R?W@H?61|^NolH;w^Ia|5i2Lfr6?gi)ww>j}Rz{xTTnRFK8EcV7KO|VHUrwj*HNo{OwE&Szs zgd^=JHRe=cQkTV`y4YL>)F0=;FQHcm$)DfOs|DxJ^ZKMy=%w6XqTaBR1m$S4pO24= zVXyrfw$}=4N5wMM%=n{!TA3Q~b_^5k8P=9-)SqOPfu-6=+jxOHOFsg5(ni`@7#E%I z2?Y-Svy`!m2pmGkU#syNE5hG94qjc41h2 zJr3}siIrkQ>i#86smSok8g-6FYU00GiMAl5A`HD|8fckd{_FYfn12VuE@{jM9cv}$ z%C{JEvYu=vD|kGa%tw&3hhRP`4pLc1g4CNW9kO?Z;1wBzS);bXk|Mk+1h1-|?!;OQ z@T7@#yx>K~Jwki)-(+G%l&k`=F4IWO6{NbvLF$AfL8|x|D+fJ-R79yOAhnc?D^My2 zXLzukcnqr2Z9$j?@T4iVyM=I&BKYjL$>GB$TxrTFS?x4ldZ9Yp!yT{RVB95**C@eD zbMTAB%s~{=iV*h_G9f{%)t zR~R04I~rWwN_H3!EfYkmy5p-OaJ5W>EEbTb3B<)Z4gef)O4vH4OpUKqLq`J1Yc!hp>|w^OfMl55X90GZT>m##3}|j8FnFy(Bd46Z4vH0nh}a- zDm{sx9Ih=6p-FthH6+1`(_nKza(B z>VME4Gt%Kk;sL3xFt+fU99ylEt7`C3%&E#Uxcu~cXX3ph^cmTKUC0b)GW4xqUDO~h zY2+9%5k=*mL1sA7D0r-x;l25@9AhogHu$P&LXzK1grr%xh)*5m0|`}-j{IiEv~*KI z#{B;!ARI!`VxcLYb{42T1VWKFK?}tAkwa)T;nnW-^l+U@{svkPX_J8{WIgmA+aR>z3(g#u#MVMze8#f-` z{h0;T#cQ!Cbh;=v;F(qy@8L8rrUXIx{9_=la}hbmZ=x;ev1kkWB-(p%j_~^Q;`w2Wz}FH@5zp?2Y#`fwT&NmSO|-v#%6SU+zt`3!#i2am`B7AK~2CiEDL zg)h=r_96p1AO)HDdp}IgyO36%9}k85wJbgn{?Y$p0OPq$$bHOt9Nywa7?8nt zhKjh3P($H+2?S_KQ(qpl75cvp!d_i$in+?|NZrT`5dFWAXM?z5Xj-~00e3evwSZK6 zHuG%Ee`P(m`eBQ`unj|uWiOB>pqWo)Fvnm?;5s<|%*FmptO_k@s93Us$ChG_)Bgj- zt?^820+1Qn?nPB3-Cu;In=n^1PGjlDva@3%p!Sn|8edT2FtWjq z2~J8EdZ=5^Vfi+`(kU;;A>{>o$}91hFdMM!pJmaW3@?UZfanb9^|DqTas!JJRfd z04+Rf)I+?TOf|0PEE33TTZ+-QS#Sg5tSth(K0*8$i38|ArKC1C(Hb#bip065_g){cqhuRR;A$IkdcV^I~s z7&Mj(Bb`y|8sTi+*35t7wvN&W zO*M=zjZoXcovz=)x&o?oEsaofh@piG)b zvshc!ZW#gx5As;1N>99&7I}+*ME{VMEMvVNXH%s>g4*&FGuDv?CX9U;+dg8f_7F{K z?@ss|0S>ycKqpfkVKr_eM~q3&8JUSuO6eTLhO&<35hhB{bu5o?p>AbO%aW|Dt^eS1 z2eax<%=M(`QR{kAg{cy@Nv$d0hLmXXFYSv-sY@TpVtGS8^#4&g+iZoJYHy(h#ms&~ zuL)c=g#`$G*L6v~0K??+2ixf_mfR7ffKvi5E%rXO@J@4U$d#7@Pq08ayi?{ipBKZT zB$49N+cl~~JA9qy$ag(K!*qm)3|8d9wgltQ3Hv%pKRPFN6T!IX+8TgEG?Q?Po%c7> z04G|>e8HOh>H;2LeS6$uow`Y5)LO6}7zd-CNn`Zf0l_GAAJYkfk-f+-e7|2{_hy;C zOHOd7Q8~bqqfv9gC^iGusX>AZXhl^ktu--hMv9_mC1M7Ks1!x_yYEPBtrloUD8+ZC%mNcgC>~&yzwqRy{1DQS!z`OBdXnhHja z*x)+#AsJWU<-GhjcN#qk@Z@NeqA`*MZM}L4vAXb8dlMdEf;kf0a30K#UV}L3{RJ~H zIrPTuVS>fh2I!jF!%3j9NM|x?N+`^51N& z4vB-&MM-1y^6yL|JykmiI>$QE*+MoG2vjQsdcV0lfnEoAas+BC=!kv<wvR_H5ZD;u$g{M+io3 zofsXhF{-+TkNNz5lsiUSVKpU((O|(y&);f4&x>|Wbf%M41_Bkx{2dzy9beMuEdRwp zpz{Qy6P+0SO6C(V(suT`X6^)90r2Dq)Fq6O96yG}D?>O2y|s5DHOh|E1#yr%-HKER zNj9pA=Go?6>=dg!+;BZZhvy}-QNyyjzL^|<~$1fo# zo+X4A)1OywzSW;M7bA`7&+DItNDrxZ3b?3y$4GQX9^k;aKKj01jrAe?fEw2POLi$l zDMc-W1%VIsbQSl)el>o&)8utfQ4q z`S<|e0^UF}1~QgXs))DfPNcaT4GXKNJTpeV`#Lx<({eigFI3>Wq3S)F{FkOnk=BX$ zH776p_syy{$_0h&DUGt-2R_p|t5(`GrHt9BIe#I^eobXDM|$b^GN(dYT^Ps3Md zsprWWX5w?aP>cdhWk>lum_84X&wc5$5?$GYJ~xx+o$)#LgsoAnMFu#Akx(*7#$g`z zgFo@G*^b6>p!F(P$m6toC-gYqYR=<~h+{n^&ntUW@RDQnO^kJM6mSd#di_(s_ zusq$0=ivvLt5SG1jd-5%4<61RkBI62)$4mdL|3o6 ze)O2IGA*pl3M*23@sI;Pt`gr0fgZH!zN<9FO%KGzpmfua_Zu?&}1ydn)rl%$j zU;l>)3Y67n-&O;ppFjuL~TX~q#QdXwnC!Mk)`9$YD7BW6&)P7{OJ)9-I zjm&0&z*w5|`DwYWbGC!&5?b{0#X@p1H7&c6qAnXyg7>IrFAL?W;DYMhhB>6Jb&8y& z$g`RXIM6Vq;DKyU-buMBIh#gN(l~XZ#^5*e2`;%Fg0F#rWDacdsqaTXuyK;5io}bK zgO5d?4?a5t+b95bs%2B*YcCP(zdZQrILh)z69LhY!p{Lh7hCkE!CR}Dsu~SA3^$En z$$1fgm08m7)6_2~!KMf1(+I>G^Y-U204~*S(*^!^YO9y`8>p@GcFfTlzO}&jA$Yy) zpF{92Gw&ocCDQQBOW-nTvi=_Z&Rk58WmBtD+;O*-%(_rz?}YC4%aXo={SoZkG=doP z`{k4=P5x53M-AB3r{^!+_Z`xbyWu&WH0Vyr>fQIQDjtLf9vr~%PupM&^%?z!`SUmW zdE=3>A+KkbmBxM%LQYn^3JZU5DKiVHPqaHhOG#PWsNP~!bSblFSw?XN*^L8+)6l za^ivs9`ArZz;gd#bnzuV6ySq-A$=Y_gme)xY(1-7>9I0LIDR<*-ME|qaH1n~xs;ZF z_(Z0l*RZF>Y37qpaIuT+-pg0Tv;Bgx6Pst)->5K0nVQEala_>~0<#r;!HMK&;qUR-;hAmJBso*8B3@{`8qPJtZ8nh~lR z`&=%%fXgn|s3(wk*+xyC1r(P#g4V05WqWRFKeVW!wI`eC0tMxUoZ zZ9>XJM>Z|mBlf)SFWAtH)Uq?3>!QXU!o-K(@tSSm+;Zvy?eDW(E#lN%S?J-@jZ6b$ zKDj+3O-||rKGCuGF^o;@F-+IJS+}M7@{v>U6Is@ws+MA3KOeTQZFec!_oHTg4k}XS zEt-wNtEX}F$;|Jz+MK!={SY$wAVj**-`RWJS=JulBT6zT=Y{=~AeKj^!LA)N=)QARn7W-+v9ai)4IkNb~9Nj=y8JkEA z_DkdO^tntvkD|sdYBvkr=p016zK&@OZ+@_f zbPb|YMgI8HeKg<0f`U>^_`nUBmBT(`>S`jy+_)puW^qHuo_P(VJ57>;JDFK@j4v9q z&H=u}taM>ki#Wqe1-O-2bvmy5DfgoqOLyh1Q8x@sZ7@j~(9)hT$=7{nou^T4sj6`yjr9(fj<3VntoJWBzYV1Wuwp9BI%oG6lN7kvn6L|1;{|HQ${bU_s z*ssX2H~&t@7!+sv%7`DahmuPgo#iyZRqd@N%O!i=?(987OqUb*i z;Czjow)R@bK`t$6UR&hQczWCD>KY?1E`yCf&<6XPHM$Jl|v&SBajN%cFJV zHLp>ZlIaL`HTw@QN@x5=>~iEj(H1{ko@QB zvs)Q|NA~g>d!)J{-Abz;agYRqbhu^KsHe!73)AZUUGB7+0Py5! zwYf%+3u%j?f{{Hu2XZym80nqZFTc2B^ffH0kP)45lF;RXjgB$8hutYd;RF-DEK)Jh zb_MFwQePmpJbwXS0#=P^tLrwjOoMt#S~f0sP+~$!Lu&=jeQ>+P933MfT1xm$U%NT z=XV8qEcW@Al9NiMeMm$%@WUg7TKi z-uS2&L2u@lIzCTjp36OfyHa#LUDJQGj(kVu>d-mxNivc{A$2Lnn&8CF=6wJkbTE^& zIl7Q~6AQR~_0%Px-zJlejy5<7@;@WbE3-sZPgek&R)Wv~?Mrdf1L6Yo3BKVx4LMpM zhZCfW!pj6W5VowZae{*z(|BvW=!H$^N zzfG1SAWH@Eae{Qg{y~7(3Hw%p{oaol`#_*Rh*n*^1ZfK4`U<2q0s(p^G3>&c6kIgV zsV5?-f#M4MnCtO{YOb)s&fQ3<1!^qE{ka>n)WTvs4g{#NS!#hkOR0t3_yk(P#kvQd zuyytroRbM`8Wl`|r?a0m&XC`|u+MlLm`AAtdPDHMvG`I+N9b`C4WFc+K=vdk`H@gE z`)4R0K5wk$mt)h2>Xx4k;T%pe-89`-{`QQgX}0CJr2G=PL|nB;XO&CP)2H(0Vw`WlnSLUTy7_yIf=hj*=B5D0#;B@pWG>9vk0g!4s>8XdK6OmHpUk>4tWs$G zg*<+HE-1KLqSajE*|>oP)UL(#w7ZxLJrJu_h}8jOaUQR3t3f(k&xXXI?ErC_^!v#= zLN_`qax=lWNbe^A$CxZN?BdM5Q7~em;(M)Rsu4M2Zj9qZw5eVbdiw1HnFsI`z(ITK zSf-HO;jJmu4!9aiDQANQsLR3c{}CdvL1

    pCyMuZNuln2T&S*1eJy#(KUDvm4^SC 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

  • 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